public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/gdb] gdb-17.2-rebase-f44: - Rebase to FSF GDB 7.2.50.20110222 (which is a 7.3 pre-release).
@ 2026-06-27 23:55 Jan Kratochvil
  0 siblings, 0 replies; only message in thread
From: Jan Kratochvil @ 2026-06-27 23:55 UTC (permalink / raw)
  To: git-commits

            A new commit has been pushed.

            Repo   : rpms/gdb
            Branch : gdb-17.2-rebase-f44
            Commit : 833b1257d3803acf54e8dd9fd84c759ba83df673
            Author : Jan Kratochvil <jan.kratochvil@redhat.com>
            Date   : 2011-02-23T00:35:53+01:00
            Stats  : +233/-84 in 6 file(s)
            URL    : https://src.fedoraproject.org/rpms/gdb/c/833b1257d3803acf54e8dd9fd84c759ba83df673?branch=gdb-17.2-rebase-f44

            Log:
            - Rebase to FSF GDB 7.2.50.20110222 (which is a 7.3 pre-release).
- Fix attach/core-load of {,un}prelinked i386 libs (bugreport by Michal Toman).

---
diff --git a/.gitignore b/.gitignore
index 355bce4..d5f6f77 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
 /libstdc++-v3-python-r155978.tar.bz2
-/gdb-7.2.50.20110218.tar.bz2
+/gdb-7.2.50.20110222.tar.bz2

diff --git a/gdb-archer-pie-addons-keep-disabled.patch b/gdb-archer-pie-addons-keep-disabled.patch
index 110f0bd..81661ca 100644
--- a/gdb-archer-pie-addons-keep-disabled.patch
+++ b/gdb-archer-pie-addons-keep-disabled.patch
@@ -1,8 +1,8 @@
-Index: gdb-7.2.50.20110206/gdb/breakpoint.c
+Index: gdb-7.2.50.20110222/gdb/breakpoint.c
 ===================================================================
