Avoid infinite recursion in get_msymbol_address
Sometimes, get_msymbol_address can cause infinite recursion, leading to a crash. This was reported previously here: https://sourceware.org/pipermail/gdb-patches/2019-November/162154.html A user on irc reported this as well, and with his help and the help of a friend of his, we found that the problem occurred because, when reloading a separate debug objfile, the objfile would lose the OBJF_MAINLINE flag. This would cause some symbols from this separate debug objfile to be marked "maybe_copied" -- but then get_msymbol_address could find the same symbol and fail as reported. This patch fixes the bug by preserving OBJF_MAINLINE. No test case, unfortunately, because I could not successfully make one. gdb/ChangeLog 2020-04-10 Tom Tromey <tromey@adacore.com> * symfile.c (symbol_file_add_separate): Preserve OBJF_MAINLINE.
This commit is contained in:
parent
3e65b3e9af
commit
0c4311ab90
|
@ -1,3 +1,7 @@
|
|||
2020-04-10 Tom Tromey <tromey@adacore.com>
|
||||
|
||||
* symfile.c (symbol_file_add_separate): Preserve OBJF_MAINLINE.
|
||||
|
||||
2020-04-10 Tom Tromey <tromey@adacore.com>
|
||||
|
||||
* symtab.c (get_symbol_address, get_msymbol_address): Skip
|
||||
|
|
|
@ -1163,7 +1163,7 @@ symbol_file_add_separate (bfd *bfd, const char *name,
|
|||
symbol_file_add_with_addrs
|
||||
(bfd, name, symfile_flags, &sap,
|
||||
objfile->flags & (OBJF_REORDERED | OBJF_SHARED | OBJF_READNOW
|
||||
| OBJF_USERLOADED),
|
||||
| OBJF_USERLOADED | OBJF_MAINLINE),
|
||||
objfile);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue