From: Dave A. <ai...@us...> - 2002-10-24 12:09:18
|
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 |