public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Tsukasa OI <research_trasio@irq.a4lg.com>
To: Tom de Vries <tdevries@suse.de>, Andrew Burgess <aburgess@redhat.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH v3 0/5] sim: Suppress warnings if built with Clang
Date: Wed, 12 Oct 2022 03:02:44 +0900	[thread overview]
Message-ID: <17412bdc-96c0-8a34-3b6a-9d35c53f7fe1@irq.a4lg.com> (raw)
In-Reply-To: <7b9c7afa-e282-de64-645b-b508320dd276@suse.de>

On 2022/10/12 1:40, Tom de Vries wrote:
> On 10/6/22 08:43, Tsukasa OI via Gdb-patches wrote:
>> Hello,
>>
>> This is the version 2 patchset to suppress Clang compiler warnings
>> (causes a build failure due to default -Werror).
>>
>>
> 
> Hi,
> 
> AFAICT, this causes breakage with the build bots, see f.i.
> https://builder.sourceware.org/buildbot/#/builders/74/builds/1357 :
> ...
>   CC     pk_disklabel.o
> ../../../binutils-gdb/sim/ppc/corefile.c: In function
> ‘core_map_find_mapping’:
> ../../../binutils-gdb/sim/ppc/corefile.c:295:136: error: format ‘%x’
> expects argument of type ‘unsigned int’, but argument 4 has type ‘cpu *’
> {aka ‘struct _cpu *’} [-Werror=format=]
>   295 |     error("core_find_mapping() - access to unmaped address,
> attach a default map to handle this - addr=0x%x nr_bytes=0x%x
> processor=0x%x cia=0x%x\n",
>       |
>                                                                       ~^
>       |
>                                                                        |
>       |
> unsigned int
>   296 |           addr, nr_bytes, processor, cia);
>       |                           ~~~~~~~~~
>       |                           |
>       |                           cpu * {aka struct _cpu *}
> cc1: all warnings being treated as errors
> make[3]: *** [Makefile:144: corefile.o] Error 1
> ...
> 
> Thanks,
> - Tom

OK, I've figured out why.

First of all, ATTRIBUTE_PRINTF should be placed on the declaration
(rather than definition) whenever possible (if there's no declaration,
no need to create one) because it provides better analysis even if a
printf-like function is in the different object file.  This is opposite
from what I initially thought (note that I remembered those two words
"definition" and "declaration" incorrectly and be careful when you read
my previous e-mails and commit messages).

Second, when Andrew added ATTRIBUTE_PRINTF on the declaration, it
revealed existing broken printf-like calls and generated some errors,
even on GCC.  I'm working on the fix.

Thanks,
Tsukasa

