Fix PR 22567: set SAL .section in minsym_found
authorYao Qi <yao.qi@linaro.org>
Fri, 8 Dec 2017 15:43:49 +0000 (15:43 +0000)
committerYao Qi <yao.qi@linaro.org>
Fri, 8 Dec 2017 15:43:49 +0000 (15:43 +0000)
PR 22567 is that breakpoint location can't correct gdbarch from SAL,
because its fields .section and .symtab is NULL.  We use to have code
setting .section, but was removed by 4024cf2

-  if (msymbol_is_text (msymbol))
+  CORE_ADDR func_addr;
+  if (msymbol_is_function (objfile, msymbol, &func_addr))
     {
-      sal = find_pc_sect_line (MSYMBOL_VALUE_ADDRESS (objfile, msymbol),
-                              (struct obj_section *) 0, 0);
-      sal.section = MSYMBOL_OBJ_SECTION (objfile, msymbol);

this patch adds this back by moving it to the common place at the bottom
of the function.

gdb:

2017-12-08  Yao Qi  <yao.qi@linaro.org>

PR breakpionts/22567
* linespec.c (minsym_found): Set sal.section.

gdb/ChangeLog
gdb/linespec.c

index 0c966366550ee98cb7264f802d3ea1a99ee2b37b..56acf301296aa8b02040cef341ba2f08ca2824e3 100644 (file)
@@ -1,3 +1,8 @@
+2017-12-08  Yao Qi  <yao.qi@linaro.org>
+
+       PR breakpionts/22567
+       * linespec.c (minsym_found): Set sal.section.
+
 2017-12-08  Andreas Arnez  <arnez@linux.vnet.ibm.com>
 
        * configure.tgt (s390*-*-linux*): Add symfile-mem.o.
index 097587629a416c77d6c6c68b9524db45663d7d28..8c36f2a1a2bae1c006298d87d302a30b33f4f07d 100644 (file)
@@ -4365,9 +4365,10 @@ minsym_found (struct linespec_state *self, struct objfile *objfile,
       sal.objfile = objfile;
       sal.pc = MSYMBOL_VALUE_ADDRESS (objfile, msymbol);
       sal.pspace = current_program_space;
-      sal.section = MSYMBOL_OBJ_SECTION (objfile, msymbol);
     }
 
+  sal.section = MSYMBOL_OBJ_SECTION (objfile, msymbol);
+
   if (maybe_add_address (self->addr_set, objfile->pspace, sal.pc))
     add_sal_to_sals (self, result, &sal, MSYMBOL_NATURAL_NAME (msymbol), 0);
 }