Re: Use -fvisibility=hidden for shared libraries
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Justin Pryzby <pryzby@telsasoft.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Laurenz Albe <laurenz.albe@cybertec.at>, pgsql-hackers@postgresql.org
Date: 2022-01-11T03:31:33Z
Lists: pgsql-hackers
Hi, On 2022-01-10 21:11:07 -0600, Justin Pryzby wrote: > 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] Ah, yea. It's about matching the declarations in ltree.h with the PG_FUNCTION_INFO_V1() one. What is bugging me is that I am fairly sure that my local compilers at some point complained about such mismatches on linux as well. But I can't reproduce that right now :/ Greetings, Andres Freund
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