gdb: Update makefile framework for version 7.4.1 upgrade
authorJohn Marino <draco@marino.st>
Fri, 11 May 2012 06:33:02 +0000 (08:33 +0200)
committerJohn Marino <draco@marino.st>
Fri, 11 May 2012 10:40:49 +0000 (12:40 +0200)
Note that gdbtui is no longer a separate executable.  It has been
deprecated by GNU GDB and will disappear completely on GDB 7.5
It has been changed to a wrapper that calls "gdb -tui"

16 files changed:
gnu/usr.bin/gdb/gdb/Makefile
gnu/usr.bin/gdb/gdb/ada-lex.c
gnu/usr.bin/gdb/gdb/doc/GDBvn.texi [new file with mode: 0644]
gnu/usr.bin/gdb/gdb/doc/Makefile
gnu/usr.bin/gdb/gdbtui/Makefile
gnu/usr.bin/gdb/gdbtui/gdbtui [new file with mode: 0755]
gnu/usr.bin/gdb/kgdb/trgt.c
gnu/usr.bin/gdb/libbfd/bfdver.h
gnu/usr.bin/gdb/libbfd/config.h
gnu/usr.bin/gdb/libdecnumber/gstdint.h
gnu/usr.bin/gdb/libgdb/Makefile
gnu/usr.bin/gdb/libgdb/config.h
gnu/usr.bin/gdb/libgdb/jit-reader.h [new file with mode: 0644]
gnu/usr.bin/gdb/libiberty/Makefile
gnu/usr.bin/gdb/libiberty/config.h
gnu/usr.bin/gdb/libopcodes/config.h

index bc2a7ba..24a5e99 100644 (file)
@@ -2,7 +2,8 @@ PROG=   gdb
 SRCS=  gdb.c
 
 CFLAGS+= -I${.OBJDIR}/../libgdb -I${.CURDIR}/../libgdb -I${BASEDIR}/include
-CFLAGS+= -I${BASEDIR}/bfd -I${BASEDIR}/gdb -I${BASEDIR}/gdb/config -I${.CURDIR}/../libbfd
+CFLAGS+= -I${BASEDIR}/bfd -I${BASEDIR}/gdb -I${BASEDIR}/gdb/config
+CFLAGS+= -I${BASEDIR}/gdb/common -I${.CURDIR}/../libbfd
 CFLAGS+= -I${.OBJDIR}/../libbfd
 
 DPADD= ${GDBLIBS}
