[Bug 233740] x11/pixman: LLD relocation errors on ARM

[email protected]
Newsgroups gmane.os.freebsd.devel.x11
Message-ID <[email protected]/bugzilla/>
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=233740

            Bug ID: 233740
           Summary: x11/pixman: LLD relocation errors on ARM
           Product: Ports & Packages
           Version: Latest
          Hardware: arm
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: [email protected]
          Reporter: [email protected]
          Assignee: [email protected]
             Flags: maintainer-feedback?([email protected])

Created attachment 199774
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=199774&action=edit
current workaround

Splitting from bug 233737.

On ARM (but not aarch64) with LLD_IS_LD, the SIMD and NEON bits fail to link:

--- libpixman-1.la ---
/bin/sh ../libtool  --tag=CC    --mode=link cc   -O2 -pipe 
-fno-strict-aliasing  -Wall -Wdeclaration-after-statement
-Wno-unused-local-typedefs -fno-strict-aliasing -fvisibility=hidden
-version-info 34:0:34  -no-undefined   -pthread       -o  libpixman-1.la -rpath
/usr/local/lib pixman.lo pixman-access.lo pixman-access-accessors.lo 
pixman-bits-image.lo pixman-combine32.lo  pixman-combine-float.lo
pixman-conical-gradient.lo  pixman-filter.lo pixman-x86.lo pixman-mips.lo
pixman-arm.lo  pixman-ppc.lo pixman-edge.lo pixman-edge-accessors.lo 
pixman-fast-path.lo pixman-glyph.lo pixman-general.lo 
pixman-gradient-walker.lo pixman-image.lo  pixman-implementation.lo
pixman-linear-gradient.lo  pixman-matrix.lo pixman-noop.lo
pixman-radial-gradient.lo  pixman-region16.lo pixman-region32.lo
pixman-solid-fill.lo  pixman-timer.lo pixman-trap.lo pixman-utils.lo  -lm   -lm
      libpixman-arm-simd.la libpixman-arm-neon.la     -lm
libtool: link: cc -shared  -fPIC -DPIC  .libs/pixman.o .libs/pixman-access.o
.libs/pixman-access-accessors.o .libs/pixman-bits-image.o
.libs/pixman-combine32.o .libs/pixman-combine-float.o
.libs/pixman-conical-gradient.o .libs/pixman-filter.o .libs/pixman-x86.o
.libs/pixman-mips.o .libs/pixman-arm.o .libs/pixman-ppc.o .libs/pixman-edge.o
.libs/pixman-edge-accessors.o .libs/pixman-fast-path.o .libs/pixman-glyph.o
.libs/pixman-general.o .libs/pixman-gradient-walker.o .libs/pixman-image.o
.libs/pixman-implementation.o .libs/pixman-linear-gradient.o
.libs/pixman-matrix.o .libs/pixman-noop.o .libs/pixman-radial-gradient.o
.libs/pixman-region16.o .libs/pixman-region32.o .libs/pixman-solid-fill.o
.libs/pixman-timer.o .libs/pixman-trap.o .libs/pixman-utils.o 
-Wl,--whole-archive ./.libs/libpixman-arm-simd.a ./.libs/libpixman-arm-neon.a
-Wl,--no-whole-archive  -lm  -O2 -pthread   -pthread -Wl,-soname
-Wl,libpixman-1.so.0 -o .libs/libpixman-1.so.0.34.0
/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-simd.a(pixman-arm-simd-asm-scaled.o)
>>> referenced by pixman-arm-simd-asm-scaled.o:(.text+0x1B8) in archive ./.libs/libpixman-arm-simd.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-simd.a(pixman-arm-simd-asm-scaled.o)
>>> referenced by pixman-arm-simd-asm-scaled.o:(.text+0x374) in archive ./.libs/libpixman-arm-simd.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm.o)
>>> referenced by pixman-arm-neon-asm.o:(.text+0x17AC) in archive ./.libs/libpixman-arm-neon.a
/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm.o)
>>> referenced by pixman-arm-neon-asm.o:(.text+0x1814) in archive ./.libs/libpixman-arm-neon.a
/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm.o)
>>> referenced by pixman-arm-neon-asm.o:(.text+0x1A38) in archive ./.libs/libpixman-arm-neon.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm.o)
>>> referenced by pixman-arm-neon-asm.o:(.text+0x1AFC) in archive ./.libs/libpixman-arm-neon.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm.o)
>>> referenced by pixman-arm-neon-asm.o:(.text+0x21C8) in archive ./.libs/libpixman-arm-neon.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm.o)
>>> referenced by pixman-arm-neon-asm.o:(.text+0x2294) in archive ./.libs/libpixman-arm-neon.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm.o)
>>> referenced by pixman-arm-neon-asm.o:(.text+0x84E0) in archive ./.libs/libpixman-arm-neon.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm.o)
>>> referenced by pixman-arm-neon-asm.o:(.text+0x85C4) in archive ./.libs/libpixman-arm-neon.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm.o)
>>> referenced by pixman-arm-neon-asm.o:(.text+0x9720) in archive ./.libs/libpixman-arm-neon.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm.o)
>>> referenced by pixman-arm-neon-asm.o:(.text+0x9834) in archive ./.libs/libpixman-arm-neon.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm.o)
>>> referenced by pixman-arm-neon-asm.o:(.text+0xA7B0) in archive ./.libs/libpixman-arm-neon.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm.o)
>>> referenced by pixman-arm-neon-asm.o:(.text+0xA8CC) in archive ./.libs/libpixman-arm-neon.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm.o)
>>> referenced by pixman-arm-neon-asm.o:(.text+0x105A0) in archive ./.libs/libpixman-arm-neon.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm.o)
>>> referenced by pixman-arm-neon-asm.o:(.text+0x10DB8) in archive ./.libs/libpixman-arm-neon.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm.o)
>>> referenced by pixman-arm-neon-asm.o:(.text+0x11274) in archive ./.libs/libpixman-arm-neon.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm.o)
>>> referenced by pixman-arm-neon-asm.o:(.text+0x11808) in archive ./.libs/libpixman-arm-neon.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm-bilinear.o)
>>> referenced by pixman-arm-neon-asm-bilinear.o:(.text+0x4F0) in archive ./.libs/libpixman-arm-neon.a

/nxb-bin/usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against
local symbol in readonly segment; recompile object files with -fPIC
>>> defined in ./.libs/libpixman-arm-neon.a(pixman-arm-neon-asm-bilinear.o)
>>> referenced by pixman-arm-neon-asm-bilinear.o:(.text+0xABC) in archive ./.libs/libpixman-arm-neon.a

/nxb-bin/usr/bin/ld: error: too many errors emitted, stopping now (use
-error-limit=0 to see all errors)
cc: error: linker command failed with exit code 1 (use -v to see invocation)
*** [libpixman-1.la] Error code 1

make[3]: stopped in /wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0/pixman
1 error

make[3]: stopped in /wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0/pixman
*** [all-recursive] Error code 1

make[2]: stopped in /wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0
1 error

make[2]: stopped in /wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0
*** [all] Error code 2

make[1]: stopped in /wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0
1 error

make[1]: stopped in /wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0

-fPIC was already passed by default, and LDFLAGS+=-Wl,z,notest results in the
same error with a slightly different message of "unrecognised reloc 40".

A workaround is to disable SIMD and NEON for armv6 and armv7.

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-x11
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.