On 2022-08-25 Th 17:47, Andres Freund wrote: > Hi, > > On 2022-08-25 17:39:35 -0400, Andrew Dunstan wrote: >> 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) > Could you show objdump -t of the library? Perhaps once with the flags as now, > and once relinking with the "old" flags that we're now omitting?
current: $ objdump -t plperl.dll | egrep '_PG_init|Pg_magic_func' [103](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000000000040a0 Pg_magic_func [105](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000000000040b0 _PG_init from July 11th build: $ objdump -t plperl.dll | egrep '_PG_init|Pg_magic_func' [101](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000000000040d0 Pg_magic_func [103](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000000000040e0 _PG_init cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com