Re: git: da3096a92d2c - main - rdrand_rng: Build with -fPIC on i386 when using GCC.
Date: Sat, 01 Jul 2023 19:43:33 UTC
On 1 Jul 2023, at 20:23, John Baldwin <jhb@FreeBSD.org> wrote: > > The branch main has been updated by jhb: > > URL: https://cgit.FreeBSD.org/src/commit/?id=da3096a92d2c1c06b25613444d9b369475d50321 > > commit da3096a92d2c1c06b25613444d9b369475d50321 > Author: John Baldwin <jhb@FreeBSD.org> > AuthorDate: 2023-07-01 19:23:00 +0000 > Commit: John Baldwin <jhb@FreeBSD.org> > CommitDate: 2023-07-01 19:23:00 +0000 > > rdrand_rng: Build with -fPIC on i386 when using GCC. > > ld.bfd requires an R_386_PLT32 relocation for calls to ifuncs > rather than R_386_PC32. (lld permits R_386_PC32.) That’s odd and doesn’t quite seem a sufficient explanation on its own? PDEs can have IFUNCs just fine today, so why is it different for kernel modules here? Jess > Reviewed by: kib > Differential Revision: https://reviews.freebsd.org/D40811 > --- > sys/modules/rdrand_rng/Makefile | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/sys/modules/rdrand_rng/Makefile b/sys/modules/rdrand_rng/Makefile > index 7f14c080a260..3fdecd64f78f 100644 > --- a/sys/modules/rdrand_rng/Makefile > +++ b/sys/modules/rdrand_rng/Makefile > @@ -8,4 +8,9 @@ SRCS+= bus_if.h device_if.h > > CFLAGS+= -I${SRCTOP}/sys > > +# ld.bfd doesn't support ifuncs invoked non-PIC > +.if ${MACHINE_CPUARCH} == "i386" > +CFLAGS.gcc= -fPIC > +.endif > + > .include <bsd.kmod.mk>