> 
>> [Background]
>>
>> When we build Binutils and GDB with Clang, it causes a build failure
>> due to
>> warnings generated by Clang and the default -Werror configuration.
>>
>> I MOSTLY managed to make ALL ARCHITECTURE ENABLED Binutils and GDB
>> -Werror-free on Clang 15.0.0 (note that this does not necessarily mean
>> warning-free) and this patchset is a part of it (common simulator parts).
>>
>> -   It still requires -Wno-implicit-function-declaration on the
>>      LatticeMicro32 and M32R simulators.  Except them, most of
>> Binutils / GDB
>>      components can be built with Clang by default with my tree.
>> -   I noticed that the assembler is not tested enough (because just with
>>      --enable-targets=all, it builds only host assembler).
>>
>> Full Clang 15.0.0 -Werror-free branch in development is available at:
>> <https://github.com/a4lg/binutils-gdb/tree/clang-nowarn-dev>
>>
>> Tested configuration:
>> -   Ubuntu 22.04.1 LTS (x86_64)
>> -   LLVM / Clang 15.0.0 (built from source)
>> -   Configuration examples:
>>      $srcdir/configure \
>>          --enable-targets=all \
>>          --enable-multilib --enable-ld --enable-gold --enable-nls \
>>          CC=clang CXX=clang++ CCLD=clang CXXLD=clang++ \
>>          CFLAGS='  -O2 -g -Wno-implicit-function-declaration' \
>>          CXXFLAGS='-O2 -g -Wno-implicit-function-declaration'
>>      $srcdir/configure \
>>          --target=riscv64-unknown-linux-gnu \
>>          --enable-multilib --enable-ld --enable-gold --enable-nls \
>>          CC=clang CXX=clang++ CCLD=clang CXXLD=clang++ \
>>          CFLAGS='-O2 -g' CXXFLAGS='-O2 -g'
>>
>>
>> [About this Patchset]
>>
>> This patchset contains four five fixes to the files under sim{,/common}.
>> Each contains minor fixes to suppress Clang / GCC warnings.
>>
>> Each change is detailed in the each patch.
>>
>>
>> [Changes: v2 -> v3]
>>
>> -   PATCH 2/5: Rewritten predicate macros from (!!x) to (x != 0).
>>      (This is based on the feedback by Andrew Burgess).
>> -   PATCH 3/5: Replaced with a patch by Andrew Burgess
>>      (slightly modified by me).
>> -   PATCH 4/5: Fix cached variable from ld_cv_* to sim_cv_*.
>> -   Removed ChangeLog from commit messages
>>      (based on the feedback [to another patchset by me] by Bruno Larsen).
>>
>>
>> [Changes: v1 -> v2]
>>
>> -   Commit messages are improved
>> -   PATCH v1 1/4 is Moved to another patchset
>> -   PATCH v1 2-4/4 -> PATCH v2 1-3/5
>> -   New: Check known getopt definition on sim (PATCH v2 4/5)
>>      This test is already performed on binutils, gas, gprof and ld and
>> this
>>      commit does the same to sim.
>> -   New: Initialize pbb_br_* by default (PATCH v2 5/5)
>>      It did not generate warnings on Clang but GCC creates some warnings
>>      (although those are not reported as errors).
>>      This is due to uninitialized pbb_br_* variables and this commit
>> fixes
>>      the issue by initializing them by a harmless value.
>>
>> Thanks,
>> Tsukasa
>>
>>
>>
>>
>> Tsukasa OI (5):
>>    sim: Remove self-assignments
>>    sim: Make WITH_{TRACE,PROFILE}-based macros bool
>>    sim: Suppress non-literal printf warning
>>    sim: Check known getopt definition existence
>>    sim: Initialize pbb_br_* by default
>>
>>   sim/common/genmloop.sh   |  8 ++++----
>>   sim/common/hw-tree.c     |  2 --
>>   sim/common/sim-hw.c      | 26 ++++++++++++++++----------
>>   sim/common/sim-profile.h | 12 ++++++------
>>   sim/common/sim-trace.h   |  4 ++--
>>   sim/config.h.in          |  3 +++
>>   sim/configure            | 32 ++++++++++++++++++++++++++++++++
>>   sim/configure.ac         | 10 ++++++++++
>>   8 files changed, 73 insertions(+), 24 deletions(-)
>>
>>
>> base-commit: a13886e2198beb78b81c59839043b021ce6df78a
> 

      reply	other threads:[~2022-10-11 18:02 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-13 12:57 [PATCH 0/4] sim/common: " Tsukasa OI
2022-09-13 12:57 ` [PATCH 1/4] sim: Add ATTRIBUTE_PRINTF Tsukasa OI
2022-09-13 12:57 ` [PATCH 2/4] sim: Remove self-assignments Tsukasa OI
2022-09-13 12:57 ` [PATCH 3/4] sim: Make WITH_{TRACE,PROFILE}-based macros bool Tsukasa OI
2022-10-05 11:38   ` Andrew Burgess
2022-10-06  5:33     ` Tsukasa OI
2022-09-13 12:57 ` [PATCH 4/4] sim: Suppress non-literal printf warning Tsukasa OI
2022-10-05 11:45   ` Andrew Burgess
2022-10-06  5:39     ` Tsukasa OI
2022-10-23 12:22       ` Mike Frysinger
2022-10-24 10:50         ` Tsukasa OI
2022-09-25  8:42 ` [PATCH v2 0/5] sim: Suppress warnings if built with Clang Tsukasa OI
2022-09-25  8:42   ` [PATCH v2 1/5] sim: Remove self-assignments Tsukasa OI
2022-09-25  8:42   ` [PATCH v2 2/5] sim: Make WITH_{TRACE,PROFILE}-based macros bool Tsukasa OI
2022-09-25  8:42   ` [PATCH v2 3/5] sim: Suppress non-literal printf warning Tsukasa OI
2022-09-25  8:42   ` [PATCH v2 4/5] sim: Check known getopt definition existence Tsukasa OI
2022-09-25  8:42   ` [PATCH v2 5/5] sim: Initialize pbb_br_* by default Tsukasa OI
2022-10-06  6:43   ` [PATCH v3 0/5] sim: Suppress warnings if built with Clang Tsukasa OI
2022-10-06  6:43     ` [PATCH v3 1/5] sim: Remove self-assignments Tsukasa OI
2022-10-11 14:21       ` Andrew Burgess
2022-10-11 14:29         ` Tsukasa OI
2022-10-06  6:43     ` [PATCH v3 2/5] sim: Make WITH_{TRACE,PROFILE}-based macros bool Tsukasa OI
2022-10-06  6:43     ` [PATCH v3 3/5] sim: Suppress non-literal printf warning Tsukasa OI
2022-10-11 14:22       ` Andrew Burgess
2022-10-06  6:43     ` [PATCH v3 4/5] sim: Check known getopt definition existence Tsukasa OI
2022-10-12 16:28       ` Tom de Vries
2022-10-12 17:03         ` Tsukasa OI
2022-10-12 17:08           ` Tom de Vries
2022-10-12 17:20             ` Tom de Vries
2022-10-13  9:50         ` Tsukasa OI
2022-10-23 12:16       ` Mike Frysinger
2022-10-27  2:02         ` Tsukasa OI
2023-01-03  3:12           ` Mike Frysinger
2023-01-03  8:47             ` Tsukasa OI
2022-10-06  6:43     ` [PATCH v3 5/5] sim: Initialize pbb_br_* by default Tsukasa OI
2022-10-11 14:20     ` [PATCH v3 0/5] sim: Suppress warnings if built with Clang Andrew Burgess
2022-10-11 16:40     ` Tom de Vries
2022-10-11 18:02       ` Tsukasa OI [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=17412bdc-96c0-8a34-3b6a-9d35c53f7fe1@irq.a4lg.com \
    --to=research_trasio@irq.a4lg.com \
    --cc=aburgess@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=tdevries@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).