index aea4684..92cd92c 100644 (file)
@@ -608,8 +608,8 @@ char *yytext;
 #line 1 "ada-lex.l"
 #define INITIAL 0
 /* FLEX lexer for Ada expressions, for GDB.
-   Copyright (C) 1994, 1997, 1998, 2000, 2001, 2002, 2003, 2007, 2008, 2009,
-   2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 1994, 1997-1998, 2000-2003, 2007-2012 Free Software
+   Foundation, Inc.
 
    This file is part of GDB.
 
diff --git a/gnu/usr.bin/gdb/gdb/doc/GDBvn.texi b/gnu/usr.bin/gdb/gdb/doc/GDBvn.texi
new file mode 100644 (file)
index 0000000..b5ec985
--- /dev/null
@@ -0,0 +1,4 @@
+@set GDBVN 7.4.1
+@set VERSION_PACKAGE (GDB)
+@set BUGURL @uref{http://www.gnu.org/software/gdb/bugs/}
+@set BUGURL_DEFAULT
index c8b4481..1d64af1 100644 (file)
@@ -19,7 +19,7 @@ INFOENTRY_annotate=   "* GDB annotation.                      Annotations for the GNU debugger (GDB).
 CLEANFILES=    gdb-cfg.texi
 
 gdb.info: gdb.texinfo fdl.texi gpl.texi agentexpr.texi \
-       rluser.texi inc-hist.texinfo \
+       rluser.texi hsuser.texi \
        gdb-cfg.texi GDBvn.texi
 
 gdb-cfg.texi: ${SRCDIR}/all-cfg.texi
index 27e2a61..6190cfb 100644 (file)
@@ -1,20 +1,21 @@
-PROG=  gdbtui
-SRCS=  tui-main.c
+#PROG= gdbtui
+#
+#SRCS= tui-main.c
+#
+#CFLAGS+= -I${.OBJDIR}/../libgdb -I${.CURDIR}/../libgdb -I${BASEDIR}/include
+#CFLAGS+= -I${BASEDIR}/bfd -I${BASEDIR}/gdb -I${BASEDIR}/gdb/common
+#CFLAGS+= -I${BASEDIR}/gdb/config
+#CFLAGS+= -I${.CURDIR}/../libbfd -I${.OBJDIR}/../libbfd
+#
+#DPADD=        ${GDBLIBS}
+#DPADD+=       ${LIBEDIT} ${LIBKVM} ${LIBTERMCAP} ${LIBM} ${LIBZ}
+#LDADD=        -L../libgdb -lgdb -L../libbfd -lbfd -L../libopcodes -lopcodes -L../libiberty -liberty
+#LDADD+=       -L../libdecnumber -ldecnumber
+#LDADD+=       -ledit -ltermcap -lm -lz
+#
+#.PATH:        ${BASEDIR}/gdb ${BASEDIR}/gdb/tui
 
-CFLAGS+= -I${.OBJDIR}/../libgdb -I${.CURDIR}/../libgdb -I${BASEDIR}/include
-CFLAGS+= -I${BASEDIR}/bfd -I${BASEDIR}/gdb -I${BASEDIR}/gdb/config -I${.CURDIR}/../libbfd
-CFLAGS+= -I${.OBJDIR}/../libbfd
-
-DPADD= ${GDBLIBS}
-DPADD+=        ${LIBEDIT} ${LIBKVM} ${LIBTERMCAP} ${LIBM} ${LIBZ}
-LDADD= -L../libgdb -lgdb -L../libbfd -lbfd -L../libopcodes -lopcodes -L../libiberty -liberty
-LDADD+=        -L../libdecnumber -ldecnumber
-LDADD+=        -ledit -ltermcap -lm -lz
-
-NOMAN= #
-
-#SUBDIR=       doc
+SCRIPTS=       gdbtui
+NOMAN=
 
 .include <bsd.prog.mk>
-
-.PATH: ${BASEDIR}/gdb ${BASEDIR}/gdb/tui
diff --git a/gnu/usr.bin/gdb/gdbtui/gdbtui b/gnu/usr.bin/gdb/gdbtui/gdbtui
new file mode 100755 (executable)
index 0000000..ee8b248
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+# Wrapper for "gdb -tui"
+# The binary gdbtui was deprecated on gdb 7.4, and removed on gdb 7.5
+
+PROG=/usr/bin/gdb
+ARGS=
+
+while test $# -ne 0; do
+       ARGS="${ARGS}$1 "
+       shift
+done
+
+${PROG} -tui ${ARGS}
index 61c424b..cab72ec 100644 (file)
@@ -268,7 +268,7 @@ kgdb_switch_to_thread(struct kthr *thr)
        if (thread_id == 0)
                error ("invalid tid");
        snprintf(buf, sizeof(buf), "%d", thread_id);
-       if (!gdb_thread_select(uiout, buf, &err))
+       if (!gdb_thread_select(current_uiout, buf, &err))
                error ("%s", err);
 }
 
index ea5e7a0..12eab7c 100644 (file)
@@ -1,4 +1,4 @@
-#define BFD_VERSION_DATE 20100707
-#define BFD_VERSION 220510000
-#define BFD_VERSION_STRING  "(GNU Binutils) " "2.20.51.20100707"
+#define BFD_VERSION_DATE 20111213
+#define BFD_VERSION 222510000
+#define BFD_VERSION_STRING  "(GNU Binutils) " "2.22.51.20111213"
 #define REPORT_BUGS_TO "<http://www.sourceware.org/bugzilla/>"
index 016ac1c..ac9743c 100644 (file)
 /* Define if <sys/procfs.h> has prpsinfo32_t. */
 /* #undef HAVE_PRPSINFO32_T */
 
