[v2,0/7] sim, sim/ARCH: Add ATTRIBUTE_PRINTF

Message ID cover.1665038133.git.research_trasio@irq.a4lg.com
Headers
Series sim, sim/ARCH: Add ATTRIBUTE_PRINTF |

Message

Tsukasa OI Oct. 6, 2022, 6:36 a.m. UTC
  Hello,

[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 (simulator:
printf-like functions).

-   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]

Clang generates a warning if the format string of a printf-like function is
not a literal ("-Wformat-nonliteral").  On the default configuration, it
causes a build failure (unless "--disable-werror" is specified).

To avoid warnings on the printf-like wrapper, it requires proper
__attribute__((format)) and we have ATTRIBUTE_PRINTF macro for this reason.

This patchset adds ATTRIBUTE_PRINTF to all functions that require
ATTRIBUTE_PRINTF macro.


[Changes: v1 -> v2]

-   We only append ATTRIBUTE_PRINTF at function declarations,
    not definitions (based on the feedback by Andrew Burgess).
-   Fixed indents
-   Removed ChangeLog from commit messages
    (based on the feedback [to another patchset by me] by Bruno Larsen).


Thanks,
Tsukasa




Tsukasa OI (7):
  sim: Add ATTRIBUTE_PRINTF
  sim/cris: Add ATTRIBUTE_PRINTF
  sim/erc32: Add ATTRIBUTE_PRINTF
  sim/m32c: Add ATTRIBUTE_PRINTF
  sim/m68hc11: Add ATTRIBUTE_PRINTF
  sim/ppc: Add ATTRIBUTE_PRINTF
  sim/rl78: Add ATTRIBUTE_PRINTF

 sim/common/sim-utils.c    | 2 +-
 sim/cris/traps.c          | 2 +-
 sim/erc32/interf.c        | 2 +-
 sim/erc32/sis.c           | 2 +-
 sim/m32c/trace.c          | 4 ++--
 sim/m68hc11/m68hc11_sim.c | 2 +-
 sim/ppc/main.c            | 2 +-
 sim/ppc/misc.c            | 4 ++--
 sim/ppc/sim_calls.c       | 2 +-
 sim/rl78/trace.c          | 4 ++--
 10 files changed, 13 insertions(+), 13 deletions(-)


base-commit: a13886e2198beb78b81c59839043b021ce6df78a
  

Comments

Andrew Burgess Oct. 11, 2022, 2:23 p.m. UTC | #1
Tsukasa OI <research_trasio@irq.a4lg.com> writes:

> Hello,
>
> [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 (simulator:
> printf-like functions).
>
> -   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]
>
> Clang generates a warning if the format string of a printf-like function is
> not a literal ("-Wformat-nonliteral").  On the default configuration, it
> causes a build failure (unless "--disable-werror" is specified).
>
> To avoid warnings on the printf-like wrapper, it requires proper
> __attribute__((format)) and we have ATTRIBUTE_PRINTF macro for this reason.
>
> This patchset adds ATTRIBUTE_PRINTF to all functions that require
> ATTRIBUTE_PRINTF macro.
>
>
> [Changes: v1 -> v2]
>
> -   We only append ATTRIBUTE_PRINTF at function declarations,
>     not definitions (based on the feedback by Andrew Burgess).
> -   Fixed indents
> -   Removed ChangeLog from commit messages
>     (based on the feedback [to another patchset by me] by Bruno Larsen).

Thanks for the updated series.  I've now pushed these patches with a few
minor adjustments.  I'll comment on each patch where I made changes.

Thanks,
Andrew