From: Hans-Peter Nilsson Date: Thu, 29 Mar 2001 02:29:38 +0000 (+0000) Subject: * config/tc-cris.h (tc_fix_adjustable): Allow only X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d551a338e2a48edc7f970822cb980954f7db3ee2;p=binutils-gdb.git * config/tc-cris.h (tc_fix_adjustable): Allow only BFD_RELOC_CRIS_32_GOTREL of the PIC relocs. * config/tc-cris.c (cris_get_pic_suffix): Correct reloc used in example to valid. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index ca08411f9b6..71442642036 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2001-03-29 Hans-Peter Nilsson + + * config/tc-cris.h (tc_fix_adjustable): Allow only + BFD_RELOC_CRIS_32_GOTREL of the PIC relocs. + * config/tc-cris.c (cris_get_pic_suffix): Correct reloc used in + example to valid. + 2001-03-28 H.J. Lu * read.c (equals): Set to local for COFF only if it hasn't been diff --git a/gas/config/tc-cris.c b/gas/config/tc-cris.c index 565d3f6cad1..24fecfbf639 100644 --- a/gas/config/tc-cris.c +++ b/gas/config/tc-cris.c @@ -2570,7 +2570,7 @@ cris_get_pic_suffix (cPP, relocp, exprP) /* Allow complex expressions as the constant part. It still has to be a assembly-time constant or there will be an error emitting the reloc. This makes the PIC qualifiers - idempotent; foo:GOT+32 == foo+32:GOT. The former we + idempotent; foo:GOTOFF+32 == foo+32:GOTOFF. The former we recognize here; the latter is parsed in the incoming expression. */ exprP->X_add_symbol = make_expr_symbol (exprP); diff --git a/gas/config/tc-cris.h b/gas/config/tc-cris.h index 8f6d7171e59..3c3bb5a976a 100644 --- a/gas/config/tc-cris.h +++ b/gas/config/tc-cris.h @@ -106,14 +106,17 @@ extern int md_cris_force_relocation PARAMS ((struct fix *)); /* This is really a workaround for a bug in write.c that resolves relocs for weak symbols - it should be postponed to the link stage or later. - Also don't adjust fixups for global symbols for ELF. */ -#define tc_fix_adjustable(X) \ - (((X)->fx_addsy == NULL \ - || (! S_IS_WEAK ((X)->fx_addsy) \ - && ! (OUTPUT_FLAVOR == bfd_target_elf_flavour \ - && S_IS_EXTERNAL ((X)->fx_addsy)))) \ - && (X)->fx_r_type != BFD_RELOC_VTABLE_INHERIT \ - && (X)->fx_r_type != BFD_RELOC_VTABLE_ENTRY) + Also don't adjust fixups for global symbols for ELF, and no relocs + where the original symbol name must be kept. */ +#define tc_fix_adjustable(X) \ + (((X)->fx_addsy == NULL \ + || (! S_IS_WEAK ((X)->fx_addsy) \ + && ! (OUTPUT_FLAVOR == bfd_target_elf_flavour \ + && S_IS_EXTERNAL ((X)->fx_addsy)))) \ + && (X)->fx_r_type != BFD_RELOC_VTABLE_INHERIT \ + && (X)->fx_r_type != BFD_RELOC_VTABLE_ENTRY \ + && (! IS_CRIS_PIC_RELOC ((X)->fx_r_type) \ + || (X)->fx_r_type == BFD_RELOC_CRIS_32_GOTREL)) /* When we have fixups against constant expressions, we get a GAS-specific section symbol at no extra charge for obscure reasons in