---- gdb-7.2.50.20110206.orig/gdb/breakpoint.c	2011-02-06 20:39:24.000000000 +0100
-+++ gdb-7.2.50.20110206/gdb/breakpoint.c	2011-02-06 20:39:44.000000000 +0100
-@@ -10587,6 +10587,50 @@ update_breakpoint_locations (struct brea
+--- gdb-7.2.50.20110222.orig/gdb/breakpoint.c	2011-02-23 00:12:59.000000000 +0100
++++ gdb-7.2.50.20110222/gdb/breakpoint.c	2011-02-23 00:13:04.000000000 +0100
+@@ -10547,6 +10547,50 @@ update_breakpoint_locations (struct brea
    update_global_location_list (1);
  }
  
@@ -53,22 +53,22 @@ Index: gdb-7.2.50.20110206/gdb/breakpoint.c
  /* Reset a breakpoint given it's struct breakpoint * BINT.
     The value we return ends up being the return value from catch_errors.
     Unused in this case.  */
-Index: gdb-7.2.50.20110206/gdb/breakpoint.h
+Index: gdb-7.2.50.20110222/gdb/breakpoint.h
 ===================================================================
---- gdb-7.2.50.20110206.orig/gdb/breakpoint.h	2011-02-06 20:39:24.000000000 +0100
-+++ gdb-7.2.50.20110206/gdb/breakpoint.h	2011-02-06 20:40:00.000000000 +0100
-@@ -1194,4 +1194,7 @@ extern struct breakpoint *iterate_over_b
+--- gdb-7.2.50.20110222.orig/gdb/breakpoint.h	2011-02-23 00:12:59.000000000 +0100
++++ gdb-7.2.50.20110222/gdb/breakpoint.h	2011-02-23 00:13:16.000000000 +0100
+@@ -1192,4 +1192,7 @@ extern int user_breakpoint_p (struct bre
  
- extern int user_breakpoint_p (struct breakpoint *);
+ extern int get_number_or_range (char **pp);
  
 +extern void breakpoints_relocate (struct objfile *objfile,
 +				  struct section_offsets *delta);
 +
  #endif /* !defined (BREAKPOINT_H) */
-Index: gdb-7.2.50.20110206/gdb/objfiles.c
+Index: gdb-7.2.50.20110222/gdb/objfiles.c
 ===================================================================
---- gdb-7.2.50.20110206.orig/gdb/objfiles.c	2011-01-10 21:38:49.000000000 +0100
-+++ gdb-7.2.50.20110206/gdb/objfiles.c	2011-02-06 20:39:44.000000000 +0100
+--- gdb-7.2.50.20110222.orig/gdb/objfiles.c	2011-01-10 21:38:49.000000000 +0100
++++ gdb-7.2.50.20110222/gdb/objfiles.c	2011-02-23 00:13:04.000000000 +0100
 @@ -846,6 +846,11 @@ objfile_relocate1 (struct objfile *objfi
  				obj_section_addr (s));
      }

diff --git a/gdb-archer.patch b/gdb-archer.patch
index 2b4460f..6bd1ec3 100644
--- a/gdb-archer.patch
+++ b/gdb-archer.patch
@@ -2,7 +2,7 @@ http://sourceware.org/gdb/wiki/ProjectArcher
 http://sourceware.org/gdb/wiki/ArcherBranchManagement
 
 GIT snapshot:
-commit 271b14253f10eea8c60a327c63dbe732a2af511a
+commit 691a5a1b3015e2199040ead20cc85bc277af14e3
 
 branch `archer' - the merge of branches:
 archer-jankratochvil-vla
@@ -14,20 +14,20 @@ archer-tromey-python
 
 
 diff --git a/gdb/Makefile.in b/gdb/Makefile.in
-index c6049fa..4a17976 100644
+index 6363773..7bd1020 100644
 --- a/gdb/Makefile.in
 +++ b/gdb/Makefile.in
-@@ -813,7 +813,8 @@ annotate.h sim-regno.h dictionary.h dfp.h main.h frame-unwind.h	\
+@@ -808,7 +808,8 @@ annotate.h sim-regno.h dictionary.h dfp.h main.h frame-unwind.h	\
  remote-fileio.h i386-linux-tdep.h vax-tdep.h objc-lang.h \
  sentinel-frame.h bcache.h symfile.h windows-tdep.h linux-tdep.h \
- gdb_usleep.h jit.h xml-syscall.h ada-operator.inc microblaze-tdep.h \
--psymtab.h psympriv.h progspace.h bfin-tdep.h ia64-hpux-tdep.h
-+psymtab.h psympriv.h progspace.h bfin-tdep.h ia64-hpux-tdep.h \
+ gdb_usleep.h jit.h xml-syscall.h microblaze-tdep.h \
+-psymtab.h psympriv.h progspace.h bfin-tdep.h ia64-hpux-tdep.h printcmd.h
++psymtab.h psympriv.h progspace.h bfin-tdep.h ia64-hpux-tdep.h printcmd.h \
 +python/python.h python/python-internal.h
  
  # Header files that already have srcdir in them, or which are in objdir.
  
-@@ -1345,6 +1346,12 @@ stamp-h: $(srcdir)/config.in config.status
+@@ -1340,6 +1341,12 @@ stamp-h: $(srcdir)/config.in config.status
  	  CONFIG_LINKS= \
  	  $(SHELL) config.status
  
@@ -392,18 +392,18 @@ index b9aaf54..e1f3242 100644
  
  /* Return the innermost stack frame executing inside of BLOCK, or NULL
 diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
-index ca56c43..6f269b9 100644
+index 623effa..4bcd681 100644
 --- a/gdb/breakpoint.c
 +++ b/gdb/breakpoint.c
-@@ -62,6 +62,7 @@
- #include "jit.h"
+@@ -63,6 +63,7 @@
  #include "xml-syscall.h"
  #include "parser-defs.h"
+ #include "cli/cli-utils.h"
 +#include "regcache.h"
  
  /* readline include files */
  #include "readline/readline.h"
-@@ -104,6 +105,9 @@ static void break_command_1 (char *, int, int);
+@@ -105,6 +106,9 @@ static void break_command_1 (char *, int, int);
  
  static void mention (struct breakpoint *);
  
@@ -413,7 +413,7 @@ index ca56c43..6f269b9 100644
  /* This function is used in gdbtk sources and thus can not be made
     static.  */
  struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
-@@ -220,6 +224,10 @@ static void disable_trace_command (char *, int);
+@@ -217,6 +221,10 @@ static void disable_trace_command (char *, int);
  
  static void trace_pass_command (char *, int);
  
@@ -424,7 +424,7 @@ index ca56c43..6f269b9 100644
  /* Assuming we're creating a static tracepoint, does S look like a
     static tracepoint marker spec ("-m MARKER_ID")?  */
  #define is_marker_spec(s)						\
-@@ -1309,6 +1317,22 @@ watchpoint_in_thread_scope (struct breakpoint *b)
+@@ -1148,6 +1156,22 @@ watchpoint_in_thread_scope (struct breakpoint *b)
  	      && !is_executing (inferior_ptid)));
  }
  
@@ -447,7 +447,7 @@ index ca56c43..6f269b9 100644
  /* Assuming that B is a watchpoint:
     - Reparse watchpoint expression, if REPARSE is non-zero
     - Evaluate expression and store the result in B->val
-@@ -1368,12 +1392,17 @@ update_watchpoint (struct breakpoint *b, int reparse)
+@@ -1207,12 +1231,17 @@ update_watchpoint (struct breakpoint *b, int reparse)
    struct frame_id saved_frame_id;
    int frame_saved;
  
@@ -462,10 +462,10 @@ index ca56c43..6f269b9 100644
 +  if (b->pspace != current_program_space)
 +    return;
 +
-   /* We don't free locations.  They are stored in the bp_location array
-      and update_global_location_list will eventually delete them and
-      remove breakpoints if needed.  */
-@@ -1595,13 +1624,7 @@ update_watchpoint (struct breakpoint *b, int reparse)
+   if (b->disposition == disp_del_at_next_stop)
+     return;
+  
+@@ -1442,13 +1471,7 @@ update_watchpoint (struct breakpoint *b, int reparse)
  Watchpoint %d deleted because the program has left the block\n\
  in which its expression is valid.\n"),
  		       b->number);
@@ -480,7 +480,7 @@ index ca56c43..6f269b9 100644
      }
  
    /* Restore the selected frame.  */
-@@ -1992,6 +2015,7 @@ insert_breakpoint_locations (void)
+@@ -1839,6 +1862,7 @@ insert_breakpoint_locations (void)
    int val = 0;
    int disabled_breaks = 0;
    int hw_breakpoint_error = 0;
@@ -488,7 +488,7 @@ index ca56c43..6f269b9 100644
  
    struct ui_file *tmp_error_stream = mem_fileopen ();
    struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
-@@ -2019,9 +2043,13 @@ insert_breakpoint_locations (void)
+@@ -1866,9 +1890,13 @@ insert_breakpoint_locations (void)
        /* For targets that support global breakpoints, there's no need
  	 to select an inferior to insert breakpoint to.  In fact, even
  	 if we aren't attached to any process yet, we should still
@@ -504,7 +504,7 @@ index ca56c43..6f269b9 100644
  	continue;
  
        val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
-@@ -2045,13 +2073,19 @@ insert_breakpoint_locations (void)
+@@ -1892,13 +1920,19 @@ insert_breakpoint_locations (void)
  
        if (bpt->disposition == disp_del_at_next_stop)
  	continue;
@@ -530,7 +530,7 @@ index ca56c43..6f269b9 100644
        if (some_failed)
  	{
  	  for (loc = bpt->loc; loc; loc = loc->next)
-@@ -3635,6 +3669,8 @@ print_it_typical (bpstat bs)
+@@ -3482,6 +3516,8 @@ print_it_typical (bpstat bs)
      case bp_tracepoint:
      case bp_fast_tracepoint:
      case bp_jit_event:
@@ -539,7 +539,7 @@ index ca56c43..6f269b9 100644
      default:
        result = PRINT_UNKNOWN;
        break;
-@@ -3856,6 +3892,8 @@ watchpoint_check (void *p)
+@@ -3703,6 +3739,8 @@ watchpoint_check (void *p)
    gdb_assert (bs->breakpoint_at != NULL);
    b = bs->breakpoint_at;
  
@@ -548,7 +548,7 @@ index ca56c43..6f269b9 100644
    /* If this is a local watchpoint, we only want to check if the
       watchpoint frame is in scope if the current thread is the thread
       that was used to create the watchpoint.  */
-@@ -3965,13 +4003,7 @@ watchpoint_check (void *p)
+@@ -3812,13 +3850,7 @@ watchpoint_check (void *p)
  		   " deleted because the program has left the block in\n\
  which its expression is valid.\n");     
  
@@ -563,7 +563,7 @@ index ca56c43..6f269b9 100644
  
        return WP_DELETED;
      }
-@@ -4176,9 +4208,7 @@ bpstat_check_watchpoint (bpstat bs)
+@@ -4023,9 +4055,7 @@ bpstat_check_watchpoint (bpstat bs)
  	    case 0:
  	      /* Error from catch_errors.  */
  	      printf_filtered (_("Watchpoint %d deleted.\n"), b->number);
@@ -574,7 +574,7 @@ index ca56c43..6f269b9 100644
  	      /* We've already printed what needs to be printed.  */
  	      bs->print_it = print_it_done;
  	      break;
-@@ -4384,7 +4414,7 @@ bpstat_stop_status (struct address_space *aspace,
+@@ -4231,7 +4261,7 @@ bpstat_stop_status (struct address_space *aspace,
  	     watchpoint as triggered so that we will handle the
  	     out-of-scope event.  We'll get to the watchpoint next
  	     iteration.  */
@@ -583,7 +583,7 @@ index ca56c43..6f269b9 100644
  	    b->related_breakpoint->watchpoint_triggered = watch_triggered_yes;
  	}
      }
-@@ -4506,7 +4536,7 @@ handle_jit_event (void)
+@@ -4353,7 +4383,7 @@ handle_jit_event (void)
  /* Decide what infrun needs to do with this bpstat.  */
  
  struct bpstat_what
@@ -592,7 +592,7 @@ index ca56c43..6f269b9 100644
  {
    struct bpstat_what retval;
    /* We need to defer calling `solib_add', as adding new symbols
-@@ -4514,12 +4544,13 @@ bpstat_what (bpstat bs)
+@@ -4361,12 +4391,13 @@ bpstat_what (bpstat bs)
       and hence may clear unprocessed entries in the BS chain.  */
    int shlib_event = 0;
    int jit_event = 0;
@@ -607,7 +607,7 @@ index ca56c43..6f269b9 100644
      {
        /* Extract this BS's action.  After processing each BS, we check
  	 if its action overrides all we've seem so far.  */
-@@ -4649,6 +4680,20 @@ bpstat_what (bpstat bs)
+@@ -4496,6 +4527,20 @@ bpstat_what (bpstat bs)
  	     out already.  */
  	  internal_error (__FILE__, __LINE__,
  			  _("bpstat_what: tracepoint encountered"));
@@ -628,7 +628,7 @@ index ca56c43..6f269b9 100644
  	default:
  	  internal_error (__FILE__, __LINE__,
  			  _("bpstat_what: unhandled bptype %d"), (int) bptype);
-@@ -4686,6 +4731,21 @@ bpstat_what (bpstat bs)
+@@ -4533,6 +4578,21 @@ bpstat_what (bpstat bs)
        handle_jit_event ();
      }
  
@@ -650,7 +650,7 @@ index ca56c43..6f269b9 100644
    return retval;
  }
  
