make buildworld failed with error "relocation truncated to fit: R_ARM_JUMP24 against symbol `_fini'"

Mark Millard markmi at dsl-only.net
Thu Jan 21 00:17:38 UTC 2016


Wed Jan 20 10:29:06 UTC 2016 Michal Meloun wrote:

> Dne 20.01.2016 v 8:00 Tom Vijlbrief napsal(a):
> . . .
> > 
> > The buildworld on the RPI failed:
> > 
> > http://www.v7f.eu/public/freebsd/world371.log
> > 
> > The same tree build ok when cross compiling. I can supply the log if needed.
> > 
> > My previous succesfull build on the RPI was jan 14, just before the
> > introduction of the long-call flag for clang but after the long-call change
> > for crt1.o on jan 10th.
> > 
> > Could this partial introduction of the long-call flag in the installed
> > world be the cause of the issue? I would expect a buildworld to use only
> > libs from /usr/obj but the failing link refers to /usr/lib.
> > 
> > I will try installing the new cross compiled world to see if that fixes the
> > native build.
> > 
> >>
> > _______________________________________________
> > freebsd-arm at freebsd.org mailing list
> > https://lists.freebsd.org/mailman/listinfo/freebsd-arm
> > To unsubscribe, send any mail to "freebsd-arm-unsubscribe at freebsd.org"
> > 
> 
> Confirmed. Native build of fresh current fails on bootstrap clang link
> phase.
> 
> The bootstrap clang is now build with -mlong-calls and is significantly
> longer that previous one (without -mlong-calls). Also, bootstrap clang
> is linked with original "/usr/lib/crti.o" (which is compiled without
> -mlong-calls), so link fails.
> 
> This is also reason, why the problem is not seen with crossbuild  -
> bootstrap clang is builded for host architecture and final (target)
> clang is linked with right (new, compiled with -mlong-calls) crti.o.
> 
> Michal


For on-arm buildworld with clang/clang++ (self hosted) . . .
(Warning that I've not tried the below.)

It appears that one can back out the -mlong-calls additions and get back to something that builds and installs without needing any cross builds from a different type of host.

Going the other way: If one already has clang/clang++ 3.7.1 one does not need WITH_CLANG_BOOTSTRAP= involved as the existing system clang/clang++ can already do the compiles.

So try an explicit WITHOUT_CLANG_BOOTSTRAP= to avoiding having a version built that ends up linked with /usr/lib/crti.o (that is not based on -mlong-calls yet) but mixed that with having the -mlong-calls in place for the non-bootstrap clang build to use.

The above might be a workaround sufficient for bootstrapping into a -mlong-calls based environment when the arm itself is to build clang and/or lldb.


===
Mark Millard
markmi at dsl-only.net



More information about the freebsd-toolchain mailing list