[PATCH] Lookup the JIT descriptor symbol first to avoid finding the PLT entry of the breakpoint in the wrong object file.

Yichao Yu <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
Fix 20633
---
 gdb/jit.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/gdb/jit.c b/gdb/jit.c
index 158d6d8..d6eb800 100644
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -1051,18 +1051,21 @@ jit_breakpoint_re_set_internal (struct gdbarch *gdbarch,
   if (ps_data->objfile == NULL)
     {
       /* Lookup the registration symbol.  If it is missing, then we
-	 assume we are not attached to a JIT.  */
-      reg_symbol = lookup_minimal_symbol_and_objfile (jit_break_name);
-      if (reg_symbol.minsym == NULL
-	  || BMSYMBOL_VALUE_ADDRESS (reg_symbol) == 0)
-	return 1;
+	 assume we are not attached to a JIT.
+	 Lookup the descriptor first since looking up the breakpoint might
+	 return a PLT entry in the wrong file.  */
 
-      desc_symbol = lookup_minimal_symbol (jit_descriptor_name, NULL,
-					   reg_symbol.objfile);
+      desc_symbol = lookup_minimal_symbol_and_objfile (jit_descriptor_name);
       if (desc_symbol.minsym == NULL
 	  || BMSYMBOL_VALUE_ADDRESS (desc_symbol) == 0)
 	return 1;
 
+      reg_symbol = lookup_minimal_symbol (jit_break_name, NULL,
+					  desc_symbol.objfile);
+      if (reg_symbol.minsym == NULL
+	  || BMSYMBOL_VALUE_ADDRESS (reg_symbol) == 0)
+	return 1;
+
       objf_data = get_jit_objfile_data (reg_symbol.objfile);
       objf_data->register_code = reg_symbol.minsym;
       objf_data->descriptor = desc_symbol.minsym;
-- 
2.10.2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.