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

Mark Millard via freebsd-x11 <[email protected]>
Newsgroups gmane.os.freebsd.devel.x11,gmane.os.freebsd.devel.ports
Message-ID <[email protected]>
[Evidence from inside poudriere bulk -j... -i ports-mgmt/pkg .
Use of native /nxb-bin/. . . leads to MACHINE_ARCH being amd64
instead of armv7 or the like. See later supporting material.]

On 2018-Nov-14, at 14:38, Bryan Drewery <[email protected]> wrote:

> On 11/14/18 2:35 PM, Mark Millard wrote:
>> [Looking at package fallout logs: the official armv6 and armv7
>> builds are using -O2 because of MACHINE_ARCH being defined
>> because of qemu-user-static use. (mips too?) The logic in
>> share/mk/sys.mk is not causing -O . An implication
>> is that -O2 for armv6 and armv7 is probably far more tested
>> than people generally expect. The share/mk/sys.mk change
>> goes back to -r319861 2017-Jun-12 . Previously the logic
>> would have caused -O use for armv6 or armv7 in MACHINE_ARCH .]
> 
> r319861 doesn't look related here.

# more /etc/make.conf 
.sinclude "/etc/make.nxb.conf"
USE_PACKAGE_DEPENDS=yes
BATCH=yes
WRKDIRPREFIX=/wrkdirs
PORTSDIR=/usr/ports
PACKAGES=/packages
DISTDIR=/distfiles
FORCE_PACKAGE=yes
PACKAGE_BUILDING=yes
PACKAGE_BUILDING_FLAVORS=yes
MACHINE=arm
MACHINE_ARCH=armv7
ARCH=${MACHINE_ARCH}
#### /usr/local/etc/poudriere.d/make.conf ####
#### /usr/ports/Mk/Scripts/ports_env.sh ####
_CCVERSION_9d218390=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: /nxb-bin/usr/bin
_ALTCCVERSION_9d218390=none
_CXXINTERNAL_9c45a5b1=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: /nxb-bin/usr/bin "/nxb-bin/usr/bin/ld" "--eh-frame-hdr" "-dynamic-linker" "/libexec/ld-elf.so.1" "--hash-style=both" "--enable-new-dtags" "-o" "a.out" "/usr/lib/crt1.o" "/usr/lib/crti.o" "/usr/lib/crtbegin.o" "-L/usr/lib" "/dev/null" "-lc++" "-lm" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "/usr/lib/crtend.o" "/usr/lib/crtn.o"
CC_OUTPUT_9d218390_58173849=yes
CC_OUTPUT_9d218390_9bdba57c=yes
CC_OUTPUT_9d218390_6a4fe7f5=yes
CC_OUTPUT_9d218390_6bcac02b=yes
CC_OUTPUT_9d218390_67d20829=yes
CC_OUTPUT_9d218390_bfa62e83=yes
CC_OUTPUT_9d218390_f0b4d593=yes
CC_OUTPUT_9d218390_308abb44=yes
CC_OUTPUT_9d218390_f00456e5=yes
CC_OUTPUT_9d218390_65ad290d=yes
CC_OUTPUT_9d218390_f2776b26=yes
CC_OUTPUT_9d218390_b2657cc3=yes
CC_OUTPUT_9d218390_380987f7=yes
CC_OUTPUT_9d218390_160933ec=yes
CC_OUTPUT_9d218390_fb62803b=yes
_OBJC_CCVERSION_9d218390=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: /nxb-bin/usr/bin
_OBJC_ALTCCVERSION_9d218390=none
ARCH=armv7
OPSYS=FreeBSD
_OSRELEASE=13.0-CURRENT
OSREL=13.0
OSVERSION=1300003
PYTHONBASE=/usr/local
_SMP_CPUS=32
CONFIGURE_MAX_CMD_LEN=262144
HAVE_PORTS_ENV=1
#### Misc Poudriere ####
GID=0
UID=0
PACKAGES=/packages

