summaryrefslogtreecommitdiff
path: root/devel/gdb/files/commit-df22c1e5d5
diff options
context:
space:
mode:
Diffstat (limited to 'devel/gdb/files/commit-df22c1e5d5')
-rw-r--r--devel/gdb/files/commit-df22c1e5d536
1 files changed, 36 insertions, 0 deletions
diff --git a/devel/gdb/files/commit-df22c1e5d5 b/devel/gdb/files/commit-df22c1e5d5
new file mode 100644
index 000000000000..70c27c6986b7
--- /dev/null
+++ b/devel/gdb/files/commit-df22c1e5d5
@@ -0,0 +1,36 @@
+commit df22c1e5d53c38f38bce6072bb46de240f9e0e2b
+Author: John Baldwin <jhb@FreeBSD.org>
+Date: Tue Mar 12 13:39:02 2019 -0700
+
+ 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.
+
+diff --git gdb/solib-svr4.c gdb/solib-svr4.c
+index 84693c1766..14a471b6dc 100644
+--- gdb/solib-svr4.c
++++ 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)