Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 31 Oct 2015 15:37:18 -0700
From:      NGie Cooper <yaneurabeya@gmail.com>
To:        "Simon J. Gerraty" <sjg@juniper.net>
Cc:        Bryan Drewery <bdrewery@freebsd.org>, Ed Maste <emaste@freebsd.org>, Mark Johnston <markj@freebsd.org>, FreeBSD CURRENT <current@freebsd.org>
Subject:   Re: Compilation failure with WITH_DTRACE_TESTS on mips/mips and powerpc/powerpc; it's trying to compile a host object on mips/powerpc because MAKEOBJDIRPREFIX is incorrect
Message-ID:  <5AEBE041-4AAC-49F4-BE34-C92EBD736092@gmail.com>
In-Reply-To: <3957F6B6-275D-4A63-8406-A5AAECF3F131@gmail.com>
References:  <653F31AA-982B-4026-BEF5-F608BCFFFD3A@gmail.com> <6585.1446248620@chaos> <9192D4AA-FCF1-4841-89FD-A4E5D93C6941@gmail.com> <3957F6B6-275D-4A63-8406-A5AAECF3F131@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

> On Oct 31, 2015, at 14:37, NGie Cooper <yaneurabeya@gmail.com> wrote:
>=20
>=20
>> On Oct 30, 2015, at 23:51, NGie Cooper <yaneurabeya@gmail.com> wrote:
>>=20
>>=20
>>> On Oct 30, 2015, at 16:43, Simon J. Gerraty <sjg@juniper.net> wrote:
>>>=20
>>> NGie Cooper <yaneurabeya@gmail.com> wrote:
>>>> 	I tried doing buildworld on powerpc/powerpc with =
-DWITH_DTRACE_TESTS and I ran into this linker issue below. I have no =
idea (yet) why it=E2=80=99s trying to compile an x64 object when I =
specify powerpc/powerpc =E2=80=94 and more importantly, why is the =
object not being put in obj.powerpc?
>>>> 	I ran into the same issue on ref11-amd64.freebsd.org when I ran =
=E2=80=9Cmake tinderbox".
>>>=20
>>> Is it possible that the file is left over from a previous build (of =
amd64?)
>>>=20
>>> Does your log show it being built?
>>>=20
>>>=20
>>>> dtrace -C -x nolibs -G -o usdt.o -s =
/usr/src/svn/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/usdt=
.d tst.usdt.o
>>>> dtrace: failed to link script =
/usr/src/svn/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/usdt=
.d: incorrect ELF machine type for object file: tst.usdt.o
>>>> *** Error code 1
>>>> $ find /usr/obj/usr/src/svn/ -name tst.usdt.o
>>>> =
/usr/obj/usr/src/svn/cddl/usr.sbin/dtrace/tests/common/json/tst.usdt.o
>>>> $ file =
/usr/obj/usr/src/svn/cddl/usr.sbin/dtrace/tests/common/json/tst.usdt.o
>>>> =
/usr/obj/usr/src/svn/cddl/usr.sbin/dtrace/tests/common/json/tst.usdt.o: =
ELF 64-bit LSB relocatable, x86-64, version 1 (FreeBSD), not stripped
>>=20
>> Still running into issues on ref11-amd64:
>>=20
>> cc1: error: unrecognized command line option "-m64"
>> dtrace: failed to compile script =
/scratch/tmp/ngie/svn/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/=
json/usdt.d: Preprocessor failed to process input program
>> --- usdt.h ---
>> *** [usdt.h] Error code 1
>>=20
>> Let=E2=80=99s see what happens if I use make buildenv
>=20
> =E2=80=A6
>=20
> Deleting the lines that pass -m32/-m64 gets me back to the same point =
I was at before:
>=20
> dtrace: failed to link script =
/scratch/tmp/ngie/svn/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/=
json/usdt.d: incorrect ELF machine type for object file: tst.usdt.o
> --- usdt.o ---
> *** [usdt.o] Error code 1
>=20
> I=E2=80=99ll need to check .PATH, but I think it=E2=80=99s picking up =
the host copy by accident:
>=20
> $ find ../obj/ -name  tst.usdt.o | xargs file
> =
../obj/arm.armv6hf/scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/common/=
json/tst.usdt.o:       ELF 32-bit LSB relocatable, ARM, EABI5 version 1 =
(FreeBSD), not stripped
> =
../obj/arm.arm/scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/common/json=
/tst.usdt.o:           ELF 32-bit LSB relocatable, ARM, EABI5 version 1 =
(FreeBSD), not stripped
> =
../obj/arm.armeb/scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/common/js=
on/tst.usdt.o:         ELF 32-bit MSB relocatable, ARM, EABI5 version 1 =
(FreeBSD), not stripped
> =
../obj/powerpc.powerpc/scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/com=
mon/json/tst.usdt.o:   ELF 32-bit MSB relocatable, PowerPC or cisco =
4500, version 1 (FreeBSD), not stripped
> =
../obj/arm.armv6/scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/common/js=
on/tst.usdt.o:         ELF 32-bit LSB relocatable, ARM, EABI5 version 1 =
(FreeBSD), not stripped
> =
../obj/scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/common/json/tst.usd=
t.o:                   ELF 64-bit LSB relocatable, x86-64, version 1 =
(FreeBSD), not stripped
> =
../obj/i386.i386/scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/common/js=
on/tst.usdt.o:         ELF 32-bit LSB relocatable, Intel 80386, version =
1 (FreeBSD), not stripped
> =
../obj/pc98.i386/scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/common/js=
on/tst.usdt.o:         ELF 32-bit LSB relocatable, Intel 80386, version =
1 (FreeBSD), not stripped
> =
../obj/powerpc.powerpc64/scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/c=
ommon/json/tst.usdt.o: ELF 64-bit MSB relocatable, 64-bit PowerPC or =
cisco 7500, version 1 (FreeBSD), not stripped
> =
../obj/arm64.aarch64/scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/commo=
n/json/tst.usdt.o:     ELF 64-bit LSB relocatable, ARM aarch64, version =
1 (FreeBSD), not stripped

