[PING][PATCH][gdb/symtab] Handle gas-generated stabs with -fPIE/-pie

Tom de Vries tdevries@suse.de
Thu Aug 29 15:04:00 GMT 2019


On 16-08-19 17:57, Tom de Vries wrote:
> Hi,
> 
> With gdb.dwarf2/dw2-ranges.exp and target board unix/-fPIE/-pie, we run into:
> ...
> info line main3^M
> No line number information available for address 0x55555555464c <main3>^M
> (gdb) FAIL: gdb.dwarf2/dw2-ranges.exp: info line main3
> ...
> 
> The main3 function in the executable comes from dw2-ranges3.o, which is
> generated like this (leaving out -fPIE -pie for clarity):
> ...
> $ gcc -S dw2-ranges3.c
> $ gcc dw2-ranges3.s -o dw2-ranges3.o -gstabs
> ...
> So, main3 is described in stabs format, generated by gas.
> 
> The difference between gcc-generated and gas-generated SLINE stabs is that gcc
> generates a sequence SO (source), FUN (function), SLINE (source line) whereas
> gas generates SO, SLINE.
> 
> The problem is that the line address relocation handling in process_one_symbol
> assumes an order of SO, FUN, SLINE.
> 
> Fix this by also handling SO, SLINE.
> 
> This also fixes FAILs in gdb.btrace/instruction_history.exp with
> target board stabs/-fPIE/-pie.
> 
> Tested on x86_64-linux with target boards unix, unix/-fPIE/-pie, stabs, and
> stabs/-fPIE/-pie.
> 
> OK for trunk?
> 

Ping.

Thanks,
- Tom

> [gdb/symtab] Handle gas-generated stabs with -fPIE/-pie
> 
> gdb/ChangeLog:
> 
> 2019-08-16  Tom de Vries  <tdevries@suse.de>
> 
> 	PR symtab/12497
> 	* dbxread.c (process_one_symbol): Handle relocation of SLINE address
> 	without preceding FUN/FNAME.
> 
> ---
>  gdb/dbxread.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/gdb/dbxread.c b/gdb/dbxread.c
> index e339d1f7ec..e0ab4ec19c 100644
> --- a/gdb/dbxread.c
> +++ b/gdb/dbxread.c
> @@ -2626,6 +2626,9 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
>  
>        /* Relocate for dynamic loading and for ELF acc
>           function-relative symbols.  */
> +      if (function_start_offset == 0)
> +	function_start_offset
> +	  = ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
>        valu += function_start_offset;
>  
>        /* GCC 2.95.3 emits the first N_SLINE stab somwehere in the
> 



More information about the Gdb-patches mailing list