Re: Use -fvisibility=hidden for shared libraries
Justin Pryzby <pryzby@telsasoft.com>
From: Justin Pryzby <pryzby@telsasoft.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Andres Freund <andres@anarazel.de>, Laurenz Albe <laurenz.albe@cybertec.at>, pgsql-hackers@postgresql.org
Date: 2022-01-11T03:11:07Z
Lists: pgsql-hackers
On Mon, Jan 10, 2022 at 07:01:36PM -0500, Tom Lane wrote: > Andres Freund <andres@anarazel.de> writes: > > [ v2-0001-Use-hidden-visibility-for-shared-libraries-where-.patch ] > > This seems like a good idea, but it's failing to apply right now, > mainly because of some cleanup I did in e04a8059a. As far as I can > tell given the now-clarified meanings of PGDLLIMPORT/PGDLLEXPORT, > this patch shouldn't be touching PGDLLIMPORT. The attached revision > works for me under gcc 8.5 and clang 13. > > Also, it seemed like you'd maybe been more enthusiastic than necessary > about plastering PGDLLEXPORT on things. I got through check-world > cleanly without the diffs in either ltree.h or worker_spi.c (although > I confess being confused why I didn't need the latter). I didn't try > individually removing other diffs. Those diffs are still in v3 below, > but we should clarify exactly which functions need marking. Without the patch, it fails under windows like: https://cirrus-ci.com/task/6171477065072640 [01:44:45.399] c:\cirrus\contrib\ltree\ltree.h(193): message : see declaration of '_ltree_isparent' [c:\cirrus\ltree.vcxproj] [01:44:45.399] c:\cirrus\contrib\ltree\_ltree_op.c(16,1): error C2375: '_ltree_risparent': redefinition; different linkage [c:\cirrus\ltree.vcxproj] -- Justin
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