And here=E2=80=99s the real issue =E2=80=94 .PATH is completely broken =
when TARGET/TARGET_ARCH are specified as explicit values:

$ env MAKEOBJDIRPREFIX=3D/scratch/tmp/ngie/obj/ make buildenv =
TARGET=3Dpowerpc TARGET_ARCH=3Dpowerpc
Entering world for powerpc:powerpc
$ cd cddl/usr.sbin/dtrace/tests/common/json
$ make -V.OBJDIR
=
/scratch/tmp/ngie/obj//powerpc.powerpc/scratch/tmp/ngie/svn/cddl/usr.sbin/=
dtrace/tests/common/json
$ make -VMAKEOBJDIRPREFIX
/scratch/tmp/ngie/obj//powerpc.powerpc
$ make depend
(cd /scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/common/json &&  =
DEPENDFILE=3D.depend.tst.usdt.exe  NO_SUBDIR=3D1 make -f =
/scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/common/json/Makefile =
_RECURSING_PROGS=3D  PROG=3Dtst.usdt.exe  depend)
$ make all
(cd /scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/common/json &&  =
DEPENDFILE=3D.depend.tst.usdt.exe  NO_SUBDIR=3D1 make -f =
/scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/common/json/Makefile =
_RECURSING_PROGS=3D  PROG=3Dtst.usdt.exe )
dtrace -C -x nolibs -G -o usdt.o -s =
/scratch/tmp/ngie/svn/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/=
json/usdt.d tst.usdt.o
dtrace: failed to link script =
/scratch/tmp/ngie/svn/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/=
json/usdt.d: incorrect ELF machine type for object file: tst.usdt.o
*** Error code 1

Stop.
make[3]: stopped in =
/scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/common/json
*** Error code 1

Stop.
make[2]: stopped in =
/scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/common/json
$ make -V.PATH
. /scratch/tmp/ngie/svn/cddl/usr.sbin/dtrace/tests/common/json =
/scratch/tmp/ngie/svn/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/=
json

Something seems broken with cross-building via `make tinderbox`/`make =
buildworld`=E2=80=A6=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5AEBE041-4AAC-49F4-BE34-C92EBD736092>