Package: gcc-7
Version: 7.3.0-16
Control: block 895618 with -1
GCC no longer looks for "as" in the directory specified by the -B
option:
$ gcc --version | head -n1
gcc (Debian 7.3.0-16) 7.3.0
$ strace -f -o '| grep -w as' gcc -B/foo/bar/ -c -x c /dev/null
3641 access("/usr/bin/x86_64-linux-gnu-as", X_OK) = 0
3644 execve("/usr/bin/x86_64-linux-gnu-as", ["/usr/bin/x86_64-linux-gnu-as", "--64", "-o",
"null.o", "/tmp/cc40S4xu.s"], 0x1ca26d0 /* 24 vars */ <unfinished ...>
This breaks afl-gcc (part of the afl package), which uses the -B option
to talk GCC into using a hacked version of the assembler.
I guess this is fallout from fixing #895251.
Previously it worked like this:
$ gcc --version | head -n1
gcc (Debian 7.3.0-15) 7.3.0
$ strace -f -o '| grep -w as' gcc -B/foo/bar/ -c -x c /dev/null
3770 stat("/foo/bar/x86_64-linux-gnu/7/as", 0x7ffd82351450) = -1 ENOENT (No
such file or directory)
3770 stat("/foo/bar/x86_64-linux-gnu/as", 0x7ffd82351450) = -1 ENOENT (No
such file or directory)
3770 stat("/foo/bar/as", 0x7ffd82351450) = -1 ENOENT (No such file or
directory)
3770 stat("/usr/lib/gcc/x86_64-linux-gnu/7/as", 0x7ffd82351450) = -1 ENOENT
(No such file or directory)
3770 stat("/usr/lib/gcc/x86_64-linux-gnu/7/as", 0x7ffd82351450) = -1 ENOENT
(No such file or directory)
3770 stat("/usr/lib/gcc/x86_64-linux-gnu/as", 0x7ffd82351450) = -1 ENOENT
(No such file or directory)
3770 stat("/usr/lib/gcc/x86_64-linux-gnu/7/as", 0x7ffd82351450) = -1 ENOENT
(No such file or directory)
3770 stat("/usr/lib/gcc/x86_64-linux-gnu/as", 0x7ffd82351450) = -1 ENOENT
(No such file or directory)
3770
stat("/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/7/as",
0x7ffd82351450) = -1 ENOENT (No such file or directory)
3770
stat("/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/as",
0x7ffd82351450) = -1 ENOENT (No such file or directory)
3770
stat("/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/bin/as",
0x7ffd82351450) = -1 ENOENT (No such file or directory)
3773 execve("/usr/local/bin/as", ["as", "--64", "-o", "null.o",
"/tmp/ccFhN057.s"], 0xbe46d0 /* 24 vars */) = -1 ENOENT (No such file or directory)
3773 execve("/usr/bin/as", ["as", "--64", "-o", "null.o", "/tmp/ccFhN057.s"],
0xbe46d0 /* 24 vars */ <unfinished ...>
As you can see, GCC was already looking for "as" in a triplet-specific
directory. So perhaphs gcc-7 should ship an appropriate symlink in
/usr/lib/gcc/<triplet>/7/, instead of hardcoding path to "as" at
configure time?
-- System Information:
Debian Release: buster/sid
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'unstable'), (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 4.9.0-6-amd64 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=pl_PL.UTF-8 (charmap=UTF-8),
LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages gcc-7 depends on:
ii binutils 2.30-15
ii cpp-7 7.3.0-16
ii gcc-7-base 7.3.0-16
ii libc6 2.27-3
ii libcc1-0 8-20180414-1
ii libgcc-7-dev 7.3.0-16
ii libgcc1 1:8-20180414-1
ii libgmp10 2:6.1.2+dfsg-3
ii libisl19 0.19-1
ii libmpc3 1.1.0-1
ii libmpfr6 4.0.1-1
ii libstdc++6 8-20180414-1
ii zlib1g 1:1.2.8.dfsg-5
Versions of packages gcc-7 recommends:
ii libc6-dev 2.27-3
--
Jakub Wilk