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

Andrew Burgess via Gdb-patches
2022-10-11T14:24:33Z

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