Bug 221803 - ftp/rexx-curl: port passes $LDFLAGS to direct linker invocation, not compiler driver
Summary: ftp/rexx-curl: port passes $LDFLAGS to direct linker invocation, not compiler...
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-ports-bugs (Nobody)
Depends on:
Blocks: 214864
  Show dependency treegraph
Reported: 2017-08-25 13:01 UTC by Ed Maste
Modified: 2018-03-30 11:53 UTC (History)
2 users (show)

See Also:
bob: maintainer-feedback+


Note You need to log in before you can comment on or make changes to this bug.
Description Ed Maste freebsd_committer 2017-08-25 13:01:29 UTC
I've been investigating the state of the ports tree with LLVM's lld installed as /usr/bin/ld (from the exp-run in PR 214864).

Normally LDFLAGS contains flags passed to the compiler driver when invoked for linking. One issue that affects a small number of ports is passing $LDFLAGS to direct linker invocation (i.e, $LD), where it contains flags that are appropriate only for the compiler driver, not the linker.

In several instances this comes from bsd.ssp.mk, which adds -fstack-protector to LDFLAGS.  GNU BFD ld accepts the flag but produces undesired output, while lld produces an error:

ld -fstack-protector -shared -o libcfg+.so.0 ../src/cfg+.o ../src/parse.o ../src/props.o ../src/cmdline.o ../src/cfgfile.o ../src/shared.o ../src/platon/str/strplus.o ../src/platon/str/strctype.o ../src/platon/str/strdyn.o ../src/platon/str/dynfgets.o
ld: error: unknown argument: -fstack-protector
(from devel/libcfg)

(GNU ld produces output with a bogus DT_AUXILIARY "stack-protector" entry for this case.)

This affects at least the following ports:

ftp/rexx-curl build log excerpt when linking with lld:
ld -Bdynamic -Bshareable   -fstack-protector  -fstack-protector  -o librexxcurl.so rexxcurl.so.o rxpack.so.o rxmt_posix.so.o -L/usr/local/lib -lcurl -L/usr/local/lib -lregina   -lm
ld: error: unknown argument: -fstack-protector
ld: error: unknown argument: -fstack-protector
Comment 1 Walter Schwarzenfeld freebsd_triage 2018-01-13 02:16:03 UTC
Maintainer feedback, please!
Comment 2 bob 2018-01-15 00:53:07 UTC
This is being worked on, and a resolution will be provided soon.
Comment 3 Walter Schwarzenfeld freebsd_triage 2018-01-15 00:55:14 UTC
Thanks for reply.
Comment 4 Ed Maste freebsd_committer 2018-03-27 13:39:28 UTC
Any update?
Comment 5 bob 2018-03-27 13:50:37 UTC
I have an important deadline in three days. After that...!
Comment 6 Ed Maste freebsd_committer 2018-03-27 20:32:26 UTC
Via tobik@ in ports r465725, BINARY_ALIAS=ld=ld.bfd may be an effective workaround if LLD_UNSAFE does not work.
Comment 7 commit-hook freebsd_committer 2018-03-30 11:53:25 UTC
A commit references this bug:

Author: krion
Date: Fri Mar 30 11:52:47 UTC 2018
New revision: 465964
URL: https://svnweb.freebsd.org/changeset/ports/465964

  Switch to ld.bfd by default as ld.ldd doesn't have built-in default
  output target.

  PR:		221803
  Submitted by:	emaste
  Approved by:	portmgr (LLD_UNSAFE blanket)