+/* Define if <sys/procfs.h> has prpsinfo32_t.pr_pid. */
+/* #undef HAVE_PRPSINFO32_T_PR_PID */
+
 /* Define if <sys/procfs.h> has prpsinfo_t. */
 #define HAVE_PRPSINFO_T 1
 
+/* Define if <sys/procfs.h> has prpsinfo_t.pr_pid. */
+/* #undef HAVE_PRPSINFO_T_PR_PID */
+
 /* Define if <sys/procfs.h> has prstatus32_t. */
 /* #undef HAVE_PRSTATUS32_T */
 
 /* Define if <sys/procfs.h> has psinfo32_t. */
 /* #undef HAVE_PSINFO32_T */
 
+/* Define if <sys/procfs.h> has psinfo32_t.pr_pid. */
+/* #undef HAVE_PSINFO32_T_PR_PID */
+
 /* Define if <sys/procfs.h> has psinfo_t. */
 /* #undef HAVE_PSINFO_T */
 
+/* Define if <sys/procfs.h> has psinfo_t.pr_pid. */
+/* #undef HAVE_PSINFO_T_PR_PID */
+
 /* Define if <sys/procfs.h> has pstatus32_t. */
 /* #undef HAVE_PSTATUS32_T */
 
 #define TIME_WITH_SYS_TIME 1
 
 /* Name of host specific header file to include in trad-core.c. */
-/* #undef TRAD_HEADER */
+#define TRAD_HEADER "hosts/i386bsd.h"
 
 /* Use b modifier when opening binary files? */
 /* #undef USE_BINARY_FOPEN */
 
 
 /* Version number of package */
-#define VERSION "2.21.51"
+#define VERSION "2.22.51"
 
 /* Number of bits in a file offset, on hosts where this is settable. */
 /* #undef _FILE_OFFSET_BITS */
index 4435ec1..5d32f9f 100644 (file)
@@ -1,4 +1,4 @@
-/* generated for  gcc (DragonFly) 4.4.5 */
+/* generated for  gcc (DragonFly) 4.4.7 2012.03.13 */
 
 #ifndef GCC_GENERATED_STDINT_H
 #define GCC_GENERATED_STDINT_H 1
index f6dbae9..bea9d93 100644 (file)
@@ -22,6 +22,7 @@ CFLAGS+= -DBINDIR='"/usr/bin"'
 CFLAGS+= -DMACHINE_ARCH='"${MACHINE_ARCH}"'
 CFLAGS+= -DTARGET_ARCH='"${TARGET_ARCH}"'
 CFLAGS+= -DVERSION_STRING='"${VERSION}"'
+CFLAGS+= -DTUI                         # enable "gdb -tui" (TUI MODE)
 
 SRCS+= observer.h gdb_stdint.h
 
@@ -37,7 +38,7 @@ SRCS+=        \
        auxv.c \
        bfd-target.c \
        blockframe.c breakpoint.c findvar.c regcache.c \
-       charset.c disasm.c dummy-frame.c dfp.c \
+       charset.c continuations.c disasm.c dummy-frame.c dfp.c \
        source.c value.c eval.c valops.c valarith.c valprint.c printcmd.c \
        block.c symtab.c psymtab.c symfile.c symmisc.c linespec.c dictionary.c \
        infcall.c \
@@ -60,7 +61,7 @@ SRCS+=        \
        bcache.c objfiles.c observer.c minsyms.c maint.c demangle.c \
        dbxread.c coffread.c coff-pe-read.c \
        dwarf2read.c mipsread.c stabsread.c corefile.c \
-       dwarf2expr.c dwarf2loc.c dwarf2-frame.c \
+       dwarf2expr.c dwarf2loc.c dwarf2-frame.c dwarf2-frame-tailcall.c \
        ada-lang.c c-lang.c d-lang.c f-lang.c objc-lang.c \
        ada-tasks.c \
        ui-out.c cli-out.c \
@@ -84,10 +85,12 @@ SRCS+=      \
        trad-frame.c \
        tramp-frame.c \
        solib.c solib-target.c \
