summaryrefslogtreecommitdiff
path: root/gcc/config/mips/linux.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/mips/linux.h')
-rw-r--r--gcc/config/mips/linux.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h
index 7e22c8149b4..fc4c237c89d 100644
--- a/gcc/config/mips/linux.h
+++ b/gcc/config/mips/linux.h
@@ -37,6 +37,7 @@ Boston, MA 02111-1307, USA. */
/* Handle #pragma weak and #pragma pack. */
+#undef HANDLE_SYSV_PRAGMA
#define HANDLE_SYSV_PRAGMA 1
/* Use more efficient ``thunks'' to implement C++ vtables. */
@@ -160,3 +161,38 @@ Boston, MA 02111-1307, USA. */
%{mabi=64: -64} \
%{!fno-PIC:%{!fno-pic:-KPIC}} \
%{fno-PIC:-non_shared} %{fno-pic:-non_shared}"
+
+/* We don't need those nonsenses. */
+#undef INVOKE__main
+#undef CTOR_LIST_BEGIN
+#undef CTOR_LIST_END
+#undef DTOR_LIST_BEGIN
+#undef DTOR_LIST_END
+
+/* The MIPS assembler has different syntax for .set. We set it to
+ .dummy to trap any errors. */
+#undef SET_ASM_OP
+#define SET_ASM_OP "\t.dummy\t"
+
+/* This is how we tell the assembler that two symbols have the
+ same value. */
+#undef ASM_OUTPUT_DEF
+#define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2) \
+ do { \
+ fprintf ((FILE), "\t"); \
+ assemble_name (FILE, LABEL1); \
+ fprintf (FILE, "="); \
+ assemble_name (FILE, LABEL2); \
+ fprintf (FILE, "\n"); \
+ } while (0)
+
+#undef ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL
+#define ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL(FILE, SY, HI, LO) \
+ do { \
+ fputc ('\t', FILE); \
+ assemble_name (FILE, SY); \
+ fputc ('=', FILE); \
+ assemble_name (FILE, HI); \
+ fputc ('-', FILE); \
+ assemble_name (FILE, LO); \
+ } while (0)