https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90010
Bug ID: 90010 Summary: valgrind error with snprintf and -Wall Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: dcb314 at hotmail dot com Target Milestone: --- For this C++ source code: extern "C" __inline __attribute__((__gnu_inline__)) int snprintf(...) {} class a { char b[4096]; void c(); }; void a::c() { char d[4096]; snprintf(d, sizeof(d), "%s/power/runtime_suspended_time", b); } on a valgrind version of recent gcc trunk: $ ~/gcc/results.270150.valgrind/bin/g++ -v Using built-in specs. COLLECT_GCC=/home/dcb/gcc/results.270150.valgrind/bin/g++ COLLECT_LTO_WRAPPER=/home/dcb/gcc/results.270150.valgrind/libexec/gcc/x86_64-pc-linux-gnu/9.0.1/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../trunk/configure --prefix=/home/dcb/gcc/results.270150.valgrind --disable-bootstrap --disable-multilib --disable-werror --enable-checking=valgrind --enable-languages=c,c++,fortran Thread model: posix gcc version 9.0.1 20190404 (experimental) (GCC) [dcb@localhost dcbTest]$ with compile flag -Wall, makes this: $ ~/gcc/results.270150.valgrind/bin/g++ -c -Wall bug514.cc bug514.cc:1:57: warning: declaration of ‘int snprintf(...)’ conflicts with built-in declaration ‘int snprintf(char*, long unsigned int, const char*, ...)’ [-Wbuiltin-declaration-mismatch] 1 | extern "C" __inline __attribute__((__gnu_inline__)) int snprintf(...) {} | ^~~~~~~~ bug514.cc: In function ‘int snprintf(...)’: bug514.cc:1:72: warning: no return statement in function returning non-void [-Wreturn-type] 1 | extern "C" __inline __attribute__((__gnu_inline__)) int snprintf(...) {} | ^ ==30913== Conditional jump or move depends on uninitialised value(s) ==30913== at 0x483BB9D: strnlen (vg_replace_strmem.c:428) ==30913== by 0x137D3F3: pp_format(pretty_printer*, text_info*) (pretty-print.c:1374) ==30913== by 0x1373D62: diagnostic_report_diagnostic(diagnostic_context*, diagnostic_info*) (diagnostic.c:1015) ==30913== by 0xB5F828: format_string_diagnostic_t::emit_warning_n_va(int, unsigned long, char const*, char const*, __va_list_tag (*) [1]) const (substring-locations.c:216)