comp.lang.ada
 help / color / mirror / Atom feed
From: jb@rti.UUCP (Jeff Bartlett)
Subject: Re: bug in DEC compiler??
Date: 27 Jan 89 03:48:47 GMT	[thread overview]
Message-ID: <2757@rti.UUCP> (raw)
In-Reply-To: 8901260051.AA26048@ajpo.sei.cmu.edu

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

      reply	other threads:[~1989-01-27  3:48 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1989-01-26  0:51 bug in DEC compiler?? gerhardt
1989-01-27  3:48 ` Jeff Bartlett [this message]
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox