This is the mail archive of the
libffi-discuss@sourceware.org
mailing list for the libffi project.
Re: Trying to port libffi to OpenVMS.
- From: Richard Henderson <rth at redhat dot com>
- To: "John E. Malmberg" <wb8tyw at qsl dot net>, libffi-discuss at sourceware dot org
- Date: Mon, 16 Feb 2015 09:13:06 -0800
- Subject: Re: Trying to port libffi to OpenVMS.
- Authentication-results: sourceware.org; auth=none
- References: <54DE0378 dot 8040609 at qsl dot net> <54DE0D25 dot 8020300 at redhat dot com> <54DE8D61 dot 803 at qsl dot net>
On 02/13/2015 03:48 PM, John E. Malmberg wrote:
> On 2/13/2015 8:41 AM, Richard Henderson wrote:
>> On 02/13/2015 06:00 AM, John E. Malmberg wrote:
>>> I was able to apply Philippe Vouters patches for Libffi 3.0.9 to libffi 3.1 and
>>> get the code building. I was unable to get the tests to run under GNV though.
>>
>> I've never seen those patches but...
>
> Not sure if I got them via E-mail from someone else, or from his site. His site
> is not responding at this time.
>
> The readme says that they include HP-UX/ia64 and VMS/Alpha and VMS/ia64. What
> I have appears to be bunch of concatenated unified diffs. I can gzip it and
> forward it to anyone that is interested, uncompressed it is 126 KB.
Sure.
> I think VMS and Tru64 share a calling standard on Alpha, but I am not sure.
Definitely not.
> VMS on Itanium uses ELF binaries and calling standard with a few extensions to
> ELF.
The calling standard is different enough that you'll definitely need changes to
the C code, and at least a small change to the assembly to set up the r25
"argument information" register.
> In any case, on VMS, the "int lib$callg(void **args, int (*func)())" hides all
> that though.
I'd be very surprised if this actually passes the testsuite, as you're not
giving lib$callg any information about the types of the arguments.
This is probably one of those things that worked find on VAX, but only works on
Alpha and IA-64 for integer arguments, and a limited number of them at that.
> The use of the lib$callg() routine means I should not need any assembly
> language code at all. Probably almost the same source for all three current
> VMS harware platforms.
I'm sure you're going to have to write assembly, at least for Alpha.
r~