This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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]

[Ada] Use proper 64 bit C routines under IVMS


Manually tested under ia64-openvms.
Tested under i686-linux, committed on mainline.

IVMS is configured for 64bit pointers, but we to use 32bit memory allocation
for now to get around some issues in VMS Starlet libraries.

There are only four RTL routines that actually allocate new memory.
malloc
calloc
realloc
strdup

and the 32 bit versions of these routines are used.

There are lots of other pointer size dependent routines, and its vital to use
the 64 bit versions of these routines as illustrated by this example

{
   char *foo
   double dd;

   dd = strtod ("1.0hello", &foo);
   printf ("%s\n", foo);
}

If the 32 bit version of strtod() is used and the uninitialized foo pointer
has garbage in the high order 32 bits, it will still have that garbage after
the return from strtod() and subsequent use of the foo pointer will cause
difficulty.

2005-03-17  Doug Rupp  <rupp@adacore.com>

	* Makefile.in: (ia64-hp-*vms*): Use s-crtl-vms64.ads.

        * 5xcrtl.ads: Renamed to...
        * s-crtl-vms64.ads: ...this new file

Attachment: difs.11
Description: Text document


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