- Fix backtraces from core files with the executable found+loaded via

build-id.
- Due to F-11 GCC no longer needlessly duplicating .eh_frame as
    .debug_frame.
This commit is contained in:
Jan Kratochvil 2009-06-22 11:19:51 +00:00
parent f51c5abf98
commit 536aae5e6a
2 changed files with 21 additions and 23 deletions

View File

@ -13,7 +13,7 @@ Index: gdb-6.8.50.20090302/gdb/corelow.c
#ifndef O_LARGEFILE
@@ -267,6 +271,56 @@ add_to_thread_list (bfd *abfd, asection
@@ -267,6 +271,50 @@ add_to_thread_list (bfd *abfd, asection
inferior_ptid = ptid; /* Yes, make it current */
}
@ -26,6 +26,7 @@ Index: gdb-6.8.50.20090302/gdb/corelow.c
+ struct build_id *build_id;
+ char *exec_filename, *debug_filename;
+ char *build_id_filename;
+ struct cleanup *back_to;
+
+ if (exec_bfd != NULL)
+ return;
@ -37,32 +38,25 @@ Index: gdb-6.8.50.20090302/gdb/corelow.c
+ if (build_id == NULL)
+ return;
+
+ /* SYMFILE_OBJFILE should refer to the main executable (not only to its
+ separate debug info file). gcc44+ keeps .eh_frame only in the main
+ executable without its duplicate .debug_frame in the separate debug info
+ file - such .eh_frame would not be found if SYMFILE_OBJFILE would refer
+ directly to the separate debug info file. */
+
+ exec_filename = build_id_to_filename (build_id, &build_id_filename, 0);
+ back_to = make_cleanup (xfree, build_id_filename);
+
+ if (exec_filename != NULL)
+ exec_file_attach (exec_filename, from_tty);
+ {
+ make_cleanup (xfree, exec_filename);
+ exec_file_attach (exec_filename, from_tty);
+ symbol_file_add_main (exec_filename, from_tty);
+ }
+ else
+ debug_print_missing (_("the main executable file"), build_id_filename);
+ xfree (build_id_filename);
+
+ /* `.note.gnu.build-id' section exists even for files without a separate
+ debuginfo. */
+ debug_filename = build_id_to_filename (build_id, &build_id_filename, 1);
+ if (debug_filename != NULL)
+ {
+ symbol_file_add_main (debug_filename, from_tty);
+ xfree (debug_filename);
+ }
+ else
+ {
+ if (exec_filename != NULL)
+ symbol_file_add_main (exec_filename, from_tty);
+ /* For EXEC_FILENAME NULL we were already complaining above. */
+ if (symfile_objfile == NULL && exec_filename != NULL)
+ debug_print_missing (exec_filename, build_id_filename);
+ }
+ xfree (build_id_filename);
+
+ xfree (exec_filename);
+ do_cleanups (back_to);
+
+ /* No automatic SOLIB_ADD as the libraries would get read twice. */
+}

View File

@ -15,7 +15,7 @@ Version: 6.8.50.20090302
# 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: 33%{?_with_upstream:.upstream}%{?dist}
Release: 34%{?_with_upstream:.upstream}%{?dist}
License: GPLv3+
Group: Development/Debuggers
@ -891,6 +891,10 @@ fi
%endif
%changelog
* Mon Jun 22 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8.50.20090302-34
- Fix backtraces from core files with the executable found+loaded via build-id.
- Due to F-11 GCC no longer needlessly duplicating .eh_frame as .debug_frame.
* Tue Jun 16 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8.50.20090302-33
- Archer update to the snapshot: 05c402a02716177c4ddd272a6e312cbd2908ed68
- Archer backport: 05c402a02716177c4ddd272a6e312cbd2908ed68