[gdb] - Rebase to FSF GDB 7.2.50.20110104 (which is a 7.3 pre-release). - New testcase py-prettyprint.exp:

Jan Kratochvil jkratoch at fedoraproject.org
Tue Jan 4 05:39:51 UTC 2011


commit 278e869a8612df16f37c7805f841c8830e0d6303
Author: Jan Kratochvil <jan.kratochvil at redhat.com>
Date:   Tue Jan 4 06:39:35 2011 +0100

    - Rebase to FSF GDB 7.2.50.20110104 (which is a 7.3 pre-release).
    - New testcase py-prettyprint.exp:print hint_error (for BZ 611569, BZ 629236).
    - New test gdb.arch/x86_64-pid0-core.exp for kernel PID 0 cores (BZ 611435).

 .gitignore                     |    2 +-
 gdb-6.6-buildid-locate.patch   |   86 ++++++++++----------
 gdb-archer.patch               |  177 ++++++++++++++++++++++-----------------
 gdb-doc-system-readline.patch  |   52 ------------
 gdb-doc-system-readline2.patch |   68 ---------------
 gdb-rhel5-compat.patch         |   28 +++---
 gdb-test-pid0-core.patch       |   80 ++++++++++++++++++
 gdb-test-pp-hint-error.patch   |   93 +++++++++++++++++++++
 gdb.spec                       |   24 ++++--
 sources                        |    2 +-
 10 files changed, 349 insertions(+), 263 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index ed12a9d..5910984 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-/gdb-7.2.50.20101231.tar.bz2
+/gdb-7.2.50.20110104.tar.bz2
diff --git a/gdb-6.6-buildid-locate.patch b/gdb-6.6-buildid-locate.patch
index ff134f1..19cb8ad 100644
--- a/gdb-6.6-buildid-locate.patch
+++ b/gdb-6.6-buildid-locate.patch
@@ -1,7 +1,7 @@
-Index: gdb-7.1.90.20100711/gdb/corelow.c
+Index: gdb-7.2.50.20110104/gdb/corelow.c
 ===================================================================
---- gdb-7.1.90.20100711.orig/gdb/corelow.c	2010-05-14 01:53:32.000000000 +0200
-+++ gdb-7.1.90.20100711/gdb/corelow.c	2010-07-12 11:07:33.000000000 +0200
+--- gdb-7.2.50.20110104.orig/gdb/corelow.c	2011-01-01 16:32:59.000000000 +0100
++++ gdb-7.2.50.20110104/gdb/corelow.c	2011-01-04 06:15:49.000000000 +0100
 @@ -47,6 +47,9 @@
  #include "filenames.h"
  #include "progspace.h"
@@ -12,8 +12,8 @@ Index: gdb-7.1.90.20100711/gdb/corelow.c
  
  
  #ifndef O_LARGEFILE
