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]

AIX 5.2 support added


Index: config.gcc
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config.gcc,v
retrieving revision 1.252
diff -c -p -r1.252 config.gcc
*** config.gcc	3 Oct 2002 21:46:58 -0000	1.252
--- config.gcc	10 Oct 2002 18:13:32 -0000
*************** rs6000-ibm-aix4.[3456789]* | powerpc-ibm
*** 2132,2141 ****
  	thread_file='aix'
  	extra_headers=
  	;;
! rs6000-ibm-aix[56789].* | powerpc-ibm-aix[56789].*)
  	xm_defines=POSIX
  	tm_file="${tm_file} rs6000/aix.h rs6000/aix51.h rs6000/xcoff.h"
  	tmake_file=rs6000/t-aix43
  	use_collect2=yes
  	thread_file='aix'
  	extra_headers=
--- 2132,2149 ----
  	thread_file='aix'
  	extra_headers=
  	;;
! rs6000-ibm-aix5.1.* | powerpc-ibm-aix5.1.*)
  	xm_defines=POSIX
  	tm_file="${tm_file} rs6000/aix.h rs6000/aix51.h rs6000/xcoff.h"
  	tmake_file=rs6000/t-aix43
+ 	use_collect2=yes
+ 	thread_file='aix'
+ 	extra_headers=
+ 	;;
+ rs6000-ibm-aix[56789].* | powerpc-ibm-aix[56789].*)
+ 	xm_defines=POSIX
+ 	tm_file="${tm_file} rs6000/aix.h rs6000/aix52.h rs6000/xcoff.h"
+ 	tmake_file=rs6000/t-aix52
  	use_collect2=yes
  	thread_file='aix'
  	extra_headers=
