This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Remove unnecessary structs and functions from elf-bfd.h
- From: Alan Modra <amodra at bigpond dot net dot au>
- To: binutils at sourceware dot org
- Date: Fri, 23 Jan 2009 22:46:56 +1030
- Subject: Remove unnecessary structs and functions from elf-bfd.h
This patch localizes a number of structs and functions to elflink.c
* elf-bfd.h (struct elf_assign_sym_version_info): Delete.
(struct elf_info_failed, struct elf_find_verdep_info): Move to..
* elflink.c: ..here, somewhat modified.
* elf-bfd.h (_bfd_elf_add_default_symbol, _bfd_elf_export_symbol,
_bfd_elf_link_find_version_dependencies,
_bfd_elf_link_assign_sym_version, _bfd_elf_link_size_reloc_section,
_bfd_elf_fix_symbol_flags, _bfd_elf_adjust_dynamic_symbol,
_bfd_elf_link_sec_merge_syms, bfd_elf_link_mark_dynamic_symbol): Don't
declare..
* elflink.c: ..and make static here.
(_bfd_elf_link_find_version_dependencies): Adjust for removal
of output_bfd from struct elf_find_verdep_info.
(_bfd_elf_link_assign_sym_version): Similarly adjust to use
struct elf_info_failed.
(bfd_elf_size_dynamic_sections): Adjust.
Index: bfd/elf-bfd.h
===================================================================
RCS file: /cvs/src/src/bfd/elf-bfd.h,v
retrieving revision 1.278
diff -u -p -r1.278 elf-bfd.h
--- bfd/elf-bfd.h 19 Jan 2009 12:14:04 -0000 1.278
+++ bfd/elf-bfd.h 23 Jan 2009 04:58:33 -0000
@@ -1334,46 +1334,6 @@ struct bfd_elf_section_data
#define get_elf_backend_data(abfd) \
xvec_get_elf_backend_data ((abfd)->xvec)
-/* This struct is used to pass information to routines called via
- elf_link_hash_traverse which must return failure. */
-
-struct elf_info_failed
-{
- bfd_boolean failed;
- struct bfd_link_info *info;
- struct bfd_elf_version_tree *verdefs;
-};
-
-/* This structure is used to pass information to
- _bfd_elf_link_assign_sym_version. */
-
-struct elf_assign_sym_version_info
-{
- /* Output BFD. */
- bfd *output_bfd;
- /* General link information. */
- struct bfd_link_info *info;
- /* Version tree. */
- struct bfd_elf_version_tree *verdefs;
- /* Whether we had a failure. */
- bfd_boolean failed;
-};
-
-/* This structure is used to pass information to
- _bfd_elf_link_find_version_dependencies. */
-
-struct elf_find_verdep_info
-{
- /* Output BFD. */
- bfd *output_bfd;
- /* General link information. */
- struct bfd_link_info *info;
- /* The number of dependencies. */
- unsigned int vers;
- /* Whether we had a failure. */
- bfd_boolean failed;
-};
-
/* The maximum number of known object attributes for any target. */
#define NUM_KNOWN_OBJ_ATTRIBUTES 71
@@ -1887,20 +1847,6 @@ extern bfd_boolean _bfd_elf_merge_symbol
extern bfd_boolean _bfd_elf_hash_symbol (struct elf_link_hash_entry *);
-extern bfd_boolean _bfd_elf_add_default_symbol
- (bfd *, struct bfd_link_info *, struct elf_link_hash_entry *,
- const char *, Elf_Internal_Sym *, asection **, bfd_vma *,
- bfd_boolean *, bfd_boolean);
-
-extern bfd_boolean _bfd_elf_export_symbol
- (struct elf_link_hash_entry *, void *);
-
-extern bfd_boolean _bfd_elf_link_find_version_dependencies
- (struct elf_link_hash_entry *, void *);
-
-extern bfd_boolean _bfd_elf_link_assign_sym_version
- (struct elf_link_hash_entry *, void *);
-
extern long _bfd_elf_link_lookup_local_dynindx
(struct bfd_link_info *, bfd *, long);
extern bfd_boolean _bfd_elf_compute_section_file_positions
@@ -1936,25 +1882,13 @@ extern char *_bfd_elfcore_strndup
extern Elf_Internal_Rela *_bfd_elf_link_read_relocs
(bfd *, asection *, void *, Elf_Internal_Rela *, bfd_boolean);
-extern bfd_boolean _bfd_elf_link_size_reloc_section
- (bfd *, Elf_Internal_Shdr *, asection *);
-
extern bfd_boolean _bfd_elf_link_output_relocs
(bfd *, asection *, Elf_Internal_Shdr *, Elf_Internal_Rela *,
struct elf_link_hash_entry **);
-extern bfd_boolean _bfd_elf_fix_symbol_flags
- (struct elf_link_hash_entry *, struct elf_info_failed *);
-
-extern bfd_boolean _bfd_elf_adjust_dynamic_symbol
- (struct elf_link_hash_entry *, void *);
-
extern bfd_boolean _bfd_elf_adjust_dynamic_copy
(struct elf_link_hash_entry *, asection *);
-extern bfd_boolean _bfd_elf_link_sec_merge_syms
- (struct elf_link_hash_entry *, void *);
-
extern bfd_boolean _bfd_elf_dynamic_symbol_p
(struct elf_link_hash_entry *, struct bfd_link_info *, bfd_boolean);
@@ -2076,10 +2010,6 @@ extern bfd_boolean bfd_elf_link_record_d
extern int bfd_elf_link_record_local_dynamic_symbol
(struct bfd_link_info *, bfd *, long);
-extern void bfd_elf_link_mark_dynamic_symbol
- (struct bfd_link_info *, struct elf_link_hash_entry *,
- Elf_Internal_Sym *);
-
extern bfd_boolean _bfd_elf_close_and_cleanup
(bfd *);
Index: bfd/elflink.c
===================================================================
RCS file: /cvs/src/src/bfd/elflink.c,v
retrieving revision 1.325
diff -u -p -r1.325 elflink.c
--- bfd/elflink.c 14 Jan 2009 21:52:48 -0000 1.325
+++ bfd/elflink.c 23 Jan 2009 04:59:21 -0000
@@ -30,6 +30,32 @@
#include "libiberty.h"
#include "objalloc.h"
+/* This struct is used to pass information to routines called via
+ elf_link_hash_traverse which must return failure. */
+
+struct elf_info_failed
+{
+ struct bfd_link_info *info;
+ struct bfd_elf_version_tree *verdefs;
+ bfd_boolean failed;
+};
+
+/* This structure is used to pass information to
+ _bfd_elf_link_find_version_dependencies. */
+
+struct elf_find_verdep_info
+{
+ /* General link information. */
+ struct bfd_link_info *info;
+ /* The number of dependencies. */
+ unsigned int vers;
+ /* Whether we had a failure. */
+ bfd_boolean failed;
+};
+
+static bfd_boolean _bfd_elf_fix_symbol_flags
+ (struct elf_link_hash_entry *, struct elf_info_failed *);
+
/* Define a symbol in a dynamic linkage section. */
struct elf_link_hash_entry *
@@ -438,7 +464,7 @@ bfd_elf_link_record_dynamic_symbol (stru
/* Mark a symbol dynamic. */
-void
+static void
bfd_elf_link_mark_dynamic_symbol (struct bfd_link_info *info,
struct elf_link_hash_entry *h,
Elf_Internal_Sym *sym)
@@ -1538,7 +1564,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
symbol is described by H, NAME, SYM, PSEC, VALUE, and OVERRIDE. We
set DYNSYM if the new indirect symbol is dynamic. */
-bfd_boolean
+static bfd_boolean
_bfd_elf_add_default_symbol (bfd *abfd,
struct bfd_link_info *info,
struct elf_link_hash_entry *h,
@@ -1775,7 +1801,7 @@ nondefault:
/* This routine is used to export all defined symbols into the dynamic
symbol table. It is called via elf_link_hash_traverse. */
-bfd_boolean
+static bfd_boolean
_bfd_elf_export_symbol (struct elf_link_hash_entry *h, void *data)
{
struct elf_info_failed *eif = data;
@@ -1834,7 +1860,7 @@ _bfd_elf_export_symbol (struct elf_link_
dependencies. This will be put into the .gnu.version_r section.
This function is called via elf_link_hash_traverse. */
-bfd_boolean
+static bfd_boolean
_bfd_elf_link_find_version_dependencies (struct elf_link_hash_entry *h,
void *data)
{
@@ -1855,7 +1881,9 @@ _bfd_elf_link_find_version_dependencies
return TRUE;
/* See if we already know about this version. */
- for (t = elf_tdata (rinfo->output_bfd)->verref; t != NULL; t = t->vn_nextref)
+ for (t = elf_tdata (rinfo->info->output_bfd)->verref;
+ t != NULL;
+ t = t->vn_nextref)
{
if (t->vn_bfd != h->verinfo.verdef->vd_bfd)
continue;
@@ -1872,7 +1900,7 @@ _bfd_elf_link_find_version_dependencies
if (t == NULL)
{
amt = sizeof *t;
- t = bfd_zalloc (rinfo->output_bfd, amt);
+ t = bfd_zalloc (rinfo->info->output_bfd, amt);
if (t == NULL)
{
rinfo->failed = TRUE;
@@ -1880,12 +1908,12 @@ _bfd_elf_link_find_version_dependencies
}
t->vn_bfd = h->verinfo.verdef->vd_bfd;
- t->vn_nextref = elf_tdata (rinfo->output_bfd)->verref;
- elf_tdata (rinfo->output_bfd)->verref = t;
+ t->vn_nextref = elf_tdata (rinfo->info->output_bfd)->verref;
+ elf_tdata (rinfo->info->output_bfd)->verref = t;
}
amt = sizeof *a;
- a = bfd_zalloc (rinfo->output_bfd, amt);
+ a = bfd_zalloc (rinfo->info->output_bfd, amt);
if (a == NULL)
{
rinfo->failed = TRUE;
@@ -1916,10 +1944,10 @@ _bfd_elf_link_find_version_dependencies
files, so until that point we don't know which symbols should be
local. This function is called via elf_link_hash_traverse. */
-bfd_boolean
+static bfd_boolean
_bfd_elf_link_assign_sym_version (struct elf_link_hash_entry *h, void *data)
{
- struct elf_assign_sym_version_info *sinfo;
+ struct elf_info_failed *sinfo;
struct bfd_link_info *info;
const struct elf_backend_data *bed;
struct elf_info_failed eif;
@@ -1947,7 +1975,7 @@ _bfd_elf_link_assign_sym_version (struct
if (!h->def_regular)
return TRUE;
- bed = get_elf_backend_data (sinfo->output_bfd);
+ bed = get_elf_backend_data (info->output_bfd);
p = strchr (h->root.root.string, ELF_VER_CHR);
if (p != NULL && h->verinfo.vertree == NULL)
{
@@ -2030,7 +2058,7 @@ _bfd_elf_link_assign_sym_version (struct
return TRUE;
amt = sizeof *t;
- t = bfd_zalloc (sinfo->output_bfd, amt);
+ t = bfd_zalloc (info->output_bfd, amt);
if (t == NULL)
{
sinfo->failed = TRUE;
@@ -2059,7 +2087,7 @@ _bfd_elf_link_assign_sym_version (struct
generating a shared archive. Return an error. */
(*_bfd_error_handler)
(_("%B: version node not found for symbol %s"),
- sinfo->output_bfd, h->root.root.string);
+ info->output_bfd, h->root.root.string);
bfd_set_error (bfd_error_bad_value);
sinfo->failed = TRUE;
return FALSE;
@@ -2323,7 +2351,7 @@ _bfd_elf_link_read_relocs (bfd *abfd,
/* Compute the size of, and allocate space for, REL_HDR which is the
section header for a section containing relocations for O. */
-bfd_boolean
+static bfd_boolean
_bfd_elf_link_size_reloc_section (bfd *abfd,
Elf_Internal_Shdr *rel_hdr,
asection *o)
@@ -2462,7 +2490,7 @@ _bfd_elf_link_hash_fixup_symbol (struct
assign_sym_version, which is unnecessary but perhaps more robust in
the face of future changes. */
-bfd_boolean
+static bfd_boolean
_bfd_elf_fix_symbol_flags (struct elf_link_hash_entry *h,
struct elf_info_failed *eif)
{
@@ -2605,7 +2633,7 @@ _bfd_elf_fix_symbol_flags (struct elf_li
called via elf_link_hash_traverse, and also calls itself
recursively. */
-bfd_boolean
+static bfd_boolean
_bfd_elf_adjust_dynamic_symbol (struct elf_link_hash_entry *h, void *data)
{
struct elf_info_failed *eif = data;
@@ -2775,7 +2803,7 @@ _bfd_elf_adjust_dynamic_copy (struct elf
/* Adjust all external symbols pointing into SEC_MERGE sections
to reflect the object merging within the sections. */
-bfd_boolean
+static bfd_boolean
_bfd_elf_link_sec_merge_syms (struct elf_link_hash_entry *h, void *data)
{
asection *sec;
@@ -5448,7 +5476,7 @@ bfd_elf_size_dynamic_sections (bfd *outp
bfd_size_type soname_indx;
bfd *dynobj;
const struct elf_backend_data *bed;
- struct elf_assign_sym_version_info asvinfo;
+ struct elf_info_failed asvinfo;
*sinterpptr = NULL;
@@ -5659,7 +5687,6 @@ bfd_elf_size_dynamic_sections (bfd *outp
}
/* Attach all the symbols to their version information. */
- asvinfo.output_bfd = output_bfd;
asvinfo.info = info;
asvinfo.verdefs = verdefs;
asvinfo.failed = FALSE;
@@ -6064,7 +6091,6 @@ bfd_elf_size_dynamic_sections (bfd *outp
{
struct elf_find_verdep_info sinfo;
- sinfo.output_bfd = output_bfd;
sinfo.info = info;
sinfo.vers = elf_tdata (output_bfd)->cverdefs;
if (sinfo.vers == 0)
--
Alan Modra
Australia Development Lab, IBM