Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 16 Nov 2018 12:47:22 -0800
From:      Mark Millard <marklmi@yahoo.com>
To:        Jan Beich <jbeich@FreeBSD.org>, ports-list freebsd <freebsd-ports@freebsd.org>
Subject:   Re: ports head -r487783: on armv7 x11/pixman fails to build:  /usr/bin/ld: error: can't create dynamic relocation R_ARM_V4BX against local  symbol in readonly segment; recompile object files with -fPIC
Message-ID:  <F63FB925-C105-480D-8AE0-ED519BF16012@yahoo.com>
In-Reply-To: <5D2BA74B-3714-47C8-A3F0-B4C89F3D88B1@yahoo.com>
References:  <A76D7D49-E36E-4665-AA4B-D083CCF7D57B@yahoo.com> <5D2BA74B-3714-47C8-A3F0-B4C89F3D88B1@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Top post of llvm's lld status:

Turns out various vintages of lld do not support R_ARM_V4BX *ABS* :

https://bugs.llvm.org/show_bug.cgi?id=3D38303

Its shown example is one of the ones that I reported (pixman) but for
building FireFox for Android (Linux context, not FreeBSD):

QUOTE
builds/worker/workspace/build/src/clang/bin/ld.lld: error: can't create =
dynamic relocation R_ARM_V4BX against local symbol in readonly segment; =
recompile object files with -fPIC

>>> defined in =
../../gfx/cairo/libpixman/src/pixman-arm-neon-asm-bilinear.o
>>> referenced by =
../../gfx/cairo/libpixman/src/pixman-arm-neon-asm-bilinear.o:(.text+0x4F0)=

END QOUTE

It also points out that:

QUOTE
Linking with -z notext is more explicit:

/builds/worker/workspace/build/src/clang/bin/ld.lld: error: =
../../gfx/cairo/libpixman/src/pixman-arm-neon-asm-bilinear.o:(.text+0x4F0)=
: unrecognized reloc 40
END QUOTE


On 2018-Nov-16, at 12:34, Mark Millard <marklmi at yahoo.com> wrote:

