Date: Fri, 30 Oct 2015 23:51:00 -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: <9192D4AA-FCF1-4841-89FD-A4E5D93C6941@gmail.com> In-Reply-To: <6585.1446248620@chaos> References: <653F31AA-982B-4026-BEF5-F608BCFFFD3A@gmail.com> <6585.1446248620@chaos>
next in thread | previous in thread | raw e-mail | index | archive | help
> 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
Still running into issues on ref11-amd64:
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
Let=E2=80=99s see what happens if I use make buildenv
$ env MAKEOBJDIRPREFIX=3D/scratch/tmp/$USER/obj make buildenv =
TARGET=3Dmips TARGET_ARCH=3Dmips
Entering world for mips:mips
$ make -VMAKEOBJDIRPREFIX
/scratch/tmp/ngie/obj/mips.mips
$ which dtrace
/usr/sbin/dtrace
Uh=E2=80=A6 yeah=E2=80=A6 running the copy from the build host is no =
bueno. So, that root causes that issue. I=E2=80=99ll file a bug for that =
(dtrace needs to be built as a bootstrap/cross tool). The -m64 issue is =
because it=E2=80=99s compiled for amd64 and is running arguments that =
are only supposed to =E2=80=9Cwork=E2=80=9D for x86 platforms (in =
reality, there=E2=80=99s also no reason why -m32/-m64 need to be passed =
to ${CC}/${CPP}):
1256 #ifdef illumos
1257 #ifdef __x86
1258 /*
1259 * On x86 systems, __i386 is defined for <sys/isa_defs.h> =
for 32-bit
1260 * compiles and __amd64 is defined for 64-bit compiles. =
Unlike SPARC,
1261 * they are defined exclusive of one another (see PSARC =
2004/619).
1262 */
1263 if (dtp->dt_conf.dtc_ctfmodel =3D=3D CTF_MODEL_LP64) {
1264 if (dt_cpp_add_arg(dtp, "-D__amd64") =3D=3D NULL)
1265 return (set_open_errno(dtp, errp, =
EDT_NOMEM));
1266 } else {
1267 if (dt_cpp_add_arg(dtp, "-D__i386") =3D=3D NULL)
1268 return (set_open_errno(dtp, errp, =
EDT_NOMEM));
1269 }
1270 #endif
1271 #else
1272 #if defined(__amd64__) || defined(__i386__)
1273 if (dtp->dt_conf.dtc_ctfmodel =3D=3D CTF_MODEL_LP64) {
1274 if (dt_cpp_add_arg(dtp, "-m64") =3D=3D NULL)
1275 return (set_open_errno(dtp, errp, =
EDT_NOMEM));
1276 } else {
1277 if (dt_cpp_add_arg(dtp, "-m32") =3D=3D NULL)
1278 return (set_open_errno(dtp, errp, =
EDT_NOMEM));
1279 }
1280 #endif
1281 #endif
As for why the original issue occurred on my VM (which was the =
powerpc:powerpc case), I=E2=80=99m not sure yet. I=E2=80=99m working on =
figuring that out.
Thanks!
-NGie=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9192D4AA-FCF1-4841-89FD-A4E5D93C6941>
