Avoid infinite recursion in get_msymbol_address
authorTom Tromey <tromey@adacore.com>
Fri, 10 Apr 2020 13:18:49 +0000 (07:18 -0600)
committerTom Tromey <tromey@adacore.com>
Fri, 10 Apr 2020 13:21:16 +0000 (07:21 -0600)
commit0c4311ab90e46d2ae0cc29160641b92220d10299
tree1fc9e6c2394e8f3843807f07e1c5e41d256ac7c9
parent3e65b3e9aff265b8db711f742ea527b4c2e36910
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.
gdb/ChangeLog
gdb/symfile.c