From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 112961 invoked by alias); 20 Jun 2019 09:33:46 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 112953 invoked by uid 89); 20 Jun 2019 09:33:46 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-24.6 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mx1.suse.de Received: from mx2.suse.de (HELO mx1.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 20 Jun 2019 09:33:45 +0000 Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id F18A6AED4; Thu, 20 Jun 2019 09:33:42 +0000 (UTC) Date: Thu, 20 Jun 2019 09:33:00 -0000 From: Tom de Vries To: gdb-patches@sourceware.org Cc: Andreas Arnez Subject: [PATCH][gdb] Fix s390x -m31 build Message-ID: <20190620093339.GA6388@delia> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) X-IsSubscribed: yes X-SW-Source: 2019-06/txt/msg00401.txt.bz2 Hi, 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 changing the length modifier from 'z' to the ptrdiff_t length modifier 't', and change the conversion specifier from 'u' to the more appropriate 'd'. Build and reg-tested on x86_64. Build on s390x-linux with -m31. OK for trunk? Thanks, - Tom [gdb] Fix s390x -m31 build gdb/ChangeLog: 2019-06-20 Tom de Vries * dwarf2read.c (create_addrmap_from_aranges) (read_debug_names_from_section): Print ptrdiff_t using '%td' instead of '%zu'. --- gdb/dwarf2read.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 9cf513b582..0fcd0defce 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -3246,7 +3246,7 @@ 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 %td " "length %s exceeds section length %s, " "ignoring .debug_aranges."), objfile_name (objfile), entry_addr - section->buffer, @@ -3260,7 +3260,7 @@ 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 %tu " "has unsupported version %d, ignoring .debug_aranges."), objfile_name (objfile), entry_addr - section->buffer, version); @@ -3274,7 +3274,7 @@ 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 %tu " "debug_info_offset %s does not exists, " "ignoring .debug_aranges."), objfile_name (objfile), entry_addr - section->buffer, @@ -3286,7 +3286,7 @@ 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 %tu " "address_size %u is invalid, ignoring .debug_aranges."), objfile_name (objfile), entry_addr - section->buffer, address_size); @@ -3296,7 +3296,7 @@ create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile, 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 %tu " "segment_selector_size %u is not supported, " "ignoring .debug_aranges."), objfile_name (objfile), entry_addr - section->buffer, @@ -3312,7 +3312,7 @@ 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 %tu " "padding is not zero, ignoring .debug_aranges."), objfile_name (objfile), entry_addr - section->buffer); return; @@ -3322,7 +3322,7 @@ 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 %tu " "address list is not properly terminated, " "ignoring .debug_aranges."), objfile_name (objfile), entry_addr - section->buffer); @@ -5537,7 +5537,7 @@ 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."), + "of size %tu vs. written as %u, ignoring .debug_names."), filename, addr - abbrev_table_start, abbrev_table_size); return false; }