-       prologue-value.c memory-map.c memrange.c xml-support.c xml-syscall.c \
+       prologue-value.c memory-map.c memrange.c \
+       xml-support.c xml-syscall.c xml-utils.c \
        target-descriptions.c target-memory.c xml-tdesc.c xml-builtin.c \
        inferior.c osdata.c gdb_usleep.c record.c gcore.c \
-       jit.c progspace.c
+       jit.c progspace.c skip.c \
+       common-utils.c buffer.c ptid.c gdb-dlfcn.c
 
 # TSOBS
 SRCS+= inflow.c
@@ -109,7 +112,7 @@ SRCS+=      mi-out.c mi-console.c \
        mi-cmds.c mi-cmd-env.c mi-cmd-var.c mi-cmd-break.c mi-cmd-stack.c \
        mi-cmd-file.c mi-cmd-disas.c mi-symbol-cmds.c mi-cmd-target.c \
        mi-interp.c \
-       mi-main.c mi-parse.c mi-getopt.c mi-common.c
+       mi-main.c mi-parse.c mi-getopt.c
 
 # PYTHON OBJS
 SRCS+= python.c \
@@ -151,7 +154,14 @@ SRCS+=     c-exp.y \
 
 SRCS+= init.c
 
-XMLFILES= gdb-target.dtd xinclude.dtd library-list.dtd osdata.dtd
+XMLFILES= \
+       gdb-target.dtd \
+       xinclude.dtd \
+       library-list.dtd \
+       library-list-svr4.dtd \
+       osdata.dtd \
+       threads.dtd \
+       traceframe-info.dtd
 
 # kernel-debugger
 #SRCS+=        freebsd-uthread.c
index 2d102f9..126736a 100644 (file)
    */
 #define HAVE_DIRENT_H 1
 
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
 /* Define if ELF support should be included. */
 #define HAVE_ELF 1
 
 #define HAVE_RAW_DECL_MEMMEM 1
 
 /* Define to 1 if mempcpy is declared even after undefining macros. */
-/* #undef HAVE_RAW_DECL_MEMPCPY */
+#define HAVE_RAW_DECL_MEMPCPY 1
 
 /* Define to 1 if memrchr is declared even after undefining macros. */
 #define HAVE_RAW_DECL_MEMRCHR 1
 #define HAVE_RAW_DECL_STPCPY 1
 
 /* Define to 1 if stpncpy is declared even after undefining macros. */
-/* #undef HAVE_RAW_DECL_STPNCPY */
+#define HAVE_RAW_DECL_STPNCPY 1
 
 /* Define to 1 if strcasestr is declared even after undefining macros. */
 #define HAVE_RAW_DECL_STRCASESTR 1
 #define HAVE_STRUCT_REG 1
 
 /* Define to 1 if `struct reg' is a member of `r_fs'. */
-/* #undef HAVE_STRUCT_REG_R_FS */
+#define HAVE_STRUCT_REG_R_FS 1
 
 /* Define to 1 if `struct reg' is a member of `r_gs'. */
-/* #undef HAVE_STRUCT_REG_R_GS */
+#define HAVE_STRUCT_REG_R_GS 1
 
 /* Define if <link.h> exists and defines a struct so_map which has members
    with an ``som_'' prefix. (Found on older *BSD systems.) */
 /* Define to 1 if you have the `_mcleanup' function. */
 #define HAVE__MCLEANUP 1
 
+/* Path of directory of iconv program. */
+/* #undef ICONV_BIN */
+
+/* Define if the iconv directory should be relocated when GDB is moved. */
+/* #undef ICONV_BIN_RELOCATABLE */
+
 /* Define as const if the declaration of iconv() needs const. */
 #define ICONV_CONST 
 
+/* directory to load the JIT readers from */
+#define JIT_READER_DIR "/usr/lib/gdb"
+
+/* Define if the jit-reader-dir directory should be relocated when GDB is
+   moved. */
+#define JIT_READER_DIR_RELOCATABLE 1
+
 /* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */
 #define MAP_ANONYMOUS MAP_ANON
 
 /* The size of `long', as computed by sizeof. */
 /* #undef SIZEOF_LONG */
 
