Bug 226996 - net-p2p/monero-cli: fails to link with lld as the system linker
Summary: net-p2p/monero-cli: 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: Vasil Dimov
Depends on:
Blocks: 214864
  Show dependency treegraph
Reported: 2018-03-27 16:36 UTC by Ed Maste
Modified: 2018-06-07 13:04 UTC (History)
0 users

See Also:
bugzilla: maintainer-feedback? (vd)


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:36:25 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]:
cd /wrkdirs/usr/ports/net-p2p/monero-cli/work/monero- && cd /wrkdirs/usr/ports/net-p2p/monero-cli/work/monero- && /usr/bin/ld -r -b binary -o /wrkdirs/usr/ports/net-p2p/monero-cli/work/monero- blocks.dat
/usr/bin/ld: error: target emulation unknown: -m or at least one .o file required
ninja: build stopped: subcommand failed.

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

(4) lld does not have a built-in default output target. For the most common use of the linker (linking individual .o objects into an executable or shared object) lld infers the target from the first object file. However, when the linker is used to convert an arbitrary binary file into an ELF object (via -r -b binary) lld must have the output target specified explicitly with -m.

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/monero-cli-
Comment 1 Ed Maste freebsd_committer 2018-03-27 20:39:38 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-28 13:50:20 UTC
A commit references this bug:

Author: krion
Date: Wed Mar 28 13:49:26 UTC 2018
New revision: 465811
URL: https://svnweb.freebsd.org/changeset/ports/465811

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

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

Comment 3 Ed Maste freebsd_committer 2018-05-30 17:11:23 UTC
Reopen as net-p2p/monero-cli fails to build even with LLD_UNSAFE
Comment 4 Vasil Dimov freebsd_committer 2018-06-07 12:32:01 UTC
Closing this as it has been fixed with the latest changes in the port (c471906).
Comment 5 Ed Maste freebsd_committer 2018-06-07 13:04:29 UTC
(In reply to Vasil Dimov from comment #4)