Bug 226989 - sysutils/installwatch: fails to link with lld as the system linker
Summary: sysutils/installwatch: fails to link with lld as the system linker
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 mailing list
URL:
Keywords:
Depends on:
Blocks: 214864
  Show dependency treegraph
 
Reported: 2018-03-27 16:04 UTC by Ed Maste
Modified: 2018-03-28 00:51 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ed Maste freebsd_committer 2018-03-27 16:04:10 UTC
I'm working on switching to LLVM's lld linker as the FreeBSD system linker (/usr/bin/ld)[1], and the port in this PR is reported as a new failure in the exp-run, PR 214864.

An excerpt from the build log[2]:
---
ld -shared -o installwatch.so installwatch.o -lc
ld: error: unable to find library -lc
*** Error code 1
---

Known issues in this port or in lld that affect this port:

(2) lld has no built-in search paths (/lib, /usr/lib). Normally the linker is invoked from the compiler driver, and the search paths are added by the compiler. If lld is invoked directly library search paths must be specified explicitly, with -L/lib -L/usr/lib.

FreeBSD 11 and later have lld available as /usr/bin/ld.lld, so one simple option for testing is to just symlink /usr/bin/ld to ld.lld (and restore it to ld.bfd).

A port Makefile knob, LLD_UNSAFE=yes, exists to indicate that a port does not work with lld, and requires either /usr/bin/ld.bfd or binutils from ports. This should work for the common case of ports written in C using GNU autoconf; it may have no effect on other ports.

[1] https://lists.freebsd.org/pipermail/freebsd-current/2018-March/068985.html
[2] http://package18.nyi.freebsd.org/data/headamd64PR214864-default/2018-03-21_17h43m11s/logs/errors/installwatch-0.6.3_3.log
Comment 1 Ed Maste freebsd_committer 2018-03-27 20:53:30 UTC
Via tobik@ in ports r465725, BINARY_ALIAS=ld=ld.bfd may be an effective workaround if LLD_UNSAFE does not work.
Comment 2 commit-hook freebsd_committer 2018-03-27 20:55:58 UTC
A commit references this bug:

Author: emaste
Date: Tue Mar 27 20:55:00 UTC 2018
New revision: 465751
URL: https://svnweb.freebsd.org/changeset/ports/465751

Log:
  sysutils/installwatch: use BINARY_ALIAS to invoke ld.bfd

  This port does not honour LD or -fuse-ld in CFLAGS via LLD_UNSAFE but
  BINARY_ALIAS can be used to ensure we use the BFD linker.

  PR:		226989
  Approved by:	portmgr (LLD_UNSAFE blanket)
  Sponsored by:	The FreeBSD Foundation

Changes:
  head/sysutils/installwatch/Makefile
Comment 3 commit-hook freebsd_committer 2018-03-27 21:06:10 UTC
A commit references this bug:

Author: emaste
Date: Tue Mar 27 21:05:10 UTC 2018
New revision: 465752
URL: https://svnweb.freebsd.org/changeset/ports/465752

Log:
  irc/evangeline: use BINARY_ALIAS to invoke ld.bfd

  This port does not honour LD or -fuse-ld in CFLAGS via LLD_UNSAFE, but
  BINARY_ALIAS can be used to ensure we use the BFD linker.

  PR:		226989
  Approved by:	portmgr (LLD_UNSAFE blanket)
  Sponsored by:	The FreeBSD Foundation

Changes:
  head/irc/evangeline/Makefile
Comment 4 Ed Maste freebsd_committer 2018-03-27 21:07:40 UTC
r465752 referenced this PR by accident, it should be PR226978
Comment 5 Ed Maste freebsd_committer 2018-03-28 00:51:49 UTC
Workaround committed in r465751