This is the mail archive of the gcc@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]

--enable-new-abi


This is an experimental patch for egcs, enabling -fnew-abi by default.
It is useful for compiling libstdc++ with the new ABI. Currently, this
enables:
- a new lay-out for classes if padding is involved,
- a new mechanism to provide shorter mangled names (-fsquangle),
- a standard-conforming processing of namespace std (-fhonor-std).

Unfortunately, it is not possible to disable the default during
runtime (i.e. -fno-new-abi doesn't really work). Therefore, this patch
should not go into egcs. Suggestions for improvements are welcome.

Martin

Sat May  9 09:47:48 1998  Martin von Loewis  <loewis@informatik.hu-berlin.de>

	* configure.in (--enable-new-abi): New option.
	* acconfig.h: Likewise.

	* gcc.c (CPP_SPEC): Add -D_HONOR_STD if configured for new ABI.
	(CC1PLUS_SPEC): Add -fnew-abi if configured for new ABI.


Index: acconfig.h
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/acconfig.h,v
retrieving revision 1.14
diff -u -p -r1.14 acconfig.h
--- acconfig.h	1998/04/04 17:37:22	1.14
+++ acconfig.h	1998/05/09 07:44:14
@@ -45,4 +48,7 @@
 
 /* Whether abort must be declared even if <stdlib.h> is included.  */
 #undef NEED_DECLARATION_ABORT
+
+/* Use new g++ ABI */
+#undef ENABLE_NEW_ABI
 @TOP@
Index: configure.in
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/configure.in,v
retrieving revision 1.99
diff -u -p -r1.99 configure.in
--- configure.in	1998/05/08 01:18:39	1.99
+++ configure.in	1998/05/09 07:44:23
@@ -55,6 +55,12 @@ AC_ARG_WITH(elf,
 elf="$with_elf",
 elf=no)
 
+# Specify usage of new ABI
+AC_ARG_ENABLE(new-abi,
+[  --enable-new-abi        try experimental incompatible g++ features.],
+newabi="$enable_new_abi",
+newabi=no)
+
 # Specify the local prefix
 AC_ARG_WITH(local-prefix,
 [  --with-local-prefix=DIR specifies directory to put local include.],
@@ -180,6 +192,10 @@ AC_CACHE_VAL(gcc_cv_header_inttypes_h,
    gcc_cv_header_inttypes_h=yes],
   gcc_cv_header_inttypes_h=no)])
 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
+
+if test $newabi = yes; then
+  AC_DEFINE(ENABLE_NEW_ABI)
+fi
 
 AC_CHECK_FUNCS(strtoul bsearch strerror putenv popen bcopy bzero bcmp \
 	index rindex strchr strrchr kill getrlimit setrlimit atoll atoq \
Index: gcc.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/gcc.c,v
retrieving revision 1.32
diff -u -p -r1.32 gcc.c
--- gcc.c	1998/05/07 20:49:41	1.32
+++ gcc.c	1998/05/09 07:44:30
@@ -403,6 +403,11 @@ proper position among the other output f
 #ifndef CPP_SPEC
 #define CPP_SPEC ""
 #endif
+#ifdef ENABLE_NEW_ABI
+#define CPP_FULL_SPEC CPP_SPEC "-D__HONOR_STD"
+#else
+#define CPP_FULL_SPEC CPP_SPEC
+#endif
 
 /* config.h can define CC1_SPEC to provide extra args to cc1 and cc1plus
    or extra switch-translations.  */
@@ -415,6 +420,11 @@ proper position among the other output f
 #ifndef CC1PLUS_SPEC
 #define CC1PLUS_SPEC ""
 #endif
+#ifdef ENABLE_NEW_ABI
+#define CC1PLUS_FULL_SPEC CC1PLUS_SPEC "-fnew-abi"
+#else
+#define CC1PLUS_FULL_SPEC CC1PLUS_SPEC
+#endif
 
 /* config.h can define LINK_SPEC to provide extra args to the linker
    or extra switch-translations.  */
@@ -470,10 +480,10 @@ proper position among the other output f
 #define LINKER_NAME "collect2"
 #endif
 
-static char *cpp_spec = CPP_SPEC;
+static char *cpp_spec = CPP_FULL_SPEC;
 static char *cpp_predefines = CPP_PREDEFINES;
 static char *cc1_spec = CC1_SPEC;
-static char *cc1plus_spec = CC1PLUS_SPEC;
+static char *cc1plus_spec = CC1PLUS_FULL_SPEC;
 static char *signed_char_spec = SIGNED_CHAR_SPEC;
 static char *asm_spec = ASM_SPEC;
 static char *asm_final_spec = ASM_FINAL_SPEC;


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