Re: Use -fvisibility=hidden for shared libraries
Peter Eisentraut <peter.eisentraut@enterprisedb.com>
From: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
To: Andres Freund <andres@anarazel.de>, Tom Lane <tgl@sss.pgh.pa.us>
Cc: Laurenz Albe <laurenz.albe@cybertec.at>, pgsql-hackers@postgresql.org
Date: 2022-03-24T15:13:31Z
Lists: pgsql-hackers
On 11.01.22 03:53, Andres Freund wrote: > Ugh. In the case of worker_spi it's because -fvisibility=hidden isn't applied > to worker_spi.c at all. Which in turn is because Makefile.shlib isn't used at > all for MODULES= style modules just for MODULE_big= ones :(. > > Once that's "fixed" it fails as expected... > > I'm not sure what the best way to deal with this is. Just now I copied the > logic from Makefile.shlib to pgxs.mk (by the existing CFLAGS_SL use), but that > doesn't scale - there's other direct uses of CFLAGS_SL. > > Perhaps the best way would be to add the -fvisibility=hidden to CFLAGS_SL, and > work around the explicit exports issue in Makefile.shlib by adding an explicit > -fvisibility=default? Or perhaps CFLAGS_SL The easiest solution would be to change worker_spi's Makefile to use MODULE_big. There are already many cases where MODULE_big is used instead of MODULES for seemingly random reasons, so I wouldn't worry too much about it here if it helps you move forward.
Commits
-
Mark all symbols exported from extension libraries PGDLLEXPORT.
- 8cf64d35eacc 16.0 landed
-
Default to hidden visibility for extension libraries where possible
- 089480c07705 16.0 landed
-
Remove now superfluous declarations of dlsym()ed symbols.
- fd4bad165539 16.0 landed
-
Add central declarations for dlsym()ed symbols
- f2b73c8d75d5 16.0 landed