This is the mail archive of the libffi-discuss@sourceware.org mailing list for the libffi project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [gofrontend-dev] Re: [PATCH 00/13] Go closures, libffi, and the static chain


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~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]