From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=BAYES_00,INVALID_DATE, MSGID_SHORT autolearn=no autolearn_force=no version=3.4.4 Path: utzoo!attcan!uunet!lll-winken!ames!xanth!mcnc!rti!jb From: jb@rti.UUCP (Jeff Bartlett) Newsgroups: comp.lang.ada Subject: Re: bug in DEC compiler?? Summary: importing with Dec Ada Message-ID: <2757@rti.UUCP> Date: 27 Jan 89 03:48:47 GMT References: <8901260051.AA26048@ajpo.sei.cmu.edu> Organization: Research Triangle Institute, RTP, NC List-Id: In article <8901260051.AA26048@ajpo.sei.cmu.edu>, gerhardt@AJPO.SEI.CMU.EDU writes: > We have tried to use the SAIC X window binding with the DEC ACS > compiler. > We are having problems with what looks like a bug in DEC ACS Ada. > The code fragment looks like : > type FOO is record... end record; > type CLIST is access FOO; > procedure EXT ( A : in out SYSTEM.ADDRESS ) is ... end; > pragma INTERFACE (EXT, SYSTEM.ADDRESS, VALUE); > LOC : CLIST; > begin > EXT(LOC.all.'ADDRESS); > This code compiles but when it runs it loses the address when it gets > to the externaL procedure (WRITTEN IN C). > When an unchecked conversion to SYSTEM.ADDRESS is done on LOC and that > is used as the calling parameter, it works ok. Am I missing > something, or is this > a plain old bug?? Thanks in advance This works: -- zip.ada with SYSTEM; procedure ZIP is type FOO is record BAR : INTEGER; end record; type CLIST is access FOO; procedure EXT( A : SYSTEM.ADDRESS ); pragma interface(C,EXT); pragma import_procedure(EXT,"EXT",mechanism=>value); LOC : CLIST; begin LOC := new FOO; LOC.BAR := 5; EXT(LOC.all'address); end ZIP; -- ext.c struct foo { int bar; }; ext( p ) struct foo *p; { printf("p->bar = %d\n", p->bar ); } -- run.com $ acs create library [.adalib] $ acs set library [.adalib] $ ada zip $ cc ext $ acs export/main zip $ link zip,sys$input/option ext.obj sys$library:vaxcrtl/share $ run zip $ exit --------------- This was verified with DecAda v1.3. for more info see "VAX Ada Programmer's Run-Time Reference Manual", section 4.4 "Using the Import and Export Pragmas", pages 4-14 to 4-26. Hope this helps. Jeff Bartlett Center for Digital Systems Research jb@rti.rti.org Research Triangle Institute, RTP, NC rti!jb@mcnc mcnc!rti!jb > > MArk Gerhardt > ESL, INC > reply : gerhardt@ajpo.sei.cmu.edu