diff options
author | John Baldwin <jhb@FreeBSD.org> | 2019-03-12 13:39:02 -0700 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2019-03-12 13:45:47 -0700 |
commit | df22c1e5d53c38f38bce6072bb46de240f9e0e2b (patch) | |
tree | beda22cdcf7521cbc910703085ff5be17a8eb708 /gdb/solib-svr4.c | |
parent | dd6876c91cd40cc105b1a91f418ca2c80683b314 (diff) | |
download | gdb-df22c1e5d53c38f38bce6072bb46de240f9e0e2b.zip gdb-df22c1e5d53c38f38bce6072bb46de240f9e0e2b.tar.gz gdb-df22c1e5d53c38f38bce6072bb46de240f9e0e2b.tar.bz2 |
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.
Diffstat (limited to 'gdb/solib-svr4.c')
-rw-r--r-- | gdb/solib-svr4.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c index 84693c1..14a471b 100644 --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -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) |