svn commit: r319971 - in head: contrib/jemalloc contrib/jemalloc/doc contrib/jemalloc/include/jemalloc contrib/jemalloc/include/jemalloc/internal contrib/jemalloc/src include lib/libc/stdlib/jemalloc

Jason Evans jasone at canonware.com
Sat Jun 17 00:15:53 UTC 2017


On Fri, 16 Jun 2017 18:45:17 -0400
Shawn Webb <shawn.webb at hardenedbsd.org> wrote:

> On Thu, Jun 15, 2017 at 07:15:06AM +0000, Jason Evans wrote:
> > Author: jasone
> > Date: Thu Jun 15 07:15:05 2017
> > New Revision: 319971
> > URL: https://svnweb.freebsd.org/changeset/base/319971
> > 
> > Log:
> >   Update jemalloc to 5.0.0.
> > 
> 
> This breaks buildworld for arm64:
> 
> /usr/obj/arm64.aarch64/scratch/fbsd/tmp/usr/bin/ld: error: sigsetjmp.pico:(function sigsetjmp): relocation R_AARCH64_CONDBR19 out of range
> /usr/obj/arm64.aarch64/scratch/fbsd/tmp/usr/bin/ld: error: sigsetjmp.pico:(function siglongjmp): relocation R_AARCH64_CONDBR19 out of range
> cc: error: linker command failed with exit code 1 (use -v to see invocation)
> --- libc.so.7.full ---
> *** [libc.so.7.full] Error code 1
> 
> make[4]: stopped in /scratch/fbsd/lib/libc

Indeed, this happens for me too with TARGET=arm64 TARGET_ARCH=aarch64.  I haven't found anything specifically about this error message, but it looks vaguely like the amd64-specific messages that happen when trying to link non-PIC object files into a shared library.  In src/lib/libc/aarch64/gen/sigsetjmp.S, we have two conditional jumps

	b.eq	C_LABEL(_setjmp)
	[...]
	b.eq	C_LABEL(_longjmp)

Maybe there's a simple macro change that can make these relocatable jumps.  Alternatively, we could probably simplify the code by merging setjmp.S and sigsetjmp.S, so that PC-relative jumps could be used.

I'm going to be AFK for the next couple days, and I do not have arm64 hardware, so I hope this is enough information for someone to work out a simple fix.

Thanks,
Jason


More information about the svn-src-head mailing list