Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 Mar 2019 11:02:28 -0600
From:      Dan Allen <danallen46@gmail.com>
To:        "freebsd-stable@freebsd.org Mailing FreeBSD-STABLE" <freebsd-stable@freebsd.org>
Subject:   ifuncs check flawed?
Message-ID:  <35A0AE5B-B25D-4067-86E3-325E65F3C1F4@gmail.com>

next in thread | raw e-mail | index | archive | help
I have been building FreeBSD for many years, as in since 2.2.8.

Currently my amd64 build of 12-STABLE is built with the following =
src.conf:

WITHOUT_BHYVE=3D1
WITHOUT_CAPSICUM=3D1
WITHOUT_CDDL=3D1
WITHOUT_CLANG_EXTRAS=3D1
WITHOUT_CLANG_FULL=3D1
WITHOUT_CROSS_COMPILER=3D1
WITHOUT_DEBUG_FILES=3D1
WITHOUT_EXAMPLES=3D1
WITHOUT_HYPERV=3D1
WITHOUT_JAIL=3D1
WITHOUT_LOCALES=3D1
WITHOUT_PROFILE=3D1
WITHOUT_QUOTAS=3D1
WITHOUT_TESTS=3D1

And a make.conf of:

BATCH=3Dyes
MK_CDDL=3Dno
MK_CLANG_EXTRAS=3Dno
MK_DEBUG_FILES=3Dno
MK_NO_PROFILE=3Dyes
MK_TESTS=3Dno
OPTIONS_UNSET=3DJAVA
WITH_JADETEX=3Dno
WITHOUT_CDDL=3Dyes
WITHOUT_CLANG_FULL=3Dyes
WITHOUT_CTF=3Dyes
WITHOUT_CTM=3Dyes
DISABLE_VULNERABILITIES=3Dyes

So far, so good.  (I do this to fit the whole thing onto a CD-image.)

Fooling around, and using xhyve on my Mac, I want to build a i386 =
version in a VM.

So I grabbed the 20190314 snapshot of 12-STABLE, i386 flavor, and =
installed it.  Works great.

Now to rebuild the world.

The buildworld and buildkernel steps both immediately fail due to the =
linker not supporting ifuncs.

The code that stops the buildworld is this from =
/usr/src/lib/libc/Makefile:

---
.if (${LIBC_ARCH} =3D=3D amd64 || ${LIBC_ARCH} =3D=3D i386) && \
     ${.TARGETS:Mall} =3D=3D all && \
     defined(LINKER_FEATURES) && ${LINKER_FEATURES:Mifunc} =3D=3D ""
.error ${LIBC_ARCH} libc requires linker ifunc support
.endif
---

However the linker on my system is the lld linker that supports ifuncs!  =
Why does this check fail?

I am building on i386 but I am only building i386, as in I am not =
building all targets or amd64.

I edited the two Makefiles that have this check to remove the check and =
the builds proceed just fine.

So it appears that these checks are flawed, or I am soon to learn =
something new about FreeBSD!

Thanks,

Dan Allen






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?35A0AE5B-B25D-4067-86E3-325E65F3C1F4>