*** /dev/null	Thu Oct 10 14:12:48 2002
--- aix52.h	Thu Oct 10 14:08:33 2002
***************
*** 0 ****
--- 1,191 ----
+ /* Definitions of target machine for GNU compiler,
+    for IBM RS/6000 POWER running AIX V5.2.
+    Copyright (C) 2002 Free Software Foundation, Inc.
+    Contributed by David Edelsohn (edelsohn@gnu.org).
+ 
+ This file is part of GNU CC.
+ 
+ GNU CC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+ 
+ GNU CC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GNU CC; see the file COPYING.  If not, write to
+ the Free Software Foundation, 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.  */
+ 
+ 
+ /* AIX V5 and above support 64-bit executables.  */
+ #undef  SUBSUBTARGET_SWITCHES
+ #define SUBSUBTARGET_SWITCHES					\
+   {"aix64", 		MASK_64BIT | MASK_POWERPC64 | MASK_POWERPC,	\
+    N_("Compile for 64-bit pointers") },					\
+   {"aix32",		- (MASK_64BIT | MASK_POWERPC64),		\
+    N_("Compile for 32-bit pointers") },					\
+   {"pe",		0,						\
+    N_("Support message passing with the Parallel Environment") },
+ 
+ /* Sometimes certain combinations of command options do not make sense
+    on a particular target machine.  You can define a macro
+    `OVERRIDE_OPTIONS' to take account of this.  This macro, if
+    defined, is executed once just after all the command options have
+    been parsed.
+ 
+    The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
+    get control.  */
+ 
+ #define NON_POWERPC_MASKS (MASK_POWER | MASK_POWER2)
+ #define SUBTARGET_OVERRIDE_OPTIONS					\
+ do {									\
+   if (TARGET_64BIT && (target_flags & NON_POWERPC_MASKS))		\
+     {									\
+       target_flags &= ~NON_POWERPC_MASKS;				\
+       warning ("-maix64 and POWER architecture are incompatible");	\
+     }									\
+   if (TARGET_64BIT && ! TARGET_POWERPC64)				\
+     {									\
+       target_flags |= MASK_POWERPC64;					\
+       warning ("-maix64 requires PowerPC64 architecture remain enabled"); \
+     }									\
+   if (TARGET_POWERPC64 && ! TARGET_64BIT)				\
+     {									\
+       error ("-maix64 required: 64-bit computation with 32-bit addressing not yet supported"); \
+     }									\
+ } while (0);
+ 
+ #undef ASM_SPEC
+ #define ASM_SPEC "-u %{maix64:-a64 -mppc64} %(asm_cpu)"
+ 
+ /* Common ASM definitions used by ASM_SPEC amonst the various targets
+    for handling -mcpu=xxx switches.  */
+ #undef ASM_CPU_SPEC
+ #define ASM_CPU_SPEC \
+ "%{!mcpu*: %{!maix64: \
+   %{mpowerpc64: -mppc64} \
+   %{!mpower64: %(asm_default)}}} \
+ %{mcpu=power3: -m604} \
+ %{mcpu=power4: -m604} \
+ %{mcpu=powerpc: -mppc} \
+ %{mcpu=rs64a: -mppc} \
+ %{mcpu=603: -m603} \
+ %{mcpu=603e: -m603} \
+ %{mcpu=604: -m604} \
+ %{mcpu=604e: -m604} \
+ %{mcpu=620: -mppc} \
+ %{mcpu=630: -m604}"
+ 
+ #undef	ASM_DEFAULT_SPEC
+ #define ASM_DEFAULT_SPEC "-m604"
+ 
+ #undef TARGET_OS_CPP_BUILTINS
+ #define TARGET_OS_CPP_BUILTINS()      \
+   do                                  \
+     {                                 \
+       builtin_define ("_IBMR2");      \
+       builtin_define ("_POWER");      \
+       builtin_define ("_LONG_LONG");  \
+       builtin_define ("_AIX");        \
+       builtin_define ("_AIX32");      \
+       builtin_define ("_AIX41");      \
+       builtin_define ("_AIX43");      \
+       builtin_define ("_AIX51");      \
+       builtin_define ("_AIX52");      \
+       builtin_assert ("system=unix"); \
+       builtin_assert ("system=aix");  \
+     }                                 \
+   while (0)
+ 
+ #undef CPP_SPEC
+ #define CPP_SPEC "%{posix: -D_POSIX_SOURCE}	\
+   %{ansi: -D_ANSI_C_SOURCE}			\
+   %{maix64: -D__64BIT__}			\
+   %{mpe: -I/usr/lpp/ppe.poe/include}		\
+   %{pthread: -D_THREAD_SAFE}"
+ 
+ /* The GNU C++ standard library requires that these macros be 
+    defined.  */
+ #undef CPLUSPLUS_CPP_SPEC                       
+ #define CPLUSPLUS_CPP_SPEC			\
+   "-D_XOPEN_SOURCE=500				\
+    -D_XOPEN_SOURCE_EXTENDED=1			\
+    -D_LARGE_FILE_API				\
+    -D_ALL_SOURCE				\
+    %{maix64: -D__64BIT__}			\
+    %{mpe: -I/usr/lpp/ppe.poe/include}		\
+    %{pthread: -D_THREAD_SAFE}"
+ 
+ #undef  TARGET_DEFAULT
+ #define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS)
+ 
+ #undef  PROCESSOR_DEFAULT
+ #define PROCESSOR_DEFAULT PROCESSOR_PPC630
+ #undef  PROCESSOR_DEFAULT64
+ #define PROCESSOR_DEFAULT64 PROCESSOR_POWER4
+ 
+ #undef  TARGET_POWER
+ #define TARGET_POWER 0
+ 
+ /* Define this macro as a C expression for the initializer of an
+    array of string to tell the driver program which options are
+    defaults for this target and thus do not need to be handled
+    specially when using `MULTILIB_OPTIONS'.
+ 
+    Do not define this macro if `MULTILIB_OPTIONS' is not defined in
+    the target makefile fragment or if none of the options listed in
+    `MULTILIB_OPTIONS' are set by default.  *Note Target Fragment::.  */
+ 
+ #undef	MULTILIB_DEFAULTS
+ 
+ #undef LIB_SPEC
+ #define LIB_SPEC "%{pg:-L/lib/profiled -L/usr/lib/profiled}\
+    %{p:-L/lib/profiled -L/usr/lib/profiled}\
+    %{!maix64:%{!shared:%{g*:-lg}}}\
+    %{mpe:-L/usr/lpp/ppe.poe/lib -lmpi -lvtd}\
+    %{pthread:-lpthreads} -lc"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC "-bpT:0x10000000 -bpD:0x20000000 %{!r:-btextro} -bnodelcsect\
+    %{static:-bnso %(link_syscalls) } %{shared:-bM:SRE %{!e:-bnoentry}}\
+    %{!maix64:%{!shared:%{g*: %(link_libg) }}} %{maix64:-b64}\
+    %{mpe:-binitfini:poe_remote_main}"
+ 
+ #undef STARTFILE_SPEC
+ #define STARTFILE_SPEC "%{!shared:\
+    %{maix64:%{pg:gcrt0_64%O%s}%{!pg:%{p:mcrt0_64%O%s}%{!p:crt0_64%O%s}}}\
+    %{!maix64:\
+      %{pthread:%{pg:gcrt0_r%O%s}%{!pg:%{p:mcrt0_r%O%s}%{!p:crt0_r%O%s}}}\
+      %{!pthread:%{pg:gcrt0%O%s}%{!pg:%{p:mcrt0%O%s}%{!p:crt0%O%s}}}}}"
+ 
+ /* AIX V5 typedefs ptrdiff_t as "long" while earlier releases used "int".  */
+ 
+ #undef PTRDIFF_TYPE
+ #define PTRDIFF_TYPE "long int"
+ 
+ /* Type used for wchar_t, as a string used in a declaration.  */
+ #undef  WCHAR_TYPE
+ #define WCHAR_TYPE (!TARGET_64BIT ? "short unsigned int" : "unsigned int")
+ 
+ /* Width of wchar_t in bits.  */
+ #undef  WCHAR_TYPE_SIZE
+ #define WCHAR_TYPE_SIZE (!TARGET_64BIT ? 16 : 32)
+ #define MAX_WCHAR_TYPE_SIZE 32
+ 
+ /* AIX V5 uses PowerPC nop (ori 0,0,0) instruction as call glue for PowerPC
+    and "cror 31,31,31" for POWER architecture.  */
+ 
+ #undef RS6000_CALL_GLUE
+ #define RS6000_CALL_GLUE "{cror 31,31,31|nop}"
+ 
+ /* AIX 4.2 and above provides initialization and finalization function
+    support from linker command line.  */
+ #undef HAS_INIT_SECTION
+ #define HAS_INIT_SECTION
+ 
+ #undef LD_INIT_SWITCH
+ #define LD_INIT_SWITCH "-binitfini"
*** /dev/null	Thu Oct 10 14:12:48 2002
--- t-aix52	Wed Oct  9 11:00:26 2002
***************
*** 0 ****
--- 1,52 ----
+ # We want fine grained libraries, so use the new code to build the
+ # floating point emulation libraries.
+ FPBIT = fp-bit.c
+ DPBIT = dp-bit.c
+ 
+ dp-bit.c: $(srcdir)/config/fp-bit.c
+ 	cat $(srcdir)/config/fp-bit.c > dp-bit.c
+ 
+ fp-bit.c: $(srcdir)/config/fp-bit.c
+ 	echo '#define FLOAT' > fp-bit.c
+ 	cat $(srcdir)/config/fp-bit.c >> fp-bit.c
+ 
+ # Build the libraries for pthread and all of the 
+ # different processor models
+ 
+ MULTILIB_OPTIONS	= pthread maix64
+ 
+ MULTILIB_DIRNAMES	= pthread ppc64
+ 
+ MULTILIB_MATCHES	= 
+ 
+ LIBGCC = stmp-multilib
+ INSTALL_LIBGCC = install-multilib
+ 
+ # Build a shared libgcc library.
+ SHLIB_EXT = .a
+ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
+ 	-Wl,-bE:@shlib_map_file@ -o @multilib_dir@/shr.o \
+ 	@multilib_flags@ @shlib_objs@ -lc \
+ 	`case @shlib_base_name@ in \
+ 	*pthread*) echo -L/usr/lib/threads -lpthreads -lc_r /usr/lib/libc.a ;; \
+ 	*) echo -lc ;; esac` ; \
+ 	rm -f tmp-@shlib_base_name@.a ; \
+ 	$(AR_CREATE_FOR_TARGET) tmp-@shlib_base_name@.a @multilib_dir@/shr.o ; \
+ 	mv tmp-@shlib_base_name@.a @shlib_base_name@.a ; \
+ 	rm -f @multilib_dir@/shr.o
+ # $(slibdir) double quoted to protect it from expansion while building
+ # libgcc.mk.  We want this delayed until actual install time.
+ SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.a $$(slibdir)/
+ SHLIB_LIBS = -lc `case @shlib_base_name@ in *pthread*) echo -lpthread ;; esac`
+ SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
+ SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver
+ SHLIB_NM_FLAGS = -Bpg -X32_64
+ 
+ # Either 32-bit and 64-bit objects in archives.
+ AR_FLAGS_FOR_TARGET = -X32_64
+ 
+ # Compile Ada files with minimal-toc.  The primary focus is gnatlib, so
+ # that the library does not use nearly the entire TOC of applications
+ # until gnatlib is built as a shared library on AIX.  Compiling the
+ # compiler with -mminimal-toc does not cause any harm.
+ T_ADAFLAGS = -mminimal-toc


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