-@@ -4807,6 +4867,8 @@ bptype_string (enum bptype type)
+@@ -4654,6 +4714,8 @@ bptype_string (enum bptype type)
      {bp_fast_tracepoint, "fast tracepoint"},
      {bp_static_tracepoint, "static tracepoint"},
      {bp_jit_event, "jit events"},
@@ -659,7 +659,7 @@ index ca56c43..6f269b9 100644
    };
  
    if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
-@@ -4954,6 +5016,8 @@ print_one_breakpoint_location (struct breakpoint *b,
+@@ -4801,6 +4863,8 @@ print_one_breakpoint_location (struct breakpoint *b,
        case bp_fast_tracepoint:
        case bp_static_tracepoint:
        case bp_jit_event:
@@ -668,7 +668,7 @@ index ca56c43..6f269b9 100644
  	if (opts.addressprint)
  	  {
  	    annotate_field (4);
-@@ -5235,7 +5299,8 @@ user_settable_breakpoint (const struct breakpoint *b)
+@@ -5082,7 +5146,8 @@ user_settable_breakpoint (const struct breakpoint *b)
  	  || b->type == bp_catchpoint
  	  || b->type == bp_hardware_breakpoint
  	  || is_tracepoint (b)
@@ -678,7 +678,7 @@ index ca56c43..6f269b9 100644
  }
  
  /* Return true if this breakpoint was set by the user, false if it is
-@@ -5724,6 +5789,8 @@ allocate_bp_location (struct breakpoint *bpt)
+@@ -5571,6 +5636,8 @@ allocate_bp_location (struct breakpoint *bpt)
      case bp_longjmp_master:
      case bp_std_terminate_master:
      case bp_exception_master:
@@ -687,7 +687,7 @@ index ca56c43..6f269b9 100644
        loc->loc_type = bp_loc_software_breakpoint;
        break;
      case bp_hardware_breakpoint:
-@@ -5813,6 +5880,7 @@ set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
+@@ -5660,6 +5727,7 @@ set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
    b->ops = NULL;
    b->condition_not_parsed = 0;
    b->py_bp_object = NULL;
@@ -695,7 +695,7 @@ index ca56c43..6f269b9 100644
  
    /* Add this breakpoint to the end of the chain so that a list of
       breakpoints will come out in order of increasing numbers.  */
-@@ -5831,7 +5899,7 @@ set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
+@@ -5678,7 +5746,7 @@ set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
  
  /* Initialize loc->function_name.  */
  static void
@@ -704,7 +704,7 @@ index ca56c43..6f269b9 100644
  {
    gdb_assert (loc->owner != NULL);
  
-@@ -5839,8 +5907,29 @@ set_breakpoint_location_function (struct bp_location *loc)
+@@ -5686,8 +5754,29 @@ set_breakpoint_location_function (struct bp_location *loc)
        || loc->owner->type == bp_hardware_breakpoint
        || is_tracepoint (loc->owner))
      {
@@ -736,7 +736,7 @@ index ca56c43..6f269b9 100644
        if (loc->function_name)
  	loc->function_name = xstrdup (loc->function_name);
      }
-@@ -5915,7 +6004,8 @@ set_raw_breakpoint (struct gdbarch *gdbarch,
+@@ -5762,7 +5851,8 @@ set_raw_breakpoint (struct gdbarch *gdbarch,
    b->loc->section = sal.section;
    b->line_number = sal.line;
  
@@ -746,7 +746,7 @@ index ca56c43..6f269b9 100644
  
    breakpoints_changed ();
  
-@@ -7032,7 +7122,7 @@ clone_momentary_breakpoint (struct breakpoint *orig)
+@@ -6879,7 +6969,7 @@ clone_momentary_breakpoint (struct breakpoint *orig)
  
    copy = set_raw_breakpoint_without_location (orig->gdbarch, orig->type);
    copy->loc = allocate_bp_location (copy);
@@ -755,7 +755,7 @@ index ca56c43..6f269b9 100644
  
    copy->loc->gdbarch = orig->loc->gdbarch;
    copy->loc->requested_address = orig->loc->requested_address;
-@@ -7132,6 +7222,7 @@ mention (struct breakpoint *b)
+@@ -6979,6 +7069,7 @@ mention (struct breakpoint *b)
  	do_cleanups (ui_out_chain);
  	break;
        case bp_breakpoint:
@@ -763,7 +763,7 @@ index ca56c43..6f269b9 100644
  	if (ui_out_is_mi_like_p (uiout))
  	  {
  	    say_where = 0;
-@@ -7142,6 +7233,8 @@ mention (struct breakpoint *b)
+@@ -6989,6 +7080,8 @@ mention (struct breakpoint *b)
  	else
  	  printf_filtered (_("Breakpoint"));
  	printf_filtered (_(" %d"), b->number);
@@ -772,7 +772,7 @@ index ca56c43..6f269b9 100644
  	say_where = 1;
  	break;
        case bp_hardware_breakpoint:
-@@ -7201,6 +7294,7 @@ mention (struct breakpoint *b)
+@@ -7048,6 +7141,7 @@ mention (struct breakpoint *b)
        case bp_longjmp_master:
        case bp_std_terminate_master:
        case bp_exception_master:
@@ -780,7 +780,7 @@ index ca56c43..6f269b9 100644
  	break;
        }
  
-@@ -7261,7 +7355,8 @@ add_location_to_breakpoint (struct breakpoint *b,
+@@ -7108,7 +7202,8 @@ add_location_to_breakpoint (struct breakpoint *b,
    gdb_assert (loc->pspace != NULL);
    loc->section = sal->section;
  
@@ -790,7 +790,7 @@ index ca56c43..6f269b9 100644
    return loc;
  }
  \f
-@@ -8710,6 +8805,7 @@ watch_command_1 (char *arg, int accessflag, int from_tty,
+@@ -8542,6 +8637,7 @@ watch_command_1 (char *arg, int accessflag, int from_tty,
    b = set_raw_breakpoint_without_location (NULL, bp_type);
    set_breakpoint_number (internal, b);
    b->thread = thread;
@@ -798,7 +798,7 @@ index ca56c43..6f269b9 100644
    b->disposition = disp_donttouch;
    b->exp = exp;
    b->exp_valid_block = exp_valid_block;
-@@ -9881,6 +9977,9 @@ update_global_location_list (int should_insert)
+@@ -9704,6 +9800,9 @@ update_global_location_list (int should_insert)
        int keep_in_target = 0;
        int removed = 0;
  
@@ -808,7 +808,7 @@ index ca56c43..6f269b9 100644
        /* Skip LOCP entries which will definitely never be needed.
  	 Stop either at or being the one matching OLD_LOC.  */
        while (locp < bp_location + bp_location_count
-@@ -10197,12 +10296,20 @@ delete_breakpoint (struct breakpoint *bpt)
+@@ -10020,12 +10119,20 @@ delete_breakpoint (struct breakpoint *bpt)
  
    /* At least avoid this stale reference until the reference counting
       of breakpoints gets resolved.  */
@@ -834,7 +834,7 @@ index ca56c43..6f269b9 100644
      }
  
    observer_notify_breakpoint_deleted (bpt->number);
-@@ -10533,6 +10640,9 @@ update_breakpoint_locations (struct breakpoint *b,
+@@ -10356,6 +10463,9 @@ update_breakpoint_locations (struct breakpoint *b,
      return;
  
    b->loc = NULL;
@@ -844,7 +844,7 @@ index ca56c43..6f269b9 100644
  
    for (i = 0; i < sals.nelts; ++i)
      {
-@@ -10560,11 +10670,7 @@ update_breakpoint_locations (struct breakpoint *b,
+@@ -10383,11 +10493,7 @@ update_breakpoint_locations (struct breakpoint *b,
  	    }
  	}
  
@@ -857,7 +857,7 @@ index ca56c43..6f269b9 100644
  	b->source_file = xstrdup (sals.sals[i].symtab->filename);
  
        if (b->line_number == 0)
-@@ -10647,6 +10753,7 @@ breakpoint_re_set_one (void *bint)
+@@ -10470,6 +10576,7 @@ breakpoint_re_set_one (void *bint)
      case bp_tracepoint:
      case bp_fast_tracepoint:
      case bp_static_tracepoint:
@@ -865,7 +865,7 @@ index ca56c43..6f269b9 100644
        /* Do not attempt to re-set breakpoints disabled during startup.  */
        if (b->enable_state == bp_startup_disabled)
  	return 0;
-@@ -10817,6 +10924,7 @@ breakpoint_re_set_one (void *bint)
+@@ -10640,6 +10747,7 @@ breakpoint_re_set_one (void *bint)
      case bp_exception:
      case bp_exception_resume:
      case bp_jit_event:
@@ -873,7 +873,7 @@ index ca56c43..6f269b9 100644
        break;
      }
  
-@@ -10981,11 +11089,25 @@ map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
+@@ -10804,11 +10912,25 @@ map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
  	  ALL_BREAKPOINTS_SAFE (b, tmp)
  	    if (b->number == num)
  	      {
@@ -903,7 +903,7 @@ index ca56c43..6f269b9 100644
  		break;
  	      }
  	  if (match == 0)
-@@ -12100,6 +12222,22 @@ all_tracepoints ()
+@@ -11923,6 +12045,22 @@ all_tracepoints ()
    return tp_vec;
  }
  
@@ -926,7 +926,7 @@ index ca56c43..6f269b9 100644
  \f
  /* This help string is used for the break, hbreak, tbreak and thbreak
     commands.  It is defined as a macro to prevent duplication.
-@@ -12185,6 +12323,107 @@ iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
+@@ -12008,6 +12146,107 @@ iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
    return NULL;
  }
  
@@ -1034,14 +1034,14 @@ index ca56c43..6f269b9 100644
  void
  _initialize_breakpoint (void)
  {
-@@ -12721,4 +12960,5 @@ inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
+@@ -12544,4 +12783,5 @@ inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
    automatic_hardware_breakpoints = 1;
  
    observer_attach_about_to_proceed (breakpoint_about_to_proceed);
 +  observer_attach_mark_used (breakpoint_types_mark_used);
  }
 diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
-index 86fae66..ffef340 100644
+index a0fea21..4b24701 100644
 --- a/gdb/breakpoint.h
 +++ b/gdb/breakpoint.h
 @@ -148,6 +148,9 @@ enum bptype
@@ -1121,7 +1121,7 @@ index 9409dde..f0fa4c7 100644
  extern char *xfullpath (const char *);
  
 diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
-index e16065b..cdb44e3 100644
+index f8b7e2d..72c47e6 100644
 --- a/gdb/doc/gdb.texinfo
 +++ b/gdb/doc/gdb.texinfo
 @@ -1177,6 +1177,16 @@ for remote debugging.
@@ -1141,7 +1141,7 @@ index e16065b..cdb44e3 100644
  @c resolve the situation of these eventually
  @item -tui
  @cindex @code{--tui}
-@@ -20677,8 +20687,6 @@ containing @code{end}.  For example:
+@@ -20683,8 +20693,6 @@ containing @code{end}.  For example:
  
  @smallexample
  (@value{GDBP}) python
@@ -1150,7 +1150,7 @@ index e16065b..cdb44e3 100644
  >print 23
  >end
  23
-@@ -20691,6 +20699,14 @@ in a Python script.  This can be controlled using @code{maint set
+@@ -20697,6 +20705,14 @@ in a Python script.  This can be controlled using @code{maint set
  python print-stack}: if @code{on}, the default, then Python stack
  printing is enabled; if @code{off}, then Python stack printing is
  disabled.
@@ -1165,7 +1165,7 @@ index e16065b..cdb44e3 100644
  @end table
  
  It is also possible to execute a Python script from the @value{GDBN}
-@@ -20712,6 +20728,14 @@ and thus is always available.
+@@ -20718,6 +20734,14 @@ and thus is always available.
  @cindex python api
  @cindex programming in python
  
@@ -1365,7 +1365,7 @@ index 620269f..c6fc64f 100644
    /* The current depth of dwarf expression recursion, via DW_OP_call*,
       DW_OP_fbreg, DW_OP_push_object_address, etc., and the maximum
 diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
-index 4d31afa..fd0c185 100644
+index a439f72..9abcd56 100644
 --- a/gdb/dwarf2loc.c
 +++ b/gdb/dwarf2loc.c
 @@ -134,6 +134,9 @@ struct dwarf_expr_baton
@@ -1636,7 +1636,7 @@ index 4d31afa..fd0c185 100644
  	    retval = allocate_value_lazy (type);
  	    VALUE_LVAL (retval) = lval_memory;
  	    if (in_stack_memory)
-@@ -2831,11 +2989,51 @@ loclist_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch,
+@@ -2811,11 +2969,51 @@ loclist_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch,
  			       dlbaton->per_cu);
  }
  
@@ -5791,7 +5791,7 @@ index 8497991..4635853 100644
  		       SYMBOL_LINKAGE_NAME (tsymbol)) == 0)
  	  return SYMBOL_VALUE_ADDRESS (msymbol);
 diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c
-index fc50e2a..499df7c 100644
+index ee76542..aaf8be6 100644
 --- a/gdb/p-valprint.c
 +++ b/gdb/p-valprint.c
 @@ -39,6 +39,7 @@
@@ -6197,10 +6197,10 @@ index 0c5563e..e4f0b25 100644
  
    return ret;
 diff --git a/gdb/printcmd.c b/gdb/printcmd.c
-index 29ffbf5..42b7821 100644
+index ebca5a3..4159985 100644
 --- a/gdb/printcmd.c
 +++ b/gdb/printcmd.c
-@@ -964,6 +964,11 @@ print_command_1 (char *exp, int inspect, int voidprint)
+@@ -971,6 +971,11 @@ print_command_1 (char *exp, int inspect, int voidprint)
    else
      val = access_value_history (0);
  
@@ -6212,7 +6212,7 @@ index 29ffbf5..42b7821 100644
    if (voidprint || (val && value_type (val) &&
  		    TYPE_CODE (value_type (val)) != TYPE_CODE_VOID))
      {
-@@ -1465,6 +1470,22 @@ x_command (char *exp, int from_tty)
+@@ -1472,6 +1477,22 @@ x_command (char *exp, int from_tty)
  	set_internalvar (lookup_internalvar ("__"), last_examine_value);
      }
  }
@@ -6235,7 +6235,7 @@ index 29ffbf5..42b7821 100644
  \f
  
  /* Add an expression to the auto-display chain.
-@@ -2865,4 +2886,6 @@ Show printing of source filename and line number with <symbol>."), NULL,
+@@ -2884,4 +2905,6 @@ Show printing of source filename and line number with <symbol>."), NULL,
    add_com ("eval", no_class, eval_command, _("\
  Convert \"printf format string\", arg1, arg2, arg3, ..., argn to\n\
  a command line, and call it."));
@@ -11816,7 +11816,7 @@ index 0000000..31f7656
 +extern void marker (void);
 +extern void forkoff (int nr);
 diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
-index d523d8e..b543ad0 100644
+index 44d449a..d8c50f2 100644
 --- a/gdb/testsuite/lib/gdb.exp
 +++ b/gdb/testsuite/lib/gdb.exp
 @@ -140,6 +140,11 @@ proc gdb_unload {} {
@@ -11977,7 +11977,7 @@ index 82e3adb..a5b9146 100644
  
  static void
 diff --git a/gdb/valarith.c b/gdb/valarith.c
-index 787fc69..a90f416 100644
+index 68f649f..aaa4487 100644
 --- a/gdb/valarith.c
 +++ b/gdb/valarith.c
 @@ -198,7 +198,10 @@ value_subscripted_rvalue (struct value *array, LONGEST index, int lowerbound)

diff --git a/gdb-prelink-rela.patch b/gdb-prelink-rela.patch
new file mode 100644
index 0000000..fb63f0c
--- /dev/null
+++ b/gdb-prelink-rela.patch
@@ -0,0 +1,141 @@
+http://sourceware.org/ml/gdb-patches/2011-02/msg00630.html
+Subject: [patch] [i386] Fix {,un}prelinked libraries for attach/core-load
+
+Hi,
+
+please see comments in the patch.  The adjusted testcase FAILs on i386.
+
+"Prelink", March 4, 2004 - by Jakub Jelinek:
+	http://people.redhat.com/jakub/prelink.pdf
+	primarily section 7 - REL to RELA conversion
+
+An example of unprelinked -> prelinked library change:
+ Program Headers:
+   Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
+-  LOAD           0x000000 0x00000000 0x00000000 0x00538 0x00538 R E 0x1000
+-  LOAD           0x000538 0x00001538 0x00001538 0x00100 0x00110 RW  0x1000
+-  DYNAMIC        0x000550 0x00001550 0x00001550 0x000c8 0x000c8 RW  0x4
+-  NOTE           0x0000f4 0x000000f4 0x000000f4 0x00024 0x00024 R   0x4
+-  GNU_EH_FRAME   0x0004e8 0x000004e8 0x000004e8 0x00014 0x00014 R   0x4
++  LOAD           0x000000 0x411b3000 0x411b3000 0x00558 0x00558 R E 0x1000
++  LOAD           0x000558 0x411b4558 0x411b4558 0x00100 0x00110 RW  0x1000
++  DYNAMIC        0x000570 0x411b4570 0x411b4570 0x000c8 0x000c8 RW  0x4
++  NOTE           0x0000f4 0x411b30f4 0x411b30f4 0x00024 0x00024 R   0x4
++  GNU_EH_FRAME   0x000508 0x411b3508 0x411b3508 0x00014 0x00014 R   0x4
+   GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x4
+
+So far GDB expected all such displacements will be always PAGE_SIZE aligned.
+This applies for example for re-prelinking of an already prelinked file.
+But it does not apply for prelinking of an unprelinked file or unprelinking of
+a prelinked file, there can be arbitrary displacement.
+
+It affects i386 (=i686, prelink doc reports also ARM and MIPS) which uses REL.
+x86_64 always uses RELA, therefore I have not noticed it so far.  i386 still
+has to be supported.
+
+This affects both attachment to a PID and core file loads.
+
+This applies in real world if you transfer a core file between hosts and try to
+backtrace them, libraries of both hosts may differ whether they are / are not
+prelinked.
+
+I could implement some (displacement-forgiving and prelink-modifications
+forgiving) comparison of both DYNAMIC segments found.  But I do not think it is
+useful, if the DYNAMIC address from linkmap vs. bfd do not match it is still a
+better chance to try a displacement to make them match.  Keeping the file
+relocation cannot work anyway when the DYNAMIC address is verified as wrong.
+
+No regressions on {x86_64,x86_64-m32,i686}-fedora15-linux-gnu.
+
+Mostly do you agree the DYNAMIC content does not have to be verifed?
+Do you have any comments on the in-code long comments?
+
+
+Thanks,
+Jan
+
+
+gdb/
+2011-02-22  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Fix libraries displacement if they change whether they were prelinked.
+	* solib-svr4.c (LM_ADDR_CHECK): Set L_ADDR even if the DYNAMIC pointer
+	does not match.  Comment why.
+
+gdb/testsuite/
+2011-02-22  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* gdb.base/break-interp-lib.c (v, vptr): New variables.
+	* gdb.base/break-interp.exp (test_attach): New comment.
+
+--- a/gdb/solib-svr4.c
++++ b/gdb/solib-svr4.c
+@@ -237,11 +237,11 @@ LM_ADDR_CHECK (struct so_list *so, bfd *abfd)
+ 
+ 	     Even on PPC it must be zero-aligned at least for MINPAGESIZE.  */
+ 
++	  l_addr = l_dynaddr - dynaddr;
++
+ 	  if ((l_addr & (minpagesize - 1)) == 0
+ 	      && (l_addr & align) == ((l_dynaddr - dynaddr) & align))
+ 	    {
+-	      l_addr = l_dynaddr - dynaddr;
+-
+ 	      if (info_verbose)
+ 		printf_unfiltered (_("Using PIC (Position Independent Code) "
+ 				     "prelink displacement %s for \"%s\".\n"),
+@@ -249,9 +249,20 @@ LM_ADDR_CHECK (struct so_list *so, bfd *abfd)
+ 				   so->so_name);
+ 	    }
+ 	  else
+-	    warning (_(".dynamic section for \"%s\" "
+-		       "is not at the expected address "
+-		       "(wrong library or version mismatch?)"), so->so_name);
++	    {
++	      /* There is no way to verify the library file matches.  prelink
++		 can during prelinking of an unprelinked file (or unprelinking
++		 of a prelinked file) shift the DYNAMIC segment by arbitrary
++		 offset without any page size alignment.  There is no way to
++		 find out the ELF header and/or Program Headers for a limited
++		 verification if it they match.  One could do a verification
++		 of the DYNAMIC segment.  Still the found address is the best
++		 one GDB could find.  */
++
++	      warning (_(".dynamic section for \"%s\" "
++			 "is not at the expected address "
++			 "(wrong library or version mismatch?)"), so->so_name);
++	    }
+ 	}
+ 
+     set_addr:
+--- a/gdb/testsuite/gdb.base/break-interp-lib.c
++++ b/gdb/testsuite/gdb.base/break-interp-lib.c
+@@ -20,6 +20,10 @@
+ #include <assert.h>
+ #include <stdio.h>
+ 
++/* Force REL->RELA conversion on i386, see "Prelink", March 4, 2004.  */
++volatile int v[2];
++volatile int *vptr = &v[1];
++
+ void
+ libfunc (const char *action)
+ {
+--- a/gdb/testsuite/gdb.base/break-interp.exp
++++ b/gdb/testsuite/gdb.base/break-interp.exp
+@@ -352,6 +352,14 @@ proc test_attach {file displacement {relink_args ""}} {
+ 	    # test simplicity, we merged this test and the test above by not
+ 	    # restoring $INTERP after $EXEC prelink.  $INTERP gets restored
+ 	    # later below.
++	    #
++	    # `(wrong library or version mismatch?)' messages are printed for
++	    # $binfile_lib on platforms converting REL->RELA relocations by
++	    # prelink (such as on i386).  There is no reliable way to verify
++	    # the library file matches the running library in such case but
++	    # GDB at least attempts to set the right displacement.  We test
++	    # `libfunc' is present in the backtrace and therefore the
++	    # displacement has been guessed right.
+ 
+ 	    if [prelink$relink $relink_args [file tail $exec]] {
+ 		# /proc/PID/exe cannot be loaded as it is "EXECNAME (deleted)".
+

diff --git a/gdb.spec b/gdb.spec
index a0fb1f6..97be79d 100644
--- a/gdb.spec
+++ b/gdb.spec
@@ -23,11 +23,11 @@ Name: gdb%{?_with_debug:-debug}
 # Set version to contents of gdb/version.in.
 # NOTE: the FSF gdb versions are numbered N.M for official releases, like 6.3
 # and, since January 2005, X.Y.Z.date for daily snapshots, like 6.3.50.20050112 # (daily snapshot from mailine), or 6.3.0.20040112 (head of the release branch).
-Version: 7.2.50.20110218
+Version: 7.2.50.20110222
 
 # The release always contains a leading reserved number, start it at 1.
 # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
-Release: 25%{?_with_upstream:.upstream}%{?dist}
+Release: 26%{?_with_upstream:.upstream}%{?dist}
 
 License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain
 Group: Development/Debuggers
@@ -558,6 +558,9 @@ Patch565: gdb-physname-pr11734-1of2.patch
 Patch566: gdb-physname-pr11734-2of2.patch
 Patch567: gdb-physname-pr12273.patch
 
+# Fix attach/core-load of {,un}prelinked i386 libs (bugreport by Michal Toman).
+Patch571: gdb-prelink-rela.patch
+
 BuildRequires: ncurses-devel%{?_isa} texinfo gettext flex bison expat-devel%{?_isa}
 Requires: readline%{?_isa}
 BuildRequires: readline-devel%{?_isa}
@@ -827,6 +830,7 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
 %patch565 -p1
 %patch566 -p1
 %patch567 -p1
+%patch571 -p1
 
 %patch390 -p1
 %patch393 -p1
@@ -1251,6 +1255,10 @@ fi
 %{_infodir}/gdb.info*
 
 %changelog
+* Wed Feb 23 2011 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.2.50.20110222-26.fc15
+- Rebase to FSF GDB 7.2.50.20110222 (which is a 7.3 pre-release).
+- Fix attach/core-load of {,un}prelinked i386 libs (bugreport by Michal Toman).
+
 * Mon Feb 21 2011 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.2.50.20110218-25.fc15
 - Drop %%{_datadir}/gdb/syscalls/* for unsupported arches.
 

diff --git a/sources b/sources
index 4219109..63f3744 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
 04e5c4b1b9e633422cc48990fe61958d  libstdc++-v3-python-r155978.tar.bz2
-91f8283c9b38ce8f746a308bc4165d81  gdb-7.2.50.20110218.tar.bz2
+2e26a654bcd0c9c46cfc104e4068a95c  gdb-7.2.50.20110222.tar.bz2

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-06-27 23:55 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-27 23:55 [rpms/gdb] gdb-17.2-rebase-f44: - Rebase to FSF GDB 7.2.50.20110222 (which is a 7.3 pre-release) Jan Kratochvil

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox