Binding a single function symbol with [foreign]

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Tue Sep 11 11:26:10 UTC 2018


Thanks for this Jorn,

that's really wonderful news!

Maurizio


On 11/09/18 09:48, Jorn Vernee wrote:
>>> So, for simple calls like puts, which take a single integer register
>>> value and returns via a single register value, things *should* work -
>>> but it seems like it doesn't. Anyway, the current support is, as I
>>> wrote, mostly Linux and MacOs centric - and we're not planning to do
>>> Windows tweak in the short term at least. But your experiment suggests
>>> that we might not be that far off the mark...
>
> Got it working!
>
> In the end I made 3 changes [1] :
>
> * Allocate 32 bytes of shadow space before the call.
>
> * Make sure the number of return registers is set to 1 on windows (it 
> was hard-coded as 2).
>
> * Make sure RDI and RSI are preserved by the native stub.
>
> `printf` also works for simple calls. So yeah, not far off the mark at 
> all.
>
> Again; just leaving this here for future reference :)
>
> Jorn
>
> [1] : https://gist.github.com/JornVernee/240a079abe6791b3fa5c9d14613ef28d



More information about the panama-dev mailing list