diff options
author | Chris Larson <clarson@kergoth.com> | 2004-12-09 09:47:41 +0000 |
---|---|---|
committer | Chris Larson <clarson@kergoth.com> | 2004-12-09 09:47:41 +0000 |
commit | 2c5b8ec6d95cf68650265941530e5ce38c8dd6d9 (patch) | |
tree | bf879bea7ef8517ba8c3d1286ef300401d3d484c /gcc/gcc-3.3.3/arm-gotoff.dpatch | |
parent | 101e2f1623def0a355d20aacb8bd93810703e834 (diff) |
Merge oe-devel@oe-devel.bkbits.net:openembedded
into hyperion.kergoth.com:/home/kergoth/code/openembedded
2004/12/09 03:39:39-06:00 kergoth.com!kergoth
Break people's builds again.. this time moving the packages into a packages/ subdir to clean things up a bit.
BKrev: 41b81f3dvlp3rU7_8MUXLcI8LDdDoA
Diffstat (limited to 'gcc/gcc-3.3.3/arm-gotoff.dpatch')
-rw-r--r-- | gcc/gcc-3.3.3/arm-gotoff.dpatch | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/gcc/gcc-3.3.3/arm-gotoff.dpatch b/gcc/gcc-3.3.3/arm-gotoff.dpatch deleted file mode 100644 index 610f9430e0..0000000000 --- a/gcc/gcc-3.3.3/arm-gotoff.dpatch +++ /dev/null @@ -1,135 +0,0 @@ -#! /bin/sh -e - -src=gcc -if [ $# -eq 3 -a "$2" = '-d' ]; then - pdir="-d $3" - src=$3/gcc -elif [ $# -ne 1 ]; then - echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" - exit 1 -fi -case "$1" in - -patch) - patch $pdir -f --no-backup-if-mismatch -p0 --fuzz 10 < $0 - ;; - -unpatch) - patch $pdir -f --no-backup-if-mismatch -R -p0 --fuzz 10 < $0 - ;; - *) - echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" - exit 1 -esac -exit 0 - -# DP: use GOTOFF not GOT relocs for .LCn and other local symbols; -# DP: don't use gotoff for non-static functions, even if defined locally - ---- gcc/config/arm/arm.c 2003-06-14 15:20:53.000000000 +0100 -+++ gcc/config/arm/arm.c 2004-03-06 15:15:32.000000000 +0000 -@@ -2364,6 +2394,40 @@ - return 1; - } - -+/* Return true if OP is a symbolic operand that resolves locally. */ -+ -+static int -+local_symbolic_operand (op, mode) -+ rtx op; -+ enum machine_mode mode ATTRIBUTE_UNUSED; -+{ -+ if (GET_CODE (op) == CONST -+ && GET_CODE (XEXP (op, 0)) == PLUS -+ && GET_CODE (XEXP (XEXP (op, 0), 1)) == CONST_INT) -+ op = XEXP (XEXP (op, 0), 0); -+ -+ if (GET_CODE (op) == LABEL_REF) -+ return 1; -+ -+ if (GET_CODE (op) != SYMBOL_REF) -+ return 0; -+ -+ /* These we've been told are local by varasm and encode_section_info -+ respectively. */ -+ if (CONSTANT_POOL_ADDRESS_P (op) || ENCODED_LOCAL_BINDING_ATTR_P (XSTR (op, 0))) -+ return 1; -+ -+ /* There is, however, a not insubstantial body of code in the rest of -+ the compiler that assumes it can just stick the results of -+ ASM_GENERATE_INTERNAL_LABEL in a symbol_ref and have done. */ -+ /* ??? This is a hack. Should update the body of the compiler to -+ always create a DECL an invoke targetm.encode_section_info. */ -+ if (strncmp (arm_strip_name_encoding (XSTR (op, 0)), ".L", 2) == 0) -+ return 1; -+ -+ return 0; -+} -+ - rtx - legitimize_pic_address (orig, mode, reg) - rtx orig; -@@ -2404,10 +2468,7 @@ - else - emit_insn (gen_pic_load_addr_thumb (address, orig)); - -- if ((GET_CODE (orig) == LABEL_REF -- || (GET_CODE (orig) == SYMBOL_REF && -- ENCODED_SHORT_CALL_ATTR_P (XSTR (orig, 0)))) -- && NEED_GOT_RELOC) -+ if (local_symbolic_operand (orig, Pmode) && NEED_GOT_RELOC) - pic_ref = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, address); - else - { -@@ -8804,11 +8911,7 @@ - if (NEED_GOT_RELOC && flag_pic && making_const_table && - (GET_CODE (x) == SYMBOL_REF || GET_CODE (x) == LABEL_REF)) - { -- if (GET_CODE (x) == SYMBOL_REF -- && (CONSTANT_POOL_ADDRESS_P (x) -- || ENCODED_SHORT_CALL_ATTR_P (XSTR (x, 0)))) -- fputs ("(GOTOFF)", asm_out_file); -- else if (GET_CODE (x) == LABEL_REF) -+ if (local_symbolic_operand (x, Pmode)) - fputs ("(GOTOFF)", asm_out_file); - else - fputs ("(GOT)", asm_out_file); -@@ -11335,6 +11418,11 @@ - else if (! TREE_PUBLIC (decl)) - arm_encode_call_attribute (decl, SHORT_CALL_FLAG_CHAR); - } -+ -+ if (TREE_CODE_CLASS (TREE_CODE (decl)) == 'd' -+ && flag_pic -+ && (*targetm.binds_local_p) (decl)) -+ arm_encode_call_attribute (decl, LOCAL_BINDING_FLAG_CHAR); - } - #endif /* !ARM_PE */ - - ---- gcc/config/arm/arm.h Fri Mar 5 18:49:44 2004 -+++ gcc/config/arm/arm.h Fri Mar 5 15:04:31 2004 -@@ -1870,6 +1870,7 @@ - Note, '@' and '*' have already been taken. */ - #define SHORT_CALL_FLAG_CHAR '^' - #define LONG_CALL_FLAG_CHAR '#' -+#define LOCAL_BINDING_FLAG_CHAR '%' - - #define ENCODED_SHORT_CALL_ATTR_P(SYMBOL_NAME) \ - (*(SYMBOL_NAME) == SHORT_CALL_FLAG_CHAR) -@@ -1877,6 +1878,9 @@ - #define ENCODED_LONG_CALL_ATTR_P(SYMBOL_NAME) \ - (*(SYMBOL_NAME) == LONG_CALL_FLAG_CHAR) - -+#define ENCODED_LOCAL_BINDING_ATTR_P(SYMBOL_NAME) \ -+ (*(SYMBOL_NAME) == LOCAL_BINDING_FLAG_CHAR) -+ - #ifndef SUBTARGET_NAME_ENCODING_LENGTHS - #define SUBTARGET_NAME_ENCODING_LENGTHS - #endif -@@ -1888,6 +1892,7 @@ - #define ARM_NAME_ENCODING_LENGTHS \ - case SHORT_CALL_FLAG_CHAR: return 1; \ - case LONG_CALL_FLAG_CHAR: return 1; \ -+ case LOCAL_BINDING_FLAG_CHAR: return 1; \ - case '*': return 1; \ - SUBTARGET_NAME_ENCODING_LENGTHS - |