2010-09-24 Thomas Schwinge <thomas@codesourcery.com>
* elf32-arm.c, elf32-cris.c, elf32-hppa.c, elf32-i370.c, elf32-m32r.c, elf32-m68k.c, elf32-microblaze.c, elf32-ppc.c, elf32-score.c, elf32-score7.c, elf32-sh.c, elf32-vax.c, elf32-xtensa.c, elf64-alpha.c, elf64-hppa.c, elf64-mips.c, elf64-ppc.c, elf64-sparc.c, elfcode.h, elflink.c, elfxx-ia64.c, elfxx-mips.c: Use STN_UNDEF when referring to the zero symbol index.
This commit is contained in:
parent
2c2fa401c5
commit
cf35638d43
23 changed files with 66 additions and 59 deletions
|
@ -1,5 +1,12 @@
|
||||||
2010-09-24 Thomas Schwinge <thomas@codesourcery.com>
|
2010-09-24 Thomas Schwinge <thomas@codesourcery.com>
|
||||||
|
|
||||||
|
* elf32-arm.c, elf32-cris.c, elf32-hppa.c, elf32-i370.c, elf32-m32r.c,
|
||||||
|
elf32-m68k.c, elf32-microblaze.c, elf32-ppc.c, elf32-score.c,
|
||||||
|
elf32-score7.c, elf32-sh.c, elf32-vax.c, elf32-xtensa.c, elf64-alpha.c,
|
||||||
|
elf64-hppa.c, elf64-mips.c, elf64-ppc.c, elf64-sparc.c, elfcode.h,
|
||||||
|
elflink.c, elfxx-ia64.c, elfxx-mips.c: Use STN_UNDEF when referring to
|
||||||
|
the zero symbol index.
|
||||||
|
|
||||||
* elflink.c (bfd_elf_reloc_symbol_deleted_p): Compare the symbol index
|
* elflink.c (bfd_elf_reloc_symbol_deleted_p): Compare the symbol index
|
||||||
to STN_UNDEF, not SHN_UNDEF.
|
to STN_UNDEF, not SHN_UNDEF.
|
||||||
|
|
||||||
|
|
|
@ -9063,7 +9063,7 @@ elf32_arm_relocate_section (bfd * output_bfd,
|
||||||
name = bfd_section_name (input_bfd, sec);
|
name = bfd_section_name (input_bfd, sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r_symndx != 0
|
if (r_symndx != STN_UNDEF
|
||||||
&& r_type != R_ARM_NONE
|
&& r_type != R_ARM_NONE
|
||||||
&& (h == NULL
|
&& (h == NULL
|
||||||
|| h->root.type == bfd_link_hash_defined
|
|| h->root.type == bfd_link_hash_defined
|
||||||
|
@ -10902,7 +10902,7 @@ elf32_arm_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
||||||
/* PR 9934: It is possible to have relocations that do not
|
/* PR 9934: It is possible to have relocations that do not
|
||||||
refer to symbols, thus it is also possible to have an
|
refer to symbols, thus it is also possible to have an
|
||||||
object file containing relocations but no symbol table. */
|
object file containing relocations but no symbol table. */
|
||||||
&& (r_symndx > 0 || nsyms > 0))
|
&& (r_symndx > STN_UNDEF || nsyms > 0))
|
||||||
{
|
{
|
||||||
(*_bfd_error_handler) (_("%B: bad symbol index: %d"), abfd,
|
(*_bfd_error_handler) (_("%B: bad symbol index: %d"), abfd,
|
||||||
r_symndx);
|
r_symndx);
|
||||||
|
|
|
@ -1493,7 +1493,7 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||||
case R_CRIS_16:
|
case R_CRIS_16:
|
||||||
case R_CRIS_32:
|
case R_CRIS_32:
|
||||||
if (info->shared
|
if (info->shared
|
||||||
&& r_symndx != 0
|
&& r_symndx != STN_UNDEF
|
||||||
&& (input_section->flags & SEC_ALLOC) != 0
|
&& (input_section->flags & SEC_ALLOC) != 0
|
||||||
&& ((r_type != R_CRIS_8_PCREL
|
&& ((r_type != R_CRIS_8_PCREL
|
||||||
&& r_type != R_CRIS_16_PCREL
|
&& r_type != R_CRIS_16_PCREL
|
||||||
|
|
|
@ -4472,7 +4472,7 @@ static enum elf_reloc_type_class
|
||||||
elf32_hppa_reloc_type_class (const Elf_Internal_Rela *rela)
|
elf32_hppa_reloc_type_class (const Elf_Internal_Rela *rela)
|
||||||
{
|
{
|
||||||
/* Handle TLS relocs first; we don't want them to be marked
|
/* Handle TLS relocs first; we don't want them to be marked
|
||||||
relative by the "if (ELF32_R_SYM (rela->r_info) == 0)"
|
relative by the "if (ELF32_R_SYM (rela->r_info) == STN_UNDEF)"
|
||||||
check below. */
|
check below. */
|
||||||
switch ((int) ELF32_R_TYPE (rela->r_info))
|
switch ((int) ELF32_R_TYPE (rela->r_info))
|
||||||
{
|
{
|
||||||
|
@ -4482,7 +4482,7 @@ elf32_hppa_reloc_type_class (const Elf_Internal_Rela *rela)
|
||||||
return reloc_class_normal;
|
return reloc_class_normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ELF32_R_SYM (rela->r_info) == 0)
|
if (ELF32_R_SYM (rela->r_info) == STN_UNDEF)
|
||||||
return reloc_class_relative;
|
return reloc_class_relative;
|
||||||
|
|
||||||
switch ((int) ELF32_R_TYPE (rela->r_info))
|
switch ((int) ELF32_R_TYPE (rela->r_info))
|
||||||
|
|
|
@ -1183,7 +1183,7 @@ i370_elf_relocate_section (bfd *output_bfd,
|
||||||
case (int) R_I370_ADDR31:
|
case (int) R_I370_ADDR31:
|
||||||
case (int) R_I370_ADDR16:
|
case (int) R_I370_ADDR16:
|
||||||
if (info->shared
|
if (info->shared
|
||||||
&& r_symndx != 0)
|
&& r_symndx != STN_UNDEF)
|
||||||
{
|
{
|
||||||
Elf_Internal_Rela outrel;
|
Elf_Internal_Rela outrel;
|
||||||
bfd_byte *loc;
|
bfd_byte *loc;
|
||||||
|
|
|
@ -2897,7 +2897,7 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||||
case R_M32R_HI16_ULO_RELA:
|
case R_M32R_HI16_ULO_RELA:
|
||||||
case R_M32R_LO16_RELA:
|
case R_M32R_LO16_RELA:
|
||||||
if (info->shared
|
if (info->shared
|
||||||
&& r_symndx != 0
|
&& r_symndx != STN_UNDEF
|
||||||
&& (input_section->flags & SEC_ALLOC) != 0
|
&& (input_section->flags & SEC_ALLOC) != 0
|
||||||
&& (( r_type != R_M32R_10_PCREL_RELA
|
&& (( r_type != R_M32R_10_PCREL_RELA
|
||||||
&& r_type != R_M32R_18_PCREL_RELA
|
&& r_type != R_M32R_18_PCREL_RELA
|
||||||
|
|
|
@ -4034,7 +4034,7 @@ elf_m68k_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||||
case R_68K_PC16:
|
case R_68K_PC16:
|
||||||
case R_68K_PC32:
|
case R_68K_PC32:
|
||||||
if (info->shared
|
if (info->shared
|
||||||
&& r_symndx != 0
|
&& r_symndx != STN_UNDEF
|
||||||
&& (input_section->flags & SEC_ALLOC) != 0
|
&& (input_section->flags & SEC_ALLOC) != 0
|
||||||
&& (h == NULL
|
&& (h == NULL
|
||||||
|| ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
|
|| ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
|
||||||
|
@ -4169,7 +4169,7 @@ elf_m68k_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r_symndx != 0
|
if (r_symndx != STN_UNDEF
|
||||||
&& r_type != R_68K_NONE
|
&& r_type != R_68K_NONE
|
||||||
&& (h == NULL
|
&& (h == NULL
|
||||||
|| h->root.type == bfd_link_hash_defined
|
|| h->root.type == bfd_link_hash_defined
|
||||||
|
|
|
@ -1067,10 +1067,10 @@ microblaze_elf_relocate_section (bfd *output_bfd,
|
||||||
case (int) R_MICROBLAZE_64:
|
case (int) R_MICROBLAZE_64:
|
||||||
case (int) R_MICROBLAZE_32:
|
case (int) R_MICROBLAZE_32:
|
||||||
{
|
{
|
||||||
/* r_symndx will be zero only for relocs against symbols
|
/* r_symndx will be STN_UNDEF (zero) only for relocs against symbols
|
||||||
from removed linkonce sections, or sections discarded by
|
from removed linkonce sections, or sections discarded by
|
||||||
a linker script. */
|
a linker script. */
|
||||||
if (r_symndx == 0 || (input_section->flags & SEC_ALLOC) == 0)
|
if (r_symndx == STN_UNDEF || (input_section->flags & SEC_ALLOC) == 0)
|
||||||
{
|
{
|
||||||
relocation += addend;
|
relocation += addend;
|
||||||
if (r_type == R_MICROBLAZE_32)
|
if (r_type == R_MICROBLAZE_32)
|
||||||
|
|
|
@ -6985,9 +6985,9 @@ ppc_elf_relocate_section (bfd *output_bfd,
|
||||||
if (local_sections[r_symndx] == sec)
|
if (local_sections[r_symndx] == sec)
|
||||||
break;
|
break;
|
||||||
if (r_symndx >= symtab_hdr->sh_info)
|
if (r_symndx >= symtab_hdr->sh_info)
|
||||||
r_symndx = 0;
|
r_symndx = STN_UNDEF;
|
||||||
rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET;
|
rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET;
|
||||||
if (r_symndx != 0)
|
if (r_symndx != STN_UNDEF)
|
||||||
rel->r_addend -= (local_syms[r_symndx].st_value
|
rel->r_addend -= (local_syms[r_symndx].st_value
|
||||||
+ sec->output_offset
|
+ sec->output_offset
|
||||||
+ sec->output_section->vma);
|
+ sec->output_section->vma);
|
||||||
|
@ -7053,9 +7053,9 @@ ppc_elf_relocate_section (bfd *output_bfd,
|
||||||
if (local_sections[r_symndx] == sec)
|
if (local_sections[r_symndx] == sec)
|
||||||
break;
|
break;
|
||||||
if (r_symndx >= symtab_hdr->sh_info)
|
if (r_symndx >= symtab_hdr->sh_info)
|
||||||
r_symndx = 0;
|
r_symndx = STN_UNDEF;
|
||||||
rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET;
|
rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET;
|
||||||
if (r_symndx != 0)
|
if (r_symndx != STN_UNDEF)
|
||||||
rel->r_addend -= (local_syms[r_symndx].st_value
|
rel->r_addend -= (local_syms[r_symndx].st_value
|
||||||
+ sec->output_offset
|
+ sec->output_offset
|
||||||
+ sec->output_section->vma);
|
+ sec->output_section->vma);
|
||||||
|
@ -7658,7 +7658,7 @@ ppc_elf_relocate_section (bfd *output_bfd,
|
||||||
sym_name);
|
sym_name);
|
||||||
ret = FALSE;
|
ret = FALSE;
|
||||||
}
|
}
|
||||||
else if (r_symndx == 0 || bfd_is_abs_section (sec))
|
else if (r_symndx == STN_UNDEF || bfd_is_abs_section (sec))
|
||||||
;
|
;
|
||||||
else if (sec == NULL || sec->owner == NULL)
|
else if (sec == NULL || sec->owner == NULL)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2126,7 +2126,7 @@ score_elf_final_link_relocate (reloc_howto_type *howto,
|
||||||
&& h != NULL
|
&& h != NULL
|
||||||
&& h->root.def_dynamic
|
&& h->root.def_dynamic
|
||||||
&& !h->root.def_regular))
|
&& !h->root.def_regular))
|
||||||
&& r_symndx != 0
|
&& r_symndx != STN_UNDEF
|
||||||
&& (input_section->flags & SEC_ALLOC) != 0)
|
&& (input_section->flags & SEC_ALLOC) != 0)
|
||||||
{
|
{
|
||||||
/* If we're creating a shared library, or this relocation is against a symbol
|
/* If we're creating a shared library, or this relocation is against a symbol
|
||||||
|
@ -2139,8 +2139,8 @@ score_elf_final_link_relocate (reloc_howto_type *howto,
|
||||||
input_section))
|
input_section))
|
||||||
return bfd_reloc_undefined;
|
return bfd_reloc_undefined;
|
||||||
}
|
}
|
||||||
else if (r_symndx == 0)
|
else if (r_symndx == STN_UNDEF)
|
||||||
/* r_symndx will be zero only for relocs against symbols
|
/* r_symndx will be STN_UNDEF (zero) only for relocs against symbols
|
||||||
from removed linkonce sections, or sections discarded by
|
from removed linkonce sections, or sections discarded by
|
||||||
a linker script. */
|
a linker script. */
|
||||||
value = 0;
|
value = 0;
|
||||||
|
|
|
@ -2025,7 +2025,7 @@ score_elf_final_link_relocate (reloc_howto_type *howto,
|
||||||
&& h != NULL
|
&& h != NULL
|
||||||
&& h->root.def_dynamic
|
&& h->root.def_dynamic
|
||||||
&& !h->root.def_regular))
|
&& !h->root.def_regular))
|
||||||
&& r_symndx != 0
|
&& r_symndx != STN_UNDEF
|
||||||
&& (input_section->flags & SEC_ALLOC) != 0)
|
&& (input_section->flags & SEC_ALLOC) != 0)
|
||||||
{
|
{
|
||||||
/* If we're creating a shared library, or this relocation is against a symbol
|
/* If we're creating a shared library, or this relocation is against a symbol
|
||||||
|
@ -2038,8 +2038,8 @@ score_elf_final_link_relocate (reloc_howto_type *howto,
|
||||||
input_section))
|
input_section))
|
||||||
return bfd_reloc_undefined;
|
return bfd_reloc_undefined;
|
||||||
}
|
}
|
||||||
else if (r_symndx == 0)
|
else if (r_symndx == STN_UNDEF)
|
||||||
/* r_symndx will be zero only for relocs against symbols
|
/* r_symndx will be STN_UNDEF (zero) only for relocs against symbols
|
||||||
from removed linkonce sections, or sections discarded by
|
from removed linkonce sections, or sections discarded by
|
||||||
a linker script. */
|
a linker script. */
|
||||||
value = 0;
|
value = 0;
|
||||||
|
|
|
@ -4405,7 +4405,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||||
&& (h == NULL
|
&& (h == NULL
|
||||||
|| ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
|
|| ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
|
||||||
|| h->root.type != bfd_link_hash_undefweak)
|
|| h->root.type != bfd_link_hash_undefweak)
|
||||||
&& r_symndx != 0
|
&& r_symndx != STN_UNDEF
|
||||||
&& (input_section->flags & SEC_ALLOC) != 0
|
&& (input_section->flags & SEC_ALLOC) != 0
|
||||||
&& !is_vxworks_tls
|
&& !is_vxworks_tls
|
||||||
&& (r_type == R_SH_DIR32
|
&& (r_type == R_SH_DIR32
|
||||||
|
|
|
@ -1611,7 +1611,7 @@ elf_vax_relocate_section (bfd *output_bfd,
|
||||||
case R_VAX_16:
|
case R_VAX_16:
|
||||||
case R_VAX_32:
|
case R_VAX_32:
|
||||||
if (info->shared
|
if (info->shared
|
||||||
&& r_symndx != 0
|
&& r_symndx != STN_UNDEF
|
||||||
&& (input_section->flags & SEC_ALLOC) != 0
|
&& (input_section->flags & SEC_ALLOC) != 0
|
||||||
&& ((r_type != R_VAX_PC8
|
&& ((r_type != R_VAX_PC8
|
||||||
&& r_type != R_VAX_PC16
|
&& r_type != R_VAX_PC16
|
||||||
|
|
|
@ -2800,7 +2800,7 @@ elf_xtensa_relocate_section (bfd *output_bfd,
|
||||||
name = bfd_section_name (input_bfd, sec);
|
name = bfd_section_name (input_bfd, sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r_symndx != 0
|
if (r_symndx != STN_UNDEF
|
||||||
&& r_type != R_XTENSA_NONE
|
&& r_type != R_XTENSA_NONE
|
||||||
&& (h == NULL
|
&& (h == NULL
|
||||||
|| h->root.type == bfd_link_hash_defined
|
|| h->root.type == bfd_link_hash_defined
|
||||||
|
|
|
@ -1866,8 +1866,8 @@ elf64_alpha_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
||||||
|
|
||||||
case R_ALPHA_TLSLDM:
|
case R_ALPHA_TLSLDM:
|
||||||
/* The symbol for a TLSLDM reloc is ignored. Collapse the
|
/* The symbol for a TLSLDM reloc is ignored. Collapse the
|
||||||
reloc to the 0 symbol so that they all match. */
|
reloc to the STN_UNDEF (0) symbol so that they all match. */
|
||||||
r_symndx = 0;
|
r_symndx = STN_UNDEF;
|
||||||
h = 0;
|
h = 0;
|
||||||
maybe_dynamic = FALSE;
|
maybe_dynamic = FALSE;
|
||||||
/* FALLTHRU */
|
/* FALLTHRU */
|
||||||
|
@ -3491,7 +3491,7 @@ elf64_alpha_relax_tls_get_addr (struct alpha_relax_info *info, bfd_vma symval,
|
||||||
as appropriate. */
|
as appropriate. */
|
||||||
|
|
||||||
use_gottprel = FALSE;
|
use_gottprel = FALSE;
|
||||||
new_symndx = is_gd ? ELF64_R_SYM (irel->r_info) : 0;
|
new_symndx = is_gd ? ELF64_R_SYM (irel->r_info) : STN_UNDEF;
|
||||||
|
|
||||||
/* Beware of the compiler hoisting part of the sequence out a loop
|
/* Beware of the compiler hoisting part of the sequence out a loop
|
||||||
and adjusting the destination register for the TLSGD insn. If this
|
and adjusting the destination register for the TLSGD insn. If this
|
||||||
|
@ -3724,8 +3724,8 @@ elf64_alpha_relax_section (bfd *abfd, asection *sec,
|
||||||
|
|
||||||
case R_ALPHA_TLSLDM:
|
case R_ALPHA_TLSLDM:
|
||||||
/* The symbol for a TLSLDM reloc is ignored. Collapse the
|
/* The symbol for a TLSLDM reloc is ignored. Collapse the
|
||||||
reloc to the 0 symbol so that they all match. */
|
reloc to the STN_UNDEF (0) symbol so that they all match. */
|
||||||
r_symndx = 0;
|
r_symndx = STN_UNDEF;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -4154,9 +4154,9 @@ elf64_alpha_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||||
r_symndx = ELF64_R_SYM(rel->r_info);
|
r_symndx = ELF64_R_SYM(rel->r_info);
|
||||||
|
|
||||||
/* The symbol for a TLSLDM reloc is ignored. Collapse the
|
/* The symbol for a TLSLDM reloc is ignored. Collapse the
|
||||||
reloc to the 0 symbol so that they all match. */
|
reloc to the STN_UNDEF (0) symbol so that they all match. */
|
||||||
if (r_type == R_ALPHA_TLSLDM)
|
if (r_type == R_ALPHA_TLSLDM)
|
||||||
r_symndx = 0;
|
r_symndx = STN_UNDEF;
|
||||||
|
|
||||||
if (r_symndx < symtab_hdr->sh_info)
|
if (r_symndx < symtab_hdr->sh_info)
|
||||||
{
|
{
|
||||||
|
@ -4166,10 +4166,10 @@ elf64_alpha_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||||
msec = sec;
|
msec = sec;
|
||||||
value = _bfd_elf_rela_local_sym (output_bfd, sym, &msec, rel);
|
value = _bfd_elf_rela_local_sym (output_bfd, sym, &msec, rel);
|
||||||
|
|
||||||
/* If this is a tp-relative relocation against sym 0,
|
/* If this is a tp-relative relocation against sym STN_UNDEF (0),
|
||||||
this is hackery from relax_section. Force the value to
|
this is hackery from relax_section. Force the value to
|
||||||
be the tls module base. */
|
be the tls module base. */
|
||||||
if (r_symndx == 0
|
if (r_symndx == STN_UNDEF
|
||||||
&& (r_type == R_ALPHA_TLSLDM
|
&& (r_type == R_ALPHA_TLSLDM
|
||||||
|| r_type == R_ALPHA_GOTTPREL
|
|| r_type == R_ALPHA_GOTTPREL
|
||||||
|| r_type == R_ALPHA_TPREL64
|
|| r_type == R_ALPHA_TPREL64
|
||||||
|
@ -4455,7 +4455,7 @@ elf64_alpha_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||||
dynaddend = value - dtp_base;
|
dynaddend = value - dtp_base;
|
||||||
}
|
}
|
||||||
else if (info->shared
|
else if (info->shared
|
||||||
&& r_symndx != 0
|
&& r_symndx != STN_UNDEF
|
||||||
&& (input_section->flags & SEC_ALLOC)
|
&& (input_section->flags & SEC_ALLOC)
|
||||||
&& !undef_weak_ref)
|
&& !undef_weak_ref)
|
||||||
{
|
{
|
||||||
|
@ -4503,7 +4503,7 @@ elf64_alpha_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||||
/* ??? .eh_frame references to discarded sections will be smashed
|
/* ??? .eh_frame references to discarded sections will be smashed
|
||||||
to relocations against SHN_UNDEF. The .eh_frame format allows
|
to relocations against SHN_UNDEF. The .eh_frame format allows
|
||||||
NULL to be encoded as 0 in any format, so this works here. */
|
NULL to be encoded as 0 in any format, so this works here. */
|
||||||
if (r_symndx == 0)
|
if (r_symndx == STN_UNDEF)
|
||||||
howto = (elf64_alpha_howto_table
|
howto = (elf64_alpha_howto_table
|
||||||
+ (r_type - R_ALPHA_SREL32 + R_ALPHA_REFLONG));
|
+ (r_type - R_ALPHA_SREL32 + R_ALPHA_REFLONG));
|
||||||
goto default_reloc;
|
goto default_reloc;
|
||||||
|
|
|
@ -2465,7 +2465,7 @@ elf64_hppa_finalize_dynreloc (struct elf_link_hash_entry *eh,
|
||||||
static enum elf_reloc_type_class
|
static enum elf_reloc_type_class
|
||||||
elf64_hppa_reloc_type_class (const Elf_Internal_Rela *rela)
|
elf64_hppa_reloc_type_class (const Elf_Internal_Rela *rela)
|
||||||
{
|
{
|
||||||
if (ELF64_R_SYM (rela->r_info) == 0)
|
if (ELF64_R_SYM (rela->r_info) == STN_UNDEF)
|
||||||
return reloc_class_relative;
|
return reloc_class_relative;
|
||||||
|
|
||||||
switch ((int) ELF64_R_TYPE (rela->r_info))
|
switch ((int) ELF64_R_TYPE (rela->r_info))
|
||||||
|
|
|
@ -2619,7 +2619,7 @@ mips_elf64_slurp_one_reloc_table (bfd *abfd, asection *asect,
|
||||||
default:
|
default:
|
||||||
if (! used_sym)
|
if (! used_sym)
|
||||||
{
|
{
|
||||||
if (rela.r_sym == 0)
|
if (rela.r_sym == STN_UNDEF)
|
||||||
relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
|
relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -11668,7 +11668,7 @@ ppc64_elf_relocate_section (bfd *output_bfd,
|
||||||
|
|
||||||
/* Check that tls relocs are used with tls syms, and non-tls
|
/* Check that tls relocs are used with tls syms, and non-tls
|
||||||
relocs are used with non-tls syms. */
|
relocs are used with non-tls syms. */
|
||||||
if (r_symndx != 0
|
if (r_symndx != STN_UNDEF
|
||||||
&& r_type != R_PPC64_NONE
|
&& r_type != R_PPC64_NONE
|
||||||
&& (h == NULL
|
&& (h == NULL
|
||||||
|| h->elf.root.type == bfd_link_hash_defined
|
|| h->elf.root.type == bfd_link_hash_defined
|
||||||
|
@ -11917,9 +11917,9 @@ ppc64_elf_relocate_section (bfd *output_bfd,
|
||||||
if (local_sections[r_symndx] == sec)
|
if (local_sections[r_symndx] == sec)
|
||||||
break;
|
break;
|
||||||
if (r_symndx >= symtab_hdr->sh_info)
|
if (r_symndx >= symtab_hdr->sh_info)
|
||||||
r_symndx = 0;
|
r_symndx = STN_UNDEF;
|
||||||
rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET;
|
rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET;
|
||||||
if (r_symndx != 0)
|
if (r_symndx != STN_UNDEF)
|
||||||
rel->r_addend -= (local_syms[r_symndx].st_value
|
rel->r_addend -= (local_syms[r_symndx].st_value
|
||||||
+ sec->output_offset
|
+ sec->output_offset
|
||||||
+ sec->output_section->vma);
|
+ sec->output_section->vma);
|
||||||
|
@ -12025,9 +12025,9 @@ ppc64_elf_relocate_section (bfd *output_bfd,
|
||||||
if (local_sections[r_symndx] == sec)
|
if (local_sections[r_symndx] == sec)
|
||||||
break;
|
break;
|
||||||
if (r_symndx >= symtab_hdr->sh_info)
|
if (r_symndx >= symtab_hdr->sh_info)
|
||||||
r_symndx = 0;
|
r_symndx = STN_UNDEF;
|
||||||
rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET;
|
rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET;
|
||||||
if (r_symndx != 0)
|
if (r_symndx != STN_UNDEF)
|
||||||
rel->r_addend -= (local_syms[r_symndx].st_value
|
rel->r_addend -= (local_syms[r_symndx].st_value
|
||||||
+ sec->output_offset
|
+ sec->output_offset
|
||||||
+ sec->output_section->vma);
|
+ sec->output_section->vma);
|
||||||
|
@ -12569,7 +12569,7 @@ ppc64_elf_relocate_section (bfd *output_bfd,
|
||||||
case R_PPC64_TOC:
|
case R_PPC64_TOC:
|
||||||
/* Relocation value is TOC base. */
|
/* Relocation value is TOC base. */
|
||||||
relocation = TOCstart;
|
relocation = TOCstart;
|
||||||
if (r_symndx == 0)
|
if (r_symndx == STN_UNDEF)
|
||||||
relocation += htab->stub_group[input_section->id].toc_off;
|
relocation += htab->stub_group[input_section->id].toc_off;
|
||||||
else if (unresolved_reloc)
|
else if (unresolved_reloc)
|
||||||
;
|
;
|
||||||
|
@ -12819,7 +12819,7 @@ ppc64_elf_relocate_section (bfd *output_bfd,
|
||||||
sym_name);
|
sym_name);
|
||||||
ret = FALSE;
|
ret = FALSE;
|
||||||
}
|
}
|
||||||
else if (r_symndx == 0 || bfd_is_abs_section (sec))
|
else if (r_symndx == STN_UNDEF || bfd_is_abs_section (sec))
|
||||||
;
|
;
|
||||||
else if (sec == NULL || sec->owner == NULL)
|
else if (sec == NULL || sec->owner == NULL)
|
||||||
{
|
{
|
||||||
|
|
|
@ -98,7 +98,7 @@ elf64_sparc_slurp_one_reloc_table (bfd *abfd, asection *asect,
|
||||||
else
|
else
|
||||||
relent->address = rela.r_offset - asect->vma;
|
relent->address = rela.r_offset - asect->vma;
|
||||||
|
|
||||||
if (ELF64_R_SYM (rela.r_info) == 0)
|
if (ELF64_R_SYM (rela.r_info) == STN_UNDEF)
|
||||||
relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
|
relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1466,7 +1466,7 @@ elf_slurp_reloc_table_from_section (bfd *abfd,
|
||||||
else
|
else
|
||||||
relent->address = rela.r_offset - asect->vma;
|
relent->address = rela.r_offset - asect->vma;
|
||||||
|
|
||||||
if (ELF_R_SYM (rela.r_info) == 0)
|
if (ELF_R_SYM (rela.r_info) == STN_UNDEF)
|
||||||
relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
|
relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
|
||||||
else if (ELF_R_SYM (rela.r_info) > symcount)
|
else if (ELF_R_SYM (rela.r_info) > symcount)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2170,7 +2170,7 @@ elf_link_read_relocs_from_section (bfd *abfd,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (r_symndx != 0)
|
else if (r_symndx != STN_UNDEF)
|
||||||
{
|
{
|
||||||
(*_bfd_error_handler)
|
(*_bfd_error_handler)
|
||||||
(_("%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A'"
|
(_("%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A'"
|
||||||
|
@ -9500,7 +9500,7 @@ elf_link_input_bfd (struct elf_final_link_info *finfo, bfd *input_bfd)
|
||||||
discarded section. */
|
discarded section. */
|
||||||
if ((sec = *ps) != NULL && elf_discarded_section (sec))
|
if ((sec = *ps) != NULL && elf_discarded_section (sec))
|
||||||
{
|
{
|
||||||
BFD_ASSERT (r_symndx != 0);
|
BFD_ASSERT (r_symndx != STN_UNDEF);
|
||||||
if (action_discarded & COMPLAIN)
|
if (action_discarded & COMPLAIN)
|
||||||
(*finfo->info->callbacks->einfo)
|
(*finfo->info->callbacks->einfo)
|
||||||
(_("%X`%s' referenced in section `%A' of %B: "
|
(_("%X`%s' referenced in section `%A' of %B: "
|
||||||
|
@ -9667,7 +9667,7 @@ elf_link_input_bfd (struct elf_final_link_info *finfo, bfd *input_bfd)
|
||||||
/* I suppose the backend ought to fill in the
|
/* I suppose the backend ought to fill in the
|
||||||
section of any STT_SECTION symbol against a
|
section of any STT_SECTION symbol against a
|
||||||
processor specific section. */
|
processor specific section. */
|
||||||
r_symndx = 0;
|
r_symndx = STN_UNDEF;
|
||||||
if (bfd_is_abs_section (sec))
|
if (bfd_is_abs_section (sec))
|
||||||
;
|
;
|
||||||
else if (sec == NULL || sec->owner == NULL)
|
else if (sec == NULL || sec->owner == NULL)
|
||||||
|
@ -9696,7 +9696,7 @@ elf_link_input_bfd (struct elf_final_link_info *finfo, bfd *input_bfd)
|
||||||
if (!bfd_is_abs_section (osec))
|
if (!bfd_is_abs_section (osec))
|
||||||
{
|
{
|
||||||
r_symndx = osec->target_index;
|
r_symndx = osec->target_index;
|
||||||
if (r_symndx == 0)
|
if (r_symndx == STN_UNDEF)
|
||||||
{
|
{
|
||||||
struct elf_link_hash_table *htab;
|
struct elf_link_hash_table *htab;
|
||||||
asection *oi;
|
asection *oi;
|
||||||
|
@ -9714,7 +9714,7 @@ elf_link_input_bfd (struct elf_final_link_info *finfo, bfd *input_bfd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BFD_ASSERT (r_symndx != 0);
|
BFD_ASSERT (r_symndx != STN_UNDEF);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11471,7 +11471,7 @@ _bfd_elf_gc_mark_rsec (struct bfd_link_info *info, asection *sec,
|
||||||
struct elf_link_hash_entry *h;
|
struct elf_link_hash_entry *h;
|
||||||
|
|
||||||
r_symndx = cookie->rel->r_info >> cookie->r_sym_shift;
|
r_symndx = cookie->rel->r_info >> cookie->r_sym_shift;
|
||||||
if (r_symndx == 0)
|
if (r_symndx == STN_UNDEF)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (r_symndx >= cookie->locsymcount
|
if (r_symndx >= cookie->locsymcount
|
||||||
|
|
|
@ -4695,7 +4695,7 @@ elfNN_ia64_relocate_section (bfd *output_bfd,
|
||||||
case R_IA64_DIR64LSB:
|
case R_IA64_DIR64LSB:
|
||||||
/* Install a dynamic relocation for this reloc. */
|
/* Install a dynamic relocation for this reloc. */
|
||||||
if ((dynamic_symbol_p || info->shared)
|
if ((dynamic_symbol_p || info->shared)
|
||||||
&& r_symndx != 0
|
&& r_symndx != STN_UNDEF
|
||||||
&& (input_section->flags & SEC_ALLOC) != 0)
|
&& (input_section->flags & SEC_ALLOC) != 0)
|
||||||
{
|
{
|
||||||
unsigned int dyn_r_type;
|
unsigned int dyn_r_type;
|
||||||
|
@ -4924,7 +4924,7 @@ elfNN_ia64_relocate_section (bfd *output_bfd,
|
||||||
case R_IA64_PCREL64MSB:
|
case R_IA64_PCREL64MSB:
|
||||||
case R_IA64_PCREL64LSB:
|
case R_IA64_PCREL64LSB:
|
||||||
/* Install a dynamic relocation for this reloc. */
|
/* Install a dynamic relocation for this reloc. */
|
||||||
if (dynamic_symbol_p && r_symndx != 0)
|
if (dynamic_symbol_p && r_symndx != STN_UNDEF)
|
||||||
{
|
{
|
||||||
BFD_ASSERT (srel != NULL);
|
BFD_ASSERT (srel != NULL);
|
||||||
|
|
||||||
|
|
|
@ -5282,7 +5282,7 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
|
||||||
&& h->root.def_dynamic
|
&& h->root.def_dynamic
|
||||||
&& !h->root.def_regular
|
&& !h->root.def_regular
|
||||||
&& !h->has_static_relocs))
|
&& !h->has_static_relocs))
|
||||||
&& r_symndx != 0
|
&& r_symndx != STN_UNDEF
|
||||||
&& (h == NULL
|
&& (h == NULL
|
||||||
|| h->root.root.type != bfd_link_hash_undefweak
|
|| h->root.root.type != bfd_link_hash_undefweak
|
||||||
|| ELF_ST_VISIBILITY (h->root.other) == STV_DEFAULT)
|
|| ELF_ST_VISIBILITY (h->root.other) == STV_DEFAULT)
|
||||||
|
@ -7752,7 +7752,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
||||||
case R_MIPS_TLS_LDM:
|
case R_MIPS_TLS_LDM:
|
||||||
if (r_type == R_MIPS_TLS_LDM)
|
if (r_type == R_MIPS_TLS_LDM)
|
||||||
{
|
{
|
||||||
r_symndx = 0;
|
r_symndx = STN_UNDEF;
|
||||||
h = NULL;
|
h = NULL;
|
||||||
}
|
}
|
||||||
/* Fall through */
|
/* Fall through */
|
||||||
|
@ -7778,7 +7778,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BFD_ASSERT (flag == GOT_TLS_LDM || r_symndx != 0);
|
BFD_ASSERT (flag == GOT_TLS_LDM || r_symndx != STN_UNDEF);
|
||||||
|
|
||||||
if (!mips_elf_record_local_got_symbol (abfd, r_symndx,
|
if (!mips_elf_record_local_got_symbol (abfd, r_symndx,
|
||||||
rel->r_addend,
|
rel->r_addend,
|
||||||
|
@ -7918,7 +7918,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
||||||
case R_MIPS_HIGHEST:
|
case R_MIPS_HIGHEST:
|
||||||
/* Don't refuse a high part relocation if it's against
|
/* Don't refuse a high part relocation if it's against
|
||||||
no symbol (e.g. part of a compound relocation). */
|
no symbol (e.g. part of a compound relocation). */
|
||||||
if (r_symndx == 0)
|
if (r_symndx == STN_UNDEF)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* R_MIPS_HI16 against _gp_disp is used for $gp setup,
|
/* R_MIPS_HI16 against _gp_disp is used for $gp setup,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue