]> git.pld-linux.org Git - packages/gdb.git/commitdiff
- restore gstack and gdb-add-index programs
authorJan Rękorajski <baggins@pld-linux.org>
Fri, 2 Aug 2013 05:56:21 +0000 (07:56 +0200)
committerJan Rękorajski <baggins@pld-linux.org>
Fri, 2 Aug 2013 05:56:21 +0000 (07:56 +0200)
gdb-6.3-gstack-20050411.patch [new file with mode: 0644]
gdb-gdb-add-index-script.patch [new file with mode: 0644]
gdb.spec

diff --git a/gdb-6.3-gstack-20050411.patch b/gdb-6.3-gstack-20050411.patch
new file mode 100644 (file)
index 0000000..b73eeff
--- /dev/null
@@ -0,0 +1,232 @@
+2004-11-23  Andrew Cagney  <cagney@redhat.com>
+
+       * Makefile.in (uninstall-gstack, install-gstack): New rules, add
+       to install and uninstall.
+       * gstack.sh, gstack.1: New files.
+
+Index: gdb-7.6/gdb/Makefile.in
+===================================================================
+--- gdb-7.6.orig/gdb/Makefile.in       2013-05-21 13:26:33.496820763 +0200
++++ gdb-7.6/gdb/Makefile.in    2013-05-21 13:26:33.609819579 +0200
+@@ -1029,7 +1029,7 @@ info install-info clean-info dvi pdf ins
+ install: all
+       @$(MAKE) $(FLAGS_TO_PASS) install-only
+-install-only: $(CONFIG_INSTALL)
++install-only: install-gstack $(CONFIG_INSTALL)
+       transformed_name=`t='$(program_transform_name)'; \
+                         echo gdb | sed -e "$$t"` ; \
+               if test "x$$transformed_name" = x; then \
+@@ -1060,7 +1060,25 @@ install-only: $(CONFIG_INSTALL)
+ install-python:
+       $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(GDB_DATADIR)/python/gdb
+-uninstall: force $(CONFIG_UNINSTALL)
++GSTACK=gstack
++.PHONY: install-gstack
++install-gstack:
++      transformed_name=`t='$(program_transform_name)'; \
++                        echo $(GSTACK) | sed -e "$$t"` ; \
++              if test "x$$transformed_name" = x; then \
++                transformed_name=$(GSTACK) ; \
++              else \
++                true ; \
++              fi ; \
++              $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir) ; \
++              $(INSTALL_PROGRAM) $(srcdir)/$(GSTACK).sh \
++                      $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \
++              : $(SHELL) $(srcdir)/../mkinstalldirs \
++                      $(DESTDIR)$(man1dir) ; \
++              : $(INSTALL_DATA) $(srcdir)/gstack.1 \
++                      $(DESTDIR)$(man1dir)/$$transformed_name.1
++
++uninstall: force uninstall-gstack $(CONFIG_UNINSTALL)
+       transformed_name=`t='$(program_transform_name)'; \
+                         echo gdb | sed -e $$t` ; \
+               if test "x$$transformed_name" = x; then \
+@@ -1083,6 +1101,18 @@ uninstall: force $(CONFIG_UNINSTALL)
+       fi
+       @$(MAKE) DO=uninstall "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do
++.PHONY: uninstall-gstack
++uninstall-gstack:
++      transformed_name=`t='$(program_transform_name)'; \
++                        echo $(GSTACK) | sed -e $$t` ; \
++              if test "x$$transformed_name" = x; then \
++                transformed_name=$(GSTACK) ; \
++              else \
++                true ; \
++              fi ; \
++              rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) \
++                    $(DESTDIR)$(man1dir)/$$transformed_name.1
++ 
+ # The C++ name parser can be built standalone for testing.
+ test-cp-name-parser.o: cp-name-parser.c
+       $(COMPILE) -DTEST_CPNAMES cp-name-parser.c
+Index: gdb-7.6/gdb/gstack.sh
+===================================================================
+--- /dev/null  1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.6/gdb/gstack.sh      2013-05-21 13:26:55.434625908 +0200
+@@ -0,0 +1,43 @@
++#!/bin/sh
++
++if test $# -ne 1; then
++    echo "Usage: `basename $0 .sh` <process-id>" 1>&2
++    exit 1
++fi
++
++if test ! -r /proc/$1; then
++    echo "Process $1 not found." 1>&2
++    exit 1
++fi
++
++# GDB doesn't allow "thread apply all bt" when the process isn't
++# threaded; need to peek at the process to determine if that or the
++# simpler "bt" should be used.
++
++backtrace="bt"
++if test -d /proc/$1/task ; then
++    # Newer kernel; has a task/ directory.
++    if test `/bin/ls /proc/$1/task | /usr/bin/wc -l` -gt 1 2>/dev/null ; then
++      backtrace="thread apply all bt"
++    fi
++elif test -f /proc/$1/maps ; then
++    # Older kernel; go by it loading libpthread.
++    if /bin/grep -e libpthread /proc/$1/maps > /dev/null 2>&1 ; then
++      backtrace="thread apply all bt"
++    fi
++fi
++
++GDB=${GDB:-/usr/bin/gdb}
++
++# Run GDB, strip out unwanted noise.
++# --readnever is no longer used since .gdb_index is now in use.
++$GDB --quiet -nx $GDBARGS /proc/$1/exe $1 <<EOF 2>&1 | 
++set width 0
++set height 0
++set pagination no
++$backtrace
++EOF
++/bin/sed -n \
++    -e 's/^\((gdb) \)*//' \
++    -e '/^#/p' \
++    -e '/^Thread/p'
+Index: gdb-7.6/gdb/testsuite/gdb.base/gstack.exp
+===================================================================
+--- /dev/null  1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.6/gdb/testsuite/gdb.base/gstack.exp  2013-05-21 13:26:55.434625908 +0200
+@@ -0,0 +1,66 @@
++# Copyright (C) 2012 Free Software Foundation, Inc.
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.
++
++set testfile gstack
++set executable ${testfile}
++set binfile ${objdir}/${subdir}/$executable
++if {[build_executable ${testfile} ${executable} "" {debug}] == -1} {
++    return -1
++}
++
++set test "spawn inferior"
++set command "${binfile}"
++set res [remote_spawn host $command];
++if { $res < 0 || $res == "" } {
++    perror "Spawning $command failed."
++    fail $test
++    return
++}
++set use_gdb_stub 1
++set pid [exp_pid -i $res]
++gdb_expect {
++    -re "looping\r\n" {
++      pass $test
++    }
++    eof {
++      fail "$test (eof)"
++      return
++    }
++    timeout {
++      fail "$test (timeout)"
++      return
++    }
++}
++gdb_exit
++
++# Testcase uses the most simple notification not to get caught by attach on
++# exiting the function.  Still we could retry the gstack command if we fail.
++
++set test "spawn gstack"
++set command "sh -c GDB=$GDB\\ GDBARGS=-data-directory\\\\\\ $BUILD_DATA_DIRECTORY\\ sh\\ ${srcdir}/../gstack.sh\\ $pid\\;echo\\ GSTACK-END"
++set res [remote_spawn host $command];
++if { $res < 0 || $res == "" } {
++    perror "Spawning $command failed."
++    fail $test
++}
++set pid [exp_pid -i $res]
++gdb_test_multiple "" $test {
++    -re "^#0 +(0x\[0-9a-f\]+ in )?\\.?func \\(\\) at \[^\r\n\]*\r\n#1 +0x\[0-9a-f\]+ in \\.?main \\(\\) at \[^\r\n\]*\r\nGSTACK-END\r\n\$" {
++      pass $test
++    }
++}
++gdb_exit
++
++remote_exec host "kill -9 $pid"
+Index: gdb-7.6/gdb/testsuite/gdb.base/gstack.c
+===================================================================
+--- /dev/null  1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.6/gdb/testsuite/gdb.base/gstack.c    2013-05-21 13:26:33.610819569 +0200
+@@ -0,0 +1,43 @@
++/* This testcase is part of GDB, the GNU debugger.
++
++   Copyright 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
++
++   This program is free software; you can redistribute it and/or modify
++   it under the terms of the GNU General Public License as published by
++   the Free Software Foundation; either version 3 of the License, or
++   (at your option) any later version.
++
++   This program is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++   GNU General Public License for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
++
++#include <stdio.h>
++#include <unistd.h>
++#include <string.h>
++
++void
++func (void)
++{
++  const char msg[] = "looping\n";
++
++  /* Use the most simple notification not to get caught by attach on exiting
++     the function.  */
++  write (1, msg, strlen (msg));
++  
++  for (;;);
++}
++
++int
++main (void)
++{
++  alarm (60);
++  nice (100);
++
++  func ();
++
++  return 0;
++}
diff --git a/gdb-gdb-add-index-script.patch b/gdb-gdb-add-index-script.patch
new file mode 100644 (file)
index 0000000..1f447b1
--- /dev/null
@@ -0,0 +1,206 @@
+http://sourceware.org/ml/gdb-patches/2010-07/msg00184.html
+Subject: Re: [0/4] RFC: add DWARF index support
+
+Jan Kratochvil: Fixed $d -> $dir.
+Jan Kratochvil: Remove /dev/null redirection.
+
+>>>>> "Tom" == Tom Tromey <tromey@redhat.com> writes:
+
+Tom> This patch series adds support for a DWARF index to gdb.
+
+Roland suggested we wrap up the index-creation code into a helper
+script.
+
+I'm not sure if this is something people would want in gdb proper, but I
+figured I would send it here just in case.
+
+Tom
+
+2010-07-09  Tom Tromey  <tromey@redhat.com>
+
+       * Makefile.in (install-only): Install gdb-add-index.
+       * gdb-add-index: New file.
+
+2010-07-09  Tom Tromey  <tromey@redhat.com>
+
+       * gdb.texinfo (Index Files): Mention gdb-add-index.
+
+>From 30714fe719e61baea03d0dc5793eb0d564faebb7 Mon Sep 17 00:00:00 2001
+From: Tom Tromey <tromey@redhat.com>
+Date: Fri, 9 Jul 2010 11:17:54 -0600
+Subject: [PATCH 4/4] add gdb-add-index
+Subject: [PATCH 4/4] add gdb-add-index
+
+---
+ gdb/ChangeLog       |    5 +++++
+ gdb/Makefile.in     |   11 ++++++++++-
+ gdb/doc/ChangeLog   |    4 ++++
+ gdb/doc/gdb.texinfo |    8 ++++++++
+ gdb/gdb-add-index   |   30 ++++++++++++++++++++++++++++++
+ 5 files changed, 57 insertions(+), 1 deletions(-)
+ create mode 100755 gdb/gdb-add-index
+
+Index: gdb-7.5.91.20130407/gdb/Makefile.in
+===================================================================
+--- gdb-7.5.91.20130407.orig/gdb/Makefile.in   2013-04-11 16:52:51.000000000 +0200
++++ gdb-7.5.91.20130407/gdb/Makefile.in        2013-04-11 16:53:59.199279388 +0200
+@@ -1053,6 +1053,15 @@ install-only: install-gstack $(CONFIG_IN
+                 $(INSTALL_PROGRAM) gcore \
+                         $(DESTDIR)$(bindir)/$$transformed_name; \
+       fi
++      transformed_name=`t='$(program_transform_name)'; \
++                        echo gdb-add-index | sed -e "$$t"` ; \
++              if test "x$$transformed_name" = x; then \
++                transformed_name=gdb-add-index ; \
++              else \
++                true ; \
++              fi ; \
++              $(INSTALL_PROGRAM) $(srcdir)/gdb-add-index \
++                      $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT)
+       @$(MAKE) DO=install "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do
+ install-python:
+Index: gdb-7.5.91.20130407/gdb/doc/gdb.texinfo
+===================================================================
+--- gdb-7.5.91.20130407.orig/gdb/doc/gdb.texinfo       2013-04-11 16:53:00.000000000 +0200
++++ gdb-7.5.91.20130407/gdb/doc/gdb.texinfo    2013-04-11 16:55:07.004278842 +0200
+@@ -17159,6 +17159,14 @@ There are currently some limitation on i
+ for DWARF debugging information, not stabs.  And, they do not
+ currently work for programs using Ada.
++@value{GDBN} comes with a program, @command{gdb-add-index}, which can
++be used to add the index to a symbol file.  It takes the symbol file
++as its only argument:
++
++@smallexample
++$ gdb-add-index symfile
++@end smallexample
++
+ @node Symbol Errors
+ @section Errors Reading Symbol Files
+@@ -41730,6 +41738,7 @@ switch (die->tag)
+ * gdbserver man::               Remote Server for the GNU Debugger man page
+ * gcore man::                   Generate a core file of a running program
+ * gdbinit man::                 gdbinit scripts
++* gdb-add-index man::           Add index files to speed up GDB
+ @end menu
+ @node gdb man
+@@ -42382,6 +42391,54 @@ gdb(1), @code{info -f gdb -n Startup}
+ The full documentation for @value{GDBN} is maintained as a Texinfo manual.
+ If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo
+ documentation are properly installed at your site, the command
++
++@smallexample
++info gdb
++@end smallexample
++
++should give you access to the complete manual.
++
++@cite{Using GDB: A Guide to the GNU Source-Level Debugger},
++Richard M. Stallman and Roland H. Pesch, July 1991.
++@end ifset
++@c man end
++
++@node gdb-add-index man
++@heading gdb-add-index
++
++@c man title gdb-add-index Add index files to speed up GDB
++
++@c man begin SYNOPSIS gdb-add-index
++gdb-add-index @var{filename}
++@c man end
++
++@c man begin DESCRIPTION gdb-add-index
++When GDB finds a symbol file, it scans the symbols in the file in order
++to construct an internal symbol table.  This lets most GDB operations
++work quickly--at the cost of a delay early on.  For large programs,
++this delay can be quite lengthy, so GDB provides a way to build an
++index, which speeds up startup.
++
++To determine whether a file contains such an index, use the command
++@command{readelf -S filename}: the index is stored in a section named
++@code{.gdb_index}.  Note that the index is never generated for files that do
++not contain DWARF debug information (sections named @code{.debug_*}).
++
++See more in
++@ifset man
++the @value{GDBN} manual in node @code{Index Files}
++-- shell command @code{info -f gdb -n 'Index Files'}.
++@end ifset
++@ifclear man
++@ref{Index Files}.
++@end ifclear
++@c man end
++
++@c man begin SEEALSO gdb-add-index
++@ifset man
++The full documentation for @value{GDBN} is maintained as a Texinfo manual.
++If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo
++documentation are properly installed at your site, the command
+ @smallexample
+ info gdb
+Index: gdb-7.5.91.20130407/gdb/gdb-add-index
+===================================================================
+--- /dev/null  1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.5.91.20130407/gdb/gdb-add-index      2013-04-11 16:53:21.524279909 +0200
+@@ -0,0 +1,30 @@
++#! /bin/sh
++
++# Add a .gdb_index section to a file.
++
++# Copyright (C) 2010 Free Software Foundation, Inc.
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.
++
++file="$1"
++dir="${file%/*}"
++
++# We don't care if gdb gives an error.
++gdb -nx --batch-silent -ex "file $file" -ex "save gdb-index $dir"
++
++if test -f "${file}.gdb-index"; then
++   objcopy --add-section .gdb_index="${file}.gdb-index" --set-section-flags .gdb_index=readonly "$file" "$file"
++   rm -f "${file}.gdb-index"
++fi
++
++exit 0
+Index: gdb-7.5.91.20130407/gdb/doc/Makefile.in
+===================================================================
+--- gdb-7.5.91.20130407.orig/gdb/doc/Makefile.in       2013-04-11 16:50:33.202286928 +0200
++++ gdb-7.5.91.20130407/gdb/doc/Makefile.in    2013-04-11 16:55:06.993279304 +0200
+@@ -177,7 +177,7 @@ POD2MAN5 = pod2man --center="GNU Develop
+                  --release="gdb-`sed q $(srcdir)/../version.in`" --section=5
+ # List of man pages generated from gdb.texi
+-MAN1S = gdb.1 gdbserver.1 gcore.1
++MAN1S = gdb.1 gdbserver.1 gcore.1 gdb-add-index.1
+ MAN5S = gdbinit.5
+ MANS = $(MAN1S) $(MAN5S)
+@@ -626,6 +626,13 @@ gcore.1: $(GDB_DOC_FILES)
+               mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
+       rm -f gcore.pod
++gdb-add-index.1: $(GDB_DOC_FILES)
++      touch $@
++      -$(TEXI2POD) $(MANCONF) -Dgdb-add-index < $(srcdir)/gdb.texinfo > gdb-add-index.pod
++      -($(POD2MAN1) gdb-add-index.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
++              mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
++      rm -f gdb-add-index.pod
++
+ gdbinit.5: $(GDB_DOC_FILES)
+       touch $@
+       -$(TEXI2POD) $(MANCONF) -Dgdbinit < $(srcdir)/gdb.texinfo > gdbinit.pod
index 9b95ae206028747e0791bc9d6bf8b9cb04929d8f..6c8498a86139321e976cc6919c63ea9413a5ee4a 100644 (file)
--- a/gdb.spec
+++ b/gdb.spec
@@ -34,6 +34,8 @@ Patch101:     gdb-6.6-buildid-locate-solib-missing-ids.patch
 Patch102:      gdb-6.6-buildid-locate-rpm.patch
 Patch103:      gdb-6.6-buildid-locate-core-as-arg.patch
 Patch104:      gdb-6.6-buildid-locate-rpm-librpm-workaround.patch
+Patch105:      gdb-6.3-gstack-20050411.patch
+Patch106:      gdb-gdb-add-index-script.patch
 Patch1000:     %{name}-readline.patch
 Patch1001:     %{name}-info.patch
 Patch1002:     %{name}-passflags.patch
@@ -172,6 +174,8 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
 %patch102 -p1
 %patch103 -p1
 %patch104 -p1
+%patch105 -p1
+%patch106 -p1
 
 %patch1000 -p1
 %patch1001 -p1
@@ -295,6 +299,8 @@ rm -rf $RPM_BUILD_ROOT
 %doc gdb/{ChangeLog,NEWS,PROBLEMS,README}
 %attr(755,root,root) %{_bindir}/gdb
 %attr(755,root,root) %{_bindir}/gdbtui
+%attr(755,root,root) %{_bindir}/gdb-add-index
+%attr(755,root,root) %{_bindir}/gstack
 %dir %{_datadir}/gdb
 %dir %{_datadir}/gdb/auto-load
 %dir %{_datadir}/gdb/auto-load%{_prefix}
This page took 0.068711 seconds and 4 git commands to generate.