On 12/11/2014 04:25 AM, Dominik Vogt wrote: > Update: If I disable the custom s390x code and switch to the > implementation just using libffi for reflection calls, the same > crash occurs with the testing/quick libgo test case. The called > function sees a bogus value written by the synamic linker as the > closure pointer, for example with this line in the test code: > > CheckEqual(fComplex64, fComplex64, nil)
The compiler should be generating a static structure for these. On x86_64, I see Relocation section '.rela.rodata.testing_quick.fComplex64$descriptor' at offset 0x5d4c0 contains 1 entries: Offset Info Type Sym. Value Sym. Name + Addend 000000000000 000200000001 R_X86_64_64 0000000000000000 .text + c0 00000000000000c0 t quick.fComplex64 so that is in fact a direct relocation, and will not go via the dynamic linker. Is the s390 port somehow putting the address of a plt entry here? r~