mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-23 19:39:53 +08:00
Add central declarations for dlsym()ed symbols
This is in preparation for defaulting to -fvisibility=hidden in extensions, instead of exporting all symbols. For that symbols intended to be exported need to be tagged with PGDLLEXPORT. Most extensions only need to do so for _PG_init() and functions defined with PG_FUNCTION_INFO_V1. Adding central declarations avoids each extension having to add PGDLLEXPORT. Any existing declarations in extensions will continue to work if fmgr.h is included before them, otherwise compilation for Windows will fail. Author: Andres Freund <andres@anarazel.de> Reviewed-By: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/20211101020311.av6hphdl6xbjbuif@alap3.anarazel.de
This commit is contained in:
parent
31e5b50292
commit
f2b73c8d75
@ -424,6 +424,17 @@ CppConcat(pg_finfo_,funcname) (void) \
|
||||
extern int no_such_variable
|
||||
|
||||
|
||||
/*
|
||||
* Declare _PG_init/_PG_fini centrally. Historically each shared library had
|
||||
* its own declaration; but now that we want to mark these PGDLLEXPORT, using
|
||||
* central declarations avoids each extension having to add that. Any
|
||||
* existing declarations in extensions will continue to work if fmgr.h is
|
||||
* included before them, otherwise compilation for Windows will fail.
|
||||
*/
|
||||
extern PGDLLEXPORT void _PG_init(void);
|
||||
extern PGDLLEXPORT void _PG_fini(void);
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Support for verifying backend compatibility of loaded modules
|
||||
*
|
||||
|
@ -63,7 +63,7 @@ typedef struct JitContext
|
||||
|
||||
typedef struct JitProviderCallbacks JitProviderCallbacks;
|
||||
|
||||
extern void _PG_jit_provider_init(JitProviderCallbacks *cb);
|
||||
extern PGDLLEXPORT void _PG_jit_provider_init(JitProviderCallbacks *cb);
|
||||
typedef void (*JitProviderInit) (JitProviderCallbacks *cb);
|
||||
typedef void (*JitProviderResetAfterErrorCB) (void);
|
||||
typedef void (*JitProviderReleaseContextCB) (JitContext *context);
|
||||
|
@ -63,6 +63,8 @@ typedef struct ArchiveModuleCallbacks
|
||||
*/
|
||||
typedef void (*ArchiveModuleInit) (ArchiveModuleCallbacks *cb);
|
||||
|
||||
extern PGDLLEXPORT void _PG_archive_module_init(ArchiveModuleCallbacks *cb);
|
||||
|
||||
/*
|
||||
* Since the logic for archiving via a shell command is in the core server
|
||||
* and does not need to be loaded via a shared library, it has a special
|
||||
|
@ -35,6 +35,8 @@ typedef struct OutputPluginOptions
|
||||
*/
|
||||
typedef void (*LogicalOutputPluginInit) (struct OutputPluginCallbacks *cb);
|
||||
|
||||
extern PGDLLEXPORT void _PG_output_plugin_init(struct OutputPluginCallbacks *cb);
|
||||
|
||||
/*
|
||||
* Callback that gets called in a user-defined plugin. ctx->private_data can
|
||||
* be set to some private data.
|
||||
|
Loading…
Reference in New Issue
Block a user