Handle an edge case for minisym TLS variable lookups.
If a TLS variable is provided by a minisym from a separate debug file, the separate debug file is passed to gdbarch_fetch_tls_load_module_address. However, the object files stored in the shared object list are the original object files, not the separate debug object files. In this case, svr4_fetch_objfile_link_map was failing to find the link map entry since the debug object file is not in its internal list, only the original object file. gdb/ChangeLog: * solib-svr4.c (svr4_fetch_objfile_link_map): Look for objfile->separate_debug_objfile_backlink if not NULL.
This commit is contained in:
parent
dd6876c91c
commit
df22c1e5d5
2 changed files with 10 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2019-03-12 John Baldwin <jhb@FreeBSD.org>
|
||||
|
||||
* solib-svr4.c (svr4_fetch_objfile_link_map): Look for
|
||||
objfile->separate_debug_objfile_backlink if not NULL.
|
||||
|
||||
2019-03-12 John Baldwin <jhb@FreeBSD.org>
|
||||
|
||||
* amd64-bsd-nat.c (amd64bsd_fetch_inferior_registers): Use
|
||||
|
|
|
@ -1551,6 +1551,11 @@ svr4_fetch_objfile_link_map (struct objfile *objfile)
|
|||
if (objfile == symfile_objfile)
|
||||
return info->main_lm_addr;
|
||||
|
||||
/* If OBJFILE is a separate debug object file, look for the
|
||||
original object file. */
|
||||
if (objfile->separate_debug_objfile_backlink != NULL)
|
||||
objfile = objfile->separate_debug_objfile_backlink;
|
||||
|
||||
/* The other link map addresses may be found by examining the list
|
||||
of shared libraries. */
|
||||
for (so = master_so_list (); so; so = so->next)
|
||||
|
|
Loading…
Add table
Reference in a new issue