vanilla build of 7.7p1 release on linux/4.17 fails with gcc8 @ "/usr/bin/ld: unrecognized option '-Wl,-z,retpolineplt'"
pgnet.dev at gmail.com
Sat Jun 9 00:25:13 AEST 2018
On 6/7/18 8:37 PM, Darren Tucker wrote:
> On 8 June 2018 at 12:21, Darren Tucker <dtucker at dtucker.net> wrote:
>> On 8 June 2018 at 12:09, PGNet Dev <pgnet.dev at gmail.com> wrote:
>>> /usr/bin/ld -o ssh ssh.o readconf.o clientloop.o sshtty.o sshconnect.o sshconnect2.o mux.o -L. -Lopenbsd-compat/ -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -fstack-protector-strong -pie -lssh -lopenbsd-compat -lutil -lz -lcrypt -lresolv
>>> /usr/bin/ld: unrecognized option '-Wl,-z,relro'
>> That's a slightly different problem: -Wl is a gcc flag that means
>> "pass the following flag through to the linker". Since AC_LINK_IFLESE
>> uses $CC and not $LD, this works in configure, but apparently bare ld
>> does not understand -Wl. The only way I can think of right now to fix
>> that is to manually invoke $LD inside the test macro. Lemme have a
>> bit more of a think.
> Looking into autoconf some more it appears that its C language support
> does not include $LD at all:
> ac_cpp='$CPP $CPPFLAGS'
> ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&AS_MESSAGE_LOG_FD'
> ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS
> conftest.$ac_ext $LIBS >&AS_MESSAGE_LOG_FD'
> I'm thinking we should remove the ability to set $LD and if you want
> to override the linker you would have to use the corresponding
> compiler option such as gcc's -fuse-ld. That would be simpler than
> trying to code around this particular problem.
The build certainly works if
so it's certainly not untenable; just a bit befuddling it you've got
LD=ld in use.
I'm curious as to what's unique/new here -- as I've typically got LD=ld
set (by env) for other builds, and don't see this problem.
I've also built previous versions of openssh, with earlier versions of
GCC/LD (pre retpoline patches? not sure atm ...), without this issue,
More information about the openssh-unix-dev