Re: [VMS/committed]: Add -mpointer-size switch
Tristan Gingold ging...@adacore.com writes: diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 34183ba..120628e 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -5488,7 +5488,7 @@ gnat_to_gnu_param (Entity_Id gnat_param, Mechanism_Type mech, /* VMS descriptors are themselves passed by reference. */ if (mech == By_Short_Descriptor || - (mech == By_Descriptor TARGET_ABI_OPEN_VMS !TARGET_MALLOC64)) + (mech == By_Descriptor TARGET_ABI_OPEN_VMS !flag_vms_malloc64)) ../../gcc/ada/gcc-interface/decl.c: In function 'gnat_to_gnu_param': ../../gcc/ada/gcc-interface/decl.c:5492: error: 'flag_vms_malloc64' undeclared (first use in this function) ../../gcc/ada/gcc-interface/decl.c:5492: error: (Each undeclared identifier is reported only once ../../gcc/ada/gcc-interface/decl.c:5492: error: for each function it appears in.) make[3]: *** [ada/decl.o] Error 1 Andreas. -- Andreas Schwab, sch...@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 And now for something completely different.
Re: [VMS/committed]: Add -mpointer-size switch
On Mar 13, 2012, at 12:13 PM, Andreas Schwab wrote: Tristan Gingold ging...@adacore.com writes: diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 34183ba..120628e 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -5488,7 +5488,7 @@ gnat_to_gnu_param (Entity_Id gnat_param, Mechanism_Type mech, /* VMS descriptors are themselves passed by reference. */ if (mech == By_Short_Descriptor || - (mech == By_Descriptor TARGET_ABI_OPEN_VMS !TARGET_MALLOC64)) + (mech == By_Descriptor TARGET_ABI_OPEN_VMS !flag_vms_malloc64)) ../../gcc/ada/gcc-interface/decl.c: In function 'gnat_to_gnu_param': ../../gcc/ada/gcc-interface/decl.c:5492: error: 'flag_vms_malloc64' undeclared (first use in this function) ../../gcc/ada/gcc-interface/decl.c:5492: error: (Each undeclared identifier is reported only once ../../gcc/ada/gcc-interface/decl.c:5492: error: for each function it appears in.) make[3]: *** [ada/decl.o] Error 1 For which target ? On non-VMS targets, flag_vms_malloc64 is declared in gigi.h as: /* Let code know whether we are targetting VMS without need of intrusive preprocessor directives. */ #ifndef TARGET_ABI_OPEN_VMS #define TARGET_ABI_OPEN_VMS 0 /* VMS option set by default, when clear forces 32bit mallocs and 32bit Descriptors. Always used in combination with TARGET_ABI_OPEN_VMS so no effect on non-VMS systems. */ #define flag_vms_malloc64 0 #endif Tristan.
Re: [VMS/committed]: Add -mpointer-size switch
On Tue, Mar 13, 2012 at 12:20 PM, Tristan Gingold ging...@adacore.com wrote: On Mar 13, 2012, at 12:13 PM, Andreas Schwab wrote: Tristan Gingold ging...@adacore.com writes: diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 34183ba..120628e 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -5488,7 +5488,7 @@ gnat_to_gnu_param (Entity_Id gnat_param, Mechanism_Type mech, /* VMS descriptors are themselves passed by reference. */ if (mech == By_Short_Descriptor || - (mech == By_Descriptor TARGET_ABI_OPEN_VMS !TARGET_MALLOC64)) + (mech == By_Descriptor TARGET_ABI_OPEN_VMS !flag_vms_malloc64)) That looks ugly and should have left a target macro instead of ... ../../gcc/ada/gcc-interface/decl.c: In function 'gnat_to_gnu_param': ../../gcc/ada/gcc-interface/decl.c:5492: error: 'flag_vms_malloc64' undeclared (first use in this function) ../../gcc/ada/gcc-interface/decl.c:5492: error: (Each undeclared identifier is reported only once ../../gcc/ada/gcc-interface/decl.c:5492: error: for each function it appears in.) make[3]: *** [ada/decl.o] Error 1 For which target ? On non-VMS targets, flag_vms_malloc64 is declared in gigi.h as: /* Let code know whether we are targetting VMS without need of intrusive preprocessor directives. */ #ifndef TARGET_ABI_OPEN_VMS #define TARGET_ABI_OPEN_VMS 0 /* VMS option set by default, when clear forces 32bit mallocs and 32bit Descriptors. Always used in combination with TARGET_ABI_OPEN_VMS so no effect on non-VMS systems. */ #define flag_vms_malloc64 0 #endif ... this. Richard. Tristan.
Re: [VMS/committed]: Add -mpointer-size switch
Tristan Gingold ging...@adacore.com writes: For which target ? ia64-*-* or alpha-*-* On non-VMS targets, flag_vms_malloc64 is declared in gigi.h as: /* Let code know whether we are targetting VMS without need of intrusive preprocessor directives. */ #ifndef TARGET_ABI_OPEN_VMS TARGET_ABI_OPEN_VMS is always defined. Andreas. -- Andreas Schwab, sch...@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 And now for something completely different.
Re: [VMS/committed]: Add -mpointer-size switch
On Mar 13, 2012, at 2:57 PM, Andreas Schwab wrote: Tristan Gingold ging...@adacore.com writes: For which target ? ia64-*-* or alpha-*-* On non-VMS targets, flag_vms_malloc64 is declared in gigi.h as: /* Let code know whether we are targetting VMS without need of intrusive preprocessor directives. */ #ifndef TARGET_ABI_OPEN_VMS TARGET_ABI_OPEN_VMS is always defined. Ok, I see the issue. Will fix. Tristan.
Re: [VMS/committed]: Add -mpointer-size switch
On Mar 13, 2012, at 2:57 PM, Andreas Schwab wrote: Tristan Gingold ging...@adacore.com writes: For which target ? ia64-*-* or alpha-*-* On non-VMS targets, flag_vms_malloc64 is declared in gigi.h as: /* Let code know whether we are targetting VMS without need of intrusive preprocessor directives. */ #ifndef TARGET_ABI_OPEN_VMS TARGET_ABI_OPEN_VMS is always defined. I am committing this patch to fix the build failure. Tested by (cross) building ia64-linux and ia64-hp-openvms. Tristan. gcc/ada/ 2012-03-13 Tristan Gingold ging...@adacore.com * gcc-interface/gigi.h (flag_vms_malloc64): Refine condition. Index: gcc-interface/gigi.h === --- gcc-interface/gigi.h(revision 185334) +++ gcc-interface/gigi.h(working copy) @@ -995,10 +995,12 @@ intrusive preprocessor directives. */ #ifndef TARGET_ABI_OPEN_VMS #define TARGET_ABI_OPEN_VMS 0 +#endif /* VMS option set by default, when clear forces 32bit mallocs and 32bit - Descriptors. Always used in combination with TARGET_ABI_OPEN_VMS + Descriptors. Always used in combination with TARGET_ABI_OPEN_VMS so no effect on non-VMS systems. */ +#if TARGET_ABI_OPEN_VMS == 0 #define flag_vms_malloc64 0 #endif
[VMS/committed]: Add -mpointer-size switch
Hi, Now that '#pragma pointer_size' is supported by GCC for VMS, we can add the '-mpointer-size' switch (modeled on /POINTER_SIZE=xx DEC-C qualifier) to set the default pointer size. This also makes alpha64-dec-*vms* target obsolete (but still supported by alpha*-dec-*vms*). The patch has many chunks to adjust ™ declarations. Documentation will follow. Tested by build gcc, committed on trunk. Tristan. 2012-03-12 Tristan Gingold ging...@adacore.com * config/vms/vms.opt: Add vms-opts.h header. (mmalloc64): Use flag_vms_malloc64 flag instead of MALLOC64 target mask. (-mvms-return-codes): Document. (-mpointer-size): New option. (vms_pointer_size): Add enumeration. * config/vms/vms-opts.h: New file. * config/vms/vms.h (TARGET_OS_CPP_BUILTINS): Define __INITIAL_POINTER_SIZE. (POINTER_SIZE, SIZE_TYPE, PTRDIFF_TYPE): Adjust definition. (C_COMMON_OVERRIDE_OPTIONS): Define. (DWARF2_ADDR_SIZE): Define. * config/vms/vms.c (vms_patch_builtins): Adjust condition. * config/vms/vms-protos.h (vms_c_common_override_options): New prototype. * config/vms/vms-c.c (vms_pragma_pointer_size): Ignore pragma if -mno-pointer-size. (vms_c_common_override_options): New function. * config/ia64/vms.h (TARGET_DEFAULT): Remove MASK_MALLOC64. * config/alpha/vms.h (TARGET_DEFAULT): Remove MASK_MALLOC64. (MALLOC_ABI_ALIGNMENT): Use flag_vms_malloc64 and flag_vms_pointer_size. (MASK_RETURN_ADDR): Set according to flag_vms_pointer_size. * config.gcc (*-*-*vms*): Define xm_file. (alpha*-dec-*vms*): Do not define xm_file. (alpha64-dec-*vms*): Remove. (ia64-hp-*vms*): Do not define xm_file. Simplify tm_file and tmake_file. ada/ 2012-03-12 Tristan Gingold ging...@adacore.com * gcc-interface/decl.c (gnat_to_gnu_param): Use flag_vms_malloc64 instead of TARGET_MALLOC64. * gcc-interface/gigi.h (flag_vms_malloc64): Define instead of TARGET_MALLOC64. libgcc/ 2012-03-12 Tristan Gingold ging...@adacore.com * config/alpha/t-vms: Define HOST_LIBGCC2_CFLAGS. * config/ia64/t-vms: Likewise. diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 34183ba..120628e 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -5488,7 +5488,7 @@ gnat_to_gnu_param (Entity_Id gnat_param, Mechanism_Type mech, /* VMS descriptors are themselves passed by reference. */ if (mech == By_Short_Descriptor || - (mech == By_Descriptor TARGET_ABI_OPEN_VMS !TARGET_MALLOC64)) + (mech == By_Descriptor TARGET_ABI_OPEN_VMS !flag_vms_malloc64)) gnu_param_type = build_pointer_type (build_vms_descriptor32 (gnu_param_type, Mechanism (gnat_param), diff --git a/gcc/ada/gcc-interface/gigi.h b/gcc/ada/gcc-interface/gigi.h index 5e6495a..f7d787b 100644 --- a/gcc/ada/gcc-interface/gigi.h +++ b/gcc/ada/gcc-interface/gigi.h @@ -999,13 +999,11 @@ extern void enumerate_modes (void (*f) (const char *, int, int, int, int, int, intrusive preprocessor directives. */ #ifndef TARGET_ABI_OPEN_VMS #define TARGET_ABI_OPEN_VMS 0 -#endif -/* VMS macro set by default, when clear forces 32bit mallocs and 32bit +/* VMS option set by default, when clear forces 32bit mallocs and 32bit Descriptors. Always used in combination with TARGET_ABI_OPEN_VMS so no effect on non-VMS systems. */ -#ifndef TARGET_MALLOC64 -#define TARGET_MALLOC64 0 +#define flag_vms_malloc64 0 #endif /* Convenient shortcuts. */ diff --git a/gcc/config.gcc b/gcc/config.gcc index 99f0b47..053f6ec 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -735,6 +735,7 @@ case ${target} in extra_objs=vms.o target_gtfiles=$target_gtfiles \$(srcdir)/config/vms/vms.c tm_p_file=${tm_p_file} vms/vms-protos.h + xm_file=vms/xm-vms.h c_target_objs=vms-c.o cxx_target_objs=vms-c.o if test x$gnu_ld != xyes; then @@ -809,14 +810,8 @@ alpha*-dec-osf5.1*) ;; esac ;; -alpha64-dec-*vms*) - tm_file=${tm_file} vms/vms.h vms/vms64.h alpha/vms.h - xm_file=alpha/xm-vms.h vms/xm-vms64.h - tmake_file=${tmake_file} vms/t-vms64 alpha/t-vms - ;; alpha*-dec-*vms*) tm_file=${tm_file} vms/vms.h alpha/vms.h - xm_file=alpha/xm-vms.h tmake_file=${tmake_file} alpha/t-vms ;; arm-wrs-vxworks) @@ -1554,9 +1549,8 @@ ia64*-*-hpux*) esac ;; ia64-hp-*vms*) - tm_file=${tm_file} elfos.h ia64/sysv4.h ia64/elf.h vms/vms.h vms/vms64.h ia64/vms.h - xm_file=vms/xm-vms.h vms/xm-vms64.h - tmake_file=${tmake_file} vms/t-vms64 ia64/t-ia64 + tm_file=${tm_file} elfos.h ia64/sysv4.h vms/vms.h ia64/vms.h + tmake_file=${tmake_file} ia64/t-ia64 target_cpu_default=0 if test x$gas = xyes then diff --git a/gcc/config/alpha/vms.h
Re: [VMS/committed]: Add -mpointer-size switch
On 3/12/2012 4:48 AM, Tristan Gingold wrote: Hi, Now that '#pragma pointer_size' is supported by GCC for VMS, we can add the '-mpointer-size' switch (modeled on /POINTER_SIZE=xx DEC-C qualifier) to set the default pointer size. This also makes alpha64-dec-*vms* target obsolete (but still supported by alpha*-dec-*vms*). What about the size of Ada system.address which is also controlled by alpha64 triplet?
Re: [VMS/committed]: Add -mpointer-size switch
On Mar 12, 2012, at 3:14 PM, Douglas Rupp wrote: On 3/12/2012 4:48 AM, Tristan Gingold wrote: Hi, Now that '#pragma pointer_size' is supported by GCC for VMS, we can add the '-mpointer-size' switch (modeled on /POINTER_SIZE=xx DEC-C qualifier) to set the default pointer size. This also makes alpha64-dec-*vms* target obsolete (but still supported by alpha*-dec-*vms*). What about the size of Ada system.address which is also controlled by alpha64 triplet? You should need to configure as alpha64-dec-openvms. But indeed, I think we should always default to 64 for Ada. Tristan.