git: 0dd13c77432a - main - libnv: Build PIC
Kristof Provost
kp at FreeBSD.org
Mon Apr 12 14:44:48 UTC 2021
On 12 Apr 2021, at 16:40, Shawn Webb wrote:
> On Mon, Apr 12, 2021 at 01:39:50PM +0200, Kristof Provost wrote:
>> On 10 Apr 2021, at 17:27, Shawn Webb wrote:
>>> On Sat, Apr 10, 2021 at 09:16:22AM +0000, Kristof Provost wrote:
>>>> The branch main has been updated by kp:
>>>>
>>>> URL:
>>>> https://cgit.FreeBSD.org/src/commit/?id=0dd13c77432ade1ae94c9661cbad5537e3e6ab1d
>>>>
>>>> commit 0dd13c77432ade1ae94c9661cbad5537e3e6ab1d
>>>> Author: Kristof Provost <kp at FreeBSD.org>
>>>> AuthorDate: 2021-04-02 15:06:02 +0000
>>>> Commit: Kristof Provost <kp at FreeBSD.org>
>>>> CommitDate: 2021-04-10 09:16:01 +0000
>>>>
>>>> libnv: Build PIC
>>>>
>>>> Build libnv as position independent code so we can use it from
>>>> shared
>>>> libraries.
>>>>
>>>> MFC after: 4 weeks
>>>> Sponsored by: Rubicon Communications, LLC ("Netgate")
>>>> Differential Revision: https://reviews.freebsd.org/D29561
>>>> ---
>>>> lib/libnv/Makefile | 1 +
>>>> 1 file changed, 1 insertion(+)
>>>>
>>>> diff --git a/lib/libnv/Makefile b/lib/libnv/Makefile
>>>> index b13758931c4e..854cd2c7f3f3 100644
>>>> --- a/lib/libnv/Makefile
>>>> +++ b/lib/libnv/Makefile
>>>> @@ -10,6 +10,7 @@ SHLIB_MAJOR= 0
>>>>
>>>> .PATH: ${SRCTOP}/sys/contrib/libnv ${SRCTOP}/sys/sys
>>>> CFLAGS+=-I${.CURDIR}
>>>> +CFLAGS+=-fPIC
>>>
>>> Wouldn't the better fix be renaming LIB to SHLIB like every other
>>> PIC
>>> lib?
>>>
>> Ed pointed me at INSTALL_PIC_ARCHIVE. I’m also pondering just
>> making
>> libpfctl a .so, which should also fix the issue this addresses.
>>
>> The complication is that libpfctl is currently a .a, and can be used
>> in a
>> shared library itself (for bsnmp), so it has to be - and use - PIC.
>
> Out of curiosity, is there a reason not to have the shared library
> depend on libnv as a shared library?
>
That’s mostly an accident. Libpfctl is currently marked as
INTERNALLIB=true, which makes it a static library and links it to the
static library.
I’m considering making libpfctl a shared library, if only because
there are consumers of the pf ioctl interface in ports, and I intend to
remove some of the old (for which there are now nvlist-based versions)
ioctls. That will be a lot easier for those applications if they can
just use libpfctl.
The downside is that, if we consider libpfctl to be a stable ABI, we
move the previous ABI problem from the kernel to userspace, rather than
getting rid of it.
Best regards,
Kristof
More information about the dev-commits-src-main
mailing list