Update of /cvsroot/linux-vax/tools/src/gcc/config/vax
In directory usw-pr-cvs1:/tmp/cvs-serv18982
Modified Files:
Tag: tools-linuxvax-dynamic-dev
pic.h vax.h
Log Message:
DA: final changes from NetBSD.. define some things from them for PIC
compiles my test object now .. time for kernel test again
Index: pic.h
===================================================================
RCS file: /cvsroot/linux-vax/tools/src/gcc/config/vax/pic.h,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- pic.h 19 Oct 2002 11:33:39 -0000 1.1.2.1
+++ pic.h 24 Oct 2002 12:09:10 -0000 1.1.2.2
@@ -44,6 +44,18 @@
} \
}
+
+
+/* Function CSE screws up PLT .vs. GOT usage.
+ * */
+#define NO_FUNCTION_CSE
+
+/* This makes use of a hook in varasm.c to mark all external functions
+ * for us. We use this to make sure that external functions are correctly
+ * referenced from the PLT. */
+
+#define NO_EXTERNAL_INDIRECT_ADDRESS
+
/* Register to hold the addressing base for position independent
* code access to data items.
* This is r10 on vaxes. There is no ABI, so its r10 'cos I say so. */
@@ -210,9 +222,12 @@
TREE_PUBLIC (DECL)); \
} \
\
+ if (GET_CODE (rtl) == MEM) \
+ { \
SYMBOL_REF_FLAG (XEXP (rtl, 0)) \
= (TREE_CODE_CLASS (TREE_CODE (DECL)) != 'd' \
|| ! TREE_PUBLIC (DECL)); \
+ }\
} \
} \
while (0)
Index: vax.h
===================================================================
RCS file: /cvsroot/linux-vax/tools/src/gcc/config/vax/vax.h,v
retrieving revision 2.17.2.5
retrieving revision 2.17.2.6
diff -u -r2.17.2.5 -r2.17.2.6
--- vax.h 19 Oct 2002 11:33:39 -0000 2.17.2.5
+++ vax.h 24 Oct 2002 12:09:10 -0000 2.17.2.6
@@ -1253,13 +1253,32 @@
(The Vax does not use such vectors,
but we must define this macro anyway.) */
-#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \
- fprintf (FILE, "\t.long L%d\n", VALUE)
+#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \
+ do \
+ { \
+ char label[256]; \
+ ASM_GENERATE_INTERNAL_LABEL (label, "L", (VALUE)); \
+ fprintf (FILE, "\t.long "); \
+ assemble_name (FILE, label); \
+ fprintf (FILE, "\n"); \
+ } \
+ while (0)
/* This is how to output an element of a case-vector that is relative. */
-#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
- fprintf (FILE, "\t.word L%d-L%d\n", VALUE, REL)
+#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
+ do \
+ { \
+ char label[256]; \
+ ASM_GENERATE_INTERNAL_LABEL (label, "L", (VALUE)); \
+ fprintf (FILE, "\t.word "); \
+ assemble_name (FILE, label); \
+ ASM_GENERATE_INTERNAL_LABEL (label, "L", (REL)); \
+ fprintf (FILE, "-"); \
+ assemble_name (FILE, label); \
+ fprintf (FILE, "\n"); \
+ } \
+ while (0)
/* This is how to output an assembler line
that says to advance the location counter
|