[Bug 226991] lang/smlnj: fails to link with lld as the system linker

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Tue Mar 27 16:09:32 UTC 2018


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=226991

            Bug ID: 226991
           Summary: lang/smlnj: fails to link with lld as the system
                    linker
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: freebsd-ports-bugs at FreeBSD.org
          Reporter: emaste at freebsd.org
                CC: joemann at beefree.free.de
            Blocks: 214864
                CC: joemann at beefree.free.de
             Flags: maintainer-feedback?(joemann at beefree.free.de)

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]:
---
cc -o run.x86-freebsd.so -O2 -pipe  -m32 -fstack-protector -fno-strict-aliasing
-shared main.o c-libraries.o unix-raise-syserr.o ml-options.o  boot.o load-ml.o
run-ml.o globals.o ml-state.o  error.o timers.o unix-timers.o  qualify-name.o
swap-bytes.o  unix-fault.o signal-util.o unix-signal.o unix-prof.o prim.o    
../c-libs/posix-os/libposix-os.a  ../c-libs/smlnj-runtime/libsmlnj-runt.a 
../c-libs/smlnj-signals/libsmlnj-sig.a  ../c-libs/smlnj-prof/libsmlnj-prof.a 
../c-libs/smlnj-sockets/libsmlnj-sock.a  ../c-libs/smlnj-time/libsmlnj-time.a 
../c-libs/smlnj-date/libsmlnj-date.a  ../c-libs/smlnj-math/libsmlnj-math.a 
../c-libs/posix-process/libposix-process.a 
../c-libs/posix-procenv/libposix-procenv.a 
../c-libs/posix-filesys/libposix-filesys.a  ../c-libs/posix-io/libposix-io.a 
../c-libs/posix-sysdb/libposix-sysdb.a 
../c-libs/posix-signal/libposix-signal.a  ../c-libs/posix-tty/libposix-tty.a 
../c-libs/posix-error/libposix-error.a ../gc/libgc.a  ../memory/libmem.a
../c-libs/dl/libunix-dynload.a  -lm
/usr/bin/ld: error: can't create dynamic relocation R_386_32 against symbol:
__stderrp in readonly segment; recompile object files with -fPIC
>>> defined in /usr/lib32/libc.so.7
>>> referenced by main.c
>>>               main.o:(main)

/usr/bin/ld: error: can't create dynamic relocation R_386_32 against symbol:
DebugF in readonly segment; recompile object files with -fPIC
>>> defined in main.o
>>> referenced by main.c
>>>               main.o:(main)

...


strip: open
/wrkdirs/usr/ports/lang/smlnj/work/stage/usr/local/smlnj/bin/.run/run.x86-freebsd.so
failed: No such file or directory
---

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/smlnj-110.77.log


Referenced Bugs:

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=214864
[Bug 214864] [exp-run] test build with lld as /usr/bin/ld
-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-ports-bugs mailing list