Within test last week, 64-bit Solaris/SPARC bootstrap began to fail: /vol/gcc/src/hg/trunk/local/gcc/dbxout.c: In function 'bool dbxout_block(tree, int, tree, int)': /vol/gcc/src/hg/trunk/local/gcc/dbxout.c:3767:1: error: '%lu' directive writing between 1 and 20 bytes into a region of size 14 [-Werror=format-overflow=] dbxout_block (tree block, int depth, tree args, int parent_blocknum) ^~~~~~~~~~~~ /vol/gcc/src/hg/trunk/local/gcc/dbxout.c:3767:1: note: directive argument in the range [0, 18446744073709551614] In file included from ./tm.h:26, from /vol/gcc/src/hg/trunk/local/gcc/target.h:52, from /vol/gcc/src/hg/trunk/local/gcc/dbxout.c:72: /vol/gcc/src/hg/trunk/local/gcc/config/sparc/sol2.h:353:11: note: 'std::sprintf' output between 8 and 27 bytes into a destination of size 20 sprintf ((LABEL), "*.L%s%lu", (PREFIX), (unsigned long)(NUM)) ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /vol/gcc/src/hg/trunk/local/gcc/dbxout.c:3855:5: note: in expansion of macro 'ASM_GENERATE_INTERNAL_LABEL' ASM_GENERATE_INTERNAL_LABEL (buf, "LBB", parent_blocknum); ^~~~~~~~~~~~~~~~~~~~~~~~~~~
The line numbers are extremely confusing, to say the least, though: the one in the error and the first note refer to the begin of the function definition and only the third note refers to the line of the actual error. Fixed as follows, which allowed sparcv9-sun-solaris2.11 bootstrap to finish and passed regtest on sparc-sun-solaris2.11. Ok for mainline? Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University 2017-12-04 Rainer Orth <r...@cebitec.uni-bielefeld.de> * dbxout.c (dbxout_block): Grow buf to 30 bytes.
diff --git a/gcc/dbxout.c b/gcc/dbxout.c --- a/gcc/dbxout.c +++ b/gcc/dbxout.c @@ -3844,7 +3844,7 @@ dbxout_block (tree block, int depth, tre /* If we emitted any vars and didn't output any LBRAC/RBRAC, either at this level or any lower level, we need to emit an empty LBRAC/RBRAC pair now. */ - char buf[20]; + char buf[30]; const char *scope_start; ret = true;