Page MenuHomeFreeBSD

x11/pixman: update to 0.36.0
Needs ReviewPublic

Authored by ml_vishwin.info on Mon, Dec 3, 1:43 AM.

Details

Reviewers
None
Group Reviewers
x11
Summary

See also PR 233737

https://lists.freedesktop.org/archives/pixman/2018-November/004793.html

While here, update WWW.

On armv6 and armv7, fix build by disabling extensions that aren't supported, as autodetection is dodgy.

Test Plan

Passes testport on 12.0-RC3 armv7 and 13-CURRENT amd64 and aarch64 at least. Probably needs exp-run.

Diff Detail

Lint
No Linters Available
Unit
No Unit Test Coverage
Build Status
Buildable 21328
Build 20658: arc lint + arc unit

Event Timeline

ml_vishwin.info created this revision.Mon, Dec 3, 1:43 AM
ml_vishwin.info edited the summary of this revision. (Show Details)Mon, Dec 3, 1:54 AM
jbeich added a subscriber: jbeich.Mon, Dec 3, 1:56 AM
jbeich added inline comments.
x11/pixman/Makefile
31

armv7 target on FreeBSD always provides NEON, so this would be pessimization.

$ cc -dM -E -</dev/null | fgrep -i neon
#define __ARM_NEON 1
#define __ARM_NEON_FP 0x4
#define __ARM_NEON__ 1

Adding Mikaël to review arm* bits. Not enough details why --disable-arm-* is required i.e., builds fine here.

The ARM SIMD and NEON assembler bits fail to link when LLD is the linker, even with 0.34.0. No mitigations (not even CFLAGS+=-fPIC) save for possibly forcing BFD use work. Last successful armv7 build on my machine was 120083.

--- 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

Leaving those two aforementioned bits enabled (regardless of CFLAGS+=-fPIC) result in the same error messages for this new version.

jbeich added a comment.Mon, Dec 3, 2:48 AM

The ARM SIMD and NEON assembler bits fail to link when LLD is the linker, even with 0.34.0.

If armv7 bustage isn't a regression from 0.36.0 update then it should be in a separate bug/review.

No mitigations (not even CFLAGS+=-fPIC) save for possibly forcing BFD use work.

Have you tried -Wl,-z,notext (a la rP484698)?

If armv7 bustage isn't a regression from 0.36.0 update then it should be in a separate bug/review.

Considering.

Have you tried -Wl,-z,notext (a la rP484698)?

Second item tried after CFLAGS+=-fPIC; replace the above error output's can't create dynamic relocation R_ARM_V4BX with unrecognised reloc 40; same addresses as well.

If armv7 bustage isn't a regression from 0.36.0 update then it should be in a separate bug/review.

Considering.

Have you tried -Wl,-z,notext (a la rP484698)?

Second item tried after CFLAGS+=-fPIC; replace the above error output's can't create dynamic relocation R_ARM_V4BX with unrecognised reloc 40; same addresses as well.

It may be because there are multiple cflags in the makefile, for ex: GTK_CFLAGS SSE2_CFLAGS etc.

Remove workaround for LLD on armv6/armv7, split to separate issue

ml_vishwin.info marked an inline comment as done.Mon, Dec 3, 4:53 AM