+/* The size of `unsigned long', as computed by sizeof. */
+#if defined(__i386__)
+#define SIZEOF_UNSIGNED_LONG 4
+#elif defined(__x86_64__)
+#define SIZEOF_UNSIGNED_LONG 8
+#else
+#error Unsupported platform
+#endif
+
+/* The size of `unsigned long long', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG_LONG 8
+
+/* The size of `unsigned __int128', as computed by sizeof. */
+#define SIZEOF_UNSIGNED___INT128 0
+
 /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
    'size_t'. */
 /* #undef SIZE_T_SUFFIX */
 /* Define to `int' if <sys/types.h> does not define. */
 /* #undef pid_t */
 
-/* readline-6.0 started to use different name. */
-/* #undef readline_echoing_p */
-
 /* Define to the equivalent of the C99 'restrict' keyword, or to
    nothing if this is not supported.  Do not define if restrict is
    supported directly.  */
diff --git a/gnu/usr.bin/gdb/libgdb/jit-reader.h b/gnu/usr.bin/gdb/libgdb/jit-reader.h
new file mode 100644 (file)
index 0000000..f96cbe0
--- /dev/null
@@ -0,0 +1,344 @@
+/* JIT declarations for GDB, the GNU Debugger.
+
+   Copyright (C) 2011-2012 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   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/>.  */
+
+#ifndef GDB_JIT_READER_H
+#define GDB_JIT_READER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Versioning information.  See gdb_reader_funcs.  */
+
+#define GDB_READER_INTERFACE_VERSION 1
+
+/* Readers must be released under a GPL compatible license.  To
+   declare that the reader is indeed released under a GPL compatible
+   license, invoke the macro GDB_DECLARE_GPL_COMPATIBLE in a source
+   file.  */
+
+#ifdef __cplusplus
+#define GDB_DECLARE_GPL_COMPATIBLE_READER       \
+  extern "C" {                                  \
+  extern int plugin_is_GPL_compatible (void)    \
+  {                                             \
+    return 0;                                   \
+  }                                             \
+  }
+
+#else
+
+#define GDB_DECLARE_GPL_COMPATIBLE_READER
+  extern int plugin_is_GPL_compatible (void)    \
+  {                                             \
+    return 0;                                   \
+  }
+
+#endif
+
+/* Represents an address on the target system.  */
+
+typedef unsigned long long GDB_CORE_ADDR;
+
+/* Return status codes.  */
+
+enum gdb_status {
+  GDB_FAIL = 0,
+  GDB_SUCCESS = 1
+};
+
+struct gdb_object;
+struct gdb_symtab;
+struct gdb_block;
+struct gdb_symbol_callbacks;
+
+/* An array of these are used to represent a map from code addresses to line
+   numbers in the source file.  */
+
+struct gdb_line_mapping
+{
+  int line;
+  GDB_CORE_ADDR pc;
+};
+
+/* Create a new GDB code object.  Each code object can have one or
+   more symbol tables, each representing a compiled source file.  */
+
+typedef struct gdb_object *(gdb_object_open) (struct gdb_symbol_callbacks *cb);
+
+/* The callback used to create new symbol table.  CB is the
+   gdb_symbol_callbacks which the structure is part of.  FILE_NAME is
+   an (optionally NULL) file name to associate with this new symbol
+   table.
+
+   Returns a new instance to gdb_symtab that can later be passed to
+   gdb_block_new, gdb_symtab_add_line_mapping and gdb_symtab_close.  */
+
+typedef struct gdb_symtab *(gdb_symtab_open) (struct gdb_symbol_callbacks *cb,
+                                              struct gdb_object *obj,
+                                              const char *file_name);
+
+/* Creates a new block in a given symbol table.  A symbol table is a
+   forest of blocks, each block representing an code address range and
+   a corresponding (optionally NULL) NAME.  In case the block
+   corresponds to a function, the NAME passed should be the name of
+   the function.
+
+   If the new block to be created is a child of (i.e. is nested in)
+   another block, the parent block can be passed in PARENT.  SYMTAB is
+   the symbol table the new block is to belong in.  BEGIN, END is the
+   code address range the block corresponds to.
+
+   Returns a new instance of gdb_block, which, as of now, has no use.
+   Note that the gdb_block returned must not be freed by the
+   caller.  */
+
+typedef struct gdb_block *(gdb_block_open) (struct gdb_symbol_callbacks *cb,
+                                            struct gdb_symtab *symtab,
+                                            struct gdb_block *parent,
+                                            GDB_CORE_ADDR begin,
+                                            GDB_CORE_ADDR end,
+                                            const char *name);
+
+/* Adds a PC to line number mapping for the symbol table SYMTAB.
+   NLINES is the number of elements in LINES, each element
+   corresponding to one (PC, line) pair.  */
+
+typedef void (gdb_symtab_add_line_mapping) (struct gdb_symbol_callbacks *cb,
+                                            struct gdb_symtab *symtab,
+                                            int nlines,
+                                            struct gdb_line_mapping *lines);
+
+/* Close the symtab SYMTAB.  This signals to GDB that no more blocks
+   will be opened on this symtab.  */
+
+typedef void (gdb_symtab_close) (struct gdb_symbol_callbacks *cb,
+                                 struct gdb_symtab *symtab);
+
+
+/* Closes the gdb_object OBJ and adds the emitted information into
+   GDB's internal structures.  Once this is done, the debug
+   information will be picked up and used; this will usually be the
+   last operation in gdb_read_debug_info.  */
+
+typedef void (gdb_object_close) (struct gdb_symbol_callbacks *cb,
+                                 struct gdb_object *obj);
+
+/* Reads LEN bytes from TARGET_MEM in the target's virtual address
+   space into GDB_BUF.
+
+   Returns GDB_FAIL on failure, and GDB_SUCCESS on success.  */
+
+typedef enum gdb_status (gdb_target_read) (GDB_CORE_ADDR target_mem,
+                                           void *gdb_buf, int len);
+
+/* The list of callbacks that are passed to read.  These callbacks are
+   to be used to construct the symbol table.  The functions have been
+   described above.  */
+
+struct gdb_symbol_callbacks
+{
+  gdb_object_open *object_open;
+  gdb_symtab_open *symtab_open;
+  gdb_block_open *block_open;
+  gdb_symtab_close *symtab_close;
+  gdb_object_close *object_close;
+
+  gdb_symtab_add_line_mapping *line_mapping_add;
+  gdb_target_read *target_read;
+
+  /* For internal use by GDB.  */
+  void *priv_data;
+};
+
+/* Forward declaration.  */
+
+struct gdb_reg_value;
+
+/* A function of this type is used to free a gdb_reg_value.  See the
+   comment on `free' in struct gdb_reg_value.  */
+
+typedef void (gdb_reg_value_free) (struct gdb_reg_value *);
+
+/* Denotes the value of a register.  */
+
+struct gdb_reg_value
+{
+  /* The size of the register in bytes.  The reader need not set this
+     field.  This will be set for (defined) register values being read
+     from GDB using reg_get.  */
+  int size;
+
+  /* Set to non-zero if the value for the register is known.  The
+     registers for which the reader does not call reg_set are also
+     assumed to be undefined */
+  int defined;
+
+  /* Since gdb_reg_value is a variable sized structure, it will
+     usually be allocated on the heap.  This function is expected to
+     contain the corresponding "free" function.
+
+     When a pointer to gdb_reg_value is being sent from GDB to the
+     reader (via gdb_unwind_reg_get), the reader is expected to call
+     this function (with the same gdb_reg_value as argument) once it
+     is done with the value.
+
+     When the function sends the a gdb_reg_value to GDB (via
+     gdb_unwind_reg_set), it is expected to set this field to point to
+     an appropriate cleanup routine (or to NULL if no cleanup is
+     required).  */
+  gdb_reg_value_free *free;
+
+  /* The value of the register.  */
+  unsigned char value[1];
+};
+
+/* get_frame_id in gdb_reader_funcs is to return a gdb_frame_id
+   corresponding to the current frame.  The registers corresponding to
+   the current frame can be read using reg_get.  Calling get_frame_id
+   on a particular frame should return the same gdb_frame_id
+   throughout its lifetime (i.e. till before it gets unwound).  One
+   way to do this is by having the CODE_ADDRESS point to the
+   function's first instruction and STACK_ADDRESS point to the value
+   of the stack pointer when entering the function.  */
+
+struct gdb_frame_id
+{
+  GDB_CORE_ADDR code_address;
+  GDB_CORE_ADDR stack_address;
+};
+
+/* Forward declaration.  */
+
+struct gdb_unwind_callbacks;
+
+/* Returns the value of a particular register in the current frame.
+   The current frame is the frame that needs to be unwound into the
+   outer (earlier) frame.
+
+   CB is the struct gdb_unwind_callbacks * the callback belongs to.
+   REGNUM is the DWARF register number of the register that needs to
+   be unwound.
+
+   Returns the gdb_reg_value corresponding to the register requested.
+   In case the value of the register has been optimized away or
+   otherwise unavailable, the defined flag in the returned
+   gdb_reg_value will be zero.  */
+
+typedef struct gdb_reg_value *(gdb_unwind_reg_get)
+                              (struct gdb_unwind_callbacks *cb, int regnum);
+
+/* Sets the previous value of a particular register.  REGNUM is the
+   (DWARF) register number whose value is to be set.  VAL is the value
+   the register is to be set to.
+
+   VAL is *not* copied, so the memory allocated to it cannot be
+   reused.  Once GDB no longer needs the value, it is deallocated
+   using the FREE function (see gdb_reg_value).
+
+   A register can also be "set" to an undefined value by setting the
+   defined in VAL to zero.  */
+
+typedef void (gdb_unwind_reg_set) (struct gdb_unwind_callbacks *cb, int regnum,
+                                   struct gdb_reg_value *val);
+
+/* This struct is passed to unwind in gdb_reader_funcs, and is to be
+   used to unwind the current frame (current being the frame whose
+   registers can be read using reg_get) into the earlier frame.  The
+   functions have been described above.  */
+
+struct gdb_unwind_callbacks
+{
+  gdb_unwind_reg_get *reg_get;
+  gdb_unwind_reg_set *reg_set;
+  gdb_target_read *target_read;
+
+  /* For internal use by GDB.  */
+  void *priv_data;
+};
+
+/* Forward declaration.  */
+
+struct gdb_reader_funcs;
+
+/* Parse the debug info off a block of memory, pointed to by MEMORY
+   (already copied to GDB's address space) and MEMORY_SZ bytes long.
+   The implementation has to use the functions in CB to actually emit
+   the parsed data into GDB.  SELF is the same structure returned by
+   gdb_init_reader.
+
+   Return GDB_FAIL on failure and GDB_SUCCESS on success.  */
+
+typedef enum gdb_status (gdb_read_debug_info) (struct gdb_reader_funcs *self,
+                                               struct gdb_symbol_callbacks *cb,
+                                               void *memory, long memory_sz);
+
+/* Unwind the current frame, CB is the set of unwind callbacks that
+   are to be used to do this.
+
+   Return GDB_FAIL on failure and GDB_SUCCESS on success.  */
+
+typedef enum gdb_status (gdb_unwind_frame) (struct gdb_reader_funcs *self,
+                                            struct gdb_unwind_callbacks *cb);
+
+/* Return the frame ID corresponding to the current frame, using C to
+   read the current register values.  See the comment on struct
+   gdb_frame_id.  */
+
+typedef struct gdb_frame_id (gdb_get_frame_id) (struct gdb_reader_funcs *self,
+                                                struct gdb_unwind_callbacks *c);
+
+/* Called when a reader is being unloaded.  This function should also
+   free SELF, if required.  */
+
+typedef void (gdb_destroy_reader) (struct gdb_reader_funcs *self);
+
+/* Called when the reader is loaded.  Must either return a properly
+   populated gdb_reader_funcs or NULL.  The memory allocated for the
+   gdb_reader_funcs is to be managed by the reader itself (i.e. if it
+   is allocated from the heap, it must also be freed in
+   gdb_destroy_reader).  */
+
+extern struct gdb_reader_funcs *gdb_init_reader (void);
+
+/* Pointer to the functions which implement the reader's
+   functionality.  The individual functions have been documented
+   above.
+
+   None of the fields are optional.  */
+
+struct gdb_reader_funcs
+{
+  /* Must be set to GDB_READER_INTERFACE_VERSION.  */
+  int reader_version;
+
+  /* For use by the reader.  */
+  void *priv_data;
+
+  gdb_read_debug_info *read;
+  gdb_unwind_frame *unwind;
+  gdb_get_frame_id *get_frame_id;
+  gdb_destroy_reader *destroy;
+};
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif
index 40354d0..fc52aa4 100644 (file)
@@ -8,13 +8,37 @@ CONTRIBDIR=   ${BASEDIR}/libiberty
 
 CFLAGS+=       -I${BASEDIR}/include -I${.CURDIR} -DHAVE_CONFIG_H
 
