Delete asection.symbol_ptr_ptr
Alan Modra
amodra@gmail.com
Sat Dec 14 09:16:06 GMT 2024
This field is always set to point to asection.symbol, and no code ever
changes it from its initial value. With one exception. elfxx-mips.c
creates two sections with separate pointers to their symbols, and uses
those as asection.symbol_ptr_ptr. Those pointers aren't modified,
so they disappear in this patch too.
diff --git a/bfd/aoutx.h b/bfd/aoutx.h
index 13a5d82f8eb..5f62ac67cfd 100644
--- a/bfd/aoutx.h
+++ b/bfd/aoutx.h
@@ -2107,7 +2107,7 @@ NAME (aout, swap_ext_reloc_out) (bfd *abfd,
if (symbols != NULL && r_index < bfd_get_symcount (abfd)) \
cache_ptr->sym_ptr_ptr = symbols + r_index; \
else \
- cache_ptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; \
+ cache_ptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol; \
cache_ptr->addend = ad; \
} \
else \
@@ -2118,23 +2118,23 @@ NAME (aout, swap_ext_reloc_out) (bfd *abfd,
{ \
case N_TEXT: \
case N_TEXT | N_EXT: \
- cache_ptr->sym_ptr_ptr = obj_textsec (abfd)->symbol_ptr_ptr; \
+ cache_ptr->sym_ptr_ptr = &obj_textsec (abfd)->symbol; \
cache_ptr->addend = ad - su->textsec->vma; \
break; \
case N_DATA: \
case N_DATA | N_EXT: \
- cache_ptr->sym_ptr_ptr = obj_datasec (abfd)->symbol_ptr_ptr; \
+ cache_ptr->sym_ptr_ptr = &obj_datasec (abfd)->symbol; \
cache_ptr->addend = ad - su->datasec->vma; \
break; \
case N_BSS: \
case N_BSS | N_EXT: \
- cache_ptr->sym_ptr_ptr = obj_bsssec (abfd)->symbol_ptr_ptr; \
+ cache_ptr->sym_ptr_ptr = &obj_bsssec (abfd)->symbol; \
cache_ptr->addend = ad - su->bsssec->vma; \
break; \
default: \
case N_ABS: \
case N_ABS | N_EXT: \
- cache_ptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; \
+ cache_ptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol; \
cache_ptr->addend = ad; \
break; \
} \
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 8cc255b8354..a2f75b258c4 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -811,7 +811,6 @@ typedef struct bfd_section
/* A symbol which points at this section only. */
struct bfd_symbol *symbol;
- struct bfd_symbol **symbol_ptr_ptr;
/* Early in the link process, map_head and map_tail are used to build
a list of input sections attached to an output section. Later,
@@ -1002,8 +1001,8 @@ discarded_section (const asection *sec)
/* target_index, used_by_bfd, constructor_chain, owner, */ \
0, NULL, NULL, NULL, \
\
- /* symbol, symbol_ptr_ptr, */ \
- (struct bfd_symbol *) SYM, &SEC.symbol, \
+ /* symbol, */ \
+ (struct bfd_symbol *) SYM, \
\
/* map_head, map_tail, already_assigned, type */ \
{ NULL }, { NULL }, NULL, 0 \
diff --git a/bfd/coff-alpha.c b/bfd/coff-alpha.c
index 38d2c10ade3..0329be68b69 100644
--- a/bfd/coff-alpha.c
+++ b/bfd/coff-alpha.c
@@ -664,7 +664,7 @@ alpha_adjust_reloc_in (bfd *abfd,
some reason the address of this reloc type is not adjusted by
the section vma. We record the gp value for this object file
here, for convenience when doing the GPDISP relocation. */
- rptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ rptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
rptr->address = intern->r_vaddr;
rptr->addend = ecoff_data (abfd)->gp;
break;
diff --git a/bfd/coff-mips.c b/bfd/coff-mips.c
index ae7b6e0024e..145fb6583b2 100644
--- a/bfd/coff-mips.c
+++ b/bfd/coff-mips.c
@@ -368,7 +368,7 @@ mips_adjust_reloc_in (bfd *abfd,
/* If the type is MIPS_R_IGNORE, make sure this is a reference to
the absolute section so that the reloc is ignored. */
if (intern->r_type == MIPS_R_IGNORE)
- rptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ rptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
rptr->howto = &mips_howto_table[intern->r_type];
}
diff --git a/bfd/coff-tic30.c b/bfd/coff-tic30.c
index deca0a48feb..7590a3402b9 100644
--- a/bfd/coff-tic30.c
+++ b/bfd/coff-tic30.c
@@ -162,7 +162,7 @@ reloc_processing (arelent *relent,
rtype2howto (relent, reloc);
if (reloc->r_symndx == -1 || symbols == NULL)
- relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
else if (reloc->r_symndx >= 0 && reloc->r_symndx < obj_conv_table_size (abfd))
relent->sym_ptr_ptr = symbols + obj_convert (abfd)[reloc->r_symndx];
else
@@ -171,7 +171,7 @@ reloc_processing (arelent *relent,
/* xgettext:c-format */
(_("%pB: warning: illegal symbol index %ld in relocs"),
abfd, reloc->r_symndx);
- relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
}
relent->addend = reloc->r_offset;
relent->address -= section->vma;
diff --git a/bfd/coff-tic4x.c b/bfd/coff-tic4x.c
index 8d70b465724..323d5860445 100644
--- a/bfd/coff-tic4x.c
+++ b/bfd/coff-tic4x.c
@@ -227,7 +227,7 @@ tic4x_reloc_processing (arelent *relent,
/* xgettext: c-format */
(_("%pB: warning: illegal symbol index %ld in relocs"),
abfd, reloc->r_symndx);
- relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
ptr = NULL;
}
else
@@ -239,7 +239,7 @@ tic4x_reloc_processing (arelent *relent,
}
else
{
- relent->sym_ptr_ptr = section->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = §ion->symbol;
ptr = *(relent->sym_ptr_ptr);
}
diff --git a/bfd/coff-tic54x.c b/bfd/coff-tic54x.c
index 424a3b13654..37124c26b6c 100644
--- a/bfd/coff-tic54x.c
+++ b/bfd/coff-tic54x.c
@@ -337,7 +337,7 @@ tic54x_reloc_processing (arelent *relent,
/* xgettext: c-format */
(_("%pB: warning: illegal symbol index %ld in relocs"),
abfd, reloc->r_symndx);
- relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
ptr = NULL;
}
else
@@ -349,7 +349,7 @@ tic54x_reloc_processing (arelent *relent,
}
else
{
- relent->sym_ptr_ptr = section->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = §ion->symbol;
ptr = *(relent->sym_ptr_ptr);
}
diff --git a/bfd/coff-z80.c b/bfd/coff-z80.c
index fd33b5a758f..cc6e9956a78 100644
--- a/bfd/coff-z80.c
+++ b/bfd/coff-z80.c
@@ -315,7 +315,7 @@ reloc_processing (arelent *relent,
rtype2howto (relent, reloc);
if (reloc->r_symndx == -1 || symbols == NULL)
- relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
else if (reloc->r_symndx >= 0 && reloc->r_symndx < obj_conv_table_size (abfd))
relent->sym_ptr_ptr = symbols + obj_convert (abfd)[reloc->r_symndx];
else
@@ -324,7 +324,7 @@ reloc_processing (arelent *relent,
/* xgettext:c-format */
(_("%pB: warning: illegal symbol index %ld in relocs"),
abfd, reloc->r_symndx);
- relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
}
relent->addend = reloc->r_offset;
relent->address -= section->vma;
diff --git a/bfd/coff-z8k.c b/bfd/coff-z8k.c
index 0b4e3b63aaf..2a768f2d88c 100644
--- a/bfd/coff-z8k.c
+++ b/bfd/coff-z8k.c
@@ -178,7 +178,7 @@ reloc_processing (arelent *relent,
rtype2howto (relent, reloc);
if (reloc->r_symndx == -1 || symbols == NULL)
- relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
else if (reloc->r_symndx >= 0 && reloc->r_symndx < obj_conv_table_size (abfd))
relent->sym_ptr_ptr = symbols + obj_convert (abfd)[reloc->r_symndx];
else
@@ -187,7 +187,7 @@ reloc_processing (arelent *relent,
/* xgettext:c-format */
(_("%pB: warning: illegal symbol index %ld in relocs"),
abfd, reloc->r_symndx);
- relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
}
relent->addend = reloc->r_offset;
relent->address -= section->vma;
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index ebf4f513fde..929470ab341 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -5313,7 +5313,7 @@ coff_slurp_reloc_table (bfd * abfd, sec_ptr asect, asymbol ** symbols)
/* xgettext:c-format */
(_("%pB: warning: illegal symbol index %ld in relocs"),
abfd, dst.r_symndx);
- cache_ptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ cache_ptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
ptr = NULL;
}
else
@@ -5325,7 +5325,7 @@ coff_slurp_reloc_table (bfd * abfd, sec_ptr asect, asymbol ** symbols)
}
else
{
- cache_ptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ cache_ptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
ptr = NULL;
}
diff --git a/bfd/ecoff.c b/bfd/ecoff.c
index d0cb9e18aaa..e8804bf2236 100644
--- a/bfd/ecoff.c
+++ b/bfd/ecoff.c
@@ -1685,7 +1685,7 @@ ecoff_slurp_reloc_table (bfd *abfd,
(*backend->swap_reloc_in) (abfd,
external_relocs + i * external_reloc_size,
&intern);
- rptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ rptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
rptr->addend = 0;
if (intern.r_extern)
@@ -1729,7 +1729,7 @@ ecoff_slurp_reloc_table (bfd *abfd,
sec = bfd_get_section_by_name (abfd, sec_name);
if (sec != NULL)
{
- rptr->sym_ptr_ptr = sec->symbol_ptr_ptr;
+ rptr->sym_ptr_ptr = &sec->symbol;
rptr->addend = - bfd_section_vma (sec);
}
}
@@ -3963,7 +3963,7 @@ ecoff_reloc_link_order (bfd *output_bfd,
if (type == bfd_section_reloc_link_order)
{
section = link_order->u.reloc.p->u.section;
- rel.sym_ptr_ptr = section->symbol_ptr_ptr;
+ rel.sym_ptr_ptr = §ion->symbol;
}
else
{
diff --git a/bfd/elf.c b/bfd/elf.c
index bd9525959c1..318677df32a 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -13853,8 +13853,7 @@ _bfd_elf_slurp_secondary_reloc_section (bfd * abfd,
{
/* FIXME: This and the error case below mean that we
have a symbol on relocs that is not elf_symbol_type. */
- internal_reloc->sym_ptr_ptr =
- bfd_abs_section_ptr->symbol_ptr_ptr;
+ internal_reloc->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
}
else if (r_sym (rela.r_info) > symcount)
{
@@ -13863,8 +13862,7 @@ _bfd_elf_slurp_secondary_reloc_section (bfd * abfd,
(_("%pB(%pA): relocation %zu has invalid symbol index %lu"),
abfd, sec, i, (long) r_sym (rela.r_info));
bfd_set_error (bfd_error_bad_value);
- internal_reloc->sym_ptr_ptr =
- bfd_abs_section_ptr->symbol_ptr_ptr;
+ internal_reloc->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
result = false;
}
else
diff --git a/bfd/elf32-nds32.c b/bfd/elf32-nds32.c
index b0b9b9bc9fd..eb3e241acac 100644
--- a/bfd/elf32-nds32.c
+++ b/bfd/elf32-nds32.c
@@ -13138,7 +13138,7 @@ nds32_elf_get_relocated_section_contents (bfd *abfd,
input_section);
_bfd_clear_contents ((*parent)->howto, input_bfd,
input_section, data, off);
- (*parent)->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ (*parent)->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
(*parent)->addend = 0;
(*parent)->howto = &none_howto;
r = bfd_reloc_ok;
diff --git a/bfd/elf64-mips.c b/bfd/elf64-mips.c
index afd7b30f134..a96e43bd00d 100644
--- a/bfd/elf64-mips.c
+++ b/bfd/elf64-mips.c
@@ -4080,7 +4080,7 @@ mips_elf64_slurp_one_reloc_table (bfd *abfd, asection *asect,
}
/* Some types require symbols, whereas some do not. */
- relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
switch (type)
{
case R_MIPS_NONE:
@@ -4113,7 +4113,7 @@ mips_elf64_slurp_one_reloc_table (bfd *abfd, asection *asect,
if ((s->flags & BSF_SECTION_SYM) == 0)
relent->sym_ptr_ptr = ps;
else
- relent->sym_ptr_ptr = s->section->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = &s->section->symbol;
}
used_sym = true;
diff --git a/bfd/elf64-sparc.c b/bfd/elf64-sparc.c
index 300e7fdb72c..6f6d6873db7 100644
--- a/bfd/elf64-sparc.c
+++ b/bfd/elf64-sparc.c
@@ -123,7 +123,7 @@ elf64_sparc_slurp_one_reloc_table (bfd *abfd, asection *asect,
relent->address = rela.r_offset - asect->vma;
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;
else if (/* PR 17512: file: 996185f8. */
ELF64_R_SYM (rela.r_info) > (dynamic
? bfd_get_dynamic_symcount (abfd)
@@ -134,7 +134,7 @@ elf64_sparc_slurp_one_reloc_table (bfd *abfd, asection *asect,
(_("%pB(%pA): relocation %d has invalid symbol index %ld"),
abfd, asect, i, (long) ELF64_R_SYM (rela.r_info));
bfd_set_error (bfd_error_bad_value);
- relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
}
else
{
@@ -147,7 +147,7 @@ elf64_sparc_slurp_one_reloc_table (bfd *abfd, asection *asect,
if ((s->flags & BSF_SECTION_SYM) == 0)
relent->sym_ptr_ptr = ps;
else
- relent->sym_ptr_ptr = s->section->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = &s->section->symbol;
}
relent->addend = rela.r_addend;
@@ -158,7 +158,7 @@ elf64_sparc_slurp_one_reloc_table (bfd *abfd, asection *asect,
relent->howto = _bfd_sparc_elf_info_to_howto_ptr (abfd, R_SPARC_LO10);
relent[1].address = relent->address;
relent++;
- relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
relent->addend = ELF64_R_TYPE_DATA (rela.r_info);
relent->howto = _bfd_sparc_elf_info_to_howto_ptr (abfd, R_SPARC_13);
}
diff --git a/bfd/elfcode.h b/bfd/elfcode.h
index 3dcba4c4fd7..baf38fef5a5 100644
--- a/bfd/elfcode.h
+++ b/bfd/elfcode.h
@@ -1593,7 +1593,7 @@ elf_slurp_reloc_table_from_section (bfd *abfd,
if (ELF_R_SYM (rela.r_info) == STN_UNDEF)
/* FIXME: This and the error case below mean that we have a
symbol on relocs that is not elf_symbol_type. */
- relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
else if (ELF_R_SYM (rela.r_info) > symcount)
{
_bfd_error_handler
@@ -1601,7 +1601,7 @@ elf_slurp_reloc_table_from_section (bfd *abfd,
(_("%pB(%pA): relocation %d has invalid symbol index %ld"),
abfd, asect, i, (long) ELF_R_SYM (rela.r_info));
bfd_set_error (bfd_error_bad_value);
- relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
}
else
{
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 59444b063a4..c9895aa660f 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -593,8 +593,6 @@ struct mips_elf_obj_tdata
/* The Irix 5 support uses two virtual sections, which represent
text/data symbols defined in dynamic objects. */
- asymbol *elf_data_symbol;
- asymbol *elf_text_symbol;
asection *elf_data_section;
asection *elf_text_section;
@@ -7913,11 +7911,8 @@ _bfd_mips_elf_add_symbol_hook (bfd *abfd, struct bfd_link_info *info,
/* Initialize the section. */
mips_elf_tdata (abfd)->elf_text_section = elf_text_section;
- mips_elf_tdata (abfd)->elf_text_symbol = elf_text_symbol;
elf_text_section->symbol = elf_text_symbol;
- elf_text_section->symbol_ptr_ptr = &mips_elf_tdata (abfd)->elf_text_symbol;
-
elf_text_section->name = ".text";
elf_text_section->flags = SEC_NO_FLAGS;
elf_text_section->output_section = NULL;
@@ -7954,11 +7949,8 @@ _bfd_mips_elf_add_symbol_hook (bfd *abfd, struct bfd_link_info *info,
/* Initialize the section. */
mips_elf_tdata (abfd)->elf_data_section = elf_data_section;
- mips_elf_tdata (abfd)->elf_data_symbol = elf_data_symbol;
elf_data_section->symbol = elf_data_symbol;
- elf_data_section->symbol_ptr_ptr = &mips_elf_tdata (abfd)->elf_data_symbol;
-
elf_data_section->name = ".data";
elf_data_section->flags = SEC_NO_FLAGS;
elf_data_section->output_section = NULL;
@@ -13455,7 +13447,7 @@ _bfd_elf_mips_get_relocated_section_contents
* bfd_octets_per_byte (input_bfd, input_section));
_bfd_clear_contents ((*parent)->howto, input_bfd,
input_section, data, off);
- (*parent)->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ (*parent)->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
(*parent)->addend = 0;
(*parent)->howto = &none_howto;
r = bfd_reloc_ok;
diff --git a/bfd/i386lynx.c b/bfd/i386lynx.c
index 1d4c411a6ed..f6695f91177 100644
--- a/bfd/i386lynx.c
+++ b/bfd/i386lynx.c
@@ -285,7 +285,7 @@ NAME(lynx,swap_ext_reloc_out) (bfd *abfd,
if (symbols != NULL && r_index < bfd_get_symcount (abfd)) \
cache_ptr->sym_ptr_ptr = symbols + r_index; \
else \
- cache_ptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; \
+ cache_ptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol; \
cache_ptr->addend = ad; \
} \
else \
@@ -296,23 +296,23 @@ NAME(lynx,swap_ext_reloc_out) (bfd *abfd,
{ \
case N_TEXT: \
case N_TEXT | N_EXT: \
- cache_ptr->sym_ptr_ptr = obj_textsec(abfd)->symbol_ptr_ptr; \
+ cache_ptr->sym_ptr_ptr = &obj_textsec(abfd)->symbol; \
cache_ptr->addend = ad - su->textsec->vma; \
break; \
case N_DATA: \
case N_DATA | N_EXT: \
- cache_ptr->sym_ptr_ptr = obj_datasec(abfd)->symbol_ptr_ptr; \
+ cache_ptr->sym_ptr_ptr = &obj_datasec(abfd)->symbol; \
cache_ptr->addend = ad - su->datasec->vma; \
break; \
case N_BSS: \
case N_BSS | N_EXT: \
- cache_ptr->sym_ptr_ptr = obj_bsssec(abfd)->symbol_ptr_ptr; \
+ cache_ptr->sym_ptr_ptr = &obj_bsssec(abfd)->symbol; \
cache_ptr->addend = ad - su->bsssec->vma; \
break; \
default: \
case N_ABS: \
case N_ABS | N_EXT: \
- cache_ptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; \
+ cache_ptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol; \
cache_ptr->addend = ad; \
break; \
} \
diff --git a/bfd/linker.c b/bfd/linker.c
index 21009a838bc..c37dc573138 100644
--- a/bfd/linker.c
+++ b/bfd/linker.c
@@ -2373,7 +2373,7 @@ _bfd_generic_reloc_link_order (bfd *abfd,
/* Get the symbol to use for the relocation. */
if (link_order->type == bfd_section_reloc_link_order)
- r->sym_ptr_ptr = link_order->u.reloc.p->u.section->symbol_ptr_ptr;
+ r->sym_ptr_ptr = &link_order->u.reloc.p->u.section->symbol;
else
{
struct generic_link_hash_entry *h;
diff --git a/bfd/mach-o-aarch64.c b/bfd/mach-o-aarch64.c
index c62aac62c20..81d4b95f476 100644
--- a/bfd/mach-o-aarch64.c
+++ b/bfd/mach-o-aarch64.c
@@ -170,7 +170,7 @@ bfd_mach_o_arm64_canonicalize_one_reloc (bfd * abfd,
{
if (reloc.r_length == 2 && reloc.r_pcrel == 0)
{
- res->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ res->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
res->addend = reloc.r_value;
res->howto = &arm64_howto_table[10];
return true;
diff --git a/bfd/mach-o.c b/bfd/mach-o.c
index 49ecd13f736..95bb4818043 100644
--- a/bfd/mach-o.c
+++ b/bfd/mach-o.c
@@ -1489,9 +1489,9 @@ bfd_mach_o_canonicalize_non_scattered_reloc (bfd *abfd,
{
/* PR 17512: file: 8396-1185-0.004. */
if (num >= (unsigned) bfd_mach_o_count_symbols (abfd))
- sym = bfd_und_section_ptr->symbol_ptr_ptr;
+ sym = &bfd_und_section_ptr->symbol;
else if (syms == NULL)
- sym = bfd_und_section_ptr->symbol_ptr_ptr;
+ sym = &bfd_und_section_ptr->symbol;
else
/* An external symbol number. */
sym = syms + num;
@@ -1503,7 +1503,7 @@ bfd_mach_o_canonicalize_non_scattered_reloc (bfd *abfd,
This value is almost certainly not a valid section number, hence
this specific case to avoid an assertion failure.
Target specific swap_reloc_in routine should adjust that. */
- sym = bfd_abs_section_ptr->symbol_ptr_ptr;
+ sym = &bfd_abs_section_ptr->symbol;
}
else
{
@@ -1516,7 +1516,7 @@ malformed mach-o reloc: section index is greater than the number of sections"));
}
/* A section number. */
- sym = mdata->sections[num - 1]->bfdsection->symbol_ptr_ptr;
+ sym = &mdata->sections[num - 1]->bfdsection->symbol;
/* For a symbol defined in section S, the addend (stored in the
binary) contains the address of the section. To comply with
bfd convention, subtract the section address.
@@ -1554,7 +1554,7 @@ bfd_mach_o_pre_canonicalize_one_reloc (bfd *abfd,
bfd_vma addr;
addr = bfd_get_32 (abfd, raw->r_address);
- res->sym_ptr_ptr = bfd_und_section_ptr->symbol_ptr_ptr;
+ res->sym_ptr_ptr = &bfd_und_section_ptr->symbol;
res->addend = 0;
if (addr & BFD_MACH_O_SR_SCATTERED)
@@ -1578,7 +1578,7 @@ bfd_mach_o_pre_canonicalize_one_reloc (bfd *abfd,
bfd_mach_o_section *sect = mdata->sections[j];
if (symnum >= sect->addr && symnum < sect->addr + sect->size)
{
- res->sym_ptr_ptr = sect->bfdsection->symbol_ptr_ptr;
+ res->sym_ptr_ptr = §->bfdsection->symbol;
res->addend = symnum - sect->addr;
break;
}
diff --git a/bfd/pdp11.c b/bfd/pdp11.c
index 7099c0b15dd..f65760f9ee6 100644
--- a/bfd/pdp11.c
+++ b/bfd/pdp11.c
@@ -1842,7 +1842,7 @@ pdp11_aout_swap_reloc_out (bfd *abfd, arelent *g, bfd_byte *natptr)
if (symbols != NULL && r_index < bfd_get_symcount (abfd)) \
cache_ptr->sym_ptr_ptr = symbols + r_index; \
else \
- cache_ptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; \
+ cache_ptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol; \
cache_ptr->addend = ad; \
} \
else \
@@ -1853,23 +1853,23 @@ pdp11_aout_swap_reloc_out (bfd *abfd, arelent *g, bfd_byte *natptr)
{ \
case N_TEXT: \
case N_TEXT | N_EXT: \
- cache_ptr->sym_ptr_ptr = obj_textsec (abfd)->symbol_ptr_ptr; \
+ cache_ptr->sym_ptr_ptr = &obj_textsec (abfd)->symbol; \
cache_ptr->addend = ad - su->textsec->vma; \
break; \
case N_DATA: \
case N_DATA | N_EXT: \
- cache_ptr->sym_ptr_ptr = obj_datasec (abfd)->symbol_ptr_ptr; \
+ cache_ptr->sym_ptr_ptr = &obj_datasec (abfd)->symbol; \
cache_ptr->addend = ad - su->datasec->vma; \
break; \
case N_BSS: \
case N_BSS | N_EXT: \
- cache_ptr->sym_ptr_ptr = obj_bsssec (abfd)->symbol_ptr_ptr; \
+ cache_ptr->sym_ptr_ptr = &obj_bsssec (abfd)->symbol; \
cache_ptr->addend = ad - su->bsssec->vma; \
break; \
default: \
case N_ABS: \
case N_ABS | N_EXT: \
- cache_ptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; \
+ cache_ptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol; \
cache_ptr->addend = ad; \
break; \
} \
diff --git a/bfd/peicode.h b/bfd/peicode.h
index 1a084fda05b..b642bd7bfe6 100644
--- a/bfd/peicode.h
+++ b/bfd/peicode.h
@@ -500,7 +500,7 @@ pe_ILF_make_a_reloc (pe_ILF_vars * vars,
bfd_reloc_code_real_type reloc,
asection_ptr sec)
{
- pe_ILF_make_a_symbol_reloc (vars, address, reloc, sec->symbol_ptr_ptr,
+ pe_ILF_make_a_symbol_reloc (vars, address, reloc, &sec->symbol,
coff_section_data (vars->abfd, sec)->i);
}
diff --git a/bfd/reloc.c b/bfd/reloc.c
index f60776299c8..f8eb3344b42 100644
--- a/bfd/reloc.c
+++ b/bfd/reloc.c
@@ -8542,7 +8542,7 @@ bfd_generic_get_relocated_section_contents (bfd *abfd,
* bfd_octets_per_byte (input_bfd, input_section));
_bfd_clear_contents ((*parent)->howto, input_bfd,
input_section, data, off);
- (*parent)->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ (*parent)->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
(*parent)->addend = 0;
(*parent)->howto = &none_howto;
r = bfd_reloc_ok;
diff --git a/bfd/section.c b/bfd/section.c
index 35e4489c475..07546a23c9d 100644
--- a/bfd/section.c
+++ b/bfd/section.c
@@ -545,7 +545,6 @@ CODE_FRAGMENT
.
. {* A symbol which points at this section only. *}
. struct bfd_symbol *symbol;
-. struct bfd_symbol **symbol_ptr_ptr;
.
. {* Early in the link process, map_head and map_tail are used to build
. a list of input sections attached to an output section. Later,
@@ -738,8 +737,8 @@ EXTERNAL
. {* target_index, used_by_bfd, constructor_chain, owner, *} \
. 0, NULL, NULL, NULL, \
. \
-. {* symbol, symbol_ptr_ptr, *} \
-. (struct bfd_symbol *) SYM, &SEC.symbol, \
+. {* symbol, *} \
+. (struct bfd_symbol *) SYM, \
. \
. {* map_head, map_tail, already_assigned, type *} \
. { NULL }, { NULL }, NULL, 0 \
@@ -828,7 +827,6 @@ _bfd_generic_new_section_hook (bfd *abfd, asection *newsect)
newsect->symbol->section = newsect;
newsect->symbol->flags = BSF_SECTION_SYM;
- newsect->symbol_ptr_ptr = &newsect->symbol;
return true;
}
diff --git a/bfd/som.c b/bfd/som.c
index 3a3cbd3dfd7..86f7f4121e4 100644
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -4914,7 +4914,7 @@ som_set_reloc_info (unsigned char *fixup,
rptr->address = offset;
rptr->howto = &som_hppa_howto_table[op];
rptr->addend = 0;
- rptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ rptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
}
/* Set default input length to 0. Get the opcode class index
diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c
index 092798a51a2..a536fc606fc 100644
--- a/bfd/vms-alpha.c
+++ b/bfd/vms-alpha.c
@@ -5586,8 +5586,7 @@ alpha_vms_slurp_relocs (bfd *abfd)
{
if (PRIV (sections) == NULL || cur_psidx >= (int) PRIV (section_count))
goto fail;
- reloc->sym_ptr_ptr =
- PRIV (sections)[cur_psidx]->symbol_ptr_ptr;
+ reloc->sym_ptr_ptr = &PRIV (sections)[cur_psidx]->symbol;
}
else
reloc->sym_ptr_ptr = NULL;
diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c
index 6eb4529b85a..9fb98fd996f 100644
--- a/bfd/xcofflink.c
+++ b/bfd/xcofflink.c
@@ -451,7 +451,7 @@ _bfd_xcoff_canonicalize_dynamic_reloc (bfd *abfd,
return -1;
}
- relbuf->sym_ptr_ptr = sec->symbol_ptr_ptr;
+ relbuf->sym_ptr_ptr = &sec->symbol;
}
else if (ldrel.l_symndx - 3 < ldhdr.l_nsyms)
relbuf->sym_ptr_ptr = syms + (ldrel.l_symndx - 3);
@@ -461,7 +461,7 @@ _bfd_xcoff_canonicalize_dynamic_reloc (bfd *abfd,
/* xgettext:c-format */
(_("%pB: warning: illegal symbol index %lu in relocs"),
abfd, (unsigned long) ldrel.l_symndx);
- relbuf->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ relbuf->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
}
relbuf->address = ldrel.l_vaddr;
diff --git a/binutils/objcopy.c b/binutils/objcopy.c
index 378285062b2..8e04b2cbeeb 100644
--- a/binutils/objcopy.c
+++ b/binutils/objcopy.c
@@ -1666,7 +1666,7 @@ filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms,
keep = false;
else if ((flags & BSF_KEEP) != 0 /* Used in relocation. */
|| ((flags & BSF_SECTION_SYM) != 0
- && ((*bfd_asymbol_section (sym)->symbol_ptr_ptr)->flags
+ && (bfd_asymbol_section (sym)->symbol->flags
& BSF_KEEP) != 0))
{
keep = true;
diff --git a/binutils/rescoff.c b/binutils/rescoff.c
index ec4e2c2c34c..d9998254442 100644
--- a/binutils/rescoff.c
+++ b/binutils/rescoff.c
@@ -481,7 +481,7 @@ write_coff_file (const char *filename, const char *target,
if (sec == NULL)
bfd_fatal ("bfd_make_section");
- if (! bfd_set_symtab (abfd, sec->symbol_ptr_ptr, 1))
+ if (! bfd_set_symtab (abfd, &sec->symbol, 1))
bfd_fatal ("bfd_set_symtab");
/* Requiring this is probably a bug in BFD. */
@@ -498,7 +498,7 @@ write_coff_file (const char *filename, const char *target,
set_windres_bfd (&wrbfd, abfd, sec, WR_KIND_BFD);
cwi.wrbfd = &wrbfd;
- cwi.sympp = sec->symbol_ptr_ptr;
+ cwi.sympp = &sec->symbol;
cwi.dirsize = 0;
cwi.dirstrsize = 0;
cwi.dataentsize = 0;
diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c
index bf8a247c717..54cc40a78ca 100644
--- a/gas/config/tc-hppa.c
+++ b/gas/config/tc-hppa.c
@@ -1477,8 +1477,7 @@ tc_gen_reloc (asection *section, fixS *fixp)
of two symbols. With that in mind we fill in all four
relocs now and break out of the loop. */
gas_assert (i == 1);
- relocs[0]->sym_ptr_ptr
- = (asymbol **) bfd_abs_section_ptr->symbol_ptr_ptr;
+ relocs[0]->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
relocs[0]->howto
= bfd_reloc_type_lookup (stdoutput,
(bfd_reloc_code_real_type) *codes[0]);
@@ -1498,15 +1497,13 @@ tc_gen_reloc (asection *section, fixS *fixp)
(bfd_reloc_code_real_type) *codes[2]);
relocs[2]->address = fixp->fx_frag->fr_address + fixp->fx_where;
relocs[2]->addend = 0;
- relocs[3]->sym_ptr_ptr
- = (asymbol **) bfd_abs_section_ptr->symbol_ptr_ptr;
+ relocs[3]->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
relocs[3]->howto
= bfd_reloc_type_lookup (stdoutput,
(bfd_reloc_code_real_type) *codes[3]);
relocs[3]->address = fixp->fx_frag->fr_address + fixp->fx_where;
relocs[3]->addend = 0;
- relocs[4]->sym_ptr_ptr
- = (asymbol **) bfd_abs_section_ptr->symbol_ptr_ptr;
+ relocs[4]->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
relocs[4]->howto
= bfd_reloc_type_lookup (stdoutput,
(bfd_reloc_code_real_type) *codes[4]);
diff --git a/gas/config/tc-m32r.c b/gas/config/tc-m32r.c
index 3b0c50b34da..d698255d306 100644
--- a/gas/config/tc-m32r.c
+++ b/gas/config/tc-m32r.c
@@ -725,7 +725,6 @@ md_begin (void)
scom_section.flags = SEC_IS_COMMON | SEC_SMALL_DATA;
scom_section.output_section = & scom_section;
scom_section.symbol = & scom_symbol;
- scom_section.symbol_ptr_ptr = & scom_section.symbol;
scom_symbol = * bfd_com_section_ptr->symbol;
scom_symbol.name = ".scommon";
scom_symbol.section = & scom_section;
diff --git a/gas/config/tc-mn10300.c b/gas/config/tc-mn10300.c
index 099d2058026..dffadb2c15e 100644
--- a/gas/config/tc-mn10300.c
+++ b/gas/config/tc-mn10300.c
@@ -2220,7 +2220,7 @@ tc_gen_reloc (asection *seg ATTRIBUTE_UNUSED, fixS *fixp)
if (asec == absolute_section)
{
reloc->addend += S_GET_VALUE (fixp->fx_addsy);
- reloc->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ reloc->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
}
else
{
@@ -2258,8 +2258,7 @@ tc_gen_reloc (asection *seg ATTRIBUTE_UNUSED, fixS *fixp)
break;
default:
- reloc->sym_ptr_ptr
- = (asymbol **) bfd_abs_section_ptr->symbol_ptr_ptr;
+ reloc->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
return relocs;
}
diff --git a/gas/config/tc-msp430.c b/gas/config/tc-msp430.c
index 71500fb7003..e1d0782d6e8 100644
--- a/gas/config/tc-msp430.c
+++ b/gas/config/tc-msp430.c
@@ -4697,7 +4697,7 @@ tc_gen_reloc (asection * seg ATTRIBUTE_UNUSED, fixS * fixp)
reloc2->addend = - S_GET_VALUE (fixp->fx_subsy);
if (ssec == absolute_section)
- reloc2->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ reloc2->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
else
{
reloc2->sym_ptr_ptr = XNEW (asymbol *);
@@ -4708,7 +4708,7 @@ tc_gen_reloc (asection * seg ATTRIBUTE_UNUSED, fixS * fixp)
if (asec == absolute_section)
{
reloc->addend += S_GET_VALUE (fixp->fx_addsy);
- reloc->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ reloc->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
}
else
{
@@ -4746,8 +4746,7 @@ tc_gen_reloc (asection * seg ATTRIBUTE_UNUSED, fixS * fixp)
break;
default:
- reloc->sym_ptr_ptr
- = (asymbol **) bfd_abs_section_ptr->symbol_ptr_ptr;
+ reloc->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
return relocs;
}
diff --git a/gas/config/tc-tic6x.c b/gas/config/tc-tic6x.c
index 8a2d4e3bb96..404cb14bf59 100644
--- a/gas/config/tc-tic6x.c
+++ b/gas/config/tc-tic6x.c
@@ -786,7 +786,6 @@ md_begin (void)
scom_section.name = ".scommon";
scom_section.output_section = & scom_section;
scom_section.symbol = & scom_symbol;
- scom_section.symbol_ptr_ptr = & scom_section.symbol;
scom_symbol = * bfd_com_section_ptr->symbol;
scom_symbol.name = ".scommon";
scom_symbol.section = & scom_section;
--
Alan Modra
More information about the Binutils
mailing list