# more /etc/src.conf
/etc/src.conf: No such file or directory

# more Makefile
all:
        echo ${MACHINE_ARCH}
        echo ${MACHINE_CPUARCH}
        echo ${CFLAGS}

# make
echo armv7
armv7
echo arm
arm
echo -O2 -pipe
-O2 -pipe

# grep -r "\-O2" /usr/src/share/mk/
/usr/src/share/mk/sys.mk:CFLAGS		?=	-O2 -pipe

# grep -r "\-pipe" /usr/src/share/mk/
/usr/src/share/mk/sys.mk:CFLAGS		?=	-O -pipe
/usr/src/share/mk/sys.mk:CFLAGS		?=	-O2 -pipe

Those lines come from:

.if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "mips"
CFLAGS          ?=      -O -pipe
.else
CFLAGS          ?=      -O2 -pipe
.endif

So I used:

# make -dA 2>2mmjnk.txt 1>1mmjnk.txt

and looked for the first -pipe in 2mmjnk.txt. (It is also
the first -O , in this case -O2 .)

. . .
Got 'C/mips(n32|64)?(el)?(hf)?/mips/:C/arm(v[67])?(eb)?/arm/:C/powerpc(64|spe)/powerpc/:C/riscv64(sf)?/riscv/' from '${__TO_CPUARCH}'}
Applying[MACHINE_ARCH] :C to "amd64"
Modifier pattern: "mips(n32|64)?(el)?(hf)?"
Modifier pattern: "mips"
Result[MACHINE_ARCH] of :C is "amd64"
Applying[MACHINE_ARCH] :C to "amd64"
Modifier pattern: "arm(v[67])?(eb)?"
Modifier pattern: "arm"
Result[MACHINE_ARCH] of :C is "amd64"
Applying[MACHINE_ARCH] :C to "amd64"
Modifier pattern: "powerpc(64|spe)"
Modifier pattern: "powerpc"
Result[MACHINE_ARCH] of :C is "amd64"
Applying[MACHINE_ARCH] :C to "amd64"
Modifier pattern: "riscv64(sf)?"
Modifier pattern: "riscv"
Result[MACHINE_ARCH] of :C is "amd64"
lhs = "amd64", rhs = "arm", op = ==
Got 'C/mips(n32|64)?(el)?(hf)?/mips/:C/arm(v[67])?(eb)?/arm/:C/powerpc(64|spe)/powerpc/:C/riscv64(sf)?/riscv/' from '${__TO_CPUARCH}'}
Applying[MACHINE_ARCH] :C to "amd64"
Modifier pattern: "mips(n32|64)?(el)?(hf)?"
Modifier pattern: "mips"
Result[MACHINE_ARCH] of :C is "amd64"
Applying[MACHINE_ARCH] :C to "amd64"
Modifier pattern: "arm(v[67])?(eb)?"
Modifier pattern: "arm"
Result[MACHINE_ARCH] of :C is "amd64"
Applying[MACHINE_ARCH] :C to "amd64"
Modifier pattern: "powerpc(64|spe)"
Modifier pattern: "powerpc"
Result[MACHINE_ARCH] of :C is "amd64"
Applying[MACHINE_ARCH] :C to "amd64"
Modifier pattern: "riscv64(sf)?"
Modifier pattern: "riscv"
Result[MACHINE_ARCH] of :C is "amd64"
lhs = "amd64", rhs = "mips", op = ==
ParseReadLine (172): 'CFLAGS            ?=      -O2 -pipe'
Global:CFLAGS = -O2 -pipe

It looks like the poudriere builds based on /nxb-bin/. . .
See the amd64 MACHINE_ARCH in the context that shows:

# uname -apKU
FreeBSD FBSDamd64TR 13.0-CURRENT FreeBSD 13.0-CURRENT arm armv7 1300003 1300003





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

_______________________________________________
[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.