I would say that this is a GCC bug - g++ can't compile its own preprocessed
source code.
The problem can be reproduced without ccache by building src/hash/sha1.cpp
with -save-temps:
% cd src
% /usr/bin/g++ -save-temps -DLOCALEDIR=\"/usr/local/share/locale\"
-DHAVE_CONFIG_H -I../include -I../include -I../intl -fsigned-char -Wall
-Wshadow -Wempty-body -Wignored-qualifiers -Wvla -Wvariadic-macros
-Wdisabled-optimization -fno-fast-math -fno-unsafe-math-optimizations
-fno-aggressive-loop-optimizations -fomit-frame-pointer -fwrapv -g -O2
-std=gnu++11 -MT hash/sha1.o -MD -MP -MF $depbase.Tpo -c -o hash/sha1.o
hash/sha1.cpp
hash/sha1.cpp:161:128: error: invalid digit "9" in octal constant
assert(sha1(tv, 65) == "079b9ef0684bd9a600b9a23caa4297d064ce076e"_sha1);
^
hash/sha1.cpp: In function 'void sha1_test()':
hash/sha1.cpp:156:168: error: unable to find string literal operator
'operator""e119a863bce69ad1b6ca1a51e94994531d122088'
assert(sha1(tv, 55) == "e119a863bce69ad1b6ca1a51e94994531d122088"_sha1);
^
hash/sha1.cpp:157:168: error: unable to find string literal operator
'operator""fd62c272e1f0f24b92a0ec8360519cd64d6ab986'
assert(sha1(tv, 56) == "fd62c272e1f0f24b92a0ec8360519cd64d6ab986"_sha1);
^
hash/sha1.cpp:158:128: error: expected ')' before numeric constant
assert(sha1(tv, 57) == "010b0113d06cffb80f2beb657ef39682e5e7de79"_sha1);
^
hash/sha1.cpp:159:168: error: unable to find string literal operator
'operator""adf8998c4791fc378fa6d8b23666934522546778'
assert(sha1(tv, 63) == "adf8998c4791fc378fa6d8b23666934522546778"_sha1);
^
hash/sha1.cpp:160:128: error: expected ')' before numeric constant
assert(sha1(tv, 64) == "787680a25bf74f34c22b2c37d7d5bae2feceb20c"_sha1);
^
hash/sha1.cpp:161:128: error: expected ')' before numeric constant
assert(sha1(tv, 65) == "079b9ef0684bd9a600b9a23caa4297d064ce076e"_sha1);
^
% g++ --version | head -n1
g++ (Debian 4.9.2-16) 4.9.2
-- Joel
On 7 May 2015 at 20:17, Stephen Kitt <[email protected]> wrote:
> Package: ccache
> Version: 3.1.10-1
> Severity: normal
>
> Dear Maintainer,
>
> The current version of mednafen (0.9.38.4) fails to build with ccache
> (after the first build):
>
> g++ -DLOCALEDIR=\"/usr/share/locale\" -DHAVE_CONFIG_H -I../include
> -I../include -I../intl -D_FORTIFY_SOURCE=2 -fsigned-char -Wall
> -Wshadow -Wempty-body -Wignored-qualifiers -Wvla -Wvariadic-macros
> -Wdisabled-optimization -fno-fast-math -fno-unsafe-math-optimizations
> -fno-aggressive-loop-optimizations -fomit-frame-pointer -fwrapv -g -O2
> -fstack-protector-strong -Wformat -Werror=format-security -std=gnu++11 -c
> -o hash/sha1.o hash/sha1.cpp
> hash/sha1.cpp:161:128: error: invalid digit "9" in octal constant
> assert(sha1(tv, 65) == "079b9ef0684bd9a600b9a23caa4297d064ce076e"_sha1);
>
> ^
> hash/sha1.cpp: In function ‘void sha1_test()’:
> hash/sha1.cpp:156:168: error: unable to find string literal operator
> ‘operator""e119a863bce69ad1b6ca1a51e94994531d122088’
> assert(sha1(tv, 55) == "e119a863bce69ad1b6ca1a51e94994531d122088"_sha1);
>
>
> ^
> hash/sha1.cpp:157:168: error: unable to find string literal operator
> ‘operator""fd62c272e1f0f24b92a0ec8360519cd64d6ab986’
> assert(sha1(tv, 56) == "fd62c272e1f0f24b92a0ec8360519cd64d6ab986"_sha1);
>
>
> ^
> hash/sha1.cpp:158:128: error: expected ‘)’ before numeric constant
> assert(sha1(tv, 57) == "010b0113d06cffb80f2beb657ef39682e5e7de79"_sha1);
>
> ^
> hash/sha1.cpp:159:168: error: unable to find string literal operator
> ‘operator""adf8998c4791fc378fa6d8b23666934522546778’
> assert(sha1(tv, 63) == "adf8998c4791fc378fa6d8b23666934522546778"_sha1);
>
>
> ^
> hash/sha1.cpp:160:128: error: expected ‘)’ before numeric constant
> assert(sha1(tv, 64) == "787680a25bf74f34c22b2c37d7d5bae2feceb20c"_sha1);
>
> ^
> hash/sha1.cpp:161:128: error: expected ‘)’ before numeric constant
> assert(sha1(tv, 65) == "079b9ef0684bd9a600b9a23caa4297d064ce076e"_sha1);
>
> ^
> Makefile:944: recipe for target 'hash/sha1.o' failed
>
>
> Uninstalling ccache allows the source to build.
>
> Regards,
>
> Stephen
>
>
> -- System Information:
> Debian Release: stretch/sid
> APT prefers testing
> APT policy: (500, 'testing'), (500, 'stable'), (200, 'unstable'), (1,
> 'experimental')
> Architecture: amd64 (x86_64)
> Foreign Architectures: i386
>
> Kernel: Linux 3.16.0-4-amd64 (SMP w/8 CPU cores)
> Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8)
> Shell: /bin/sh linked to /bin/dash
> Init: sysvinit (via /sbin/init)
>
> Versions of packages ccache depends on:
> ii libc6 2.19-18
> ii zlib1g 1:1.2.8.dfsg-2+b1
>
> ccache recommends no packages.
>
> Versions of packages ccache suggests:
> pn distcc <none>
>
> -- no debconf information
>
>