dwarf.c (process_abbrev_set): Properly parenthesize, fix fallout
Hans-Peter Nilsson
hp@axis.com
Tue May 11 14:36:19 GMT 2021
Committed as obvious. I can't find f2f9554bf0d15 (the
offending patch) CC:ed to the list, so I can't quote it.
Also tested on an actual i686 (without the need for "-m32").
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 6703b16b2b0c..242563ed3a53 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,8 @@
+2021-05-11 Hans-Peter Nilsson <hp@axis.com>
+
+ * dwarf.c (process_abbrev_set): Properly parenthesize before
+ casting to unsigned long.
+
2021-05-11 Alan Modra <amodra@gmail.com>
PR 27845
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index aa48f69bbd45..8bc0acb270c2 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.11.0
brgds, H-P
More information about the Binutils
mailing list