aboutsummaryrefslogtreecommitdiff
path: root/gdb/gcore.in
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2013-04-11 14:13:44 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2013-04-11 14:13:44 +0000
commitb292c7831823605b02a564b0a9274f95141c92ee (patch)
tree2c2d014ae9b34f1d6cd579ac8fe02b69cbfee893 /gdb/gcore.in
parentd6cb50a2010f55f3e2b5e7c65d5fa40c70eb369d (diff)
downloadbinutils-b292c7831823605b02a564b0a9274f95141c92ee.zip
binutils-b292c7831823605b02a564b0a9274f95141c92ee.tar.gz
binutils-b292c7831823605b02a564b0a9274f95141c92ee.tar.bz2
gdb/
* Makefile.in (HAVE_NATIVE_GCORE_TARGET): New. (generated_files): Add gcore. (install-only, uninstall): Add gcore if HAVE_NATIVE_GCORE_TARGET or HAVE_NATIVE_GCORE_HOST. (gcore): New. * NEWS (Changes since GDB 7.6): Mention newly installed gcore. * config/alpha/alpha-osf3.mh, config/i386/fbsd.mh, config/i386/fbsd64.mh, config/i386/i386gnu.mh, config/i386/i386sol2.mh, config/i386/sol2-64.mh, config/mips/irix5.mh, config/mips/irix6.mh, config/powerpc/fbsd.mh, config/sparc/fbsd.mh, config/sparc/sol2.mh: Add HAVE_NATIVE_GCORE_HOST. * configure: Regenerate. * configure.ac (HAVE_NATIVE_GCORE_TARGET): New, set it, AC_SUBST it. New AC_SUBST fir GDB_TRANSFORM_NAME and GCORE_TRANSFORM_NAME. New AC_CONFIG_FILES for gcore. * configure.tgt: Add gdb_have_gcore to the initial comment. Set gdb_have_gcore. * gdb_gcore.sh: Rename to ... * gcore.in: ... here. Remove gcore.sh comment. Use GDB_TRANSFORM_NAME and GCORE_TRANSFORM_NAME substitutions. gdb/doc/ * Makefile.in (MAN1S): Add gcore.1. Remove "Host, target, and site specific Makefile fragments" comment. (@host_makefile_frag@, HAVE_NATIVE_GCORE_TARGET): New. (install-man1, uninstall-man1): Conditionalize gcore.1. (gcore.1): New. * gdb.texinfo (Man Pages): Add gcore man. (gcore man): New node.
Diffstat (limited to 'gdb/gcore.in')
-rw-r--r--gdb/gcore.in69
1 files changed, 69 insertions, 0 deletions
diff --git a/gdb/gcore.in b/gdb/gcore.in
new file mode 100644
index 0000000..9c5b14d
--- /dev/null
+++ b/gdb/gcore.in
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+# Copyright (C) 2003-2013 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/>.
+
+#
+# Script to generate a core file of a running program.
+# It starts up gdb, attaches to the given PID and invokes the gcore command.
+#
+
+if [ "$#" -eq "0" ]
+then
+ echo "usage: @GCORE_TRANSFORM_NAME@ [-o filename] pid"
+ exit 2
+fi
+
+# Need to check for -o option, but set default basename to "core".
+name=core
+
+if [ "$1" = "-o" ]
+then
+ if [ "$#" -lt "3" ]
+ then
+ # Not enough arguments.
+ echo "usage: @GCORE_TRANSFORM_NAME@ [-o filename] pid"
+ exit 2
+ fi
+ name=$2
+
+ # Shift over to start of pid list
+ shift; shift
+fi
+
+# Initialise return code.
+rc=0
+
+# Loop through pids
+for pid in $*
+do
+ # `</dev/null' to avoid touching interactive terminal if it is
+ # available but not accessible as GDB would get stopped on SIGTTIN.
+ @GDB_TRANSFORM_NAME@ </dev/null --nx --batch \
+ -ex "set pagination off" -ex "set height 0" -ex "set width 0" \
+ -ex "attach $pid" -ex "gcore $name.$pid" -ex detach -ex quit
+
+ if [ -r $name.$pid ] ; then
+ rc=0
+ else
+ echo "@GCORE_TRANSFORM_NAME@: failed to create $name.$pid"
+ rc=1
+ break
+ fi
+
+
+done
+
+exit $rc