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

Tsukasa OI via Gdb-patches
2022-10-06T06:37:00Z

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