-SRCS=  cp-demangle.c cplus-dem.c cp-demint.c floatformat.c getopt.c
-SRCS+= getopt1.c getruntime.c hashtab.c objalloc.c obstack.c
-SRCS+= regex.c safe-ctype.c splay-tree.c
-
-SRCS+= argv.c concat.c hex.c lbasename.c xexit.c xstrdup.c xstrerror.c
-SRCS+= lrealpath.c make-relative-prefix.c filename_cmp.c stpcpy.c
-SRCS+= unlink-if-ordinary.c
-SRCS+= pexecute.c pex-common.c pex-one.c pex-unix.c make-temp-file.c
+SRCS+= ./argv.c \
+       ./cp-demangle.c \
+       ./cp-demint.c \
+       ./cplus-dem.c \
+       ./concat.c \
+       ./dyn-string.c \
+       ./filename_cmp.c \
+       ./floatformat.c \
+       ./getopt.c \
+       ./getopt1.c \
+       ./getpwd.c \
+       ./getruntime.c \
+       ./hashtab.c \
+       ./hex.c \
+       ./lbasename.c \
+       ./lrealpath.c \
+       ./make-relative-prefix.c \
+       ./make-temp-file.c \
+       ./objalloc.c \
+       ./obstack.c \
+       ./pex-common.c \
+       ./pex-one.c \
+       ./pex-unix.c \
+       ./pexecute.c \
+       ./regex.c \
+       ./safe-ctype.c \
+       ./splay-tree.c \
+       ./timeval-utils.c \
+       ./unlink-if-ordinary.c \
+       ./xexit.c \
+       ./xstrdup.c \
+       ./xstrerror.c
 
 .include <bsd.lib.mk>
