mirror of https://github.com/postgres/postgres
Mark all symbols exported from extension libraries PGDLLEXPORT.
This is in preparation for defaulting to -fvisibility=hidden in extensions,
instead of relying on all symbols in extensions to be exported.
This should have been committed before 089480c077
, but something in my commit
scripts went wrong.
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
5050fe5458
commit
8cf64d35ea
|
@ -147,7 +147,7 @@ typedef struct
|
|||
} while (0)
|
||||
|
||||
/* DatumGetHStoreP includes support for reading old-format hstore values */
|
||||
extern HStore *hstoreUpgrade(Datum orig);
|
||||
extern PGDLLEXPORT HStore *hstoreUpgrade(Datum orig);
|
||||
|
||||
#define DatumGetHStoreP(d) hstoreUpgrade(d)
|
||||
|
||||
|
@ -168,14 +168,14 @@ typedef struct
|
|||
bool needfree; /* need to pfree the value? */
|
||||
} Pairs;
|
||||
|
||||
extern int hstoreUniquePairs(Pairs *a, int32 l, int32 *buflen);
|
||||
extern HStore *hstorePairs(Pairs *pairs, int32 pcount, int32 buflen);
|
||||
extern PGDLLEXPORT int hstoreUniquePairs(Pairs *a, int32 l, int32 *buflen);
|
||||
extern PGDLLEXPORT HStore *hstorePairs(Pairs *pairs, int32 pcount, int32 buflen);
|
||||
|
||||
extern size_t hstoreCheckKeyLen(size_t len);
|
||||
extern size_t hstoreCheckValLen(size_t len);
|
||||
extern PGDLLEXPORT size_t hstoreCheckKeyLen(size_t len);
|
||||
extern PGDLLEXPORT size_t hstoreCheckValLen(size_t len);
|
||||
|
||||
extern int hstoreFindKey(HStore *hs, int *lowbound, char *key, int keylen);
|
||||
extern Pairs *hstoreArrayToPairs(ArrayType *a, int *npairs);
|
||||
extern PGDLLEXPORT int hstoreFindKey(HStore *hs, int *lowbound, char *key, int keylen);
|
||||
extern PGDLLEXPORT Pairs *hstoreArrayToPairs(ArrayType *a, int *npairs);
|
||||
|
||||
#define HStoreContainsStrategyNumber 7
|
||||
#define HStoreExistsStrategyNumber 9
|
||||
|
@ -194,7 +194,7 @@ extern Pairs *hstoreArrayToPairs(ArrayType *a, int *npairs);
|
|||
#if HSTORE_POLLUTE_NAMESPACE
|
||||
#define HSTORE_POLLUTE(newname_,oldname_) \
|
||||
PG_FUNCTION_INFO_V1(oldname_); \
|
||||
Datum newname_(PG_FUNCTION_ARGS); \
|
||||
extern PGDLLEXPORT Datum newname_(PG_FUNCTION_ARGS); \
|
||||
Datum oldname_(PG_FUNCTION_ARGS) { return newname_(fcinfo); } \
|
||||
extern int no_such_variable
|
||||
#else
|
||||
|
|
|
@ -176,30 +176,30 @@ typedef struct
|
|||
|
||||
|
||||
/* use in array iterator */
|
||||
Datum ltree_isparent(PG_FUNCTION_ARGS);
|
||||
Datum ltree_risparent(PG_FUNCTION_ARGS);
|
||||
Datum ltq_regex(PG_FUNCTION_ARGS);
|
||||
Datum ltq_rregex(PG_FUNCTION_ARGS);
|
||||
Datum lt_q_regex(PG_FUNCTION_ARGS);
|
||||
Datum lt_q_rregex(PG_FUNCTION_ARGS);
|
||||
Datum ltxtq_exec(PG_FUNCTION_ARGS);
|
||||
Datum ltxtq_rexec(PG_FUNCTION_ARGS);
|
||||
Datum _ltq_regex(PG_FUNCTION_ARGS);
|
||||
Datum _ltq_rregex(PG_FUNCTION_ARGS);
|
||||
Datum _lt_q_regex(PG_FUNCTION_ARGS);
|
||||
Datum _lt_q_rregex(PG_FUNCTION_ARGS);
|
||||
Datum _ltxtq_exec(PG_FUNCTION_ARGS);
|
||||
Datum _ltxtq_rexec(PG_FUNCTION_ARGS);
|
||||
Datum _ltree_isparent(PG_FUNCTION_ARGS);
|
||||
Datum _ltree_risparent(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum ltree_isparent(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum ltree_risparent(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum ltq_regex(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum ltq_rregex(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum lt_q_regex(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum lt_q_rregex(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum ltxtq_exec(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum ltxtq_rexec(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum _ltq_regex(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum _ltq_rregex(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum _lt_q_regex(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum _lt_q_rregex(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum _ltxtq_exec(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum _ltxtq_rexec(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum _ltree_isparent(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum _ltree_risparent(PG_FUNCTION_ARGS);
|
||||
|
||||
/* Concatenation functions */
|
||||
Datum ltree_addltree(PG_FUNCTION_ARGS);
|
||||
Datum ltree_addtext(PG_FUNCTION_ARGS);
|
||||
Datum ltree_textadd(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum ltree_addltree(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum ltree_addtext(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum ltree_textadd(PG_FUNCTION_ARGS);
|
||||
|
||||
/* Util function */
|
||||
Datum ltree_in(PG_FUNCTION_ARGS);
|
||||
PGDLLEXPORT Datum ltree_in(PG_FUNCTION_ARGS);
|
||||
|
||||
bool ltree_execute(ITEM *curitem, void *checkval,
|
||||
bool calcnot, bool (*chkcond) (void *checkval, ITEM *val));
|
||||
|
|
|
@ -413,7 +413,7 @@ typedef const Pg_finfo_record *(*PGFInfoFunction) (void);
|
|||
* info function, since authors shouldn't need to be explicitly aware of it.
|
||||
*/
|
||||
#define PG_FUNCTION_INFO_V1(funcname) \
|
||||
extern Datum funcname(PG_FUNCTION_ARGS); \
|
||||
extern PGDLLEXPORT Datum funcname(PG_FUNCTION_ARGS); \
|
||||
extern PGDLLEXPORT const Pg_finfo_record * CppConcat(pg_finfo_,funcname)(void); \
|
||||
const Pg_finfo_record * \
|
||||
CppConcat(pg_finfo_,funcname) (void) \
|
||||
|
|
|
@ -34,13 +34,13 @@ extern PyObject *PLy_exc_spi_error;
|
|||
} while(0)
|
||||
#endif /* HAVE__BUILTIN_CONSTANT_P */
|
||||
|
||||
extern void PLy_elog_impl(int elevel, const char *fmt,...) pg_attribute_printf(2, 3);
|
||||
extern PGDLLEXPORT void PLy_elog_impl(int elevel, const char *fmt,...) pg_attribute_printf(2, 3);
|
||||
|
||||
extern void PLy_exception_set(PyObject *exc, const char *fmt,...) pg_attribute_printf(2, 3);
|
||||
extern PGDLLEXPORT void PLy_exception_set(PyObject *exc, const char *fmt,...) pg_attribute_printf(2, 3);
|
||||
|
||||
extern void PLy_exception_set_plural(PyObject *exc, const char *fmt_singular, const char *fmt_plural,
|
||||
unsigned long n,...) pg_attribute_printf(2, 5) pg_attribute_printf(3, 5);
|
||||
extern PGDLLEXPORT void PLy_exception_set_plural(PyObject *exc, const char *fmt_singular, const char *fmt_plural,
|
||||
unsigned long n,...) pg_attribute_printf(2, 5) pg_attribute_printf(3, 5);
|
||||
|
||||
extern void PLy_exception_set_with_details(PyObject *excclass, ErrorData *edata);
|
||||
extern PGDLLEXPORT void PLy_exception_set_with_details(PyObject *excclass, ErrorData *edata);
|
||||
|
||||
#endif /* PLPY_ELOG_H */
|
||||
|
|
|
@ -147,29 +147,29 @@ struct PLyObToDatum
|
|||
};
|
||||
|
||||
|
||||
extern PyObject *PLy_input_convert(PLyDatumToOb *arg, Datum val);
|
||||
extern Datum PLy_output_convert(PLyObToDatum *arg, PyObject *val,
|
||||
bool *isnull);
|
||||
extern PGDLLEXPORT PyObject *PLy_input_convert(PLyDatumToOb *arg, Datum val);
|
||||
extern PGDLLEXPORT Datum PLy_output_convert(PLyObToDatum *arg, PyObject *val,
|
||||
bool *isnull);
|
||||
|
||||
extern PyObject *PLy_input_from_tuple(PLyDatumToOb *arg, HeapTuple tuple,
|
||||
TupleDesc desc, bool include_generated);
|
||||
extern PGDLLEXPORT PyObject *PLy_input_from_tuple(PLyDatumToOb *arg, HeapTuple tuple,
|
||||
TupleDesc desc, bool include_generated);
|
||||
|
||||
extern void PLy_input_setup_func(PLyDatumToOb *arg, MemoryContext arg_mcxt,
|
||||
Oid typeOid, int32 typmod,
|
||||
struct PLyProcedure *proc);
|
||||
extern void PLy_output_setup_func(PLyObToDatum *arg, MemoryContext arg_mcxt,
|
||||
Oid typeOid, int32 typmod,
|
||||
struct PLyProcedure *proc);
|
||||
extern PGDLLEXPORT void PLy_input_setup_func(PLyDatumToOb *arg, MemoryContext arg_mcxt,
|
||||
Oid typeOid, int32 typmod,
|
||||
struct PLyProcedure *proc);
|
||||
extern PGDLLEXPORT void PLy_output_setup_func(PLyObToDatum *arg, MemoryContext arg_mcxt,
|
||||
Oid typeOid, int32 typmod,
|
||||
struct PLyProcedure *proc);
|
||||
|
||||
extern void PLy_input_setup_tuple(PLyDatumToOb *arg, TupleDesc desc,
|
||||
struct PLyProcedure *proc);
|
||||
extern void PLy_output_setup_tuple(PLyObToDatum *arg, TupleDesc desc,
|
||||
struct PLyProcedure *proc);
|
||||
extern PGDLLEXPORT void PLy_input_setup_tuple(PLyDatumToOb *arg, TupleDesc desc,
|
||||
struct PLyProcedure *proc);
|
||||
extern PGDLLEXPORT void PLy_output_setup_tuple(PLyObToDatum *arg, TupleDesc desc,
|
||||
struct PLyProcedure *proc);
|
||||
|
||||
extern void PLy_output_setup_record(PLyObToDatum *arg, TupleDesc desc,
|
||||
struct PLyProcedure *proc);
|
||||
extern PGDLLEXPORT void PLy_output_setup_record(PLyObToDatum *arg, TupleDesc desc,
|
||||
struct PLyProcedure *proc);
|
||||
|
||||
/* conversion from Python objects to C strings --- exported for transforms */
|
||||
extern char *PLyObject_AsString(PyObject *plrv);
|
||||
extern PGDLLEXPORT char *PLyObject_AsString(PyObject *plrv);
|
||||
|
||||
#endif /* PLPY_TYPEIO_H */
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
|
||||
#include "plpython.h"
|
||||
|
||||
extern PyObject *PLyUnicode_Bytes(PyObject *unicode);
|
||||
extern char *PLyUnicode_AsString(PyObject *unicode);
|
||||
extern PGDLLEXPORT PyObject *PLyUnicode_Bytes(PyObject *unicode);
|
||||
extern PGDLLEXPORT char *PLyUnicode_AsString(PyObject *unicode);
|
||||
|
||||
extern PyObject *PLyUnicode_FromString(const char *s);
|
||||
extern PyObject *PLyUnicode_FromStringAndSize(const char *s, Py_ssize_t size);
|
||||
extern PGDLLEXPORT PyObject *PLyUnicode_FromString(const char *s);
|
||||
extern PGDLLEXPORT PyObject *PLyUnicode_FromStringAndSize(const char *s, Py_ssize_t size);
|
||||
|
||||
#endif /* PLPY_UTIL_H */
|
||||
|
|
|
@ -40,6 +40,6 @@ extern void test_shm_mq_setup(int64 queue_size, int32 nworkers,
|
|||
shm_mq_handle **input);
|
||||
|
||||
/* Main entrypoint for a worker. */
|
||||
extern void test_shm_mq_main(Datum) pg_attribute_noreturn();
|
||||
extern PGDLLEXPORT void test_shm_mq_main(Datum) pg_attribute_noreturn();
|
||||
|
||||
#endif
|
||||
|
|
|
@ -46,7 +46,7 @@ PG_MODULE_MAGIC;
|
|||
|
||||
PG_FUNCTION_INFO_V1(worker_spi_launch);
|
||||
|
||||
void worker_spi_main(Datum) pg_attribute_noreturn();
|
||||
PGDLLEXPORT void worker_spi_main(Datum) pg_attribute_noreturn();
|
||||
|
||||
/* GUC variables */
|
||||
static int worker_spi_naptime = 10;
|
||||
|
|
Loading…
Reference in New Issue