]> git.pld-linux.org Git - packages/gdb.git/commitdiff
- remove old and unused patches.
authorPaweł Sikora <pluto@pld-linux.org>
Thu, 2 Jun 2011 09:09:55 +0000 (09:09 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    gdb-6.3-bz182116-exec-from-pthread.patch -> 1.2
    gdb-6.3-ia64-corefile-fix-20050127.patch -> 1.2
    gdb-6.3-nonthreaded-wp-20050117.patch -> 1.2
    gdb-6.3-pie-20050110.patch -> 1.3
    gdb-6.3-sepcrc-20050402.patch -> 1.2
    gdb-6.3-test-sepcrc-20050402.patch -> 1.2

gdb-6.3-bz182116-exec-from-pthread.patch [deleted file]
gdb-6.3-ia64-corefile-fix-20050127.patch [deleted file]
gdb-6.3-nonthreaded-wp-20050117.patch [deleted file]
gdb-6.3-pie-20050110.patch [deleted file]
gdb-6.3-sepcrc-20050402.patch [deleted file]
gdb-6.3-test-sepcrc-20050402.patch [deleted file]

diff --git a/gdb-6.3-bz182116-exec-from-pthread.patch b/gdb-6.3-bz182116-exec-from-pthread.patch
deleted file mode 100644 (file)
index bf7f58c..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=182116
-
-
-Index: gdb-6.5/gdb/linux-thread-db.c
-===================================================================
---- gdb-6.5.orig/gdb/linux-thread-db.c 2006-08-24 02:55:24.000000000 -0300
-+++ gdb-6.5/gdb/linux-thread-db.c      2006-08-24 02:56:16.000000000 -0300
-@@ -939,6 +939,15 @@ thread_db_wait (ptid_t ptid, struct targ
-       || ourstatus->kind == TARGET_WAITKIND_SIGNALLED)
-     return pid_to_ptid (-1);
-+  if (ourstatus->kind == TARGET_WAITKIND_EXECD)
-+    {
-+      remove_thread_event_breakpoints ();
-+      unpush_target (&thread_db_ops);
-+      using_thread_db = 0;
-+
-+      return pid_to_ptid (GET_PID (ptid));
-+    }
-+
-   if (ourstatus->kind == TARGET_WAITKIND_STOPPED
-       && (ourstatus->value.sig == TARGET_SIGNAL_TRAP
-           || ourstatus->value.sig == TARGET_SIGNAL_ILL))
diff --git a/gdb-6.3-ia64-corefile-fix-20050127.patch b/gdb-6.3-ia64-corefile-fix-20050127.patch
deleted file mode 100644 (file)
index 45a84cc..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-2005-01-25  Jeff Johnston  <jjohnstn@redhat.com>
-
-       * ia64-tdep.c (getunwind_table): Call the low-level xfer
-       unwind table syscall to support backtracing from syscalls in
-       a corefile.
-
-Index: gdb-6.5/gdb/ia64-tdep.c
-===================================================================
---- gdb-6.5.orig/gdb/ia64-tdep.c       2006-04-18 16:20:06.000000000 -0300
-+++ gdb-6.5/gdb/ia64-tdep.c    2006-07-07 02:18:40.000000000 -0300
-@@ -2470,8 +2470,17 @@ getunwind_table (void *buf, size_t len)
-      we want to preserve fall back to the running kernel's table, then
-      we should find a way to override the corefile layer's
-      xfer_partial method.  */
-+#if 0
-   x = target_read_partial (&current_target, TARGET_OBJECT_UNWIND_TABLE, NULL,
-                          buf, 0, len);
-+#endif
-+  /* FIXME: This is a temporary solution to backtracing syscalls in corefiles.
-+            To do this properly, the AUXV section should be used.  This
-+          fix will work as long as the kernel used to generate the corefile
-+          is equivalent to the kernel used to debug the corefile.  */
-+  x = ia64_linux_xfer_unwind_table (&current_target,
-+                                  TARGET_OBJECT_UNWIND_TABLE, NULL,
-+                                  buf, NULL, 0, len);
-   return (int)x;
- }
diff --git a/gdb-6.3-nonthreaded-wp-20050117.patch b/gdb-6.3-nonthreaded-wp-20050117.patch
deleted file mode 100644 (file)
index 6f49864..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-[base]
-
-2007-10-13  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-       * linux-nat.c (iterate_over_lwps): Fixed missing LWP initialization for
-       current INFERIOR_PTID.
-
-2007-10-13  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-       * gdb.base/follow-child.exp, gdb.base/follow-child.c: New files.
-
-2007-10-16  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-       Port to GDB-6.7.
-
-2008-02-24  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-       Port to GDB-6.8pre.
-
-2008-08-25  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-       Remove the fix as causing an assertion failure for
-       gdb.base/checkpoint.exp and it is no longer needed for
-       gdb.base/follow-child.exp .
-
-Index: gdb-6.8cvs20080219/gdb/testsuite/gdb.base/follow-child.c
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8cvs20080219/gdb/testsuite/gdb.base/follow-child.c   2008-02-22 08:14:04.000000000 +0100
-@@ -0,0 +1,29 @@
-+/* This testcase is part of GDB, the GNU debugger.
-+
-+   Copyright 2007 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 2 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, write to the Free Software
-+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+
-+   Please email any bugs, comments, and/or additions to this file to:
-+   bug-gdb@prep.ai.mit.edu  */
-+
-+#include <unistd.h>
-+
-+int main()
-+{
-+  fork ();
-+  sleep (60);
-+  return 0;
-+}
-Index: gdb-6.8cvs20080219/gdb/testsuite/gdb.base/follow-child.exp
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8cvs20080219/gdb/testsuite/gdb.base/follow-child.exp 2008-02-22 08:14:17.000000000 +0100
-@@ -0,0 +1,55 @@
-+# Copyright 2007 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 2 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, write to the Free Software
-+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+
-+if $tracelevel then {
-+    strace $tracelevel
-+}
-+
-+set prms_id 0
-+set bug_id 0
-+
-+set testfile follow-child
-+set srcfile ${testfile}.c
-+set binfile ${objdir}/${subdir}/${testfile}
-+if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
-+    untested "Couldn't compile test program"
-+    return -1
-+}
-+
-+# Get things started.
-+
-+gdb_exit
-+gdb_start
-+gdb_reinitialize_dir $srcdir/$subdir
-+gdb_load ${binfile}
-+
-+# For C programs, "start" should stop in main().
-+
-+gdb_test "set follow-fork-mode child" ""
-+set test "started"
-+# GDB_RUN_CMD already checks for `Starting program:'.
-+gdb_run_cmd
-+sleep 5
-+send_gdb "\003"
-+set test "break"
-+gdb_test_multiple "" $test {
-+    -re "Program received signal SIGINT.*$gdb_prompt $" {
-+      pass $test
-+    }
-+    -re "\\\[New process \[0-9\]+\\\]" {
-+      fail $test
-+    }
-+}
diff --git a/gdb-6.3-pie-20050110.patch b/gdb-6.3-pie-20050110.patch
deleted file mode 100644 (file)
index 18fd7f7..0000000
+++ /dev/null
@@ -1,1350 +0,0 @@
-2007-11-02  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-       Port to GDB-6.7.1.
-
-2007-11-02  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-       Port to post-GDB-6.7.1 multi-PC breakpoints.
-
-2007-11-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-       * solib-svr4.c (svr4_current_sos): Fix segfault on NULL EXEC_BFD.
-
-2008-02-24  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-       Port to GDB-6.8pre.
-
-2008-02-27  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-       Port to gdb-6.7.50.20080227.
-
-2008-06-01  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-       Fix crash on a watchpoint update on an inferior stop.
-
-2008-09-01  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-       Fix scan_dyntag() for binaries provided by valgrind (BZ 460319).
-
-Index: gdb-6.8.91.20090925/gdb/amd64-tdep.c
-===================================================================
---- gdb-6.8.91.20090925.orig/gdb/amd64-tdep.c  2009-09-25 10:25:39.000000000 +0200
-+++ gdb-6.8.91.20090925/gdb/amd64-tdep.c       2009-09-25 10:25:45.000000000 +0200
-@@ -36,6 +36,7 @@
- #include "regcache.h"
- #include "regset.h"
- #include "symfile.h"
-+#include "exceptions.h"
- #include "gdb_assert.h"
-@@ -1591,18 +1592,31 @@ amd64_analyze_stack_align (CORE_ADDR pc,
-    Any function that doesn't start with this sequence will be assumed
-    to have no prologue and thus no valid frame pointer in %rbp.  */
--static CORE_ADDR
--amd64_analyze_prologue (struct gdbarch *gdbarch,
--                      CORE_ADDR pc, CORE_ADDR current_pc,
--                      struct amd64_frame_cache *cache)
-+struct amd64_analyze_prologue_data
-+  {
-+    struct gdbarch *gdbarch;
-+    CORE_ADDR pc, current_pc;
-+    struct amd64_frame_cache *cache;
-+    CORE_ADDR retval;
-+  };
-+
-+static int
-+amd64_analyze_prologue_1 (void *data_pointer)
- {
-+  struct amd64_analyze_prologue_data *data = data_pointer;
-+  struct gdbarch *gdbarch = data->gdbarch;
-+  CORE_ADDR pc = data->pc, current_pc = data->current_pc;
-+  struct amd64_frame_cache *cache = data->cache;
-   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-   static gdb_byte proto[3] = { 0x48, 0x89, 0xe5 }; /* movq %rsp, %rbp */
-   gdb_byte buf[3];
-   gdb_byte op;
-   if (current_pc <= pc)
--    return current_pc;
-+    {
-+      data->retval = current_pc;
-+      return 1;
-+    }
-   pc = amd64_analyze_stack_align (pc, current_pc, cache);
-@@ -1617,18 +1631,59 @@ amd64_analyze_prologue (struct gdbarch *
-       /* If that's all, return now.  */
-       if (current_pc <= pc + 1)
--        return current_pc;
-+        {
-+        data->retval = current_pc;
-+        return 1;
-+        }
-       /* Check for `movq %rsp, %rbp'.  */
-       read_memory (pc + 1, buf, 3);
-       if (memcmp (buf, proto, 3) != 0)
--      return pc + 1;
-+      {
-+        data->retval = pc + 1;
-+        return 1;
-+      }
-       /* OK, we actually have a frame.  */
-       cache->frameless_p = 0;
--      return pc + 4;
-+      data->retval = pc + 4;
-+      return 1;
-     }
-+  data->retval = pc;
-+  return 1;
-+}
-+
-+/* Catch memory read errors and return just PC in such case.
-+   It occurs very early on enable_break->new_symfile_objfile->
-+   ->breakpoint_re_set->decode_line_1->decode_variable_1->
-+   ->find_function_start_sal  */
-+
-+static CORE_ADDR
-+amd64_analyze_prologue (struct gdbarch *gdbarch,
-+                      CORE_ADDR pc, CORE_ADDR current_pc,
-+                      struct amd64_frame_cache *cache)
-+{
-+  int status;
-+  struct amd64_analyze_prologue_data data;
-+  struct ui_file *saved_gdb_stderr;
-+
-+  /* Suppress error messages.  */
-+  saved_gdb_stderr = gdb_stderr;
-+  gdb_stderr = ui_file_new ();
-+
-+  data.gdbarch = gdbarch;
-+  data.pc = pc;
-+  data.current_pc = current_pc;
-+  data.cache = cache;
-+  status = catch_errors (amd64_analyze_prologue_1, &data, "", RETURN_MASK_ALL);
-+
-+  /* Stop suppressing error messages.  */
-+  ui_file_delete (gdb_stderr);
-+  gdb_stderr = saved_gdb_stderr;
-+
-+  if (status)
-+    return data.retval;
-   return pc;
- }
-Index: gdb-6.8.91.20090925/gdb/auxv.c
-===================================================================
---- gdb-6.8.91.20090925.orig/gdb/auxv.c        2009-07-02 19:25:52.000000000 +0200
-+++ gdb-6.8.91.20090925/gdb/auxv.c     2009-09-25 10:25:45.000000000 +0200
-@@ -78,7 +78,7 @@ procfs_xfer_auxv (struct target_ops *ops
-    Return 1 if an entry was read into *TYPEP and *VALP.  */
- static int
- default_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
--                 gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
-+                 gdb_byte *endptr, ULONGEST *typep, CORE_ADDR *valp)
- {
-   const int sizeof_auxv_field = gdbarch_ptr_bit (target_gdbarch)
-                               / TARGET_CHAR_BIT;
-@@ -106,7 +106,7 @@ default_auxv_parse (struct target_ops *o
-    Return 1 if an entry was read into *TYPEP and *VALP.  */
- int
- target_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
--                  gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
-+                  gdb_byte *endptr, ULONGEST *typep, CORE_ADDR *valp)
- {
-   struct target_ops *t;
-   for (t = ops; t != NULL; t = t->beneath)
-@@ -121,9 +121,10 @@ target_auxv_parse (struct target_ops *op
-    an error getting the information.  On success, return 1 after
-    storing the entry's value field in *VALP.  */
- int
--target_auxv_search (struct target_ops *ops, CORE_ADDR match, CORE_ADDR *valp)
-+target_auxv_search (struct target_ops *ops, ULONGEST match, CORE_ADDR *valp)
- {
--  CORE_ADDR type, val;
-+  CORE_ADDR val;
-+  ULONGEST at_type;
-   gdb_byte *data;
-   LONGEST n = target_read_alloc (ops, TARGET_OBJECT_AUXV, NULL, &data);
-   gdb_byte *ptr = data;
-@@ -133,10 +134,10 @@ target_auxv_search (struct target_ops *o
-     return n;
-   while (1)
--    switch (target_auxv_parse (ops, &ptr, data + n, &type, &val))
-+    switch (target_auxv_parse (ops, &ptr, data + n, &at_type, &val))
-       {
-       case 1:                 /* Here's an entry, check it.  */
--      if (type == match)
-+      if (at_type == match)
-         {
-           xfree (data);
-           *valp = val;
-@@ -159,7 +160,8 @@ target_auxv_search (struct target_ops *o
- int
- fprint_target_auxv (struct ui_file *file, struct target_ops *ops)
- {
--  CORE_ADDR type, val;
-+  CORE_ADDR val;
-+  ULONGEST at_type;
-   gdb_byte *data;
-   LONGEST len = target_read_alloc (ops, TARGET_OBJECT_AUXV, NULL,
-                                  &data);
-@@ -169,13 +171,13 @@ fprint_target_auxv (struct ui_file *file
-   if (len <= 0)
-     return len;
--  while (target_auxv_parse (ops, &ptr, data + len, &type, &val) > 0)
-+  while (target_auxv_parse (ops, &ptr, data + len, &at_type, &val) > 0)
-     {
-       const char *name = "???";
-       const char *description = "";
-       enum { dec, hex, str } flavor = hex;
--      switch (type)
-+      switch (at_type)
-       {
- #define TAG(tag, text, kind) \
-       case tag: name = #tag; description = text; flavor = kind; break
-@@ -231,7 +233,7 @@ fprint_target_auxv (struct ui_file *file
-       }
-       fprintf_filtered (file, "%-4s %-20s %-30s ",
--                      plongest (type), name, description);
-+                      plongest (at_type), name, description);
-       switch (flavor)
-       {
-       case dec:
-@@ -253,7 +255,7 @@ fprint_target_auxv (struct ui_file *file
-         break;
-       }
-       ++ents;
--      if (type == AT_NULL)
-+      if (at_type == AT_NULL)
-       break;
-     }
-Index: gdb-6.8.91.20090925/gdb/auxv.h
-===================================================================
---- gdb-6.8.91.20090925.orig/gdb/auxv.h        2009-06-07 21:07:08.000000000 +0200
-+++ gdb-6.8.91.20090925/gdb/auxv.h     2009-09-25 10:25:45.000000000 +0200
-@@ -31,14 +31,14 @@
-    Return 1 if an entry was read into *TYPEP and *VALP.  */
- extern int target_auxv_parse (struct target_ops *ops,
-                             gdb_byte **readptr, gdb_byte *endptr,
--                            CORE_ADDR *typep, CORE_ADDR *valp);
-+                            ULONGEST *typep, CORE_ADDR *valp);
- /* Extract the auxiliary vector entry with a_type matching MATCH.
-    Return zero if no such entry was found, or -1 if there was
-    an error getting the information.  On success, return 1 after
-    storing the entry's value field in *VALP.  */
- extern int target_auxv_search (struct target_ops *ops,
--                             CORE_ADDR match, CORE_ADDR *valp);
-+                             ULONGEST match, CORE_ADDR *valp);
- /* Print the contents of the target's AUXV on the specified file. */
- extern int fprint_target_auxv (struct ui_file *file, struct target_ops *ops);
-Index: gdb-6.8.91.20090925/gdb/dwarf2read.c
-===================================================================
---- gdb-6.8.91.20090925.orig/gdb/dwarf2read.c  2009-09-25 10:25:39.000000000 +0200
-+++ gdb-6.8.91.20090925/gdb/dwarf2read.c       2009-09-25 10:25:45.000000000 +0200
-@@ -1717,7 +1717,7 @@ dwarf2_build_psymtabs (struct objfile *o
-   dwarf2_read_section (objfile, &dwarf2_per_objfile->eh_frame);
-   dwarf2_read_section (objfile, &dwarf2_per_objfile->frame);
--  if (mainline
-+  if ((mainline == 1)
-       || (objfile->global_psymbols.size == 0
-         && objfile->static_psymbols.size == 0))
-     {
-Index: gdb-6.8.91.20090925/gdb/elfread.c
-===================================================================
---- gdb-6.8.91.20090925.orig/gdb/elfread.c     2009-09-25 10:25:38.000000000 +0200
-+++ gdb-6.8.91.20090925/gdb/elfread.c  2009-09-25 10:25:45.000000000 +0200
-@@ -681,7 +681,7 @@ elf_symfile_read (struct objfile *objfil
-   /* If we are reinitializing, or if we have never loaded syms yet,
-      set table to empty.  MAINLINE is cleared so that *_read_psymtab
-      functions do not all also re-initialize the psymbol table. */
--  if (mainline)
-+  if (mainline == 1)
-     {
-       init_psymbol_list (objfile, 0);
-       mainline = 0;
-Index: gdb-6.8.91.20090925/gdb/infrun.c
-===================================================================
---- gdb-6.8.91.20090925.orig/gdb/infrun.c      2009-09-25 10:25:39.000000000 +0200
-+++ gdb-6.8.91.20090925/gdb/infrun.c   2009-09-25 10:25:45.000000000 +0200
-@@ -3659,6 +3659,10 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (
- #endif
-         target_terminal_inferior ();
-+        /* For PIE executables, we dont really know where the
-+           breakpoints are going to be until we start up the inferior.  */
-+        enable_breakpoints_after_startup ();
-+
-         /* If requested, stop when the dynamic linker notifies
-            gdb of events.  This allows the user to get control
-            and place breakpoints in initializer routines for
-Index: gdb-6.8.91.20090925/gdb/objfiles.c
-===================================================================
---- gdb-6.8.91.20090925.orig/gdb/objfiles.c    2009-09-25 10:25:38.000000000 +0200
-+++ gdb-6.8.91.20090925/gdb/objfiles.c 2009-09-25 10:25:45.000000000 +0200
-@@ -53,6 +53,9 @@
- #include "observer.h"
- #include "complaints.h"
-+#include "auxv.h"
-+#include "elf/common.h"
-+
- /* Prototypes for local functions */
- static void objfile_alloc_data (struct objfile *objfile);
-@@ -280,9 +283,17 @@ init_entry_point_info (struct objfile *o
- CORE_ADDR
- entry_point_address (void)
- {
-+  int ret;
-+
-   struct gdbarch *gdbarch;
-   CORE_ADDR entry_point;
-+  /* Find the address of the entry point of the program from the
-+     auxv vector.  */
-+  ret = target_auxv_search (&current_target, AT_ENTRY, &entry_point);
-+  if (ret == 1)
-+     return entry_point;                                                                              
-+
-   if (symfile_objfile == NULL)
-     return 0;
-Index: gdb-6.8.91.20090925/gdb/solib-svr4.c
-===================================================================
---- gdb-6.8.91.20090925.orig/gdb/solib-svr4.c  2009-09-25 10:25:39.000000000 +0200
-+++ gdb-6.8.91.20090925/gdb/solib-svr4.c       2009-09-25 10:28:07.000000000 +0200
-@@ -47,6 +47,7 @@
- #include "exec.h"
- #include "auxv.h"
- #include "exceptions.h"
-+#include "command.h"
- static struct link_map_offsets *svr4_fetch_link_map_offsets (void);
- static int svr4_have_link_map_offsets (void);
-@@ -359,7 +360,9 @@ solib_svr4_inferior_exit (int pid)
- /* Local function prototypes */
-+#if 0
- static int match_main (char *);
-+#endif
- static CORE_ADDR bfd_lookup_symbol (bfd *, char *);
-@@ -600,10 +603,12 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
-   int arch_size, step, sect_size;
-   long dyn_tag;
-   CORE_ADDR dyn_ptr, dyn_addr;
-+  CORE_ADDR reloc_addr = 0;
-   gdb_byte *bufend, *bufstart, *buf;
-   Elf32_External_Dyn *x_dynp_32;
-   Elf64_External_Dyn *x_dynp_64;
-   struct bfd_section *sect;
-+  int ret;
-   if (abfd == NULL)
-     return 0;
-@@ -615,19 +620,81 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
-   if (arch_size == -1)
-     return 0;
-+  /* The auxv vector based relocatable files reading is limited to the main
-+     executable.  */
-+  gdb_assert (abfd == exec_bfd || ptr == NULL);
-+
-+  if (ptr != NULL)
-+    {
-+      CORE_ADDR entry_addr;
-+
-+      /* Find the address of the entry point of the program from the
-+       auxv vector.  */
-+      ret = target_auxv_search (&current_target, AT_ENTRY, &entry_addr);
-+
-+      if (ret == 0 || ret == -1)
-+      {
-+        /* No auxv info, maybe an older kernel. Fake our way through.  */
-+        entry_addr = bfd_get_start_address (exec_bfd); 
-+
-+        if (debug_solib)
-+          fprintf_unfiltered (gdb_stdlog,
-+                              "elf_locate_base: program entry address not found. Using bfd's %s for %s\n",
-+                              paddress (target_gdbarch, entry_addr), exec_bfd->filename);
-+      }
-+      else
-+      {
-+        if (debug_solib)
-+          fprintf_unfiltered (gdb_stdlog,
-+                              "elf_locate_base: found program entry address %s for %s\n",
-+                              paddress (target_gdbarch, entry_addr), exec_bfd->filename);
-+      }
-+      reloc_addr = entry_addr - bfd_get_start_address (exec_bfd);
-+      if (debug_solib)
-+      fprintf_unfiltered (gdb_stdlog,
-+                          "elf_locate_base: expected relocation offset %s for %s\n",
-+                          paddress (target_gdbarch, reloc_addr), exec_bfd->filename);
-+    }
-+
-   /* Find the start address of the .dynamic section.  */
-   sect = bfd_get_section_by_name (abfd, ".dynamic");
-   if (sect == NULL)
--    return 0;
-+    { 
-+      if (debug_solib)
-+      fprintf_unfiltered (gdb_stdlog,
-+                          "elf_locate_base: .dynamic section not found in %s -- return now\n",
-+                          exec_bfd->filename);
-+      return 0;
-+    }
-+  else
-+    { 
-+      if (debug_solib)
-+      fprintf_unfiltered (gdb_stdlog,
-+                          "elf_locate_base: .dynamic section found in %s\n",
-+                          exec_bfd->filename);
-+    }
-+
-   dyn_addr = bfd_section_vma (abfd, sect);
-+  if (debug_solib)
-+    fprintf_unfiltered (gdb_stdlog,
-+                      "elf_locate_base: .dynamic addr %s\n",
-+                      paddress (target_gdbarch, dyn_addr));
-   /* Read in .dynamic from the BFD.  We will get the actual value
-      from memory later.  */
-   sect_size = bfd_section_size (abfd, sect);
-   buf = bufstart = alloca (sect_size);
-+  if (debug_solib) 
-+    fprintf_unfiltered (gdb_stdlog, 
-+                        "elf_locate_base: read in .dynamic section\n");
-   if (!bfd_get_section_contents (abfd, sect,
-                                buf, 0, sect_size))
--    return 0;
-+    { 
-+      if (debug_solib)
-+      fprintf_unfiltered (gdb_stdlog,
-+                          "elf_locate_base: couldn't read .dynamic section -- return now\n");
-+      return 0;
-+    }
-   /* Iterate over BUF and scan for DYNTAG.  If found, set PTR and return.  */
-   step = (arch_size == 32) ? sizeof (Elf32_External_Dyn)
-@@ -648,26 +715,105 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
-       dyn_tag = bfd_h_get_64 (abfd, (bfd_byte *) x_dynp_64->d_tag);
-       dyn_ptr = bfd_h_get_64 (abfd, (bfd_byte *) x_dynp_64->d_un.d_ptr);
-       }
--     if (dyn_tag == DT_NULL)
-+
-+    /* Verify RELOC_ADDR makes sense - it does not have to for valgrind which
-+       supplies us a specially crafted executable in /proc/PID/fd/X while
-+       /proc/PID/auxv corresponds to a different executable (.../memcheck).  */
-+    if (reloc_addr)
-+      {
-+      gdb_byte tag_buf[8];
-+      CORE_ADDR tag_addr;
-+
-+      tag_addr = dyn_addr + (buf - bufstart) + reloc_addr;
-+      if (target_read_memory (tag_addr, tag_buf, arch_size / 8) == 0)
-+        {
-+          if (memcmp (tag_buf, buf, arch_size / 8) != 0)
-+            {
-+              if (debug_solib)
-+                fprintf_unfiltered (gdb_stdlog,
-+                                    "elf_locate_base: tag at offset 0x%lx does not match,"
-+                                    " dropping relocation offset %s\n",
-+                                    (unsigned long) (buf - bufstart), paddress (target_gdbarch, reloc_addr));
-+              reloc_addr = 0;
-+            }
-+        }
-+      else
-+        {
-+          if (debug_solib)
-+            fprintf_unfiltered (gdb_stdlog,
-+                                "elf_locate_base: tag at offset 0x%lx is not readable,"
-+                                " dropping relocation offset %s\n",
-+                                (unsigned long) (buf - bufstart), paddress (target_gdbarch, reloc_addr));
-+          reloc_addr = 0;
-+        }
-+      }
-+
-+    if (dyn_tag == DT_NULL)
-        return 0;
--     if (dyn_tag == dyntag)
--       {
--       /* If requested, try to read the runtime value of this .dynamic
--          entry.  */
--       if (ptr)
--         {
--           struct type *ptr_type;
--           gdb_byte ptr_buf[8];
--           CORE_ADDR ptr_addr;
--
--           ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr;
--           ptr_addr = dyn_addr + (buf - bufstart) + arch_size / 8;
--           if (target_read_memory (ptr_addr, ptr_buf, arch_size / 8) == 0)
--             dyn_ptr = extract_typed_address (ptr_buf, ptr_type);
--           *ptr = dyn_ptr;
--         }
--       return 1;
--       }
-+    if (dyn_tag == dyntag)
-+      {
-+      /* If requested, try to read the runtime value of this .dynamic
-+         entry.  */
-+      if (ptr)
-+        {
-+          gdb_byte ptr_buf[8];
-+          CORE_ADDR ptr_addr;
-+          int got;
-+
-+          ptr_addr = dyn_addr + (buf - bufstart) + arch_size / 8;
-+          if (ptr != NULL)
-+            {
-+              if (debug_solib)
-+                fprintf_unfiltered (gdb_stdlog,
-+                                    "elf_locate_base: unrelocated ptr addr %s\n",
-+                                    paddress (target_gdbarch, ptr_addr));
-+              ptr_addr += reloc_addr;
-+              if (debug_solib) 
-+                fprintf_unfiltered (gdb_stdlog, 
-+                                    "elf_locate_base: relocated ptr addr %s"
-+                                    " (relocation offset %s) for %s\n",
-+                                    paddress (target_gdbarch, ptr_addr), paddress (target_gdbarch, reloc_addr),
-+                                    exec_bfd->filename);
-+            }
-+          got = target_read_memory (ptr_addr, ptr_buf, arch_size / 8);
-+          if (got != 0 && reloc_addr)
-+            {
-+              ptr_addr -= reloc_addr;
-+              if (debug_solib) 
-+                fprintf_unfiltered (gdb_stdlog, 
-+                                    "elf_locate_base: unrelocated back to ptr addr %s"
-+                                    " as the memory was unreable for %s\n",
-+                                    paddress (target_gdbarch, ptr_addr), exec_bfd->filename);
-+              got = target_read_memory (ptr_addr, ptr_buf, arch_size / 8);
-+            }
-+
-+          if (got == 0)
-+            {
-+              struct type *ptr_type;
-+
-+              ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr;
-+              dyn_ptr = extract_typed_address (ptr_buf, ptr_type);
-+              if (ptr != NULL)
-+                {
-+                  if (debug_solib)
-+                    fprintf_unfiltered (gdb_stdlog,
-+                                        "elf_locate_base: Tag entry has value %s -- return now\n",
-+                                        paddress (target_gdbarch, dyn_ptr));
-+                }
-+            }
-+          else
-+            {
-+              if (ptr != NULL)
-+                {
-+                  if (debug_solib)
-+                    fprintf_unfiltered (gdb_stdlog,
-+                                        "elf_locate_base: Couldn't read tag entry value -- return now\n");
-+                }
-+            }
-+          *ptr = dyn_ptr;
-+        }
-+      return 1;
-+      }
-   }
-   return 0;
-@@ -1040,6 +1186,11 @@ svr4_current_sos (void)
-   CORE_ADDR ldsomap = 0;
-   struct inferior *inf;
-   struct svr4_info *info;
-+  const char *filename = exec_bfd ? exec_bfd->filename : "<none>";
-+
-+  if (debug_solib)
-+    fprintf_unfiltered (gdb_stdlog, 
-+                        "svr4_current_sos: exec_bfd %s\n", filename);
-   if (ptid_equal (inferior_ptid, null_ptid))
-     return NULL;
-@@ -1054,7 +1205,13 @@ svr4_current_sos (void)
-   /* If we can't find the dynamic linker's base structure, this
-      must not be a dynamically linked executable.  Hmm.  */
-   if (! info->debug_base)
--    return svr4_default_sos ();
-+    {
-+      if (debug_solib)
-+      fprintf_unfiltered (gdb_stdlog, 
-+                          "svr4_current_sos: no DT_DEBUG found in %s -- return now\n",
-+                          filename);
-+      return svr4_default_sos ();
-+    }
-   /* Walk the inferior's link map list, and build our list of
-      `struct so_list' nodes.  */
-@@ -1074,26 +1231,104 @@ svr4_current_sos (void)
-       new->lm_info->lm = xzalloc (lmo->link_map_size);
-       make_cleanup (xfree, new->lm_info->lm);
-+      if (debug_solib)
-+        fprintf_unfiltered (gdb_stdlog, 
-+                            "svr4_current_sos: read lm at %s\n", paddress (target_gdbarch, lm));
-       read_memory (lm, new->lm_info->lm, lmo->link_map_size);
-       lm = LM_NEXT (new);
-+      if (debug_solib)
-+        fprintf_unfiltered (gdb_stdlog,
-+                            "svr4_current_sos: is first link entry? %d\n",
-+                            IGNORE_FIRST_LINK_MAP_ENTRY (new));
-+
-       /* For SVR4 versions, the first entry in the link map is for the
-          inferior executable, so we must ignore it.  For some versions of
-          SVR4, it has no name.  For others (Solaris 2.3 for example), it
-          does have a name, so we can no longer use a missing name to
-          decide when to ignore it. */
--      if (IGNORE_FIRST_LINK_MAP_ENTRY (new) && ldsomap == 0)
-+      if (exec_bfd != NULL && IGNORE_FIRST_LINK_MAP_ENTRY (new) && ldsomap == 0)
-       {
--        info->main_lm_addr = new->lm_info->lm_addr;
--        free_so (new);
--      }
-+          /* It is the first link map entry, i.e. it is the main executable.  */
-+
-+        if (bfd_get_start_address (exec_bfd) == entry_point_address ())
-+          {
-+            /* Non-pie case, main executable has not been relocated.  */
-+            info->main_lm_addr = new->lm_info->lm_addr;
-+            free_so (new);
-+          }
-+        else
-+          {
-+              /* Pie case, main executable has been relocated.  */
-+            struct so_list *gdb_solib;
-+
-+            if (debug_solib)
-+              fprintf_unfiltered (gdb_stdlog,
-+                                  "svr4_current_sos: Processing first link map entry\n");
-+            strncpy (new->so_name, exec_bfd->filename,
-+                     SO_NAME_MAX_PATH_SIZE - 1);
-+            new->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
-+            strcpy (new->so_original_name, new->so_name);
-+            /*new->main = 1;*/
-+            new->main_relocated = 0;
-+            
-+            if (debug_solib)
-+              { 
-+                fprintf_unfiltered (gdb_stdlog,
-+                                    "svr4_current_sos: Processing nameless DSO\n");
-+                fprintf_unfiltered (gdb_stdlog,
-+                                    "svr4_current_sos: adding name %s\n",
-+                                    new->so_name);
-+              }
-+
-+            for (gdb_solib = master_so_list ();
-+                   gdb_solib;
-+                   gdb_solib = gdb_solib->next)
-+              {
-+                if (debug_solib)
-+                  fprintf_unfiltered (gdb_stdlog,
-+                                      "svr4_current_sos: compare gdb %s and new %s\n",
-+                                      gdb_solib->so_name, new->so_name);
-+                if (strcmp (gdb_solib->so_name, new->so_name) == 0)
-+                  if (gdb_solib->main_relocated)
-+                    { 
-+                      if (debug_solib)
-+                        fprintf_unfiltered (gdb_stdlog,
-+                                            "svr4_current_sos: found main relocated\n");
-+                      break;
-+                    }
-+              }
-+
-+            if ((gdb_solib && !gdb_solib->main_relocated) || (!gdb_solib))
-+              {
-+                add_to_target_sections (0 /*from_tty*/, &current_target, new);
-+                new->main = 1;
-+              }
-+
-+            /* We need this in the list of shared libs we return because
-+               solib_add_stub will loop through it and add the symbol file.  */
-+            new->next = 0;
-+            *link_ptr = new;
-+            link_ptr = &new->next; 
-+          }
-+      } /* End of IGNORE_FIRST_LINK_MAP_ENTRY  */
-       else
-       {
-+          /* This is not the first link map entry, i.e. is not the main
-+             executable.  Note however that it could be the DSO supplied on
-+             certain systems (i.e. Linux 2.6) containing information about
-+             the vsyscall page.  We must ignore such entry. This entry is 
-+             nameless (just like the one for the main executable, sigh).  */
-+
-         int errcode;
-         char *buffer;
-         /* Extract this shared object's name.  */
-+        if (debug_solib)
-+          fprintf_unfiltered (gdb_stdlog, 
-+                                "svr4_current_sos: read LM_NAME\n");
-+
-         target_read_string (LM_NAME (new), &buffer,
-                             SO_NAME_MAX_PATH_SIZE - 1, &errcode);
-         if (errcode != 0)
-@@ -1101,63 +1336,76 @@ svr4_current_sos (void)
-                    safe_strerror (errcode));
-         else
-           {
--            struct build_id *build_id;
--
--            strncpy (new->so_original_name, buffer, SO_NAME_MAX_PATH_SIZE - 1);
--            new->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
--            /* May get overwritten below.  */
--            strcpy (new->so_name, new->so_original_name);
--
--            build_id = build_id_addr_get (LM_DYNAMIC_FROM_LINK_MAP (new));
--            if (build_id != NULL)
-+            if (debug_solib)
-+              fprintf_unfiltered (gdb_stdlog, 
-+                                  "svr4_current_sos: LM_NAME is <%s>\n",
-+                                  buffer);
-+            /* The name could be empty, in which case it is the
-+               system supplied DSO.  */
-+            if (strcmp (buffer, "") == 0)
-+              free_so (new);
-+            else
-               {
--                char *name, *build_id_filename;
-+                struct build_id *build_id;
-+
-+                strncpy (new->so_original_name, buffer, SO_NAME_MAX_PATH_SIZE - 1);
-+                new->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
-+                /* May get overwritten below.  */
-+                strcpy (new->so_name, new->so_original_name);
--                /* Missing the build-id matching separate debug info file
--                   would be handled while SO_NAME gets loaded.  */
--                name = build_id_to_filename (build_id, &build_id_filename, 0);
--                if (name != NULL)
-+                build_id = build_id_addr_get (LM_DYNAMIC_FROM_LINK_MAP (new));
-+                if (build_id != NULL)
-                   {
--                    strncpy (new->so_name, name, SO_NAME_MAX_PATH_SIZE - 1);
--                    new->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
--                    xfree (name);
-+                    char *name, *build_id_filename;
-+
-+                    /* Missing the build-id matching separate debug info file
-+                       would be handled while SO_NAME gets loaded.  */
-+                    name = build_id_to_filename (build_id, &build_id_filename, 0);
-+                    if (name != NULL)
-+                      {
-+                        strncpy (new->so_name, name, SO_NAME_MAX_PATH_SIZE - 1);
-+                        new->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
-+                        xfree (name);
-+                      }
-+                    else
-+                      {
-+                        debug_print_missing (new->so_name, build_id_filename);
-+
-+                        /* In the case the main executable was found according to
-+                           its build-id (from a core file) prevent loading
-+                           a different build of a library with accidentally the
-+                           same SO_NAME.
-+
-+                           It suppresses bogus backtraces (and prints "??" there
-+                           instead) if the on-disk files no longer match the
-+                           running program version.  */
-+
-+                        if (symfile_objfile != NULL
-+                            && (symfile_objfile->flags
-+                                & OBJF_BUILD_ID_CORE_LOADED) != 0)
-+                          new->so_name[0] = 0;
-+                      }
-+
-+                    xfree (build_id_filename);
-+                    xfree (build_id);
-                   }
--                else
--                  {
--                    debug_print_missing (new->so_name, build_id_filename);
--                    /* In the case the main executable was found according to
--                       its build-id (from a core file) prevent loading
--                       a different build of a library with accidentally the
--                       same SO_NAME.
--
--                       It suppresses bogus backtraces (and prints "??" there
--                       instead) if the on-disk files no longer match the
--                       running program version.  */
--
--                    if (symfile_objfile != NULL
--                        && (symfile_objfile->flags
--                            & OBJF_BUILD_ID_CORE_LOADED) != 0)
--                      new->so_name[0] = 0;
-+                if (debug_solib)
-+                  {
-+                    fprintf_unfiltered (gdb_stdlog, 
-+                                        "svr4_current_sos: Processing DSO: %s\n",
-+                                        new->so_name);
-+                    fprintf_unfiltered (gdb_stdlog,
-+                                        "svr4_current_sos: first link entry %d\n",
-+                                        IGNORE_FIRST_LINK_MAP_ENTRY (new));
-                   }
--                xfree (build_id_filename);
--                xfree (build_id);
-+                new->next = 0;
-+                *link_ptr = new;
-+                link_ptr = &new->next;
-               }
-           }
--        xfree (buffer);
--
--        /* If this entry has no name, or its name matches the name
--           for the main executable, don't include it in the list.  */
--        if (! new->so_name[0]
--            || match_main (new->so_name))
--          free_so (new);
--        else
--          {
--            new->next = 0;
--            *link_ptr = new;
--            link_ptr = &new->next;
--          }
-+          xfree (buffer);
-       }
-       /* On Solaris, the dynamic linker is not in the normal list of
-@@ -1173,6 +1421,9 @@ svr4_current_sos (void)
-   if (head == NULL)
-     return svr4_default_sos ();
-+  if (debug_solib)
-+    fprintf_unfiltered (gdb_stdlog, "svr4_current_sos: ENDS %s\n", filename);
-+
-   return head;
- }
-@@ -1205,7 +1456,7 @@ svr4_fetch_objfile_link_map (struct objf
- /* On some systems, the only way to recognize the link map entry for
-    the main executable file is by looking at its name.  Return
-    non-zero iff SONAME matches one of the known main executable names.  */
--
-+#if 0
- static int
- match_main (char *soname)
- {
-@@ -1219,6 +1470,7 @@ match_main (char *soname)
-   return (0);
- }
-+#endif
- /* Return 1 if PC lies in the dynamic symbol resolution code of the
-    SVR4 run time loader.  */
-@@ -1370,15 +1622,29 @@ enable_break (struct svr4_info *info)
-   /* Find the program interpreter; if not found, warn the user and drop
-      into the old breakpoint at symbol code.  */
-   interp_name = find_program_interpreter ();
-+
-+  if (debug_solib)
-+     fprintf_unfiltered (gdb_stdlog,
-+                         "enable_break: search for .interp in %s\n",
-+                         exec_bfd->filename);
-   if (interp_name)
-     {
-       CORE_ADDR load_addr = 0;
-+      CORE_ADDR load_addr_mask = -1L;
-       int load_addr_found = 0;
-       int loader_found_in_list = 0;
-       struct so_list *so;
-       bfd *tmp_bfd = NULL;
-       struct target_ops *tmp_bfd_target;
-       volatile struct gdb_exception ex;
-+      int arch_size;
-+
-+      /* For 32bit inferiors with 64bit GDB we may get LOAD_ADDR at 0xff......
-+       and thus overflowing its addition to the address while CORE_ADDR is
-+       64bit producing 0x1........ address invalid across GDB.  */
-+      arch_size = bfd_get_arch_size (exec_bfd);
-+      if (arch_size > 0 && arch_size < sizeof (1UL) * 8)
-+        load_addr_mask = (1UL << arch_size) - 1;
-       sym_addr = 0;
-@@ -1395,6 +1661,9 @@ enable_break (struct svr4_info *info)
-         {
-         tmp_bfd = solib_bfd_open (interp_name);
-       }
-+      if (debug_solib)
-+       fprintf_unfiltered (gdb_stdlog,
-+                          "enable_break: opening %s\n", interp_name);
-       if (tmp_bfd == NULL)
-       goto bkpt_at_symbol;
-@@ -1452,16 +1721,16 @@ enable_break (struct svr4_info *info)
-       interp_sect = bfd_get_section_by_name (tmp_bfd, ".text");
-       if (interp_sect)
-       {
--        interp_text_sect_low =
--          bfd_section_vma (tmp_bfd, interp_sect) + load_addr;
-+        interp_text_sect_low = (bfd_section_vma (tmp_bfd, interp_sect)
-+                                + load_addr) & load_addr_mask;
-         interp_text_sect_high =
-           interp_text_sect_low + bfd_section_size (tmp_bfd, interp_sect);
-       }
-       interp_sect = bfd_get_section_by_name (tmp_bfd, ".plt");
-       if (interp_sect)
-       {
--        interp_plt_sect_low =
--          bfd_section_vma (tmp_bfd, interp_sect) + load_addr;
-+        interp_plt_sect_low = (bfd_section_vma (tmp_bfd, interp_sect)
-+                               + load_addr) & load_addr_mask;
-         interp_plt_sect_high =
-           interp_plt_sect_low + bfd_section_size (tmp_bfd, interp_sect);
-       }
-@@ -1496,7 +1765,7 @@ enable_break (struct svr4_info *info)
-       if (sym_addr != 0)
-       {
--        create_solib_event_breakpoint (target_gdbarch, load_addr + sym_addr);
-+        create_solib_event_breakpoint (target_gdbarch, (load_addr + sym_addr) & load_addr_mask);
-         xfree (interp_name);
-         return 1;
-       }
-@@ -1769,6 +2038,9 @@ svr4_solib_create_inferior_hook (void)
-   while (tp->stop_signal != TARGET_SIGNAL_TRAP);
-   inf->stop_soon = NO_STOP_QUIETLY;
- #endif /* defined(_SCO_DS) */
-+
-+  if (bfd_get_start_address (exec_bfd) != entry_point_address ())
-+    disable_breakpoints_before_startup ();
- }
- static void
-@@ -1945,6 +2217,76 @@ svr4_lp64_fetch_link_map_offsets (void)
-   return lmp;
- }
-+void
-+info_linkmap_command (char *cmd, int from_tty)
-+{
-+  CORE_ADDR lm;
-+  struct svr4_info *info = get_svr4_info (PIDGET (inferior_ptid));
-+                                                                                
-+  /* Make sure we've looked up the inferior's dynamic linker's base
-+     structure.  */
-+  if (! info->debug_base)
-+    {
-+      info->debug_base = locate_base (info);
-+                                                                                
-+      /* If we can't find the dynamic linker's base structure, this
-+         must not be a dynamically linked executable.  Hmm.  */
-+      if (! info->debug_base)
-+        {
-+          if (debug_solib)
-+            fprintf_unfiltered (gdb_stdlog,
-+                                "svr4_print_linkmap: no DT_DEBUG found in %s -- return now\n",
-+                                exec_bfd->filename);
-+          return;
-+        }
-+    }
-+                                                                                
-+  /* Walk the inferior's link map list, and print the info.  */
-+ 
-+  lm = solib_svr4_r_map (info);
-+  while (lm)
-+    {
-+      int errcode;
-+      char *buffer;
-+      CORE_ADDR load_addr;
-+
-+      struct link_map_offsets *lmo = svr4_fetch_link_map_offsets ();
-+      struct so_list *new
-+        = (struct so_list *) xmalloc (sizeof (struct so_list));
-+      struct cleanup *old_chain = make_cleanup (xfree, new);
-+
-+      memset (new, 0, sizeof (*new));
-+
-+      new->lm_info = xmalloc (sizeof (struct lm_info));
-+      make_cleanup (xfree, new->lm_info);
-+
-+      new->lm_info->lm = xmalloc (lmo->link_map_size);
-+      make_cleanup (xfree, new->lm_info->lm);
-+      memset (new->lm_info->lm, 0, lmo->link_map_size);
-+
-+      if (debug_solib)
-+        fprintf_unfiltered (gdb_stdlog,
-+                            "svr4_print_linkmap: read lm at %s\n", paddress (target_gdbarch, lm));
-+      read_memory (lm, new->lm_info->lm, lmo->link_map_size);
-+
-+      lm = LM_NEXT (new);
-+
-+      /* Load address.  */
-+      load_addr = LM_ADDR_CHECK (new, NULL);
-+      /* Shared object's name.  */
-+      target_read_string (LM_NAME (new), &buffer,
-+                        SO_NAME_MAX_PATH_SIZE - 1, &errcode);
-+      make_cleanup (xfree, buffer);
-+      if (errcode != 0)
-+      {
-+        warning ("svr4_print_linkmap: Can't read pathname for load map: %s\n",
-+                 safe_strerror (errcode));
-+      }
-+      fprintf_filtered (gdb_stdout, "%-8s %-30s\n", paddress (target_gdbarch, load_addr), buffer);
-+      do_cleanups (old_chain);
-+    }
-+}                                                                                
-+
\f
- struct target_so_ops svr4_so_ops;
-@@ -1985,4 +2327,7 @@ _initialize_svr4_solib (void)
-   svr4_so_ops.same = svr4_same;
-   observer_attach_inferior_exit (solib_svr4_inferior_exit);
-+
-+  add_info ("linkmap", info_linkmap_command,
-+          "Display the inferior's linkmap.");
- }
-Index: gdb-6.8.91.20090925/gdb/solib.c
-===================================================================
---- gdb-6.8.91.20090925.orig/gdb/solib.c       2009-09-25 10:25:38.000000000 +0200
-+++ gdb-6.8.91.20090925/gdb/solib.c    2009-09-25 10:25:45.000000000 +0200
-@@ -82,6 +82,8 @@ set_solib_ops (struct gdbarch *gdbarch, 
- /* external data declarations */
-+int debug_solib;
-+
- /* FIXME: gdbarch needs to control this variable, or else every
-    configuration needs to call set_solib_ops.  */
- struct target_so_ops *current_target_so_ops;
-@@ -105,6 +107,8 @@ The search path for loading non-absolute
-                   value);
- }
-+void add_to_target_sections (int, struct target_ops *, struct so_list *);
-+
- /*
-    GLOBAL FUNCTION
-@@ -449,14 +453,38 @@ symbol_add_stub (struct so_list *so, int
-   /* Have we already loaded this shared object?  */
-   ALL_OBJFILES (so->objfile)
-     {
--      if (strcmp (so->objfile->name, so->so_name) == 0)
-+      /* Found an already loaded shared library.  */
-+      if (strcmp (so->objfile->name, so->so_name) == 0
-+        && !so->main)
-+      return;
-+      /* Found an already loaded main executable.  This could happen in
-+       two circumstances.
-+       First case: the main file has already been read in
-+       as the first thing that gdb does at startup, and the file
-+       hasn't been relocated properly yet. Therefor we need to read
-+       it in with the proper section info.
-+       Second case: it has been read in with the correct relocation,
-+       and therefore we need to skip it.  */
-+      if (strcmp (so->objfile->name, so->so_name) == 0
-+        && so->main
-+        && so->main_relocated)
-       return;
-     }
-   sap = build_section_addr_info_from_section_table (so->sections,
-                                                     so->sections_end);
--  so->objfile = symbol_file_add_from_bfd (so->abfd, flags, sap, OBJF_SHARED);
-+  if (so->main)
-+    {
-+      if (debug_solib)
-+        fprintf_unfiltered (gdb_stdlog,
-+                          "symbol_add_stub: adding symbols for main\n");
-+      so->objfile = symbol_file_add_from_bfd (so->abfd, (flags & ~SYMFILE_VERBOSE) | SYMFILE_MAINLINE, sap, 0);
-+      so->main_relocated = 1;
-+    }
-+  else
-+    so->objfile = symbol_file_add_from_bfd (so->abfd, flags, sap, OBJF_SHARED);
-+
-   free_section_addr_info (sap);
-   return;
-@@ -596,6 +624,10 @@ update_solib_list (int from_tty, struct 
-           }
-         else
-           {
-+            if (debug_solib)
-+              fprintf_unfiltered (gdb_stdlog,
-+                                  "update_solib_list: compare gdb:%s and inferior:%s\n",
-+                                  gdb->so_original_name, i->so_original_name);
-             if (! strcmp (gdb->so_original_name, i->so_original_name))
-               break;        
-           }
-@@ -650,18 +682,7 @@ update_solib_list (int from_tty, struct 
-       /* Fill in the rest of each of the `struct so_list' nodes.  */
-       for (i = inferior; i; i = i->next)
-       {
--        i->from_tty = from_tty;
--
--        /* Fill in the rest of the `struct so_list' node.  */
--        catch_errors (solib_map_sections, i,
--                      "Error while mapping shared library sections:\n",
--                      RETURN_MASK_ALL);
--
--        /* Add the shared object's sections to the current set of
--           file section tables.  Do this immediately after mapping
--           the object so that later nodes in the list can query this
--           object, as is needed in solib-osf.c.  */
--        add_target_sections (i->sections, i->sections_end);
-+        add_to_target_sections (from_tty, target, i);
-         /* Notify any observer that the shared object has been
-              loaded now that we've added it to GDB's tables.  */
-@@ -771,6 +792,32 @@ solib_add (char *pattern, int from_tty, 
-   }
- }
-+void
-+add_to_target_sections (int from_tty, struct target_ops *target, struct so_list *solib)
-+{
-+  /* If this is set, then the sections have been already added to the
-+     target list.  */
-+  if (solib->main)
-+    return;
-+
-+  solib->from_tty = from_tty;
-+
-+  /* Fill in the rest of the `struct so_list' node.  */
-+  catch_errors (solib_map_sections, solib,
-+             "Error while mapping shared library sections:\n",
-+             RETURN_MASK_ALL);
-+
-+  if (debug_solib)
-+     fprintf_unfiltered (gdb_stdlog,
-+                       "add_to_target_sections: add %s to to_sections\n",
-+                       solib->so_original_name);
-+
-+  /* Add the shared object's sections to the current set of
-+     file section tables.  Do this immediately after mapping
-+     the object so that later nodes in the list can query this
-+     object, as is needed in solib-osf.c.  */
-+  add_target_sections (solib->sections, solib->sections_end);
-+}
- /*
-@@ -1189,4 +1236,12 @@ This takes precedence over the environme
-                                    reload_shared_libraries,
-                                    show_solib_search_path,
-                                    &setlist, &showlist);
-+
-+  add_setshow_boolean_cmd ("solib", no_class, &debug_solib,
-+                         _("\
-+Set debugging of GNU/Linux shlib module.\n"), _("\
-+Show debugging status of GNU/Linux shlib module.\n"), _("\
-+Enables printf debugging output of GNU/Linux shlib module.\n"),
-+                         NULL, NULL,
-+                         &setdebuglist, &showdebuglist);
- }
-Index: gdb-6.8.91.20090925/gdb/solist.h
-===================================================================
---- gdb-6.8.91.20090925.orig/gdb/solist.h      2009-09-25 10:25:38.000000000 +0200
-+++ gdb-6.8.91.20090925/gdb/solist.h   2009-09-25 10:25:45.000000000 +0200
-@@ -61,6 +61,8 @@ struct so_list
-     bfd *abfd;
-     char symbols_loaded;      /* flag: symbols read in yet? */
-     char from_tty;            /* flag: print msgs? */
-+    char main;                  /* flag: is this the main executable? */
-+    char main_relocated;        /* flag: has it been relocated yet? */
-     struct objfile *objfile;  /* objfile for loaded lib */
-     struct target_section *sections;
-     struct target_section *sections_end;
-@@ -147,4 +149,10 @@ struct symbol *solib_global_lookup (cons
-                                   const char *name,
-                                   const domain_enum domain);
-+/* Add the list of sections in so_list to the target to_sections.  */
-+extern void add_to_target_sections (int, struct target_ops *, struct so_list *);
-+
-+/* Controls the printing of debugging output.  */
-+extern int debug_solib;
-+
- #endif
-Index: gdb-6.8.91.20090925/gdb/symfile-mem.c
-===================================================================
---- gdb-6.8.91.20090925.orig/gdb/symfile-mem.c 2009-09-25 10:25:38.000000000 +0200
-+++ gdb-6.8.91.20090925/gdb/symfile-mem.c      2009-09-25 10:25:45.000000000 +0200
-@@ -115,7 +115,7 @@ symbol_file_add_from_memory (struct bfd 
-       ++i;
-       }
--  objf = symbol_file_add_from_bfd (nbfd, from_tty ? SYMFILE_VERBOSE : 0,
-+  objf = symbol_file_add_from_bfd (nbfd, (from_tty ? SYMFILE_VERBOSE : 0) | SYMFILE_MAINLINE2_BOTH,
-                                    sai, OBJF_SHARED);
-   /* This might change our ideas about frames already looked at.  */
-Index: gdb-6.8.91.20090925/gdb/symfile.c
-===================================================================
---- gdb-6.8.91.20090925.orig/gdb/symfile.c     2009-09-25 10:25:39.000000000 +0200
-+++ gdb-6.8.91.20090925/gdb/symfile.c  2009-09-25 10:25:45.000000000 +0200
-@@ -49,6 +49,7 @@
- #include "readline/readline.h"
- #include "gdb_assert.h"
- #include "block.h"
-+#include "varobj.h"
- #include "observer.h"
- #include "exec.h"
- #include "parser-defs.h"
-@@ -779,7 +780,7 @@ syms_from_objfile (struct objfile *objfi
-   /* Now either addrs or offsets is non-zero.  */
--  if (mainline)
-+  if ((add_flags & SYMFILE_MAINLINE) && !(add_flags & SYMFILE_MAINLINE2_ONLY))
-     {
-       /* We will modify the main symbol table, make sure that all its users
-          will be cleaned up if an error occurs during symbol reading.  */
-@@ -807,7 +808,7 @@ syms_from_objfile (struct objfile *objfi
-      We no longer warn if the lowest section is not a text segment (as
-      happens for the PA64 port.  */
--  if (!mainline && addrs && addrs->other[0].name)
-+  if (/*!mainline &&*/ addrs && addrs->other[0].name)
-     {
-       asection *lower_sect;
-       asection *sect;
-@@ -890,7 +891,7 @@ syms_from_objfile (struct objfile *objfi
-       init_objfile_sect_indices (objfile);
-     }
--  (*objfile->sf->sym_read) (objfile, mainline);
-+  (*objfile->sf->sym_read) (objfile, add_flags & SYMFILE_MAINLINE2_ONLY ? 2 : (add_flags & SYMFILE_MAINLINE ? 1 : 0));
-   /* Discard cleanups as symbol reading was successful.  */
-@@ -909,17 +910,22 @@ new_symfile_objfile (struct objfile *obj
-   /* If this is the main symbol file we have to clean up all users of the
-      old main symbol file. Otherwise it is sufficient to fixup all the
-      breakpoints that may have been redefined by this symbol file.  */
--  if (add_flags & SYMFILE_MAINLINE)
-+  if (add_flags & SYMFILE_MAINLINE && !(add_flags & SYMFILE_MAINLINE2_ONLY))
-     {
-       /* OK, make it the "real" symbol file.  */
-       symfile_objfile = objfile;
-       clear_symtab_users ();
-     }
--  else if ((add_flags & SYMFILE_DEFER_BP_RESET) == 0)
-+  else if ((add_flags & SYMFILE_DEFER_BP_RESET) == 0
-+           && (add_flags & SYMFILE_MAINLINE2_BOTH) == 0)
-     {
-       breakpoint_re_set ();
-     }
-+  else
-+    {
-+      /* Don't reset breakpoints or it will screw up PIE.  */
-+    }
-   /* We're done reading the symbol file; finish off complaints.  */
-   clear_complaints (&symfile_complaints, 0, add_flags & SYMFILE_VERBOSE);
-@@ -973,7 +979,7 @@ symbol_file_add_with_addrs_or_offsets (b
-   /* Give user a chance to burp if we'd be
-      interactively wiping out any existing symbols.  */
--  if ((add_flags & SYMFILE_MAINLINE)
-+  if ((add_flags & SYMFILE_MAINLINE) && !(add_flags & SYMFILE_MAINLINE2_ONLY)
-       && (have_full_symbols () || have_partial_symbols ())
-       && from_tty
-       && (have_full_symbols () || have_partial_symbols ())
-@@ -1163,6 +1169,9 @@ symbol_file_clear (int from_tty)
-                   symfile_objfile->name)
-         : !query (_("Discard symbol table? "))))
-     error (_("Not confirmed."));
-+#ifdef CLEAR_SOLIB
-+      CLEAR_SOLIB ();
-+#endif
-   free_all_objfiles ();
-@@ -3367,6 +3376,8 @@ reread_symbols (void)
-             /* Discard cleanups as symbol reading was successful.  */
-             discard_cleanups (old_cleanups);
-+            init_entry_point_info (objfile);
-+
-             /* If the mtime has changed between the time we set new_modtime
-                and now, we *want* this to be out of date, so don't call stat
-                again now.  */
-Index: gdb-6.8.91.20090925/gdb/target.h
-===================================================================
---- gdb-6.8.91.20090925.orig/gdb/target.h      2009-09-25 10:25:38.000000000 +0200
-+++ gdb-6.8.91.20090925/gdb/target.h   2009-09-25 10:25:45.000000000 +0200
-@@ -545,7 +545,7 @@ struct target_ops
-        Return -1 if there is insufficient buffer for a whole entry.
-        Return 1 if an entry was read into *TYPEP and *VALP.  */
-     int (*to_auxv_parse) (struct target_ops *ops, gdb_byte **readptr,
--                         gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp);
-+                         gdb_byte *endptr, ULONGEST *typep, CORE_ADDR *valp);
-     /* Search SEARCH_SPACE_LEN bytes beginning at START_ADDR for the
-        sequence of bytes in PATTERN with length PATTERN_LEN.
-Index: gdb-6.8.91.20090925/gdb/symfile.h
-===================================================================
---- gdb-6.8.91.20090925.orig/gdb/symfile.h     2009-09-25 10:25:39.000000000 +0200
-+++ gdb-6.8.91.20090925/gdb/symfile.h  2009-09-25 10:25:45.000000000 +0200
-@@ -229,7 +229,13 @@ enum symfile_add_flags
-     SYMFILE_MAINLINE = 1 << 2,
-     /* Do not call breakpoint_re_set when adding this symbol file.  */
--    SYMFILE_DEFER_BP_RESET = 1 << 3
-+    SYMFILE_DEFER_BP_RESET = 1 << 3,
-+
-+    /* Red Hat PIE patch: Like SYMFILE_MAINLINE but for mainline == 2.
-+       Former code was checking `if (mainline)' being satisfied both by
-+       standard 1 and rare 2, simulate it here.  */
-+    SYMFILE_MAINLINE2_ONLY = 1 << 4,
-+    SYMFILE_MAINLINE2_BOTH = SYMFILE_MAINLINE2_ONLY | SYMFILE_MAINLINE
-   };
- extern void syms_from_objfile (struct objfile *,
-Index: gdb-6.8.91.20090925/gdb/infcmd.c
-===================================================================
---- gdb-6.8.91.20090925.orig/gdb/infcmd.c      2009-09-25 10:25:39.000000000 +0200
-+++ gdb-6.8.91.20090925/gdb/infcmd.c   2009-09-25 10:25:45.000000000 +0200
-@@ -2308,6 +2308,9 @@ attach_command_post_wait (char *args, in
-   post_create_inferior (&current_target, from_tty);
-+  /* Undo the disable from post_create_inferior.  */
-+  enable_breakpoints_after_startup ();
-+
-   /* Install inferior's terminal modes.  */
-   target_terminal_inferior ();
-Index: gdb-6.8.91.20090925/gdb/linux-tdep.c
-===================================================================
---- gdb-6.8.91.20090925.orig/gdb/linux-tdep.c  2009-08-04 22:41:13.000000000 +0200
-+++ gdb-6.8.91.20090925/gdb/linux-tdep.c       2009-09-25 10:25:45.000000000 +0200
-@@ -163,5 +163,7 @@ in this session.\n"));
- void
- _initialize_linux_tdep (void)
- {
-+#if 0 /* gdb-6.3-pie-20050110.patch */
-   observer_attach_executable_changed (check_is_pie_binary);
-+#endif
- }
diff --git a/gdb-6.3-sepcrc-20050402.patch b/gdb-6.3-sepcrc-20050402.patch
deleted file mode 100644 (file)
index 330a739..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-2005-04-02  Andrew Cagney  <cagney@gnu.org>
-
-       * symfile.c (separate_debug_file_exists): When the CRCs mismatch
-       print a warning.
-       (find_separate_debug_file): Pass in the objfile's name.
-
-Index: gdb-6.8.50.20081128/gdb/symfile.c
-===================================================================
---- gdb-6.8.50.20081128.orig/gdb/symfile.c     2008-10-03 18:36:10.000000000 +0200
-+++ gdb-6.8.50.20081128/gdb/symfile.c  2008-12-01 16:34:36.000000000 +0100
-@@ -1296,7 +1296,8 @@ get_debug_link_info (struct objfile *obj
- }
- static int
--separate_debug_file_exists (const char *name, unsigned long crc)
-+separate_debug_file_exists (const char *name, unsigned long crc,
-+                          const char *parent_name)
- {
-   unsigned long file_crc = 0;
-   bfd *abfd;
-@@ -1316,7 +1317,15 @@ separate_debug_file_exists (const char *
-   bfd_close (abfd);
--  return crc == file_crc;
-+  if (crc != file_crc)
-+    {
-+      warning (_("the debug information found in \"%s\""
-+               " does not match \"%s\" (CRC mismatch).\n"),
-+             name, parent_name);
-+      return 0;
-+    }
-+
-+  return 1;
- }
- char *debug_file_directory = NULL;
-@@ -1368,6 +1377,8 @@ find_separate_debug_file (struct objfile
-   basename = get_debug_link_info (objfile, &crc32);
-   if (basename == NULL)
-+    /* There's no separate debug info, hence there's no way we could
-+       load it => no warning.  */
-     return NULL;
-   dir = xstrdup (objfile->name);
-@@ -1395,7 +1406,7 @@ find_separate_debug_file (struct objfile
-   strcpy (debugfile, dir);
-   strcat (debugfile, basename);
--  if (separate_debug_file_exists (debugfile, crc32))
-+  if (separate_debug_file_exists (debugfile, crc32, objfile->name))
-     {
-       xfree (basename);
-       xfree (dir);
-@@ -1408,7 +1419,7 @@ find_separate_debug_file (struct objfile
-   strcat (debugfile, "/");
-   strcat (debugfile, basename);
--  if (separate_debug_file_exists (debugfile, crc32))
-+  if (separate_debug_file_exists (debugfile, crc32, objfile->name))
-     {
-       xfree (basename);
-       xfree (dir);
-@@ -1421,7 +1432,7 @@ find_separate_debug_file (struct objfile
-   strcat (debugfile, dir);
-   strcat (debugfile, basename);
--  if (separate_debug_file_exists (debugfile, crc32))
-+  if (separate_debug_file_exists (debugfile, crc32, objfile->name))
-     {
-       xfree (basename);
-       xfree (dir);
-@@ -1440,7 +1451,7 @@ find_separate_debug_file (struct objfile
-       strcat (debugfile, "/");
-       strcat (debugfile, basename);
--      if (separate_debug_file_exists (debugfile, crc32))
-+      if (separate_debug_file_exists (debugfile, crc32, objfile->name))
-       {
-         xfree (canon_name);
-         xfree (basename);
diff --git a/gdb-6.3-test-sepcrc-20050402.patch b/gdb-6.3-test-sepcrc-20050402.patch
deleted file mode 100644 (file)
index 65e086f..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-Index: gdb-6.8/gdb/testsuite/gdb.base/sepdebug.exp
-===================================================================
---- gdb-6.8.orig/gdb/testsuite/gdb.base/sepdebug.exp   2008-02-26 09:14:11.000000000 +0100
-+++ gdb-6.8/gdb/testsuite/gdb.base/sepdebug.exp        2008-07-14 10:26:19.000000000 +0200
-@@ -981,3 +981,40 @@ if ![string compare $build_id_debug_file
-     # Spare debug files may confuse testsuite runs in the future.
-     remote_exec build "rm -f ${objdir}/${subdir}/${build_id_debug_filename}"
- }
-+
-+
-+# Compile up a second, different, object file.  Copy its debug info
-+# over the top of the new debug info.  Note that somewhere in the
-+# above the "set debug-file-directory" variable is set to
-+# ${objdir}/${subdir} so need to move things there.
-+
-+set existing_binfile $binfile
-+set testfile "sepdebug2"
-+set srcfile ${testfile}.c
-+set binfile ${objdir}/${subdir}/${testfile}
-+set corrupt_debug_file [separate_debug_filename $binfile]
-+if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-w}] != "" } {
-+    return -1
-+}
-+if [gdb_gnu_strip_debug $binfile] {
-+    # check that you have a recent version of strip and objcopy installed
-+    unsupported "cannot produce separate debug info files"
-+    return -1
-+}
-+remote_exec build "cp $corrupt_debug_file ${existing_binfile}.debug"
-+
-+gdb_exit
-+gdb_start
-+gdb_reinitialize_dir $srcdir/$subdir
-+gdb_load ${binfile}
-+
-+set test  "A corrupt debug file gets a warning"
-+gdb_test_multiple "file $existing_binfile" "$test" {
-+    -re "warning:.*mismatch.*" {
-+      pass "$test"
-+    }
-+    -re ".y or n. " {
-+      send_gdb "y\n"
-+      exp_continue
-+    }
-+}
-Index: gdb-6.8/gdb/testsuite/gdb.base/sepdebug2.c
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8/gdb/testsuite/gdb.base/sepdebug2.c 2008-07-14 10:26:19.000000000 +0200
-@@ -0,0 +1,5 @@
-+int
-+main (int argc, char *argv[], char *envp[])
-+{
-+  return 0;
-+}
This page took 0.177763 seconds and 4 git commands to generate.