[PATCH][binutils] Fix debug_rnglists test in display_debug_ranges

Tom de Vries tdevries@suse.de
Tue Feb 9 15:12:54 GMT 2021


On 2/9/21 3:46 PM, Tom de Vries wrote:
> Hi,
> 
> With exec:
> ...
> $ g++ src/gdb/testsuite/gdb.cp/cpexprs.cc -gdwarf-5 -fdebug-types-section
> ...
> I run into:
> ...
> $ readelf -w a.out > READELF
> readelf: Error: Invalid range list entry type 126
> readelf: Error: Invalid range list entry type 60
> ...
> 
> The problem is that the is_rnglists test in display_debug_ranges fails,
> because the section name is prefixed with a dot:
> ...
> (gdb) p section->name
> $3 = 0x4f4ad4 ".debug_rnglists"
> ...
> and the comparison is done using a string without such a prefix:
> ...
>      int is_rnglists = strstr (section->name, "debug_rnglists") != NULL;
> ...
> 
> Fix this by adding the missing dot prefix in the comparison.
> 
> OK for trunk?
> 

Sorry, while the patch is not incorrect, it doesn't yet fix the errors,
there's more to fix it seems.

Thanks,
- Tom
> 
> [binutils] Fix debug_rnglists test in display_debug_ranges
> 
> binutils/ChangeLog:
> 
> 2021-02-09  Tom de Vries  <tdevries@suse.de>
> 
> 	PR binutils/27371
> 	* dwarf.c (display_debug_ranges): Fix is_rnglists test.
> 
> ---
>  binutils/dwarf.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/binutils/dwarf.c b/binutils/dwarf.c
> index d6eb8926dbf..9fc040555b4 100644
> --- a/binutils/dwarf.c
> +++ b/binutils/dwarf.c
> @@ -7581,7 +7581,7 @@ display_debug_ranges (struct dwarf_section *section,
>    unsigned char *finish = start + bytes;
>    unsigned int num_range_list, i;
>    struct range_entry *range_entries, *range_entry_fill;
> -  int is_rnglists = strstr (section->name, "debug_rnglists") != NULL;
> +  int is_rnglists = strstr (section->name, ".debug_rnglists") != NULL;
>    /* Initialize it due to a false compiler warning.  */
>    unsigned char address_size = 0;
>    dwarf_vma last_offset = 0;
> 


More information about the Binutils mailing list