On 2022-08-25 Th 09:43, Tom Lane wrote: > Peter Eisentraut <peter.eisentr...@enterprisedb.com> writes: >>>> In short: if the Cygwin Perl headers redefine PGDLLEXPORT (unlikely) >>>> or somehow #define "__attribute__()" or "visibility()" into no-ops >>>> (perhaps more likely) then we could explain this failure, and that >>>> would also explain why it doesn't fail elsewhere. >> This could be checked by running plperl.c through the preprocessor >> (replace gcc -c plperl.c -o plperl.o by gcc -E plperl.c -o plperl.i) and >> seeing what becomes of those symbols. > Yeah, that was what I was going to suggest: grep the "-E" output for > _PG_init and Pg_magic_func and confirm what their extern declarations > look like.
$ egrep '_PG_init|Pg_magic_func' plperl.i extern __attribute__((visibility("default"))) void _PG_init(void); extern __attribute__((visibility("default"))) const Pg_magic_struct *Pg_magic_func(void); const Pg_magic_struct * Pg_magic_func(void) { static const Pg_magic_struct Pg_magic_data = { sizeof(Pg_magic_struct), 160000 / 100, 100, 32, 64, _PG_init(void) cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com