-@@ -289,6 +292,52 @@ add_to_thread_list (bfd *abfd, asection 
-     inferior_ptid = ptid;			 /* Yes, make it current */
+@@ -277,6 +280,52 @@ add_to_thread_list (bfd *abfd, asection 
+     inferior_ptid = ptid;			/* Yes, make it current.  */
  }
  
 +static int build_id_core_loads = 1;
@@ -65,7 +65,7 @@ Index: gdb-7.1.90.20100711/gdb/corelow.c
  /* This routine opens and sets up the core file bfd.  */
  
  static void
-@@ -386,6 +435,12 @@ core_open (char *filename, int from_tty)
+@@ -377,6 +426,12 @@ core_open (char *filename, int from_tty)
    push_target (&core_ops);
    discard_cleanups (old_chain);
  
@@ -78,7 +78,7 @@ Index: gdb-7.1.90.20100711/gdb/corelow.c
    /* Do this before acknowledging the inferior, so if
       post_create_inferior throws (can happen easilly if you're loading
       a core file with the wrong exec), we aren't left with threads
-@@ -924,4 +979,11 @@ _initialize_corelow (void)
+@@ -930,4 +985,11 @@ _initialize_corelow (void)
    init_core_ops ();
  
    add_target (&core_ops);
@@ -90,11 +90,11 @@ Index: gdb-7.1.90.20100711/gdb/corelow.c
 +			   NULL, NULL, NULL,
 +			   &setlist, &showlist);
  }
-Index: gdb-7.1.90.20100711/gdb/doc/gdb.texinfo
+Index: gdb-7.2.50.20110104/gdb/doc/gdb.texinfo
 ===================================================================
---- gdb-7.1.90.20100711.orig/gdb/doc/gdb.texinfo	2010-07-12 10:59:30.000000000 +0200
-+++ gdb-7.1.90.20100711/gdb/doc/gdb.texinfo	2010-07-12 11:05:57.000000000 +0200
-@@ -14980,6 +14980,27 @@ information files.
+--- gdb-7.2.50.20110104.orig/gdb/doc/gdb.texinfo	2011-01-04 06:15:02.000000000 +0100
++++ gdb-7.2.50.20110104/gdb/doc/gdb.texinfo	2011-01-04 06:15:14.000000000 +0100
+@@ -15267,6 +15267,27 @@ information files.
  
  @end table
  
@@ -122,11 +122,11 @@ Index: gdb-7.1.90.20100711/gdb/doc/gdb.texinfo
  @cindex @code{.gnu_debuglink} sections
  @cindex debug link sections
  A debug link is a special section of the executable file named
-Index: gdb-7.1.90.20100711/gdb/solib-svr4.c
+Index: gdb-7.2.50.20110104/gdb/solib-svr4.c
 ===================================================================
---- gdb-7.1.90.20100711.orig/gdb/solib-svr4.c	2010-07-12 10:00:56.000000000 +0200
-+++ gdb-7.1.90.20100711/gdb/solib-svr4.c	2010-07-12 11:05:57.000000000 +0200
-@@ -1181,9 +1181,49 @@ svr4_current_sos (void)
+--- gdb-7.2.50.20110104.orig/gdb/solib-svr4.c	2011-01-04 06:15:01.000000000 +0100
++++ gdb-7.2.50.20110104/gdb/solib-svr4.c	2011-01-04 06:15:14.000000000 +0100
+@@ -1179,9 +1179,49 @@ svr4_current_sos (void)
  		     safe_strerror (errcode));
  	  else
  	    {
@@ -179,10 +179,10 @@ Index: gdb-7.1.90.20100711/gdb/solib-svr4.c
  	    }
  	  xfree (buffer);
  
-Index: gdb-7.1.90.20100711/gdb/elfread.c
+Index: gdb-7.2.50.20110104/gdb/elfread.c
 ===================================================================
---- gdb-7.1.90.20100711.orig/gdb/elfread.c	2010-07-12 10:00:56.000000000 +0200
-+++ gdb-7.1.90.20100711/gdb/elfread.c	2010-07-12 11:30:30.000000000 +0200
+--- gdb-7.2.50.20110104.orig/gdb/elfread.c	2011-01-04 06:15:01.000000000 +0100
++++ gdb-7.2.50.20110104/gdb/elfread.c	2011-01-04 06:15:14.000000000 +0100
 @@ -38,6 +38,10 @@
  #include "demangle.h"
  #include "psympriv.h"
@@ -194,7 +194,7 @@ Index: gdb-7.1.90.20100711/gdb/elfread.c
  
  extern void _initialize_elfread (void);
  
-@@ -818,16 +822,65 @@ resolve_gnu_ifunc (const char *function_
+@@ -821,16 +825,65 @@ resolve_gnu_ifunc (const char *function_
    return 0;
  }
  
@@ -262,7 +262,7 @@ Index: gdb-7.1.90.20100711/gdb/elfread.c
  {
    struct build_id *retval;
  
-@@ -843,6 +896,348 @@ build_id_bfd_get (bfd *abfd)
+@@ -846,6 +899,348 @@ build_id_bfd_get (bfd *abfd)
    return retval;
  }
  
@@ -611,7 +611,7 @@ Index: gdb-7.1.90.20100711/gdb/elfread.c
  /* Return if FILENAME has NT_GNU_BUILD_ID matching the CHECK value.  */
  
  static int
-@@ -857,7 +1252,7 @@ build_id_verify (const char *filename, s
+@@ -860,7 +1255,7 @@ build_id_verify (const char *filename, s
    if (abfd == NULL)
      return 0;
  
@@ -620,7 +620,7 @@ Index: gdb-7.1.90.20100711/gdb/elfread.c
  
    if (found == NULL)
      warning (_("File \"%s\" has no build-id, file skipped"), filename);
-@@ -874,14 +1269,16 @@ build_id_verify (const char *filename, s
+@@ -877,14 +1272,16 @@ build_id_verify (const char *filename, s
    return retval;
  }
  
@@ -641,7 +641,7 @@ Index: gdb-7.1.90.20100711/gdb/elfread.c
  
    /* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
       cause "/.build-id/..." lookups.  */
-@@ -912,7 +1309,10 @@ build_id_to_debug_filename (struct build
+@@ -915,7 +1312,10 @@ build_id_to_debug_filename (struct build
  	*s++ = '/';
        while (size-- > 0)
  	s += sprintf (s, "%02x", (unsigned) *data++);
@@ -653,7 +653,7 @@ Index: gdb-7.1.90.20100711/gdb/elfread.c
  
        /* lrealpath() is expensive even for the usually non-existent files.  */
        if (access (link, F_OK) == 0)
-@@ -925,26 +1325,201 @@ build_id_to_debug_filename (struct build
+@@ -928,26 +1328,201 @@ build_id_to_debug_filename (struct build
  	}
  
        if (retval != NULL)
@@ -859,7 +859,7 @@ Index: gdb-7.1.90.20100711/gdb/elfread.c
        xfree (build_id);
        /* Prevent looping on a stripped .debug file.  */
        if (build_id_name != NULL && strcmp (build_id_name, objfile->name) == 0)
-@@ -954,7 +1529,7 @@ find_separate_debug_file_by_buildid (str
+@@ -957,7 +1532,7 @@ find_separate_debug_file_by_buildid (str
  	  xfree (build_id_name);
  	}
        else if (build_id_name != NULL)
@@ -868,7 +868,7 @@ Index: gdb-7.1.90.20100711/gdb/elfread.c
      }
    return NULL;
  }
-@@ -1131,9 +1706,10 @@ elf_symfile_read (struct objfile *objfil
+@@ -1138,9 +1713,10 @@ elf_symfile_read (struct objfile *objfil
       `.gnu_debuglink' may no longer be present with `.note.gnu.build-id'.  */
    if (!objfile_has_partial_symbols (objfile))
      {
@@ -881,7 +881,7 @@ Index: gdb-7.1.90.20100711/gdb/elfread.c
  
        if (debugfile == NULL)
  	debugfile = find_separate_debug_file_by_debuglink (objfile);
-@@ -1145,6 +1721,12 @@ elf_symfile_read (struct objfile *objfil
+@@ -1152,6 +1728,12 @@ elf_symfile_read (struct objfile *objfil
  	  symbol_file_add_separate (abfd, symfile_flags, objfile);
  	  xfree (debugfile);
  	}
@@ -894,7 +894,7 @@ Index: gdb-7.1.90.20100711/gdb/elfread.c
      }
  }
  
-@@ -1304,4 +1886,16 @@ void
+@@ -1327,4 +1909,16 @@ void
  _initialize_elfread (void)
  {
    add_symtab_fns (&elf_sym_fns);
@@ -911,11 +911,11 @@ Index: gdb-7.1.90.20100711/gdb/elfread.c
 +
 +  observer_attach_executable_changed (debug_print_executable_changed);
  }
-Index: gdb-7.1.90.20100711/gdb/symfile.h
+Index: gdb-7.2.50.20110104/gdb/symfile.h
 ===================================================================
---- gdb-7.1.90.20100711.orig/gdb/symfile.h	2010-05-08 06:58:45.000000000 +0200
-+++ gdb-7.1.90.20100711/gdb/symfile.h	2010-07-12 11:06:18.000000000 +0200
-@@ -562,6 +562,13 @@ void free_symfile_segment_data (struct s
+--- gdb-7.2.50.20110104.orig/gdb/symfile.h	2011-01-01 16:33:16.000000000 +0100
++++ gdb-7.2.50.20110104/gdb/symfile.h	2011-01-04 06:15:14.000000000 +0100
+@@ -553,6 +553,13 @@ void free_symfile_segment_data (struct s
  
  extern struct cleanup *increment_reading_symtab (void);
  
@@ -929,11 +929,11 @@ Index: gdb-7.1.90.20100711/gdb/symfile.h
  /* From dwarf2read.c */
  
  extern int dwarf2_has_info (struct objfile *);
-Index: gdb-7.1.90.20100711/gdb/testsuite/lib/gdb.exp
+Index: gdb-7.2.50.20110104/gdb/testsuite/lib/gdb.exp
 ===================================================================
---- gdb-7.1.90.20100711.orig/gdb/testsuite/lib/gdb.exp	2010-07-12 10:00:56.000000000 +0200
-+++ gdb-7.1.90.20100711/gdb/testsuite/lib/gdb.exp	2010-07-12 11:05:57.000000000 +0200
-@@ -1353,6 +1353,16 @@ proc default_gdb_start { } {
+--- gdb-7.2.50.20110104.orig/gdb/testsuite/lib/gdb.exp	2011-01-04 06:15:01.000000000 +0100
++++ gdb-7.2.50.20110104/gdb/testsuite/lib/gdb.exp	2011-01-04 06:15:14.000000000 +0100
+@@ -1390,6 +1390,16 @@ proc default_gdb_start { } {
  	    warning "Couldn't set the width to 0."
  	}
      }
@@ -950,10 +950,10 @@ Index: gdb-7.1.90.20100711/gdb/testsuite/lib/gdb.exp
      return 0;
  }
  
-Index: gdb-7.1.90.20100711/gdb/testsuite/lib/mi-support.exp
+Index: gdb-7.2.50.20110104/gdb/testsuite/lib/mi-support.exp
 ===================================================================
---- gdb-7.1.90.20100711.orig/gdb/testsuite/lib/mi-support.exp	2010-03-15 04:43:13.000000000 +0100
-+++ gdb-7.1.90.20100711/gdb/testsuite/lib/mi-support.exp	2010-07-12 11:05:57.000000000 +0200
+--- gdb-7.2.50.20110104.orig/gdb/testsuite/lib/mi-support.exp	2011-01-01 16:33:52.000000000 +0100
++++ gdb-7.2.50.20110104/gdb/testsuite/lib/mi-support.exp	2011-01-04 06:15:14.000000000 +0100
 @@ -221,6 +221,16 @@ proc default_mi_gdb_start { args } {
  	    }
      	}
@@ -971,11 +971,11 @@ Index: gdb-7.1.90.20100711/gdb/testsuite/lib/mi-support.exp
  
      detect_async
  
-Index: gdb-7.1.90.20100711/gdb/objfiles.h
+Index: gdb-7.2.50.20110104/gdb/objfiles.h
 ===================================================================
---- gdb-7.1.90.20100711.orig/gdb/objfiles.h	2010-04-14 19:26:11.000000000 +0200
-+++ gdb-7.1.90.20100711/gdb/objfiles.h	2010-07-12 11:07:08.000000000 +0200
-@@ -426,6 +426,10 @@ struct objfile
+--- gdb-7.2.50.20110104.orig/gdb/objfiles.h	2011-01-01 16:33:12.000000000 +0100
++++ gdb-7.2.50.20110104/gdb/objfiles.h	2011-01-04 06:15:14.000000000 +0100
+@@ -433,6 +433,10 @@ struct objfile
  
  #define OBJF_USERLOADED	(1 << 3)	/* User loaded */
  
diff --git a/gdb-archer.patch b/gdb-archer.patch
index 06e76a0..b8e47a9 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 18d3d5d564eac7ad10bc972c957e6159a4276d3f
+commit 2be613ebefe3f3c2a5bb329c207d435024af7a2b
 
 branch `archer' - the merge of branches:
 archer-jankratochvil-vla
@@ -44,7 +44,7 @@ index 3efff2e..99097bf 100644
      return 1;
  
 diff --git a/gdb/amd64-linux-nat.c b/gdb/amd64-linux-nat.c
-index 16e97a2..784a476 100644
+index 877072c..2154b73 100644
 --- a/gdb/amd64-linux-nat.c
 +++ b/gdb/amd64-linux-nat.c
 @@ -265,18 +265,11 @@ amd64_linux_store_inferior_registers (struct target_ops *ops,
@@ -266,10 +266,10 @@ index 16e97a2..784a476 100644
  
  
 diff --git a/gdb/block.c b/gdb/block.c
-index f932d41..6e2cd88 100644
+index 776ae53..3544cf2 100644
 --- a/gdb/block.c
 +++ b/gdb/block.c
-@@ -321,3 +321,21 @@ allocate_block (struct obstack *obstack)
+@@ -322,3 +322,21 @@ allocate_block (struct obstack *obstack)
  
    return bl;
  }
@@ -292,10 +292,10 @@ index f932d41..6e2cd88 100644
 +  return SYMBOL_SYMTAB (func)->objfile;
 +}
 diff --git a/gdb/block.h b/gdb/block.h
-index 7eedb6c..a517e80 100644
+index 07d5bc7..fad89b1 100644
 --- a/gdb/block.h
 +++ b/gdb/block.h
-@@ -166,4 +166,6 @@ extern const struct block *block_global_block (const struct block *block);
+@@ -167,4 +167,6 @@ extern const struct block *block_global_block (const struct block *block);
  
  extern struct block *allocate_block (struct obstack *obstack);
  
@@ -303,7 +303,7 @@ index 7eedb6c..a517e80 100644
 +
  #endif /* BLOCK_H */
 diff --git a/gdb/blockframe.c b/gdb/blockframe.c
-index 366bedd..97f418a 100644
+index 4cfc6e6..dc64d51 100644
 --- a/gdb/blockframe.c
 +++ b/gdb/blockframe.c
 @@ -160,6 +160,7 @@ static CORE_ADDR cache_pc_function_low = 0;
@@ -365,7 +365,7 @@ index 366bedd..97f418a 100644
  
  /* Return the innermost stack frame executing inside of BLOCK, or NULL
 diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
-index 809eb53..8f92c4e 100644
+index 785155c..63d736f 100644
 --- a/gdb/breakpoint.c
 +++ b/gdb/breakpoint.c
 @@ -62,6 +62,7 @@
@@ -1026,10 +1026,10 @@ index 809eb53..8f92c4e 100644
 +  observer_attach_mark_used (breakpoint_types_mark_used);
  }
 diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
-index bfae8d9..a058e46 100644
+index 2d815c2..66b3ece 100644
 --- a/gdb/breakpoint.h
 +++ b/gdb/breakpoint.h
-@@ -147,6 +147,9 @@ enum bptype
+@@ -148,6 +148,9 @@ enum bptype
  
      /* Event for JIT compiled code generation or deletion.  */
      bp_jit_event,
@@ -1038,16 +1038,18 @@ index bfae8d9..a058e46 100644
 +    bp_gnu_ifunc_resolver_return,
    };
  
- /* States of enablement of breakpoint. */
+ /* States of enablement of breakpoint.  */
 diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c
-index 04f8127..2e29eb2 100644
+index feee86d..363c62b 100644
 --- a/gdb/c-typeprint.c
 +++ b/gdb/c-typeprint.c
-@@ -579,7 +579,13 @@ c_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
+@@ -609,9 +609,14 @@ c_type_print_varspec_suffix (struct type *type,
  	  fprintf_filtered (stream, ")");
  
  	fprintf_filtered (stream, "[");
 -	if (get_array_bounds (type, &low_bound, &high_bound))
+-	  fprintf_filtered (stream, "%d", 
+-			    (int) (high_bound - low_bound + 1));
 +	if (TYPE_RANGE_DATA (TYPE_INDEX_TYPE (type))->high.kind
 +	    != RANGE_BOUND_KIND_CONSTANT)
 +	  {
@@ -1055,11 +1057,12 @@ index 04f8127..2e29eb2 100644
 +	    fprintf_filtered (stream, "variable");
 +	  }
 +	else if (get_array_bounds (type, &low_bound, &high_bound))
- 	  fprintf_filtered (stream, "%d", (int) (high_bound - low_bound + 1));
++	  fprintf_filtered (stream, "%d", (int) (high_bound - low_bound + 1));
  	fprintf_filtered (stream, "]");
  
+ 	c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream,
 diff --git a/gdb/defs.h b/gdb/defs.h
-index 489de74..335d3f5 100644
+index 9d8f6fc..229378a 100644
 --- a/gdb/defs.h
 +++ b/gdb/defs.h
 @@ -398,6 +398,8 @@ extern struct cleanup *make_cleanup_restore_page_info (void);
@@ -1217,7 +1220,7 @@ index e19b8ed..343e160 100644
  This observer is used for internal testing.  Do not use.  
  See testsuite/gdb.gdb/observer.exp.
 diff --git a/gdb/dwarf2expr.c b/gdb/dwarf2expr.c
-index 29bfcf4..c339378 100644
+index 4ef6d55..1a3580a 100644
 --- a/gdb/dwarf2expr.c
 +++ b/gdb/dwarf2expr.c
 @@ -900,6 +900,13 @@ execute_stack_op (struct dwarf_expr_context *ctx,
@@ -1235,7 +1238,7 @@ index 29bfcf4..c339378 100644
  	  error (_("Unhandled dwarf expression opcode 0x%x"), op);
  	}
 diff --git a/gdb/dwarf2expr.h b/gdb/dwarf2expr.h
-index 68cc667..5b5f29c 100644
+index 3858dc8..a172585 100644
 --- a/gdb/dwarf2expr.h
 +++ b/gdb/dwarf2expr.h
 @@ -114,9 +114,15 @@ struct dwarf_expr_context
@@ -1256,7 +1259,7 @@ index 68cc667..5b5f29c 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 f0e08c7..d5c0c36 100644
+index 12e4dac..943b37d 100644
 --- a/gdb/dwarf2loc.c
 +++ b/gdb/dwarf2loc.c
 @@ -133,6 +133,9 @@ struct dwarf_expr_baton
@@ -1582,7 +1585,7 @@ index f0e08c7..d5c0c36 100644
 +  missing_tracepoint_var_ref
 +};
 diff --git a/gdb/dwarf2loc.h b/gdb/dwarf2loc.h
-index e94346c..55beec2 100644
+index ee52506..6a77c3f 100644
 --- a/gdb/dwarf2loc.h
 +++ b/gdb/dwarf2loc.h
 @@ -105,5 +105,14 @@ struct dwarf2_loclist_baton
@@ -1601,7 +1604,7 @@ index e94346c..55beec2 100644
  
  #endif /* dwarf2loc.h */
 diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
-index 80770f8..9908495 100644
+index 82a2f0b..327164c 100644
 --- a/gdb/dwarf2read.c
 +++ b/gdb/dwarf2read.c
 @@ -1206,6 +1206,9 @@ static void fill_in_loclist_baton (struct dwarf2_cu *cu,
@@ -2262,7 +2265,7 @@ index 80770f8..9908495 100644
       initialized (if not already set).  There are a few types where
       we should not be doing so, because the type-specific area is
 diff --git a/gdb/elfread.c b/gdb/elfread.c
-index d607b87..2aa7dd9 100644
+index 5944eb0..9b283e1 100644
 --- a/gdb/elfread.c
 +++ b/gdb/elfread.c
 @@ -37,6 +37,7 @@
@@ -2556,7 +2559,7 @@ index d607b87..2aa7dd9 100644
  
    /* Add synthetic symbols - for instance, names for any PLT entries.  */
 diff --git a/gdb/eval.c b/gdb/eval.c
-index 16e98ae..4fa4d5f 100644
+index fbd3698..56d51c8 100644
 --- a/gdb/eval.c
 +++ b/gdb/eval.c
 @@ -44,6 +44,7 @@
@@ -2784,7 +2787,7 @@ index 16e98ae..4fa4d5f 100644
      default:
        val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
 diff --git a/gdb/f-lang.h b/gdb/f-lang.h
-index f5bb82d..29cf5ba 100644
+index 5c2692d..b52ae74 100644
 --- a/gdb/f-lang.h
 +++ b/gdb/f-lang.h
 @@ -28,6 +28,10 @@ extern void f_error (char *);	/* Defined in f-exp.y */
@@ -2799,7 +2802,7 @@ index f5bb82d..29cf5ba 100644
  			struct ui_file *, int,
  			const struct value *,
 diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
-index d35a255..dec81d5 100644
+index 6618188..968de7a 100644
 --- a/gdb/f-typeprint.c
 +++ b/gdb/f-typeprint.c
 @@ -32,7 +32,7 @@
@@ -2867,7 +2870,7 @@ index d35a255..dec81d5 100644
      {
      case TYPE_CODE_ARRAY:
 diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c
-index e27f79e..93322a2 100644
+index 5db2ed7..e104e21 100644
 --- a/gdb/f-valprint.c
 +++ b/gdb/f-valprint.c
 @@ -54,15 +54,17 @@ int f77_array_offset_tbl[MAX_FORTRAN_DIMS + 1][2];
@@ -3005,7 +3008,7 @@ index e27f79e..93322a2 100644
    switch (TYPE_CODE (type))
      {
 diff --git a/gdb/findvar.c b/gdb/findvar.c
-index e0ca12c..de6311a 100644
+index 5f97422..2c2670e 100644
 --- a/gdb/findvar.c
 +++ b/gdb/findvar.c
 @@ -35,6 +35,7 @@
@@ -3216,7 +3219,7 @@ index e0ca12c..de6311a 100644
    else
      {
 diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
-index b651098..70269d6 100644
+index fac1e98..cbc3aeb 100644
 --- a/gdb/gdbtypes.c
 +++ b/gdb/gdbtypes.c
 @@ -39,6 +39,9 @@
@@ -4146,7 +4149,7 @@ index b651098..70269d6 100644
  
    add_setshow_zinteger_cmd ("overload", no_class, &overload_debug, _("\
 diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
-index 1ce2d91..133f583 100644
+index 9898991..652994c 100644
 --- a/gdb/gdbtypes.h
 +++ b/gdb/gdbtypes.h
 @@ -170,6 +170,7 @@ enum type_flag_value
@@ -4423,7 +4426,7 @@ index 1ce2d91..133f583 100644
 +
  #endif /* GDBTYPES_H */
 diff --git a/gdb/i386-linux-nat.c b/gdb/i386-linux-nat.c
-index 4fce1ac..7b6961e 100644
+index ed555ef..6b5c458 100644
 --- a/gdb/i386-linux-nat.c
 +++ b/gdb/i386-linux-nat.c
 @@ -633,22 +633,13 @@ i386_linux_store_inferior_registers (struct target_ops *ops,
@@ -4631,7 +4634,7 @@ index 4fce1ac..7b6961e 100644
  
  
 diff --git a/gdb/i386-nat.c b/gdb/i386-nat.c
-index eaa3644..7f32bd2 100644
+index 900fb40..f28c45b 100644
 --- a/gdb/i386-nat.c
 +++ b/gdb/i386-nat.c
 @@ -25,6 +25,7 @@
@@ -4986,7 +4989,7 @@ index eaa3644..7f32bd2 100644
  
  void
 diff --git a/gdb/i386-nat.h b/gdb/i386-nat.h
-index 7317e7d..65cd326 100644
+index 10fdc3b..ed6de56 100644
 --- a/gdb/i386-nat.h
 +++ b/gdb/i386-nat.h
 @@ -78,6 +78,28 @@ struct i386_dr_low_type
@@ -5019,7 +5022,7 @@ index 7317e7d..65cd326 100644
     rather than setting it directly to check that the length is only
     set once.  It also enables the 'maint set/show show-debug-regs' 
 diff --git a/gdb/infcall.c b/gdb/infcall.c
-index 6eb1bbf..7323c4b 100644
+index 85b814a..f0cb929 100644
 --- a/gdb/infcall.c
 +++ b/gdb/infcall.c
 @@ -225,6 +225,56 @@ value_arg_coerce (struct gdbarch *gdbarch, struct value *arg,
@@ -5133,7 +5136,7 @@ index 6eb1bbf..7323c4b 100644
        /* Handle the case of functions lacking debugging info.
           Their values are characters since their addresses are char */
 diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
-index 56490cc..c4d1c28 100644
+index 146bb8c..9e08eee 100644
 --- a/gdb/linux-nat.c
 +++ b/gdb/linux-nat.c
 @@ -1243,6 +1243,64 @@ iterate_over_lwps (ptid_t filter,
@@ -5202,7 +5205,7 @@ index 56490cc..c4d1c28 100644
     another indicated by NEW_PTID.  We can only switch single-threaded
     applications, so we only create one new LWP, and the previous list
 diff --git a/gdb/linux-nat.h b/gdb/linux-nat.h
-index 64393fd..a053cbd 100644
+index 2987fab..0e5f353 100644
 --- a/gdb/linux-nat.h
 +++ b/gdb/linux-nat.h
 @@ -139,6 +139,11 @@ struct lwp_info *iterate_over_lwps (ptid_t filter,
@@ -5218,7 +5221,7 @@ index 64393fd..a053cbd 100644
     override it with local methods.  */
  struct target_ops * linux_target (void);
 diff --git a/gdb/mi/mi-cmd-var.c b/gdb/mi/mi-cmd-var.c
-index 310ade9..d8710a1 100644
+index 1478cb0..c4492a7 100644
 --- a/gdb/mi/mi-cmd-var.c
 +++ b/gdb/mi/mi-cmd-var.c
 @@ -702,7 +702,6 @@ mi_cmd_var_update (char *command, char **argv, int argc)
@@ -5230,10 +5233,10 @@ index 310ade9..d8710a1 100644
  
        varobj_update_one (var, print_values, 1 /* explicit */);
 diff --git a/gdb/minsyms.c b/gdb/minsyms.c
-index 0a57e77..6be74df 100644
+index e870954..0436b57 100644
 --- a/gdb/minsyms.c
 +++ b/gdb/minsyms.c
-@@ -337,8 +337,9 @@ lookup_minimal_symbol_text (const char *name, struct objfile *objf)
+@@ -338,8 +338,9 @@ lookup_minimal_symbol_text (const char *name, struct objfile *objf)
  	       msymbol = msymbol->hash_next)
  	    {
  	      if (strcmp (SYMBOL_LINKAGE_NAME (msymbol), name) == 0 &&
@@ -5245,7 +5248,7 @@ index 0a57e77..6be74df 100644
  		{
  		  switch (MSYMBOL_TYPE (msymbol))
  		    {
-@@ -700,6 +701,16 @@ lookup_minimal_symbol_by_pc (CORE_ADDR pc)
+@@ -701,6 +702,16 @@ lookup_minimal_symbol_by_pc (CORE_ADDR pc)
    return lookup_minimal_symbol_by_pc_section (pc, NULL);
  }
  
@@ -5262,7 +5265,7 @@ index 0a57e77..6be74df 100644
  /* Find the minimal symbol named NAME, and return both the minsym
     struct and its objfile.  This only checks the linkage name.  Sets
     *OBJFILE_P and returns the minimal symbol, if it is found.  If it
-@@ -769,6 +780,7 @@ prim_record_minimal_symbol (const char *name, CORE_ADDR address,
+@@ -770,6 +781,7 @@ prim_record_minimal_symbol (const char *name, CORE_ADDR address,
    switch (ms_type)
      {
      case mst_text:
@@ -5270,7 +5273,7 @@ index 0a57e77..6be74df 100644
      case mst_file_text:
      case mst_solib_trampoline:
        section = SECT_OFF_TEXT (objfile);
-@@ -1234,7 +1246,8 @@ find_solib_trampoline_target (struct frame_info *frame, CORE_ADDR pc)
+@@ -1235,7 +1247,8 @@ find_solib_trampoline_target (struct frame_info *frame, CORE_ADDR pc)
      {
        ALL_MSYMBOLS (objfile, msymbol)
        {
@@ -5281,7 +5284,7 @@ index 0a57e77..6be74df 100644
  		       SYMBOL_LINKAGE_NAME (tsymbol)) == 0)
  	  return SYMBOL_VALUE_ADDRESS (msymbol);
 diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c
-index 47663bd..d9fb878 100644
+index bd01fea..77b1033 100644
 --- a/gdb/p-valprint.c
 +++ b/gdb/p-valprint.c
 @@ -38,6 +38,7 @@
@@ -5358,7 +5361,7 @@ index 47663bd..d9fb878 100644
  }
  
 diff --git a/gdb/parse.c b/gdb/parse.c
-index 18038ed..1438ae0 100644
+index daee633..1f9a0d1 100644
 --- a/gdb/parse.c
 +++ b/gdb/parse.c
 @@ -487,9 +487,21 @@ write_exp_msymbol (struct minimal_symbol *msymbol)
@@ -5510,7 +5513,7 @@ index 18038ed..1438ae0 100644
  
  void
 diff --git a/gdb/parser-defs.h b/gdb/parser-defs.h
-index 1625575..d072f86 100644
+index 95dd799..42266df 100644
 --- a/gdb/parser-defs.h
 +++ b/gdb/parser-defs.h
 @@ -194,6 +194,8 @@ extern void operator_length_standard (const struct expression *, int, int *,
@@ -5540,10 +5543,10 @@ index 1625575..d072f86 100644
 +
  #endif /* PARSER_DEFS_H */
 diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c
-index 18ddee7..ebb0022 100644
+index ca7312b..58696d3 100644
 --- a/gdb/ppc-linux-nat.c
 +++ b/gdb/ppc-linux-nat.c
-@@ -1620,12 +1620,18 @@ booke_remove_point (struct ppc_hw_breakpoint *b, int tid)
+@@ -1621,12 +1621,18 @@ booke_remove_point (struct ppc_hw_breakpoint *b, int tid)
    hw_breaks[i].hw_break = NULL;
  }
  
@@ -5564,7 +5567,7 @@ index 18ddee7..ebb0022 100644
    struct ppc_hw_breakpoint p;
  
    if (!have_ptrace_booke_interface ())
-@@ -1639,18 +1645,23 @@ ppc_linux_insert_hw_breakpoint (struct gdbarch *gdbarch,
+@@ -1640,18 +1646,23 @@ ppc_linux_insert_hw_breakpoint (struct gdbarch *gdbarch,
    p.addr2           = 0;
    p.condition_value = 0;
  
@@ -5592,7 +5595,7 @@ index 18ddee7..ebb0022 100644
    struct ppc_hw_breakpoint p;
  
    if (!have_ptrace_booke_interface ())
-@@ -1664,8 +1675,7 @@ ppc_linux_remove_hw_breakpoint (struct gdbarch *gdbarch,
+@@ -1665,8 +1676,7 @@ ppc_linux_remove_hw_breakpoint (struct gdbarch *gdbarch,
    p.addr2           = 0;
    p.condition_value = 0;
  
@@ -5602,7 +5605,7 @@ index 18ddee7..ebb0022 100644
  
    return 0;
  }
-@@ -1878,12 +1888,19 @@ ppc_linux_can_accel_watchpoint_condition (CORE_ADDR addr, int len, int rw,
+@@ -1879,12 +1889,19 @@ ppc_linux_can_accel_watchpoint_condition (CORE_ADDR addr, int len, int rw,
  	  && check_condition (addr, cond, &data_value));
  }
  
@@ -5624,7 +5627,7 @@ index 18ddee7..ebb0022 100644
    int ret = -1;
  
    if (have_ptrace_booke_interface ())
-@@ -1907,8 +1924,7 @@ ppc_linux_insert_watchpoint (CORE_ADDR addr, int len, int rw,
+@@ -1908,8 +1925,7 @@ ppc_linux_insert_watchpoint (CORE_ADDR addr, int len, int rw,
        p.addr            = (uint64_t) addr;
        p.addr2           = 0;
  
@@ -5634,7 +5637,7 @@ index 18ddee7..ebb0022 100644
  
        ret = 0;
      }
-@@ -1951,12 +1967,8 @@ ppc_linux_insert_watchpoint (CORE_ADDR addr, int len, int rw,
+@@ -1952,12 +1968,8 @@ ppc_linux_insert_watchpoint (CORE_ADDR addr, int len, int rw,
  
        saved_dabr_value = dabr_value;
  
@@ -5648,7 +5651,7 @@ index 18ddee7..ebb0022 100644
      }
  
    return ret;
-@@ -1966,8 +1978,6 @@ static int
+@@ -1967,8 +1979,6 @@ static int
  ppc_linux_remove_watchpoint (CORE_ADDR addr, int len, int rw,
  			     struct expression *cond)
  {
@@ -5657,7 +5660,7 @@ index 18ddee7..ebb0022 100644
    int ret = -1;
  
    if (have_ptrace_booke_interface ())
-@@ -1991,20 +2001,16 @@ ppc_linux_remove_watchpoint (CORE_ADDR addr, int len, int rw,
+@@ -1992,20 +2002,16 @@ ppc_linux_remove_watchpoint (CORE_ADDR addr, int len, int rw,
        p.addr            = (uint64_t) addr;
        p.addr2           = 0;
  
@@ -5681,7 +5684,7 @@ index 18ddee7..ebb0022 100644
  
    return ret;
 diff --git a/gdb/printcmd.c b/gdb/printcmd.c
-index 5586767..144e851 100644
+index eb3c3f9..ed8d67a 100644
 --- a/gdb/printcmd.c
 +++ b/gdb/printcmd.c
 @@ -971,6 +971,11 @@ print_command_1 (char *exp, int inspect, int voidprint)
@@ -5727,7 +5730,7 @@ index 5586767..144e851 100644
 +  observer_attach_mark_used (print_types_mark_used);
  }
 diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
-index 8232436..e9fc8aa 100644
+index 9a6b077..656d3a1 100644
 --- a/gdb/python/py-type.c
 +++ b/gdb/python/py-type.c
 @@ -29,6 +29,8 @@
@@ -5913,7 +5916,7 @@ index 8232436..e9fc8aa 100644
  
  
 diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c
-index 3ade512..70e00e9 100644
+index adb7658..1e1f7e9 100644
 --- a/gdb/python/py-value.c
 +++ b/gdb/python/py-value.c
 @@ -28,6 +28,7 @@
@@ -5952,7 +5955,7 @@ index 3ade512..70e00e9 100644
  
  
 diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
-index 60efc4a..824a076 100644
+index ef04dd7..512b6e4 100644
 --- a/gdb/solib-svr4.c
 +++ b/gdb/solib-svr4.c
 @@ -1276,7 +1276,8 @@ svr4_in_dynsym_resolve_code (CORE_ADDR pc)
@@ -5966,7 +5969,7 @@ index 60efc4a..824a076 100644
  
  /* Given an executable's ABFD and target, compute the entry-point
 diff --git a/gdb/stack.c b/gdb/stack.c
-index 1e0c2e6..23f7f56 100644
+index 1d23806..c20df41 100644
 --- a/gdb/stack.c
 +++ b/gdb/stack.c
 @@ -366,6 +366,7 @@ print_frame_args (struct symbol *func, struct frame_info *frame,
@@ -5992,7 +5995,7 @@ index 1e0c2e6..23f7f56 100644
  	        }
  	      else
 diff --git a/gdb/symmisc.c b/gdb/symmisc.c
-index ef63216..1cc9082 100644
+index b292c3b..4db6629 100644
 --- a/gdb/symmisc.c
 +++ b/gdb/symmisc.c
 @@ -264,6 +264,9 @@ dump_msymbols (struct objfile *objfile, struct ui_file *outfile)
@@ -6006,7 +6009,7 @@ index ef63216..1cc9082 100644
  	  ms_type = 'S';
  	  break;
 diff --git a/gdb/symtab.c b/gdb/symtab.c
-index a6023b9..9d577b0 100644
+index 4e68f1b..e6e91ba 100644
 --- a/gdb/symtab.c
 +++ b/gdb/symtab.c
 @@ -2988,7 +2988,7 @@ search_symbols (char *regexp, domain_enum kind, int nfiles, char *files[],
@@ -6019,7 +6022,7 @@ index a6023b9..9d577b0 100644
    enum minimal_symbol_type ourtype2;
    enum minimal_symbol_type ourtype3;
 diff --git a/gdb/symtab.h b/gdb/symtab.h
-index a4032f8..944dd33 100644
+index e85b432..6d97d6e 100644
 --- a/gdb/symtab.h
 +++ b/gdb/symtab.h
 @@ -290,6 +290,9 @@ enum minimal_symbol_type
@@ -7234,7 +7237,7 @@ index 0000000..b05411e
 +
 +gdb_test "ptype array" "type = char \\\[78\\\]" "second: ptype array"
 diff --git a/gdb/testsuite/gdb.base/arrayidx.c b/gdb/testsuite/gdb.base/arrayidx.c
-index ecc3289..f79ad40 100644
+index 6c158bf..739ce34 100644
 --- a/gdb/testsuite/gdb.base/arrayidx.c
 +++ b/gdb/testsuite/gdb.base/arrayidx.c
 @@ -17,6 +17,13 @@
@@ -7252,7 +7255,7 @@ index ecc3289..f79ad40 100644
  main (void)
  {
 diff --git a/gdb/testsuite/gdb.base/arrayidx.exp b/gdb/testsuite/gdb.base/arrayidx.exp
-index 3a33618..f2e11dd 100644
+index d8ee5c0..de4ba75 100644
 --- a/gdb/testsuite/gdb.base/arrayidx.exp
 +++ b/gdb/testsuite/gdb.base/arrayidx.exp
 @@ -57,4 +57,12 @@ gdb_test "print array" \
@@ -7377,10 +7380,10 @@ index 0000000..106271f
 +}
 diff --git a/gdb/testsuite/gdb.base/gnu-ifunc.exp b/gdb/testsuite/gdb.base/gnu-ifunc.exp
 new file mode 100644
-index 0000000..8ecf558
+index 0000000..de59785
 --- /dev/null
 +++ b/gdb/testsuite/gdb.base/gnu-ifunc.exp
-@@ -0,0 +1,110 @@
+@@ -0,0 +1,130 @@
 +# Copyright (C) 2009, 2010 Free Software Foundation, Inc.
 +
 +# This program is free software; you can redistribute it and/or modify
@@ -7401,12 +7404,17 @@ index 0000000..8ecf558
 +}
 +
 +set testfile "gnu-ifunc"
++set executable ${testfile}
 +set srcfile ${testfile}.c
-+set binfile ${objdir}/${subdir}/${testfile}
++set binfile ${objdir}/${subdir}/${executable}
++set staticexecutable ${executable}-static
++set staticbinfile ${objdir}/${subdir}/${staticexecutable}
 +
 +set libfile "${testfile}-lib"
 +set libsrc ${libfile}.c
 +set lib_so ${objdir}/${subdir}/${libfile}.so
++# $lib_o must not have {debug}, it would override the gnu-ifunc ELF markers.
++set lib_o ${objdir}/${subdir}/${libfile}.o
 +
 +# We need DWARF for the "final" function as we "step" into the function and GDB
 +# would step-over the "final" function if there would be no line number debug
@@ -7430,14 +7438,16 @@ index 0000000..8ecf558
 +}
 +
 +if { [gdb_compile_shlib ${srcdir}/${subdir}/$libsrc $lib_so $lib_opts] != ""
-+     || [gdb_compile ${srcdir}/${subdir}/$srcfile $binfile executable $exec_opts] != ""} {
++     || [gdb_compile ${srcdir}/${subdir}/$srcfile $binfile executable $exec_opts] != ""
++     || [gdb_compile ${srcdir}/${subdir}/$libsrc $lib_o object {}] != ""
++     || [gdb_compile "${srcdir}/${subdir}/$srcfile $lib_o" $staticbinfile executable {debug}] != ""} {
 +    untested "Could not compile either $libsrc or $srcfile."
 +    return -1
 +}
 +
 +# Start with a fresh gdb.
 +
-+clean_restart $testfile
++clean_restart $executable
 +gdb_load_shlibs ${lib_so}
 +
 +if ![runto_main] then {
@@ -7491,6 +7501,19 @@ index 0000000..8ecf558
 +    }
 +}
 +gdb_test "info sym $expect_out(1,string)" "gnu_ifunc in section .*" "info sym <gnu_ifunc-address>"
++
++
++# Test statically linked ifunc resolving during inferior start.
++# https://bugzilla.redhat.com/show_bug.cgi?id=624967
++
++if ![target_info exists gdb_stub] {
++    clean_restart $staticexecutable
++
++    gdb_breakpoint "gnu_ifunc"
++    gdb_breakpoint "main"
++    gdb_run_cmd
++    gdb_test "" "Breakpoint \[0-9\]*, main .*" "static gnu_ifunc"
++}
 diff --git a/gdb/testsuite/gdb.base/internal-var-field-address.c b/gdb/testsuite/gdb.base/internal-var-field-address.c
 new file mode 100644
 index 0000000..eeb7b85
@@ -10240,7 +10263,7 @@ index 0000000..31f7656
 +extern void marker (void);
 +extern void forkoff (int nr);
 diff --git a/gdb/testsuite/lib/pascal.exp b/gdb/testsuite/lib/pascal.exp
-index af0b00d..e1a8dc4 100644
+index 891da37..236c5ca 100644
 --- a/gdb/testsuite/lib/pascal.exp
 +++ b/gdb/testsuite/lib/pascal.exp
 @@ -37,6 +37,9 @@ proc pascal_init {} {
@@ -10275,7 +10298,7 @@ index af0b00d..e1a8dc4 100644
      set pascal_init_done 1
  }   
 diff --git a/gdb/top.c b/gdb/top.c
-index 45c9259..8856322 100644
+index 702e05b..a41cdc6 100644
 --- a/gdb/top.c
 +++ b/gdb/top.c
 @@ -343,6 +343,7 @@ void
@@ -10287,7 +10310,7 @@ index 45c9259..8856322 100644
    /* With multiple threads running while the one we're examining is
       stopped, the dcache can get stale without us being able to detect
 diff --git a/gdb/typeprint.c b/gdb/typeprint.c
-index ce9f551..5f9d739 100644
+index a1c44f2..036d939 100644
 --- a/gdb/typeprint.c
 +++ b/gdb/typeprint.c
 @@ -36,6 +36,7 @@
@@ -10344,7 +10367,7 @@ index ce9f551..5f9d739 100644
  
  static void
 diff --git a/gdb/utils.c b/gdb/utils.c
-index 02c7a37..894be69 100644
+index 2b55449..6b481cd 100644
 --- a/gdb/utils.c
 +++ b/gdb/utils.c
 @@ -2198,6 +2198,36 @@ set_batch_flag_and_make_cleanup_restore_page_info (void)
@@ -10385,7 +10408,7 @@ index 02c7a37..894be69 100644
  
  static void
 diff --git a/gdb/valarith.c b/gdb/valarith.c
-index 6b212b2..c6b4843 100644
+index f200b2c..4921b54 100644
 --- a/gdb/valarith.c
 +++ b/gdb/valarith.c
 @@ -165,12 +165,26 @@ value_subscript (struct value *array, LONGEST index)
@@ -10479,7 +10502,7 @@ index 6b212b2..c6b4843 100644
  }
  
 diff --git a/gdb/valops.c b/gdb/valops.c
-index 7ea6315..ad3dacf 100644
+index c66c41e..8d76259 100644
 --- a/gdb/valops.c
 +++ b/gdb/valops.c
 @@ -38,6 +38,7 @@
@@ -10628,7 +10651,7 @@ index 7ea6315..ad3dacf 100644
  
  /* Given a value which is a function, return a value which is a pointer
 diff --git a/gdb/valprint.c b/gdb/valprint.c
-index 5cba023..4ef5e5a 100644
+index 1b16f1f..eef7d61 100644
 --- a/gdb/valprint.c
 +++ b/gdb/valprint.c
 @@ -36,6 +36,7 @@
@@ -10701,7 +10724,7 @@ index 5cba023..4ef5e5a 100644
  
  /* Read LEN bytes of target memory at address MEMADDR, placing the
 diff --git a/gdb/value.c b/gdb/value.c
-index c7de323..645fef2 100644
+index 58067e8..82efef0 100644
 --- a/gdb/value.c
 +++ b/gdb/value.c
 @@ -39,6 +39,7 @@
@@ -10878,7 +10901,7 @@ index c7de323..645fef2 100644
 +  observer_attach_mark_used (value_types_mark_used);
  }
 diff --git a/gdb/value.h b/gdb/value.h
-index cf089be..0fb89f1 100644
+index e637842..5f36aef 100644
 --- a/gdb/value.h
 +++ b/gdb/value.h
 @@ -389,6 +389,10 @@ extern struct value *value_from_double (struct type *type, DOUBLEST num);
@@ -10902,7 +10925,7 @@ index cf089be..0fb89f1 100644
  /* User function handler.  */
  
 diff --git a/gdb/varobj.c b/gdb/varobj.c
-index e87d399..0ea54f5 100644
+index d020fff..303ecdf 100644
 --- a/gdb/varobj.c
 +++ b/gdb/varobj.c
 @@ -26,6 +26,8 @@
diff --git a/gdb-rhel5-compat.patch b/gdb-rhel5-compat.patch
index 33e63a9..f269b39 100644
--- a/gdb-rhel5-compat.patch
+++ b/gdb-rhel5-compat.patch
@@ -1,11 +1,11 @@
 gdb/linux-nat.c:
 - Workaround RHEL-5 kernels for detaching SIGSTOPped processes (BZ 498595).
 
-Index: gdb-7.0.50.20100115/gdb/elfread.c
+Index: gdb-7.2.50.20110104/gdb/elfread.c
 ===================================================================
---- gdb-7.0.50.20100115.orig/gdb/elfread.c	2010-01-15 22:19:28.000000000 +0100
-+++ gdb-7.0.50.20100115/gdb/elfread.c	2010-01-15 22:19:34.000000000 +0100
-@@ -582,7 +582,7 @@ elf_symtab_read (struct objfile *objfile
+--- gdb-7.2.50.20110104.orig/gdb/elfread.c	2011-01-04 06:15:59.000000000 +0100
++++ gdb-7.2.50.20110104/gdb/elfread.c	2011-01-04 06:17:54.000000000 +0100
+@@ -832,7 +832,7 @@ resolve_gnu_ifunc (const char *function_
  #define BUILD_ID_VERBOSE_NONE 0
  #define BUILD_ID_VERBOSE_FILENAMES 1
  #define BUILD_ID_VERBOSE_BINARY_PARSE 2
@@ -14,7 +14,7 @@ Index: gdb-7.0.50.20100115/gdb/elfread.c
  static void
  show_build_id_verbose (struct ui_file *file, int from_tty,
  		       struct cmd_list_element *c, const char *value)
-@@ -1659,8 +1659,10 @@ find_separate_debug_file_by_buildid (str
+@@ -1920,8 +1920,10 @@ find_separate_debug_file_by_buildid (str
        /* Prevent looping on a stripped .debug file.  */
        if (build_id_name != NULL && strcmp (build_id_name, objfile->name) == 0)
          {
@@ -25,12 +25,12 @@ Index: gdb-7.0.50.20100115/gdb/elfread.c
  	  xfree (build_id_name);
  	}
        else if (build_id_name != NULL)
-Index: gdb-7.0.50.20100115/gdb/corelow.c
+Index: gdb-7.2.50.20110104/gdb/corelow.c
 ===================================================================
---- gdb-7.0.50.20100115.orig/gdb/corelow.c	2010-01-15 22:19:27.000000000 +0100
-+++ gdb-7.0.50.20100115/gdb/corelow.c	2010-01-15 22:19:34.000000000 +0100
-@@ -294,7 +294,7 @@ add_to_thread_list (bfd *abfd, asection 
-     inferior_ptid = ptid;			 /* Yes, make it current */
+--- gdb-7.2.50.20110104.orig/gdb/corelow.c	2011-01-04 06:15:57.000000000 +0100
++++ gdb-7.2.50.20110104/gdb/corelow.c	2011-01-04 06:18:08.000000000 +0100
+@@ -280,7 +280,7 @@ add_to_thread_list (bfd *abfd, asection 
+     inferior_ptid = ptid;			/* Yes, make it current.  */
  }
  
 -static int build_id_core_loads = 1;
@@ -38,11 +38,11 @@ Index: gdb-7.0.50.20100115/gdb/corelow.c
  
  static void
  build_id_locate_exec (int from_tty)
-Index: gdb-7.0.50.20100115/gdb/linux-nat.c
+Index: gdb-7.2.50.20110104/gdb/linux-nat.c
 ===================================================================
---- gdb-7.0.50.20100115.orig/gdb/linux-nat.c	2010-01-15 22:19:27.000000000 +0100
-+++ gdb-7.0.50.20100115/gdb/linux-nat.c	2010-01-15 22:19:55.000000000 +0100
-@@ -1768,8 +1768,22 @@ GPT: lwp %s had signal %s, but it is in 
+--- gdb-7.2.50.20110104.orig/gdb/linux-nat.c	2011-01-04 06:15:59.000000000 +0100
++++ gdb-7.2.50.20110104/gdb/linux-nat.c	2011-01-04 06:17:54.000000000 +0100
+@@ -1762,8 +1762,22 @@ GPT: lwp %s had signal %s, but it is in 
  			    target_signal_to_string (signo));
      }
  
diff --git a/gdb-test-pid0-core.patch b/gdb-test-pid0-core.patch
new file mode 100644
index 0000000..1bc221b
--- /dev/null
+++ b/gdb-test-pid0-core.patch
@@ -0,0 +1,80 @@
+https://bugzilla.redhat.com/show_bug.cgi?id=611435
+
+Fix:
+Re: [RFA]corelow.c: Add tid to add_to_thread_list
+http://sourceware.org/ml/gdb-patches/2010-08/msg00085.html
+http://sourceware.org/ml/gdb-cvs/2010-08/msg00026.html
+2e5bcfdef1ec3883d48c3f87a4be5c0dff25e17e
+
+--- /dev/null
++++ b/gdb/testsuite/gdb.arch/x86_64-pid0-core.core.bz2.uu
+@@ -0,0 +1,20 @@
++begin 600 x86_64-pid0-core.core.bz2
++M0EIH.3%!629362,CA>P!$/'_____^*#EZ-A!SP36P&_:G0#=14``04A&8,'U
++M2*9`>$$)P`*RN"#*;#4R()IJ8C$TT&FC3$&@`T`#:C1H8C0T,@,FC,D"4T2!
++M"/2CU'B90]31ZAD#U`&AZF@/4:``!HT&F@!H<`#0-`-#0``#3$-&F@```#0R
++M``#")2FD]2>4]0TTT-!HTT--,0,"#$`R!I at AD`#1H,3&GZT.4TO$#H40/`0C
++M2$IRXS,<55!8T,&&,R.Z441"?J9I%G6GUA2!.[]Z"C5S[&19,%VS7E6[3"60
++M@`-*2G)QEQ(;?0Y<=MK]/U?Q)LB%+F37TJ9BI*46)H'*Z at V"`"$"P7]&<Q<?
++M>XZ:JE0E<*:#1M$P3G]>VCI)(A!O$64`5$4`E$$-.``7&(09`8HO`B6K!Q^&
++M562%N)2+0@*HB@%D at 5$%!*0!L1&0D4D6\:-$A`)`+<6D82PP*H(J(H!?F;0$
++M%PXB7N!2D4!44`W7"ADEQM6<B]J<B(%1GF'5*0;_00KO55=43LPR0,Q?N72`
++M8"W*_;DV<AN#,XRU]Q-J2FDAFKAQ(9A+ZK$MCY#EI8:W-(15>O9TBO5,_]1)
++M($Q2))#),UE,QQK)E$,3D\W.>!4)QO8A_@^Z_SXS<OEHM*+"M8I1)-C(=DIJ
++MW+ at WN)O)YO;3:I9YW-A$)N'2<A`F3),R3"3-'"S3E1;6VE*_95KD<!0050(G
++M,JV"N(Z:@0E#)50BSF)$T6_IN)#"Z8PLQ4UQ9]@Z'+;T]990-:Y:2`P26#!D
++MV+0L6"X at C9`GHAGSY7)%LWOY+E[2/>4;Q8=HV6[:&$@2$@$R29IBW)K%3"O`
++M9^Y0YJ&BXY1U2HTZ5)2H-V\_(.DZHWE+C#WS($(!I"3CUH2#(+(OWUV"*<<9
++MJ%A!J[%O.P&V%GI.`L7<1 at 0>,^1F\MY=V5UT,&NOG%7TTZ[03!@BHB@&)<A^
++4B.Z!/,0-IZ^W_Q=R13A0D",CA>P`
++`
++end
+--- /dev/null
++++ b/gdb/testsuite/gdb.arch/x86_64-pid0-core.exp
+@@ -0,0 +1,46 @@
++# This testcase is part of GDB, the GNU debugger.
++# 
++# Copyright 2010 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.  
++
++# Some kernel core files have PID 0 - for the idle task.
++
++if ![istarget "x86_64-*-*"] {
++    verbose "Skipping x86_64-pid0-core test."
++    return
++}
++
++set testfile "x86_64-pid0-core"
++set corebz2uufile ${srcdir}/${subdir}/${testfile}.core.bz2.uu
++set corefile ${objdir}/${subdir}/${testfile}.core
++
++if {[catch "system \"uudecode -o - ${corebz2uufile} | bzip2 -dc >${corefile}\""] != 0} {
++    untested "failed uudecode or bzip2"
++    return -1
++}
++file stat ${corefile} corestat
++if {$corestat(size) != 8798208} {
++    untested "uudecode or bzip2 produce invalid result"
++    return -1
++}
++
++gdb_exit
++gdb_start
++gdb_reinitialize_dir $srcdir/$subdir
++
++# Former crash was:
++# thread.c:884: internal-error: switch_to_thread: Assertion `inf != NULL' failed.
++gdb_test "core-file ${corefile}" "Program terminated with signal 11, Segmentation fault\\.\r\n.*"
diff --git a/gdb-test-pp-hint-error.patch b/gdb-test-pp-hint-error.patch
new file mode 100644
index 0000000..68213a2
--- /dev/null
+++ b/gdb-test-pp-hint-error.patch
@@ -0,0 +1,93 @@
+http://sourceware.org/ml/gdb-patches/2011-01/msg00016.html
+Subject: [patch] New testcase: py-prettyprint.exp: print hint_error
+
+Hi,
+
+PASS: gdb.python/py-prettyprint.exp: print hint_error
+for
+	FYI: fix buglet in gdbpy_get_display_hint
+	http://sourceware.org/ml/gdb-patches/2010-07/msg00190.html
+	http://sourceware.org/ml/gdb-cvs/2010-07/msg00061.html
+
+I would check it in as obvious but the 2011 ChangeLog move process has to be
+done first.  So to be checked in later.
+
+
+Thanks,
+Jan
+
+
+gdb/testsuite/
+2011-01-01  Jan Kratochvil  <jan.kratochvil at redhat.com>
+
+	* gdb.python/py-prettyprint.c (struct hint_error): New.
+	(main): New variable hint_error.
+	* gdb.python/py-prettyprint.exp (run_lang_tests): New testcase
+	"print hint_error".
+	* gdb.python/py-prettyprint.py (class pp_hint_error): New.
+	(register_pretty_printers): Register it.
+
+--- a/gdb/testsuite/gdb.python/py-prettyprint.c
++++ b/gdb/testsuite/gdb.python/py-prettyprint.c
+@@ -44,6 +44,10 @@ struct lazystring {
+   const char *lazy_str;
+ };
+ 
++struct hint_error {
++  int x;
++};
++
+ #ifdef __cplusplus
+ struct S : public s {
+   int zs;
+@@ -215,6 +219,7 @@ main ()
+   nostring_type nstype;
+   struct ns ns, ns2;
+   struct lazystring estring, estring2;
++  struct hint_error hint_error;
+ 
+   nstype.elements = narray;
+   nstype.len = 0;
+--- a/gdb/testsuite/gdb.python/py-prettyprint.exp
++++ b/gdb/testsuite/gdb.python/py-prettyprint.exp
+@@ -97,6 +97,8 @@ proc run_lang_tests {lang} {
+     gdb_test_no_output "python pp_ls_encoding = 'UTF-8'"
+     gdb_test "print estring2" "\"embedded \", <incomplete sequence \\\\302>"
+ 
++    gdb_test "print hint_error" "Exception: hint failed\r\nhint_error_val"
++
+     gdb_test "print c" " = container \"container\" with 2 elements = {$nl *.0. = 23,$nl *.1. = 72$nl}"
+ 
+     gdb_test "print nstype" " = {$nl *.0. = 7,$nl *.1. = 42$nl}"
+--- a/gdb/testsuite/gdb.python/py-prettyprint.py
++++ b/gdb/testsuite/gdb.python/py-prettyprint.py
+@@ -156,6 +156,18 @@ class pp_ls:
+     def display_hint (self):
+         return 'string'
+ 
++class pp_hint_error:
++    "Throw error from display_hint"
++
++    def __init__(self, val):
++        self.val = val
++
++    def to_string(self):
++        return 'hint_error_val'
++
++    def display_hint (self):
++        raise Exception("hint failed")
++
+ class pp_outer:
+     "Print struct outer"
+ 
+@@ -241,6 +253,9 @@ def register_pretty_printers ():
+     pretty_printers_dict[re.compile ('^struct outerstruct$')]  = pp_outer
+     pretty_printers_dict[re.compile ('^outerstruct$')]  = pp_outer
+ 
++    pretty_printers_dict[re.compile ('^struct hint_error$')]  = pp_hint_error
++    pretty_printers_dict[re.compile ('^hint_error$')]  = pp_hint_error
++
+ pretty_printers_dict = {}
+ 
+ register_pretty_printers ()
+
diff --git a/gdb.spec b/gdb.spec
index 051452f..4c9da4a 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.20101231
+Version: 7.2.50.20110104
 
 # 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: 6%{?_with_upstream:.upstream}%{dist}
+Release: 7%{?_with_upstream:.upstream}%{dist}
 
 License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and GFDL and BSD and Public Domain
 Group: Development/Debuggers
@@ -504,11 +504,16 @@ Patch510: gdb-bz592031-siginfo-lost-4of5.patch
 Patch511: gdb-bz592031-siginfo-lost-5of5.patch
 
 # Verify GDB Python built-in function gdb.solib_address exists (BZ # 634108).
+#=fedoratest
 Patch526: gdb-bz634108-solib_address.patch
 
-# Fix --with-system-readline doc build upstream regression.
-Patch531: gdb-doc-system-readline.patch
-Patch532: gdb-doc-system-readline2.patch
+# New testcase py-prettyprint.exp:print hint_error (for BZ 611569, BZ 629236).
+#=fedoratest
+Patch541: gdb-test-pp-hint-error.patch
+
+# New test gdb.arch/x86_64-pid0-core.exp for kernel PID 0 cores (BZ 611435).
+#=fedoratest
+Patch542: gdb-test-pid0-core.patch
 
 BuildRequires: ncurses-devel%{?_isa} texinfo gettext flex bison expat-devel%{?_isa}
 Requires: readline%{?_isa}
@@ -749,8 +754,8 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
 %patch510 -p1
 %patch511 -p1
 %patch526 -p1
-%patch531 -p1
-%patch532 -p1
+%patch541 -p1
+%patch542 -p1
 
 %patch393 -p1
 %patch335 -p1
@@ -1127,6 +1132,11 @@ fi
 %endif
 
 %changelog
+* Tue Jan  4 2011 Jan Kratochvil <jan.kratochvil at redhat.com> - 7.2.50.20110104-7.fc15
+- Rebase to FSF GDB 7.2.50.20110104 (which is a 7.3 pre-release).
+- New testcase py-prettyprint.exp:print hint_error (for BZ 611569, BZ 629236).
+- New test gdb.arch/x86_64-pid0-core.exp for kernel PID 0 cores (BZ 611435).
+
 * Sat Jan  1 2011 Jan Kratochvil <jan.kratochvil at redhat.com> - 7.2.50.20101231-6.fc15
 - Fix --with-system-readline doc build upstream regression.
 
diff --git a/sources b/sources
index 1d119b6..5e2a1c9 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-bac361434830ddc3e83c40e187b60a96  gdb-7.2.50.20101231.tar.bz2
+190e007189ea1522d34559f43ec40eed  gdb-7.2.50.20110104.tar.bz2


More information about the scm-commits mailing list