diff options
author | Tom de Vries <tdevries@suse.de> | 2019-06-22 10:59:37 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2019-06-22 10:59:37 +0200 |
commit | 47e3f47487396414ac936e2fd37b870fe08a55d0 (patch) | |
tree | d77b595642e1b33c3f029411058ad67b67ca6814 /gdb | |
parent | 5ec331ef744a495ad35469928564a43a09391562 (diff) | |
download | gdb-47e3f47487396414ac936e2fd37b870fe08a55d0.zip gdb-47e3f47487396414ac936e2fd37b870fe08a55d0.tar.gz gdb-47e3f47487396414ac936e2fd37b870fe08a55d0.tar.bz2 |
[gdb] Fix s390x -m31 build
When building gdb on s390x with -m31, we run into this Wformat
warning (which Werror turns into an error):
...
gdb/dwarf2read.c: In function \
'void create_addrmap_from_aranges(dwarf2_per_objfile*, \
dwarf2_section_info*)':
gdb/dwarf2read.c:3277:22: error: format '%zu' expects argument of type \
'size_t', but argument 3 has type 'int' [-Werror=format=]
warning (_("Section .debug_aranges in %s entry at offset %zu "
...
The Wformat warning is triggered in this statement:
...
warning (_("Section .debug_aranges in %s entry at offset %zu "
"length %s exceeds section length %s, "
"ignoring .debug_aranges."),
objfile_name (objfile), entry_addr - section->buffer,
plongest (bytes_read + entry_length),
pulongest (section->size));
...
where 'entry_addr - section->buffer' is of type ptrdiff_t and '%zu' prints an
unsigned with the same size as size_t/ssize_t.
On s390x with -m31, we have:
- size_t : unsigned long int (32-bit)
- ptrdiff_t: int (32-bit)
Wformat warns against this because even though long int and int have the same
size, the types are not compatible.
[ The Wformat warning is to similar to what we would get for x86_64 -m32
(where long and int are also the same size) and:
...
int i;
printf ("%ld", i);
... ]
Fix this by using '%s' and plongest instead of '%zu' to print ptrdiff_t.
Build and reg-tested on x86_64.
gdb/ChangeLog:
2019-06-22 Tom de Vries <tdevries@suse.de>
* dwarf2read.c (create_addrmap_from_aranges)
(read_debug_names_from_section): Print ptrdiff_t using '%s' and plongest
instead of '%zu'.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/dwarf2read.c | 42 |
2 files changed, 30 insertions, 18 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a31d078..7e7da82 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2019-06-22 Tom de Vries <tdevries@suse.de> + + * dwarf2read.c (create_addrmap_from_aranges) + (read_debug_names_from_section): Print ptrdiff_t using '%s' and plongest + instead of '%zu'. + 2019-06-21 Simon Marchi <simon.marchi@efficios.com> * dwarf2read.h (dwarf2_section_info_def): Remove. diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index fccbd05..85f2b1d 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -3229,10 +3229,11 @@ create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile, const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4; if (addr + entry_length > section->buffer + section->size) { - warning (_("Section .debug_aranges in %s entry at offset %zu " + warning (_("Section .debug_aranges in %s entry at offset %s " "length %s exceeds section length %s, " "ignoring .debug_aranges."), - objfile_name (objfile), entry_addr - section->buffer, + objfile_name (objfile), + plongest (entry_addr - section->buffer), plongest (bytes_read + entry_length), pulongest (section->size)); return; @@ -3243,10 +3244,10 @@ create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile, addr += 2; if (version != 2) { - warning (_("Section .debug_aranges in %s entry at offset %zu " + warning (_("Section .debug_aranges in %s entry at offset %s " "has unsupported version %d, ignoring .debug_aranges."), - objfile_name (objfile), entry_addr - section->buffer, - version); + objfile_name (objfile), + plongest (entry_addr - section->buffer), version); return; } @@ -3257,10 +3258,11 @@ create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile, = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset)); if (per_cu_it == debug_info_offset_to_per_cu.cend ()) { - warning (_("Section .debug_aranges in %s entry at offset %zu " + warning (_("Section .debug_aranges in %s entry at offset %s " "debug_info_offset %s does not exists, " "ignoring .debug_aranges."), - objfile_name (objfile), entry_addr - section->buffer, + objfile_name (objfile), + plongest (entry_addr - section->buffer), pulongest (debug_info_offset)); return; } @@ -3269,20 +3271,21 @@ create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile, const uint8_t address_size = *addr++; if (address_size < 1 || address_size > 8) { - warning (_("Section .debug_aranges in %s entry at offset %zu " + warning (_("Section .debug_aranges in %s entry at offset %s " "address_size %u is invalid, ignoring .debug_aranges."), - objfile_name (objfile), entry_addr - section->buffer, - address_size); + objfile_name (objfile), + plongest (entry_addr - section->buffer), address_size); return; } const uint8_t segment_selector_size = *addr++; if (segment_selector_size != 0) { - warning (_("Section .debug_aranges in %s entry at offset %zu " + warning (_("Section .debug_aranges in %s entry at offset %s " "segment_selector_size %u is not supported, " "ignoring .debug_aranges."), - objfile_name (objfile), entry_addr - section->buffer, + objfile_name (objfile), + plongest (entry_addr - section->buffer), segment_selector_size); return; } @@ -3295,9 +3298,10 @@ create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile, padding > 0; padding--) if (*addr++ != 0) { - warning (_("Section .debug_aranges in %s entry at offset %zu " + warning (_("Section .debug_aranges in %s entry at offset %s " "padding is not zero, ignoring .debug_aranges."), - objfile_name (objfile), entry_addr - section->buffer); + objfile_name (objfile), + plongest (entry_addr - section->buffer)); return; } @@ -3305,10 +3309,11 @@ create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile, { if (addr + 2 * address_size > entry_end) { - warning (_("Section .debug_aranges in %s entry at offset %zu " + warning (_("Section .debug_aranges in %s entry at offset %s " "address list is not properly terminated, " "ignoring .debug_aranges."), - objfile_name (objfile), entry_addr - section->buffer); + objfile_name (objfile), + plongest (entry_addr - section->buffer)); return; } ULONGEST start = extract_unsigned_integer (addr, address_size, @@ -5517,8 +5522,9 @@ read_debug_names_from_section (struct objfile *objfile, if (addr != abbrev_table_start + abbrev_table_size) { warning (_("Section .debug_names in %s has abbreviation_table " - "of size %zu vs. written as %u, ignoring .debug_names."), - filename, addr - abbrev_table_start, abbrev_table_size); + "of size %s vs. written as %u, ignoring .debug_names."), + filename, plongest (addr - abbrev_table_start), + abbrev_table_size); return false; } map.entry_pool = addr; |