index 32b548d..728cbf6 100644 (file)
 /* Define to 1 if you have the `getpagesize' function. */
 #define HAVE_GETPAGESIZE 1
 
+/* Define to 1 if you have the `getrlimit' function. */
+#define HAVE_GETRLIMIT 1
+
 /* Define to 1 if you have the `getrusage' function. */
 #define HAVE_GETRUSAGE 1
 
 /* Define to 1 if you have the `setproctitle' function. */
 #define HAVE_SETPROCTITLE 1
 
+/* Define to 1 if you have the `setrlimit' function. */
+#define HAVE_SETRLIMIT 1
+
 /* Define to 1 if you have the `sigsetmask' function. */
 #define HAVE_SIGSETMASK 1
 
 #define HAVE_STPCPY 1
 
 /* Define to 1 if you have the `stpncpy' function. */
-/* #undef HAVE_STPNCPY */
+#define HAVE_STPNCPY 1
 
 /* Define to 1 if you have the `strcasecmp' function. */
 #define HAVE_STRCASECMP 1
 #define PACKAGE_VERSION ""
 
 /* The size of `int', as computed by sizeof. */
-/* #define SIZEOF_INT 4 */
+#define SIZEOF_INT 4
 
 /* Define if you know the direction of stack growth for your system; otherwise
    it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows
index 885e815..2b6786f 100644 (file)
@@ -97,7 +97,7 @@
 
 
 /* Version number of package */
-#define VERSION "2.20.51"
+#define VERSION "2.22.51"
 
 /* Define to 1 if on MINIX. */
 /* #undef _MINIX */