From d30182b51edd04b9f09b1a79d429fc286458b221 Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Tue, 11 May 2021 16:12:24 +0200 Subject: [PATCH] dwarf.c (process_abbrev_set): Properly parenthesize, fix fallout Building as ILP32 shows: gcc -m32 -DHAVE_CONFIG_H -I. -I/checkout/binutils -I. -I/checkout/binutils -I../bfd -I/checkout/binutils/../bfd -I/checkout/binutils/../include -DLOCALEDIR="\"/usr/local/share/locale\"" -Dbin_dummy_emulation=bin_vanilla_emulation -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wstack-usage=262144 -Werror -I/checkout/binutils/../zlib -g -O2 -MT dwarf.o -MD -MP -MF $depbase.Tpo -c -o dwarf.o /checkout/binutils/dwarf.c &&\ mv -f $depbase.Tpo $depbase.Po In file included from /checkout/binutils/sysdep.h:101:0, from /checkout/binutils/dwarf.c:21: /checkout/binutils/dwarf.c: In function 'process_abbrev_set': /checkout/binutils/dwarf.c:1072:15: error: format '%lx' expects argument of type 'long unsigned int', but argument 2 has type 'dwarf_vma {aka long long unsigned int}' [-Werror=format=] warn (_("Debug info is corrupted, abbrev size (%lx) is larger than " ^ /checkout/binutils/dwarf.c:1072:13: note: in expansion of macro '_' warn (_("Debug info is corrupted, abbrev size (%lx) is larger than " ^ cc1: all warnings being treated as errors Makefile:1101: recipe for target 'dwarf.o' failed The recent commit, casting one of the terms, has an obvious typo. To wit, the (non-cast) term abbrev_size is a dwarf_vma and causes the whole expression to (still) be 64 bits. binutils: * dwarf.c (process_abbrev_set): Properly parenthesize before casting to unsigned long. --- binutils/ChangeLog | 5 +++++ binutils/dwarf.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 6703b16b2b..242563ed3a 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2021-05-11 Hans-Peter Nilsson + + * dwarf.c (process_abbrev_set): Properly parenthesize before + casting to unsigned long. + 2021-05-11 Alan Modra PR 27845 diff --git a/binutils/dwarf.c b/binutils/dwarf.c index aa48f69bbd..8bc0acb270 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -1071,7 +1071,7 @@ process_abbrev_set (struct dwarf_section *section, /* PR 17531: file:4bcd9ce9. */ warn (_("Debug info is corrupted, abbrev size (%lx) is larger than " "abbrev section size (%lx)\n"), - (unsigned long) abbrev_base + abbrev_size, + (unsigned long) (abbrev_base + abbrev_size), (unsigned long) section->size); return NULL; } -- 2.34.1