[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