On 12/04/2017 05:41 AM, Rainer Orth wrote:
> 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?
OK.
jeff