aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <merrill@gnu.org>1997-04-30 09:41:22 +0000
committerJason Merrill <merrill@gnu.org>1997-04-30 09:41:22 +0000
commitc5e2f6973c5bc7c559b376cf88e5cd5f8640667e (patch)
tree08911202719e423b886c2598fcceaf1fff4455d8
parent51ac666bcb92f0a63e633057ec9fc7ad26111b03 (diff)
downloadgcc-c5e2f6973c5bc7c559b376cf88e5cd5f8640667e.zip
gcc-c5e2f6973c5bc7c559b376cf88e5cd5f8640667e.tar.gz
gcc-c5e2f6973c5bc7c559b376cf88e5cd5f8640667e.tar.bz2
x
From-SVN: r13992
-rw-r--r--gcc/config/mips/iris6.h27
1 files changed, 25 insertions, 2 deletions
diff --git a/gcc/config/mips/iris6.h b/gcc/config/mips/iris6.h
index 5d0c872..c9ec59d 100644
--- a/gcc/config/mips/iris6.h
+++ b/gcc/config/mips/iris6.h
@@ -223,8 +223,31 @@ Boston, MA 02111-1307, USA. */
#define BSS_SECTION_ASM_OP ".section\t.bss"
#define CONST_SECTION_ASM_OP_32 "\t.rdata"
#define CONST_SECTION_ASM_OP_64 ".section\t.rodata"
-#define CTORS_SECTION_ASM_OP ".section\t.ctors,1,2,0,4"
-#define DTORS_SECTION_ASM_OP ".section\t.dtors,1,2,0,4"
+
+/* The IRIX 6 assembler .section directive takes four additional args:
+ section type, flags, entry size, and alignment. The alignment of the
+ .ctors and .dtors sections needs to be the same as the size of a pointer
+ so that the linker doesn't add padding between elements. */
+#if defined (CRT_BEGIN) || defined (CRT_END)
+
+/* If we are included from crtstuff.c, these need to be plain strings.
+ _MIPS_SZPTR is defined in SUBTARGET_CPP_SPEC above. */
+#if _MIPS_SZPTR == 64
+#define CTORS_SECTION_ASM_OP ".section\t.ctors,1,2,0,8"
+#define DTORS_SECTION_ASM_OP ".section\t.dtors,1,2,0,8"
+#else /* _MIPS_SZPTR != 64 */
+#define CTORS_SECTION_ASM_OP ".section\t.ctors,1,2,0,4"
+#define DTORS_SECTION_ASM_OP ".section\t.dtors,1,2,0,4"
+#endif /* _MIPS_SZPTR == 64 */
+
+#else /* ! (defined (CRT_BEGIN) || defined (CRT_END)) */
+
+/* If we are included from varasm.c, these need to depend on -mabi. */
+#define CTORS_SECTION_ASM_OP \
+ (TARGET_LONG64 ? ".section\t.ctors,1,2,0,8" : ".section\t.ctors,1,2,0,4")
+#define DTORS_SECTION_ASM_OP \
+ (TARGET_LONG64 ? ".section\t.dtors,1,2,0,8" : ".section\t.dtors,1,2,0,4")
+#endif /* defined (CRT_BEGIN) || defined (CRT_END) */
/* A default list of other sections which we might be "in" at any given
time. For targets that use additional sections (e.g. .tdesc) you