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