aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-06-17 20:26:23 +0000
committerRichard Stallman <rms@gnu.org>1993-06-17 20:26:23 +0000
commitbabbe1eb8c8f138055a2629eb6c2df5d5b77fbd2 (patch)
treec274ab4c8808782c004f934fc16be0504999af64 /gcc/config
parent5f6be9da2e8dbabf13acc031d0180d1ba12694ff (diff)
downloadgcc-babbe1eb8c8f138055a2629eb6c2df5d5b77fbd2.zip
gcc-babbe1eb8c8f138055a2629eb6c2df5d5b77fbd2.tar.gz
gcc-babbe1eb8c8f138055a2629eb6c2df5d5b77fbd2.tar.bz2
Changes for non gas gcc.
(ASM_FILE_START_1): Always output .noopt because /bin/as is buggy. Added #undef to {INIT,FINI,CTORS,DTORS}_SECTION_ASM_OP, ... when not using GAS. (CONST_SECTION_FUNCTION): Override svr3 default. (EXTRA_SECTION_FUNCTIONS): Override svr3 default. (OBJECT_FORMAT_COFF): Added define for collect2. (MY_ISCOFF): For collect2 to handle aix and svr3 object file. From-SVN: r4687
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/i386/aix386ng.h48
1 files changed, 46 insertions, 2 deletions
diff --git a/gcc/config/i386/aix386ng.h b/gcc/config/i386/aix386ng.h
index 07f6ac7..6eecde8 100644
--- a/gcc/config/i386/aix386ng.h
+++ b/gcc/config/i386/aix386ng.h
@@ -71,12 +71,12 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#define PCC_BITFIELD_TYPE_MATTERS 1
-#if 0
+#ifndef USE_GAS
/* Don't write a `.optim' pseudo; this assembler
is said to have a bug when .optim is used. */
#undef ASM_FILE_START_1
-#define ASM_FILE_START_1(FILE) fprintf (FILE, "\t.noopt\n");
+#define ASM_FILE_START_1(FILE) fprintf (FILE, "\t.noopt\n")
#endif
/* Output assembler code to FILE to increment profiler label # LABELNO
@@ -94,3 +94,47 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
(bss_section (), \
ASM_OUTPUT_LABEL ((FILE), (NAME)), \
fprintf ((FILE), "\t.set .,.+%u\n", (ROUNDED)))
+
+
+/* Undef all the .init and .fini section stuff if we are not using gas and
+ * gnu ld so that we can use collect because the standard /bin/as and /bin/ld
+ * cannot handle those.
+ */
+#ifndef USE_GAS
+# undef INIT_SECTION_ASM_OP
+# undef FINI_SECTION_ASM_OP
+# undef CTORS_SECTION_ASM_OP
+# undef DTORS_SECTION_ASM_OP
+# undef ASM_OUTPUT_CONSTRUCTOR
+# undef ASM_OUTPUT_DESTRUCTOR
+# undef DO_GLOBAL_CTORS_BODY
+
+# undef CTOR_LIST_BEGIN
+# define CTOR_LIST_BEGIN
+# undef CTOR_LIST_END
+# define CTOR_LIST_END
+# undef DTOR_LIST_BEGIN
+# define DTOR_LIST_BEGIN
+# undef DTOR_LIST_END
+# define DTOR_LIST_END
+
+# undef CONST_SECTION_FUNCTION
+# define CONST_SECTION_FUNCTION \
+void \
+const_section () \
+{ \
+ extern void text_section(); \
+ text_section(); \
+}
+
+# undef EXTRA_SECTION_FUNCTIONS
+# define EXTRA_SECTION_FUNCTIONS \
+ CONST_SECTION_FUNCTION \
+ BSS_SECTION_FUNCTION
+
+/* for collect2 */
+# define OBJECT_FORMAT_COFF
+# define MY_ISCOFF(magic) \
+ ((magic) == I386MAGIC || (magic) == I386SVMAGIC)
+
+#endif /* !USE_GAS */