Re: Mark all GUC variable as PGDLLIMPORT
Magnus Hagander <magnus@hagander.net>
From: Magnus Hagander <magnus@hagander.net>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Robert Haas <robertmhaas@gmail.com>,
Chapman Flack <chap@anastigmatix.net>, Peter Eisentraut <peter.eisentraut@enterprisedb.com>,
Julien Rouhaud <rjuju123@gmail.com>, Bruce Momjian <bruce@momjian.us>, Michael Paquier <michael@paquier.xyz>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-08-25T15:00:12Z
Lists: pgsql-hackers
On Wed, Aug 25, 2021 at 4:41 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > Magnus Hagander <magnus@hagander.net> writes: > > On Wed, Aug 25, 2021 at 4:06 PM Robert Haas <robertmhaas@gmail.com> wrote: > >> It does tend to be controversial, but I think that's basically only > >> because Tom Lane has reservations about it. I think if Tom dropped his > >> opposition to this, nobody else would really care. And I think that > >> would be a good thing for the project. > > > But in particular, both on that argument, and on the general > > maintenance argument, I have a very hard time seeing how exporting the > > GUC variables would be any worse than exporting the many hundreds of > > functions we already export. > > My beef about it has nothing to do with binary-size concerns, although > that is an interesting angle. (I wonder whether marking a variable > PGDLLIMPORT has any negative effect on the cost of accessing it from > within the core code?) It should have no effect on local code. PGDLLIMPORT turns into "__declspec (dllexport)" when building the backend, which should have no effect on imports (it turns into __declspec (dllimport) when building a frontend only, but that's why we need it in the headers, iirc) The only overhead I've seen discussions about int he docs around that is the overhead of exporting by name vs exporting by ordinal. > Rather, I'm unhappy with spreading even more > Microsoft-droppings all over our source. If there were some way to > just do this automatically for all global variables without any source > changes, I'd be content with that. That would *really* make the > platforms more nearly equivalent. Actually, ti's clearly been a while since I dug into this AFAICT we *do* actually export all the data symbols as well? At least in the MSVC build where we use gendef.pl? Specifically, see a5eed4d770. The thing we need the PGDLLIMPORT definition for is to *import* them on the other end? -- Magnus Hagander Me: https://www.hagander.net/ Work: https://www.redpill-linpro.com/
Commits
-
Remove PGDLLIMPORT marker from __pg_log_level
- 8d3341266508 15.0 landed
-
Mark a few 'bbsink' related functions / variables static.
- b5f44225b833 15.0 landed
-
Add some missing PGDLLIMPORT markings
- 5edeb574285e 15.0 landed
-
Apply PGDLLIMPORT markings broadly.
- 8ec569479fc2 15.0 landed
-
Helper script to apply PGDLLIMPORT markings.
- 80900d469091 15.0 landed
-
Simplify declaring variables exported from libpgcommon and libpgport.
- e04a8059a74c 15.0 cited