summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2017-05-08 19:02:25 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2017-05-08 19:02:25 +0000
commit01ab520c1692c27d9172af7e3f74b896bcb67b7d (patch)
treec9e65b687b6572c9099350a867ab817ae273aa3e
parentAdd img2xterm, a program that displays images on 256 xterms using unicode (diff)
Fix several issues with kgdb:
- The kld parsing code in kgdb was using basename() and dirname() which ended up being broken by the recent changes to make dirname() modify its input buffer. Modify fbsd-kld.c to use the lbasename() and ldirname() wrappers in gdb. - Add the kgdb.1 manpage from base and install it as 'kgdbNNN.1' which is helpful since stock HEAD no longer ships a kgdb manpage. - Link libkvm into mips binaries so that the vmcore target links. - Bump PORTREVISION. PR: 219028 Reviewed by: luca.pizzamiglio@gmail.com (maintainer) Approved by: rene
Notes
Notes: svn path=/head/; revision=440447
-rw-r--r--devel/gdb/Makefile3
-rw-r--r--devel/gdb/files/extrapatch-kgdb10
-rw-r--r--devel/gdb/files/kgdb/fbsd-kld.c12
-rw-r--r--devel/gdb/files/kgdb/kgdb.1140
-rw-r--r--devel/gdb/pkg-plist1
5 files changed, 162 insertions, 4 deletions
diff --git a/devel/gdb/Makefile b/devel/gdb/Makefile
index 3e71a6429f62..375521f29132 100644
--- a/devel/gdb/Makefile
+++ b/devel/gdb/Makefile
@@ -3,6 +3,7 @@
PORTNAME= gdb
PORTVERSION= 7.12.1
+PORTREVISION= 1
CATEGORIES= devel
MASTER_SITES= GNU
@@ -98,6 +99,8 @@ do-install:
do-install-KGDB-on:
${INSTALL_PROGRAM} ${WRKSRC}/gdb/kgdb \
${STAGEDIR}${PREFIX}/bin/kgdb${VER}
+ ${INSTALL_MAN} ${FILESDIR}/kgdb/kgdb.1 \
+ ${STAGEDIR}${MAN1PREFIX}/man/man1/kgdb${VER}.1
do-install-TUI-on:
${LN} -sf gdb${VER} ${STAGEDIR}${PREFIX}/bin/gdbtui${VER}
diff --git a/devel/gdb/files/extrapatch-kgdb b/devel/gdb/files/extrapatch-kgdb
index 5b6715e052d0..78f68e81e4e4 100644
--- a/devel/gdb/files/extrapatch-kgdb
+++ b/devel/gdb/files/extrapatch-kgdb
@@ -95,6 +95,16 @@ index c82a5b4bac..34140b2d59 100644
/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
#undef HAVE_LANGINFO_CODESET
+diff --git gdb/config/mips/fbsd.mh gdb/config/mips/fbsd.mh
+index f433347a20..5470795612 100644
+--- gdb/config/mips/fbsd.mh
++++ gdb/config/mips/fbsd.mh
+@@ -1,3 +1,5 @@
+ # Host: FreeBSD/mips
+ NATDEPFILES= fork-child.o inf-ptrace.o fbsd-nat.o mips-fbsd-nat.o
+ HAVE_NATIVE_GCORE_HOST = 1
++
++LOADLIBES= -lkvm
diff --git gdb/configure gdb/configure
index b5c045cf10..68299ff16c 100755
--- gdb/configure
diff --git a/devel/gdb/files/kgdb/fbsd-kld.c b/devel/gdb/files/kgdb/fbsd-kld.c
index ef9ac4a598d4..b450e05f032f 100644
--- a/devel/gdb/files/kgdb/fbsd-kld.c
+++ b/devel/gdb/files/kgdb/fbsd-kld.c
@@ -150,12 +150,16 @@ find_kld_path (char *filename, char *path, size_t path_size)
info = get_kld_info();
if (exec_bfd) {
- kernel_dir = dirname(bfd_get_filename(exec_bfd));
+ kernel_dir = ldirname(bfd_get_filename(exec_bfd));
if (kernel_dir != NULL) {
+ cleanup = make_cleanup(xfree, kernel_dir);
snprintf(path, path_size, "%s/%s", kernel_dir,
filename);
- if (check_kld_path(path, path_size))
+ if (check_kld_path(path, path_size)) {
+ do_cleanups(cleanup);
return (1);
+ }
+ do_cleanups(cleanup);
}
}
if (info->module_path_addr != 0) {
@@ -206,7 +210,7 @@ find_kld_address (char *arg, CORE_ADDR *address)
struct kld_info *info;
CORE_ADDR kld;
char *kld_filename;
- char *filename;
+ const char *filename;
int error;
info = get_kld_info();
@@ -214,7 +218,7 @@ find_kld_address (char *arg, CORE_ADDR *address)
info->off_filename == 0 || info->off_next == 0)
return (0);
- filename = basename(arg);
+ filename = lbasename(arg);
for (kld = read_pointer(info->linker_files_addr); kld != 0;
kld = read_pointer(kld + info->off_next)) {
/* Try to read this linker file's filename. */
diff --git a/devel/gdb/files/kgdb/kgdb.1 b/devel/gdb/files/kgdb/kgdb.1
new file mode 100644
index 000000000000..58d0786dbed7
--- /dev/null
+++ b/devel/gdb/files/kgdb/kgdb.1
@@ -0,0 +1,140 @@
+.\" Copyright (c) 2004 Marcel Moolenaar
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 11, 2006
+.Dt KGDB 1
+.Os
+.Sh NAME
+.Nm kgdb
+.Nd "kernel debugger"
+.Sh SYNOPSIS
+.Nm
+.Op Fl a | Fl f | Fl fullname
+.Op Fl b Ar rate
+.Op Fl q | Fl quiet
+.Op Fl v
+.Op Fl w
+.Op Fl d Ar crashdir
+.Op Fl c Ar core | Fl n Ar dumpnr | Fl r Ar device
+.Op Ar kernel Op Ar core
+.Sh DESCRIPTION
+The
+.Nm
+utility is a debugger based on
+.Xr gdb 1
+that allows debugging of kernel core files.
+.Pp
+The options are as follows:
+.Bl -tag -width ".Fl d Ar crashdir"
+.It Fl a
+Increase the annotation level.
+An annotation level of 1 features the historical
+.Fl fullname
+option of
+.Xr gdb 1 .
+This is useful when running
+.Nm
+in Emacs.
+The
+.Fl f
+or
+.Fl fullname
+options are supported for backward compatibility as well.
+.It Fl b Ar rate
+Set the baudrate to
+.Ar rate .
+.It Fl q
+Suppress printing of the banner when the debugger starts.
+The
+.Fl quiet
+form is supported for compatibility as well.
+.It Fl v
+Increase verbosity.
+.It Fl w
+Opens kmem-based targets in read-write mode.
+(This is identical to what
+.Fl -wcore
+used to do in previous
+gdb versions for
+.Fx . )
+.It Fl d Ar crashdir
+Use
+.Ar crashdir
+instead of the default,
+.Pa /var/crash
+to locate kernel core dump files in.
+The name
+.Pa vmcore.
+plus the dump number will be appended to determine
+the actual dump file name.
+.It Fl c Ar core
+Explicitly use
+.Ar core
+as the core dump file.
+.It Fl n Ar dumpnr
+Use the kernel core dump file numbered
+.Ar dumpnr
+for debugging.
+.It Fl r Ar device
+Use
+.Ar device
+to connect
+.Nm
+to for a remote debugging session.
+.El
+.Pp
+The
+.Fl c , n ,
+and
+.Fl r
+options are mutually exclusive.
+.Pp
+Optionally, the name of the kernel symbol file and
+the name of the core dump file can be supplied on the
+command-line as positional arguments.
+If no kernel symbol file name has been given, the
+symbol file of the currently running kernel will be
+used.
+If no core dump file has been specified through either
+of the options or the last command-line argument,
+.Pa /dev/mem
+will be opened to allow debugging the currently running
+kernel.
+.Sh FILES
+.Bl -tag -width ".Pa /var/crash"
+.It Pa /dev/mem
+Default memory image to open if no core dump file
+has been specified.
+.It Pa /var/crash
+Default directory to locate kernel core dump files.
+.El
+.Sh SEE ALSO
+.Xr gdb 1
+.Sh HISTORY
+The
+.Nm
+utility first appeared in its current form in
+.Fx 5.3 .
diff --git a/devel/gdb/pkg-plist b/devel/gdb/pkg-plist
index b4a510cd0353..4350e765e684 100644
--- a/devel/gdb/pkg-plist
+++ b/devel/gdb/pkg-plist
@@ -4,6 +4,7 @@ bin/gdb%%VER%%
%%TUI%%bin/gdbtui%%VER%%
%%KGDB%%bin/kgdb%%VER%%
man/man1/gdb%%VER%%.1.gz
+%%KGDB%%man/man1/kgdb%%VER%%.1.gz
%%PYTHON%%%%DATADIR%%%%VER%%/python/gdb/__init__.py
%%PYTHON%%%%DATADIR%%%%VER%%/python/gdb/FrameDecorator.py
%%PYTHON%%%%DATADIR%%%%VER%%/python/gdb/FrameIterator.py