mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-26 13:56:22 +08:00
* config/tc-hppa.c (hppa_fix_adjustable): Don't adjust final types
that implicitly use LR and RR selectors.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2002-02-12 John David Anglin <dave@hiauly1.hia.nrc.ca>
|
||||||
|
|
||||||
|
* config/tc-hppa.c (hppa_fix_adjustable): Don't adjust final types
|
||||||
|
that implicitly use LR and RR selectors.
|
||||||
|
|
||||||
2002-02-12 Alexandre Oliva <aoliva@redhat.com>
|
2002-02-12 Alexandre Oliva <aoliva@redhat.com>
|
||||||
|
|
||||||
* config/tc-mn10300.c (other_registers): Added `epsw'. Mark `pc'
|
* config/tc-mn10300.c (other_registers): Added `epsw'. Mark `pc'
|
||||||
|
@ -57,8 +57,10 @@ typedef elf_symbol_type obj_symbol_type;
|
|||||||
#if TARGET_ARCH_SIZE == 64
|
#if TARGET_ARCH_SIZE == 64
|
||||||
/* How to generate a relocation. */
|
/* How to generate a relocation. */
|
||||||
#define hppa_gen_reloc_type _bfd_elf64_hppa_gen_reloc_type
|
#define hppa_gen_reloc_type _bfd_elf64_hppa_gen_reloc_type
|
||||||
|
#define elf_hppa_reloc_final_type elf64_hppa_reloc_final_type
|
||||||
#else
|
#else
|
||||||
#define hppa_gen_reloc_type _bfd_elf32_hppa_gen_reloc_type
|
#define hppa_gen_reloc_type _bfd_elf32_hppa_gen_reloc_type
|
||||||
|
#define elf_hppa_reloc_final_type elf32_hppa_reloc_final_type
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* ELF objects can have versions, but apparently do not have anywhere
|
/* ELF objects can have versions, but apparently do not have anywhere
|
||||||
@ -8373,6 +8375,7 @@ int
|
|||||||
hppa_fix_adjustable (fixp)
|
hppa_fix_adjustable (fixp)
|
||||||
fixS *fixp;
|
fixS *fixp;
|
||||||
{
|
{
|
||||||
|
reloc_type code;
|
||||||
struct hppa_fix_struct *hppa_fix;
|
struct hppa_fix_struct *hppa_fix;
|
||||||
|
|
||||||
hppa_fix = (struct hppa_fix_struct *) fixp->tc_fix_data;
|
hppa_fix = (struct hppa_fix_struct *) fixp->tc_fix_data;
|
||||||
@ -8384,9 +8387,57 @@ hppa_fix_adjustable (fixp)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef OBJ_ELF
|
#ifdef OBJ_ELF
|
||||||
if (fixp->fx_r_type == (int) R_PARISC_GNU_VTINHERIT
|
/* LR/RR selectors are implicitly used for a number of different relocation
|
||||||
|| fixp->fx_r_type == (int) R_PARISC_GNU_VTENTRY)
|
types. We must ensure that none of these types are adjusted (see below)
|
||||||
|
even if they occur with a different selector. */
|
||||||
|
code = elf_hppa_reloc_final_type (stdoutput, fixp->fx_r_type,
|
||||||
|
hppa_fix->fx_r_format,
|
||||||
|
hppa_fix->fx_r_field);
|
||||||
|
|
||||||
|
switch (code)
|
||||||
|
{
|
||||||
|
/* Relocation types which use e_lrsel. */
|
||||||
|
case R_PARISC_DIR21L:
|
||||||
|
case R_PARISC_DLTIND21L:
|
||||||
|
case R_PARISC_DLTREL21L:
|
||||||
|
case R_PARISC_DPREL21L:
|
||||||
|
case R_PARISC_LTOFF_FPTR21L:
|
||||||
|
case R_PARISC_LTOFF_TP21L:
|
||||||
|
case R_PARISC_PCREL21L:
|
||||||
|
case R_PARISC_PLABEL21L:
|
||||||
|
case R_PARISC_PLTOFF21L:
|
||||||
|
|
||||||
|
/* Relocation types which use e_rrsel. */
|
||||||
|
case R_PARISC_DIR14R:
|
||||||
|
case R_PARISC_DIR14DR:
|
||||||
|
case R_PARISC_DIR14WR:
|
||||||
|
case R_PARISC_DIR17R:
|
||||||
|
case R_PARISC_DLTIND14R:
|
||||||
|
case R_PARISC_DLTIND14DR:
|
||||||
|
case R_PARISC_DLTIND14WR:
|
||||||
|
case R_PARISC_DLTREL14R:
|
||||||
|
case R_PARISC_DLTREL14DR:
|
||||||
|
case R_PARISC_DLTREL14WR:
|
||||||
|
case R_PARISC_DPREL14R:
|
||||||
|
case R_PARISC_DPREL14DR:
|
||||||
|
case R_PARISC_DPREL14WR:
|
||||||
|
case R_PARISC_PCREL14R:
|
||||||
|
case R_PARISC_PCREL17R:
|
||||||
|
case R_PARISC_PLABEL14R:
|
||||||
|
case R_PARISC_LTOFF_FPTR14R:
|
||||||
|
case R_PARISC_LTOFF_FPTR14DR:
|
||||||
|
case R_PARISC_LTOFF_FPTR14WR:
|
||||||
|
case R_PARISC_LTOFF_TP14R:
|
||||||
|
case R_PARISC_LTOFF_TP14DR:
|
||||||
|
case R_PARISC_LTOFF_TP14WR:
|
||||||
|
|
||||||
|
/* Other types that we reject for reduction. */
|
||||||
|
case R_PARISC_GNU_VTENTRY:
|
||||||
|
case R_PARISC_GNU_VTINHERIT:
|
||||||
return 0;
|
return 0;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (fixp->fx_addsy && (S_IS_EXTERNAL (fixp->fx_addsy)
|
if (fixp->fx_addsy && (S_IS_EXTERNAL (fixp->fx_addsy)
|
||||||
|
Reference in New Issue
Block a user