> [I add some objdump output from what was in the .tar archive for
> the failure in the poudriere build (the 3 specific .o's). Also I
> show tool version information.]
>=20
> On 2018-Nov-16, at 11:39, Mark Millard <marklmi at yahoo.com> wrote:
>=20
>> Jan Beich jbeich at FreeBSD.org wrote on
>> Fri Nov 16 02:15:57 UTC 2018 :
>>=20
>>> Mark Millard via freebsd-x11 <freebsd-x11 at freebsd.org> writes:
>>>=20
>>>> [Added: The original cross-build via poudriere-devel and =
qemu-user-static
>>>> did not get this problem. I give details later. Sumamry: Looks like =
-O2
>>>> was used for the cross build and -O was used for armv7 native. The
>>>> difference is likely(?) from my materials but not supporting both =
ways of
>>>> building is likely a problem with the port(?).]
>>>=20
>>> x11/pixman builds fine on armv7 even with -O. Tested both Clang/LLD =
6.0
>>> and 7.0 after forcing MACHINE_CPUARCH=3Darm on command line.
>>=20
>> Interesting. My context was a poudriere build that was rebuilding all
>> my normal ports for the armv7 context (414 total). (poudriere is =
still
>> running, still having 12 to go, including llvm60, llvm70, and gcc8.)
>> This was/is under:
>>=20
>> # uname -apKU
>> FreeBSD OPiP2E 13.0-CURRENT FreeBSD 13.0-CURRENT #5 r340287M: Sat Nov =
10 22:40:25 PST 2018     =
markmi@FBSDFSSD:/usr/obj/armv7_clang/arm.armv7/usr/src/arm.armv7/sys/GENER=
IC-NODBG  arm armv7 1300003 1300003
>>=20
>> and is tied to my jump from before openssl was updated( -r339076 ) to
>> after.
>>=20
>> It was using system clang and lld, not devel/llvm* .
>>=20
>> The only other thing to have failed so far is multimedia/libpvx but =
it
>> failed built both ways ( native and cross-build with /nxb-bin/. . . =
).
>>=20
>> Do you have a log that would show the commands that were used to =
produce
>> the things that were listed in my original report for the "R_ARM_V4BX
>> against local in readonly segment":
>>=20
>> pixman-arm-simd-asm-scaled.o
>> pixman-arm-neon-asm.o
>> pixman-arm-neon-asm-bilinear.o
>>=20
>> --- libpixman-1.la --- (for where the use of the .o's was attempted =
via a library)
>>=20
>> ? If yes we might be able to compare for differences to explain the
>> variation. I do have the logs from the poudriere build attempts
>> in both contexts ( native and cross-build with /nxb-bin/. . . ).
>>=20
>> It might be possible that my -mcpu use mixed with -O is part of
>> what is required to have the problem. (Only difference?)
>>=20
>> It looks to be a long time (days) before the armv7 poudriere run
>> will complete. So testing alternatives in that environment is
>> delayed. For now comparing commands in log files is all I've got
>> to work with initially (if we can). Next would be to look at the
>> .S files.
>>=20
>>=20
>> My failing-context's commands:
>> (The 3 sources are .S files. The -o .libs/*.o commands do list -fPIC =
and -DPIC
>> but I'm not sure how those would apply to .S files.)
>>=20
>> --- pixman-arm-simd-asm-scaled.lo ---
>> libtool: compile:  cc -DHAVE_CONFIG_H -I. -I.. -mcpu=3Dcortex-a7 -O =
-pipe -mcpu=3Dcortex-a7 -g -fno-strict-aliasing -no-integrated-as -MT =
pixman-arm-simd-asm-scaled.lo -MD -MP -MF =
.deps/pixman-arm-simd-asm-scaled.Tpo -c pixman-arm-simd-asm-scaled.S  =
-fPIC -DPIC -o .libs/pixman-arm-simd-asm-scaled.o
>>=20
>> --- pixman-arm-simd-asm-scaled.lo ---
>> libtool: compile:  cc -DHAVE_CONFIG_H -I. -I.. -mcpu=3Dcortex-a7 -O =
-pipe -mcpu=3Dcortex-a7 -g -fno-strict-aliasing -no-integrated-as -MT =
pixman-arm-simd-asm-scaled.lo -MD -MP -MF =
.deps/pixman-arm-simd-asm-scaled.Tpo -c pixman-arm-simd-asm-scaled.S -o =
pixman-arm-simd-asm-scaled.o >/dev/null 2>&1
>>=20
>> --- libpixman-arm-simd.la ---
>> libtool: link: ar cru .libs/libpixman-arm-simd.a =
.libs/pixman-arm-simd.o .libs/pixman-arm-simd-asm.o =
.libs/pixman-arm-simd-asm-scaled.o=20
>> libtool: link: ranlib .libs/libpixman-arm-simd.a
>> libtool: link: ( cd ".libs" && rm -f "libpixman-arm-simd.la" && ln -s =
"../libpixman-arm-simd.la" "libpixman-arm-simd.la" )
>>=20
>> --- pixman-arm-neon-asm.lo ---
>> libtool: compile:  cc -DHAVE_CONFIG_H -I. -I.. -mcpu=3Dcortex-a7 -O =
-pipe -mcpu=3Dcortex-a7 -g -fno-strict-aliasing -no-integrated-as -MT =
pixman-arm-neon-asm.lo -MD -MP -MF .deps/pixman-arm-neon-asm.Tpo -c =
pixman-arm-neon-asm.S  -fPIC -DPIC -o .libs/pixman-arm-neon-asm.o
>>=20
>> --- pixman-arm-neon-asm.lo ---
>> libtool: compile:  cc -DHAVE_CONFIG_H -I. -I.. -mcpu=3Dcortex-a7 -O =
-pipe -mcpu=3Dcortex-a7 -g -fno-strict-aliasing -no-integrated-as -MT =
pixman-arm-neon-asm.lo -MD -MP -MF .deps/pixman-arm-neon-asm.Tpo -c =
pixman-arm-neon-asm.S -o pixman-arm-neon-asm.o >/dev/null 2>&1
>>=20
>> --- libpixman-arm-neon.la ---
>> /bin/sh ../libtool  --tag=3DCC    --mode=3Dlink cc  -O -pipe =
-mcpu=3Dcortex-a7  -g -fno-strict-aliasing  -Wall =
-Wdeclaration-after-statement -Wno-unused-local-typedefs =
-fno-strict-aliasing -fvisibility=3Dhidden    -o libpixman-arm-neon.la  =
pixman-arm-neon.lo pixman-arm-neon-asm.lo  =
pixman-arm-neon-asm-bilinear.lo  -lm
>> libtool: link: ar cru .libs/libpixman-arm-neon.a =
.libs/pixman-arm-neon.o .libs/pixman-arm-neon-asm.o =
.libs/pixman-arm-neon-asm-bilinear.o=20
>> libtool: link: ranlib .libs/libpixman-arm-neon.a
>> libtool: link: ( cd ".libs" && rm -f "libpixman-arm-neon.la" && ln -s =
"../libpixman-arm-neon.la" "libpixman-arm-neon.la" )
>>=20
>>=20
>> --- pixman-arm-neon-asm-bilinear.lo ---
>> . . .
>>=20
>> libtool: compile:  cc -DHAVE_CONFIG_H -I. -I.. -mcpu=3Dcortex-a7 -O =
-pipe -mcpu=3Dcortex-a7 -g -fno-strict-aliasing -no-integrated-as -MT =
pixman-arm-neon-asm-bilinear.lo -MD -MP -MF =
.deps/pixman-arm-neon-asm-bilinear.Tpo -c pixman-arm-neon-asm-bilinear.S =
 -fPIC -DPIC -o .libs/pixman-arm-neon-asm-bilinear.o
>>=20
>> libtool: compile:  cc -DHAVE_CONFIG_H -I. -I.. -mcpu=3Dcortex-a7 -O =
-pipe -mcpu=3Dcortex-a7 -g -fno-strict-aliasing -no-integrated-as -MT =
pixman-arm-neon-asm-bilinear.lo -MD -MP -MF =
.deps/pixman-arm-neon-asm-bilinear.Tpo -c pixman-arm-neon-asm-bilinear.S =
-o pixman-arm-neon-asm-bilinear.o >/dev/null 2>&1
>>=20
>> --- libpixman-arm-neon.la ---
>> /bin/sh ../libtool  --tag=3DCC    --mode=3Dlink cc  -O -pipe =
-mcpu=3Dcortex-a7  -g -fno-strict-aliasing  -Wall =
-Wdeclaration-after-statement -Wno-unused-local-typedefs =
-fno-strict-aliasing -fvisibility=3Dhidden    -o libpixman-arm-neon.la  =
pixman-arm-neon.lo pixman-arm-neon-asm.lo  =
pixman-arm-neon-asm-bilinear.lo  -lm
>> libtool: link: ar cru .libs/libpixman-arm-neon.a =
.libs/pixman-arm-neon.o .libs/pixman-arm-neon-asm.o =
.libs/pixman-arm-neon-asm-bilinear.o=20
>> libtool: link: ranlib .libs/libpixman-arm-neon.a
>> libtool: link: ( cd ".libs" && rm -f "libpixman-arm-neon.la" && ln -s =
"../libpixman-arm-neon.la" "libpixman-arm-neon.la" )
>>=20
>>=20
>> --- libpixman-1.la ---
>> /bin/sh ../libtool  --tag=3DCC    --mode=3Dlink cc   -O -pipe =
-mcpu=3Dcortex-a7  -g -fno-strict-aliasing  -Wall =
-Wdeclaration-after-statement -Wno-unused-local-typedefs =
-fno-strict-aliasing -fvisibility=3Dhid
>> den -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  =
pixm
>> an-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=20
>> 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-r
>> egion32.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/pixma
>> n-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  =
-O -mcpu=3Dcortex-a7 -g -pthread   -pthread -Wl,-soname =
-Wl,libpixman-1.so.0 -o .libs/libpixman-1.so.0.34.0
>=20
> First some identification of tool versions . . .
>=20
> # cc -v
> FreeBSD clang version 6.0.1 (tags/RELEASE_601/final 335540) (based on =
LLVM 6.0.1)
> Target: armv7-unknown-freebsd13.0-gnueabihf
> Thread model: posix
> InstalledDir: /usr/bin
>=20
> # ld -v
> LLD 6.0.1 (FreeBSD 335540-1300000) (compatible with GNU linkers)
>=20
> A context difference could be armv6 vs. armv7?
>=20
>     WITH_LLD_IS_LD
>             Set to use LLVM's LLD as the system linker, instead of GNU
>             binutils ld.
>=20
>             This is a default setting on amd64/amd64, arm/armv7 and
>             arm64/aarch64.
>=20
> My context is the arm/armv7 context, using system clang/llvm =
facilities.
>=20
>=20
> Then pixman specifics . . .
>=20
> The only *arm*.S files are (from failing context's tar archive):
>=20
> # ls -lTd =
/wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0/pixman/*arm*.S
> -rw-r--r--  1 root  wheel   45186 Sep 26 06:45:08 2015 =
/wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0/pixman/pixman-arm-neon-as=
m-bilinear.S
> -rw-r--r--  1 root  wheel  128849 Sep 26 06:45:08 2015 =
/wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0/pixman/pixman-arm-neon-as=
m.S
> -rw-r--r--  1 root  wheel    4653 Sep 26 06:45:08 2015 =
/wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0/pixman/pixman-arm-simd-as=
m-scaled.S
> -rw-r--r--  1 root  wheel   43259 Dec 27 12:37:37 2015 =
/wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0/pixman/pixman-arm-simd-as=
m.S
>=20
> Expanding the tar file that the failure produced and looking . . .
> (What, if anything, is different for your context?)
>=20
> # objdump -x =
/wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0/pixman/.libs/pixman-arm-s=
imd-asm-scaled.o | less
>=20
> =
/wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0/pixman/.libs/pixman-arm-s=
imd-asm-scaled.o:     file format elf32-littlearm
> =
/wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0/pixman/.libs/pixman-arm-s=
imd-asm-scaled.o
> architecture: armv4, flags 0x00000011:
> HAS_RELOC, HAS_SYMS
> start address 0x00000000
> private flags =3D 5000000: [Version5 EABI]
>=20
> Sections:
> Idx Name          Size      VMA       LMA       File off  Algn
>  0 .text         00000378  00000000  00000000  00000034  2**2
>                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
>  1 .data         00000000  00000000  00000000  000003ac  2**0
>                  CONTENTS, ALLOC, LOAD, DATA
>  2 .bss          00000000  00000000  00000000  000003ac  2**0
>                  ALLOC
>  3 .ARM.attributes 0000001b  00000000  00000000  000003ac  2**0
>                  CONTENTS, READONLY
> SYMBOL TABLE:
> 00000000 l    d  .text  00000000 .text
> 00000000 l    d  .data  00000000 .data
> 00000000 l    d  .bss   00000000 .bss
> 00000000 l    d  .ARM.attributes        00000000 .ARM.attributes
> 00000000 g     F .text  00000000 .hidden =
pixman_scaled_nearest_scanline_0565_0565_SRC_asm_armv6
> 000001bc g     F .text  00000000 .hidden =
pixman_scaled_nearest_scanline_8888_8888_SRC_asm_armv6
>=20
>=20
> RELOCATION RECORDS FOR [.text]:
> OFFSET   TYPE              VALUE=20
> 000001b8 R_ARM_V4BX        *ABS*
> 00000374 R_ARM_V4BX        *ABS*
>=20
> As an example of the assembler for around that 0x4f0 R_ARM_V4BX:
>=20
> 000001a8 =
<pixman_scaled_nearest_scanline_0565_0565_SRC_asm_armv6+0x1a8> tst     =
r0, #1, 0
> 000001ac =
<pixman_scaled_nearest_scanline_0565_0565_SRC_asm_armv6+0x1ac> ldrhne  =
r4, [r2, r4]
> 000001b0 =
<pixman_scaled_nearest_scanline_0565_0565_SRC_asm_armv6+0x1b0> strhne  =
r4, [r1]
> 000001b4 =
<pixman_scaled_nearest_scanline_0565_0565_SRC_asm_armv6+0x1b4> pop     =
{r4, r5, r6, r7, r8, sl}
> 000001b8 =
<pixman_scaled_nearest_scanline_0565_0565_SRC_asm_armv6+0x1b8> bx      =
lr
> 000001bc <pixman_scaled_nearest_scanline_8888_8888_SRC_asm_armv6> ldr  =
 ip, [sp]
>=20
> The R_ARM_V4BX *ABS* seems to be for replacing the "bx lr" for
> arm vintages that did not have bx. Otherwise supposedly ignored.
>=20
>=20
> # objdump -x =
/wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0/pixman/.libs/pixman-arm-n=
eon-asm-bilinear.o | less
>=20
> =
/wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0/pixman/.libs/pixman-arm-n=
eon-asm-bilinear.o:     file format elf32-littlearm
> =
/wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0/pixman/.libs/pixman-arm-n=
eon-asm-bilinear.o
> architecture: armv4, flags 0x00000011:
> HAS_RELOC, HAS_SYMS
> start address 0x00000000
> private flags =3D 5000000: [Version5 EABI]
>=20
> Sections:
> Idx Name          Size      VMA       LMA       File off  Algn
>  0 .text         00002bfc  00000000  00000000  00000034  2**2
>                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
>  1 .data         00000000  00000000  00000000  00002c30  2**0
>                  CONTENTS, ALLOC, LOAD, DATA
>  2 .bss          00000000  00000000  00000000  00002c30  2**0
>                  ALLOC
>  3 .ARM.attributes 0000001a  00000000  00000000  00002c30  2**0
>                  CONTENTS, READONLY
> SYMBOL TABLE:
> 00000000 l    d  .text  00000000 .text
> 00000000 l    d  .data  00000000 .data
> 00000000 l    d  .bss   00000000 .bss
> 00000000 l       *ABS*  00000000 FLAG_DST_WRITEONLY
> 00000001 l       *ABS*  00000000 FLAG_DST_READWRITE
> 00000002 l       *ABS*  00000000 FLAG_DEINTERLEAVE_32BPP
> 00000028 l       *ABS*  00000000 ARGS_STACK_OFFSET
> 00000000 l       *ABS*  00000000 PREFETCH_TYPE_NONE
> 00000001 l       *ABS*  00000000 PREFETCH_TYPE_SIMPLE
> 00000002 l       *ABS*  00000000 PREFETCH_TYPE_ADVANCED
> 00000001 l       *ABS*  00000000 BILINEAR_FLAG_USE_MASK
> 00000002 l       *ABS*  00000000 BILINEAR_FLAG_USE_ALL_NEON_REGS
> 0000001c l       *ABS*  00000000 prefetch_offset
> 00000000 l    d  .ARM.attributes        00000000 .ARM.attributes
> 00000000 g     F .text  00000000 .hidden =
pixman_scaled_bilinear_scanline_8888_8_8888_SRC_asm_neon
> 000004f4 g     F .text  00000000 .hidden =
pixman_scaled_bilinear_scanline_8888_8_0565_SRC_asm_neon
> 00000ac0 g     F .text  00000000 .hidden =
pixman_scaled_bilinear_scanline_0565_8_x888_SRC_asm_neon
> 000010e4 g     F .text  00000000 .hidden =
pixman_scaled_bilinear_scanline_0565_8_0565_SRC_asm_neon
> 000017e0 g     F .text  00000000 .hidden =
pixman_scaled_bilinear_scanline_8888_8888_OVER_asm_neon
> 00001cfc g     F .text  00000000 .hidden =
pixman_scaled_bilinear_scanline_8888_8_8888_OVER_asm_neon
> 000022ec g     F .text  00000000 .hidden =
pixman_scaled_bilinear_scanline_8888_8888_ADD_asm_neon
> 000026c0 g     F .text  00000000 .hidden =
pixman_scaled_bilinear_scanline_8888_8_8888_ADD_asm_neon
>=20
>=20
> RELOCATION RECORDS FOR [.text]:
> OFFSET   TYPE              VALUE=20
> 000004f0 R_ARM_V4BX        *ABS*
> 00000abc R_ARM_V4BX        *ABS*
> 000010e0 R_ARM_V4BX        *ABS*
> 000017dc R_ARM_V4BX        *ABS*
> 00001cf8 R_ARM_V4BX        *ABS*
> 000022e8 R_ARM_V4BX        *ABS*
> 000026bc R_ARM_V4BX        *ABS*
> 00002bf8 R_ARM_V4BX        *ABS*
>=20
> As another example of the assembler for around that 0x4f0 R_ARM_V4BX:
>=20
> 000004e0 =
<pixman_scaled_bilinear_scanline_8888_8_8888_SRC_asm_neon+0x4e0> vuzp.8  =
      d0, d1
> 000004e4 =
<pixman_scaled_bilinear_scanline_8888_8_8888_SRC_asm_neon+0x4e4> vuzp.8  =
      d0, d1
> 000004e8 =
<pixman_scaled_bilinear_scanline_8888_8_8888_SRC_asm_neon+0x4e8> vst1.32 =
      {d0[0]}, [r0 :32]!
> 000004ec =
<pixman_scaled_bilinear_scanline_8888_8_8888_SRC_asm_neon+0x4ec> pop   =
{r4, r5, r6, r7, r8, r9, sl, ip}
> 000004f0 =
<pixman_scaled_bilinear_scanline_8888_8_8888_SRC_asm_neon+0x4f0> bx    =
lr
> 000004f4 <pixman_scaled_bilinear_scanline_8888_8_0565_SRC_asm_neon> =
mov ip, sp
>=20
>=20
>=20
> # objdump -x =
/wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0/pixman/.libs/pixman-arm-n=
eon-asm.o | less
>=20
> =
/wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0/pixman/.libs/pixman-arm-n=
eon-asm.o:     file format elf32-littlearm
> =
/wrkdirs/usr/ports/x11/pixman/work/pixman-0.34.0/pixman/.libs/pixman-arm-n=
eon-asm.o
> architecture: armv4, flags 0x00000011:
> HAS_RELOC, HAS_SYMS
> start address 0x00000000
> private flags =3D 5000000: [Version5 EABI]
>=20
> Sections:
> Idx Name          Size      VMA       LMA       File off  Algn
>  0 .text         0001180c  00000000  00000000  00000034  2**2
>                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
>  1 .data         00000000  00000000  00000000  00011840  2**0
>                  CONTENTS, ALLOC, LOAD, DATA
>  2 .bss          00000000  00000000  00000000  00011840  2**0
>                  ALLOC
>  3 .ARM.attributes 0000001a  00000000  00000000  00011840  2**0
>                  CONTENTS, READONLY
> SYMBOL TABLE:
> 00000000 l    d  .text  00000000 .text
> 00000000 l    d  .data  00000000 .data
> 00000000 l    d  .bss   00000000 .bss
> 00000000 l       *ABS*  00000000 FLAG_DST_WRITEONLY
> 00000001 l       *ABS*  00000000 FLAG_DST_READWRITE
> 00000002 l       *ABS*  00000000 FLAG_DEINTERLEAVE_32BPP
> 00000028 l       *ABS*  00000000 ARGS_STACK_OFFSET
> 00000000 l       *ABS*  00000000 PREFETCH_TYPE_NONE
> 00000001 l       *ABS*  00000000 PREFETCH_TYPE_SIMPLE
> 00000002 l       *ABS*  00000000 PREFETCH_TYPE_ADVANCED
> 00000001 l       *ABS*  00000000 RESPECT_STRICT_ALIGNMENT
> 00000002 l       *ABS*  00000000 PREFETCH_TYPE_DEFAULT
> 00000040 l       *ABS*  00000000 PREFETCH_DISTANCE_SIMPLE
> 00000000 l       *ABS*  00000000 PREFETCH_TYPE_CURRENT
> 00000010 l       *ABS*  00000000 src_bpp
> 00000008 l       *ABS*  00000000 mask_bpp
> 00000010 l       *ABS*  00000000 dst_w_bpp
> 00000008 l       *ABS*  00000000 pixblock_size
> 0000001c l       *ABS*  00000000 dst_w_basereg
> 0000000a l       *ABS*  00000000 dst_r_basereg
> 00000008 l       *ABS*  00000000 src_basereg
> 0000000f l       *ABS*  00000000 mask_basereg
> 00000000 l       *ABS*  00000000 regs_shortage
> ffffffff l       *ABS*  00000000 mask_bpp_shift
> 00000000 l       *ABS*  00000000 src_bpp_shift
> 00000002 l       *ABS*  00000000 dst_bpp_shift
> 00000010 l       *ABS*  00000000 dst_r_bpp
> 00000000 l       *ABS*  00000000 DEINTERLEAVE_32BPP_ENABLED
> 00000000 l       *ABS*  00000000 BILINEAR_FLAG_UNROLL_4
> 00000001 l       *ABS*  00000000 BILINEAR_FLAG_UNROLL_8
> 00000002 l       *ABS*  00000000 BILINEAR_FLAG_USE_ALL_NEON_REGS
> 00000001 l       *ABS*  00000000 =
have_bilinear_interpolate_four_pixels_8888_8888
> 00000001 l       *ABS*  00000000 =
have_bilinear_interpolate_eight_pixels_8888_0565
> 00000000 l    d  .ARM.attributes        00000000 .ARM.attributes
> 00000000 g     F .text  00000000 .hidden =
pixman_composite_over_8888_0565_asm_neon
> 00000510 g     F .text  00000000 .hidden =
pixman_composite_over_n_0565_asm_neon
> 0000098c g     F .text  00000000 .hidden =
pixman_composite_src_8888_0565_asm_neon
> 00000c9c g     F .text  00000000 .hidden =
pixman_composite_src_0565_8888_asm_neon
> 00000fcc g     F .text  00000000 .hidden =
pixman_composite_add_8_8_asm_neon
> 000013dc g     F .text  00000000 .hidden =
pixman_composite_add_8888_8888_asm_neon
> 0000169c g     F .text  00000000 .hidden =
pixman_composite_scanline_add_asm_neon
> 00001818 g     F .text  00000000 .hidden =
pixman_composite_scanline_out_reverse_asm_neon
> 00001b00 g     F .text  00000000 .hidden =
pixman_composite_over_8888_8888_asm_neon
> 00001f88 g     F .text  00000000 .hidden =
pixman_composite_scanline_over_asm_neon
> 00002298 g     F .text  00000000 .hidden =
pixman_composite_over_n_8888_asm_neon
> 000026a0 g     F .text  00000000 .hidden =
pixman_composite_over_reverse_n_8888_asm_neon
> 00002aa8 g     F .text  00000000 .hidden =
pixman_composite_over_8888_8_0565_asm_neon
> 000031a0 g     F .text  00000000 .hidden =
pixman_composite_over_n_8_0565_asm_neon
> 000037f4 g     F .text  00000000 .hidden =
pixman_composite_over_8888_n_0565_asm_neon
> 00003e3c g     F .text  00000000 .hidden =
pixman_composite_src_0565_0565_asm_neon
> 000040f8 g     F .text  00000000 .hidden =
pixman_composite_src_n_8_asm_neon
> 00004318 g     F .text  00000000 .hidden =
pixman_composite_src_n_0565_asm_neon
> 000044cc g     F .text  00000000 .hidden =
pixman_composite_src_n_8888_asm_neon
> 0000462c g     F .text  00000000 .hidden =
pixman_composite_src_8888_8888_asm_neon
> 00004878 g     F .text  00000000 .hidden =
pixman_composite_src_x888_8888_asm_neon
> 00004afc g     F .text  00000000 .hidden =
pixman_composite_src_n_8_8888_asm_neon
> 00004ee0 g     F .text  00000000 .hidden =
pixman_composite_src_n_8_8_asm_neon
> 00005368 g     F .text  00000000 .hidden =
pixman_composite_over_n_8_8888_asm_neon
> 00005934 g     F .text  00000000 .hidden =
pixman_composite_over_n_8_8_asm_neon
> 00005fcc g     F .text  00000000 .hidden =
pixman_composite_over_n_8888_8888_ca_asm_neon
> 000066a0 g     F .text  00000000 .hidden =
pixman_composite_over_n_8888_0565_ca_asm_neon
> 00006d9c g     F .text  00000000 .hidden =
pixman_composite_in_n_8_asm_neon
> 000071f8 g     F .text  00000000 .hidden =
pixman_composite_add_n_8_8_asm_neon
> 00007740 g     F .text  00000000 .hidden =
pixman_composite_add_8_8_8_asm_neon
> 00007d44 g     F .text  00000000 .hidden =
pixman_composite_add_8888_8888_8888_asm_neon
> 00008270 g     F .text  00000000 .hidden =
pixman_composite_scanline_add_mask_asm_neon
> 000085c8 g     F .text  00000000 .hidden =
pixman_composite_add_8888_8_8888_asm_neon
> 00008af4 g     F .text  00000000 .hidden =
pixman_composite_add_n_8_8888_asm_neon
> 00008f7c g     F .text  00000000 .hidden =
pixman_composite_add_8888_n_8888_asm_neon
> 000093f8 g     F .text  00000000 .hidden =
pixman_composite_scanline_out_reverse_mask_asm_neon
> 00009838 g     F .text  00000000 .hidden =
pixman_composite_over_8888_n_8888_asm_neon
> 00009df8 g     F .text  00000000 .hidden =
pixman_composite_over_8888_8888_8888_asm_neon
> 0000a468 g     F .text  00000000 .hidden =
pixman_composite_scanline_over_mask_asm_neon
> 0000a8d0 g     F .text  00000000 .hidden =
pixman_composite_over_8888_8_8888_asm_neon
> 0000af40 g     F .text  00000000 .hidden =
pixman_composite_src_0888_0888_asm_neon
> 0000b0c8 g     F .text  00000000 .hidden =
pixman_composite_src_0888_8888_rev_asm_neon
> 0000b2e8 g     F .text  00000000 .hidden =
pixman_composite_src_0888_0565_rev_asm_neon
> 0000b550 g     F .text  00000000 .hidden =
pixman_composite_src_pixbuf_8888_asm_neon
> 0000b8ec g     F .text  00000000 .hidden =
pixman_composite_src_rpixbuf_8888_asm_neon
> 0000bc88 g     F .text  00000000 .hidden =
pixman_composite_over_0565_8_0565_asm_neon
> 0000c3a4 g     F .text  00000000 .hidden =
pixman_composite_over_0565_n_0565_asm_neon
> 0000ca10 g     F .text  00000000 .hidden =
pixman_composite_add_0565_8_0565_asm_neon
> 0000d03c g     F .text  00000000 .hidden =
pixman_composite_out_reverse_8_0565_asm_neon
> 0000d528 g     F .text  00000000 .hidden =
pixman_composite_out_reverse_8_8888_asm_neon
> 0000d980 g     F .text  00000000 .hidden =
pixman_scaled_nearest_scanline_8888_8888_OVER_asm_neon
> 0000e008 g     F .text  00000000 .hidden =
pixman_scaled_nearest_scanline_8888_0565_OVER_asm_neon
> 0000e6f8 g     F .text  00000000 .hidden =
pixman_scaled_nearest_scanline_8888_0565_SRC_asm_neon
> 0000ec54 g     F .text  00000000 .hidden =
pixman_scaled_nearest_scanline_0565_8888_SRC_asm_neon
> 0000f19c g     F .text  00000000 .hidden =
pixman_scaled_nearest_scanline_8888_8_0565_OVER_asm_neon
> 0000f9e8 g     F .text  00000000 .hidden =
pixman_scaled_nearest_scanline_0565_8_0565_OVER_asm_neon
> 00010220 g     F .text  00000000 .hidden =
pixman_scaled_bilinear_scanline_8888_8888_SRC_asm_neon
> 000105a4 g     F .text  00000000 .hidden =
pixman_scaled_bilinear_scanline_8888_0565_SRC_asm_neon
> 00010dbc g     F .text  00000000 .hidden =
pixman_scaled_bilinear_scanline_0565_x888_SRC_asm_neon
> 00011278 g     F .text  00000000 .hidden =
pixman_scaled_bilinear_scanline_0565_0565_SRC_asm_neon
>=20
>=20
> RELOCATION RECORDS FOR [.text]:
> OFFSET   TYPE              VALUE=20
> 000017ac R_ARM_V4BX        *ABS*
> 00001814 R_ARM_V4BX        *ABS*
> 00001a38 R_ARM_V4BX        *ABS*
> 00001afc R_ARM_V4BX        *ABS*
> 000021c8 R_ARM_V4BX        *ABS*
> 00002294 R_ARM_V4BX        *ABS*
> 000084e0 R_ARM_V4BX        *ABS*
> 000085c4 R_ARM_V4BX        *ABS*
> 00009720 R_ARM_V4BX        *ABS*
> 00009834 R_ARM_V4BX        *ABS*
> 0000a7b0 R_ARM_V4BX        *ABS*
> 0000a8cc R_ARM_V4BX        *ABS*
> 000105a0 R_ARM_V4BX        *ABS*
> 00010db8 R_ARM_V4BX        *ABS*
> 00011274 R_ARM_V4BX        *ABS*
> 00011808 R_ARM_V4BX        *ABS*
>=20
> =46rom this one I show the end of a routine that does not get the
> R_ARM_V4BX *ABS* relocation record:
>=20
> 000004e8 <pixman_composite_over_8888_0565_asm_neon+0x4e8> vst1.16      =
 {d28[1]}, [r2]!
> 000004ec <pixman_composite_over_8888_0565_asm_neon+0x4ec> mov   r0, r7
> 000004f0 <pixman_composite_over_8888_0565_asm_neon+0x4f0> add   r2, =
r2, r3, lsl #1
> 000004f4 <pixman_composite_over_8888_0565_asm_neon+0x4f4> add   r4, =
r4, r5, lsl #2
> 000004f8 <pixman_composite_over_8888_0565_asm_neon+0x4f8> sub   r2, =
r2, r0, lsl #1
> 000004fc <pixman_composite_over_8888_0565_asm_neon+0x4fc> sub   r4, =
r4, r0, lsl #2
> 00000500 <pixman_composite_over_8888_0565_asm_neon+0x500> subs  r1, =
r1, #1, 0
> 00000504 <pixman_composite_over_8888_0565_asm_neon+0x504> mov   r6, r2
> 00000508 <pixman_composite_over_8888_0565_asm_neon+0x508> bge   =
000003ac <pixman_composite_over_8888_0565_asm_neon+0x3ac>
> 0000050c <pixman_composite_over_8888_0565_asm_neon+0x50c> pop   {r4, =
r5, r6, r7, r8, r9, sl, fp, ip, pc}
> 00000510 <pixman_composite_over_n_0565_asm_neon> push   {r4, r5, r6, =
r7, r8, r9, sl, fp, ip, lr}
>=20
> No "bx lr" involved.





=3D=3D=3D
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?F63FB925-C105-480D-8AE0-ED519BF16012>