Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:dgollub
gdb
gstack.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File gstack.patch of Package gdb
2004-11-23 Andrew Cagney <cagney@redhat.com> * Makefile.in (uninstall-gstack, install-gstack): New rules, add to install and uninstall. * gstack.sh: New file. --- gdb/Makefile.in 2004-11-23 13:31:03.000000000 -0500 +++ gdb/Makefile.in 2004-11-23 15:06:34.623389592 -0500 @@ -970,7 +970,7 @@ # time it takes for make to check that all is up to date. # install-only is intended to address that need. install: all 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 \ @@ -1002,9 +1002,22 @@ $(DESTDIR)$(man1dir) ; \ $(INSTALL_DATA) $(srcdir)/gdb.1 \ $(DESTDIR)$(man1dir)/$$transformed_name.1 +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) ; \ -uninstall: force $(CONFIG_UNINSTALL) +uninstall: force uninstall-gstack $(CONFIG_UNINSTALL) transformed_name=`t='$(program_transform_name)'; \ echo gdb | sed -e $$t` ; \ if test "x$$transformed_name" = x; then \ @@ -1026,6 +1043,16 @@ fi ; \ rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) \ $(DESTDIR)$(man1dir)/$$transformed_name.1 +.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) # We do this by grepping through sources. If that turns out to be too slow, # maybe we could just require every .o file to have an initialization routine --- /dev/null 2005-04-09 23:51:05.027867440 -0400 +++ gdb/gstack.sh 2005-04-08 18:00:49.000000000 -0400 @@ -0,0 +1,45 @@ +#!/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 `ls /proc/$1/task | 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 grep -e libpthread /proc/$1/maps > /dev/null 2>&1 ; then + backtrace="thread apply all bt" + fi +fi + +GDB=${GDB:-gdb} + +if $GDB -nx --quiet --batch --readnever > /dev/null 2>&1; then + readnever=--readnever +else + readnever= +fi + +# Run GDB, strip out unwanted noise. +$GDB --quiet $readnever -nx /proc/$1/exe $1 <<EOF 2>&1 | +$backtrace +EOF +sed -n \ + -e 's/^(gdb) //' \ + -e '/^#/p' \ + -e '/^Thread/p'
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor