aboutsummaryrefslogtreecommitdiff
path: root/bfd/linker.c
diff options
context:
space:
mode:
Diffstat (limited to 'bfd/linker.c')
-rw-r--r--bfd/linker.c416
1 files changed, 209 insertions, 207 deletions
diff --git a/bfd/linker.c b/bfd/linker.c
index a5ded1f..7c097dc 100644
--- a/bfd/linker.c
+++ b/bfd/linker.c
@@ -200,7 +200,7 @@ SUBSUBSECTION
read the symbol information, the <<_bfd_link_add_symbols>>
routine should save it somewhere attached to the object file
BFD. However, the information should only be saved if the
- <<keep_memory>> field of the <<info>> argument is true, so
+ <<keep_memory>> field of the <<info>> argument is TRUE, so
that the <<-no-keep-memory>> linker switch is effective.
The a.out function which adds symbols from an object file is
@@ -406,32 +406,34 @@ SUBSUBSECTION
file at the end of <<NAME(aout,final_link)>>.
*/
-static boolean generic_link_read_symbols
+static bfd_boolean generic_link_read_symbols
PARAMS ((bfd *));
-static boolean generic_link_add_symbols
- PARAMS ((bfd *, struct bfd_link_info *, boolean collect));
-static boolean generic_link_add_object_symbols
- PARAMS ((bfd *, struct bfd_link_info *, boolean collect));
-static boolean generic_link_check_archive_element_no_collect
- PARAMS ((bfd *, struct bfd_link_info *, boolean *pneeded));
-static boolean generic_link_check_archive_element_collect
- PARAMS ((bfd *, struct bfd_link_info *, boolean *pneeded));
-static boolean generic_link_check_archive_element
- PARAMS ((bfd *, struct bfd_link_info *, boolean *pneeded, boolean collect));
-static boolean generic_link_add_symbol_list
+static bfd_boolean generic_link_add_symbols
+ PARAMS ((bfd *, struct bfd_link_info *, bfd_boolean collect));
+static bfd_boolean generic_link_add_object_symbols
+ PARAMS ((bfd *, struct bfd_link_info *, bfd_boolean collect));
+static bfd_boolean generic_link_check_archive_element_no_collect
+ PARAMS ((bfd *, struct bfd_link_info *, bfd_boolean *pneeded));
+static bfd_boolean generic_link_check_archive_element_collect
+ PARAMS ((bfd *, struct bfd_link_info *, bfd_boolean *pneeded));
+static bfd_boolean generic_link_check_archive_element
+ PARAMS ((bfd *, struct bfd_link_info *, bfd_boolean *pneeded,
+ bfd_boolean collect));
+static bfd_boolean generic_link_add_symbol_list
PARAMS ((bfd *, struct bfd_link_info *, bfd_size_type count, asymbol **,
- boolean collect));
-static bfd *hash_entry_bfd PARAMS ((struct bfd_link_hash_entry *));
+ bfd_boolean collect));
+static bfd *hash_entry_bfd
+ PARAMS ((struct bfd_link_hash_entry *));
static void set_symbol_from_hash
PARAMS ((asymbol *, struct bfd_link_hash_entry *));
-static boolean generic_add_output_symbol
+static bfd_boolean generic_add_output_symbol
PARAMS ((bfd *, size_t *psymalloc, asymbol *));
-static boolean default_data_link_order
+static bfd_boolean default_data_link_order
PARAMS ((bfd *, struct bfd_link_info *, asection *,
struct bfd_link_order *));
-static boolean default_indirect_link_order
+static bfd_boolean default_indirect_link_order
PARAMS ((bfd *, struct bfd_link_info *, asection *,
- struct bfd_link_order *, boolean));
+ struct bfd_link_order *, bfd_boolean));
/* The link hash table structure is defined in bfdlink.h. It provides
a base hash table which the backend specific hash tables are built
@@ -472,7 +474,7 @@ _bfd_link_hash_newfunc (entry, table, string)
/* Initialize a link hash table. The BFD argument is the one
responsible for creating this table. */
-boolean
+bfd_boolean
_bfd_link_hash_table_init (table, abfd, newfunc)
struct bfd_link_hash_table *table;
bfd *abfd;
@@ -488,7 +490,7 @@ _bfd_link_hash_table_init (table, abfd, newfunc)
return bfd_hash_table_init (&table->table, newfunc);
}
-/* Look up a symbol in a link hash table. If follow is true, we
+/* Look up a symbol in a link hash table. If follow is TRUE, we
follow bfd_link_hash_indirect and bfd_link_hash_warning links to
the real symbol. */
@@ -496,9 +498,9 @@ struct bfd_link_hash_entry *
bfd_link_hash_lookup (table, string, create, copy, follow)
struct bfd_link_hash_table *table;
const char *string;
- boolean create;
- boolean copy;
- boolean follow;
+ bfd_boolean create;
+ bfd_boolean copy;
+ bfd_boolean follow;
{
struct bfd_link_hash_entry *ret;
@@ -524,9 +526,9 @@ bfd_wrapped_link_hash_lookup (abfd, info, string, create, copy, follow)
bfd *abfd;
struct bfd_link_info *info;
const char *string;
- boolean create;
- boolean copy;
- boolean follow;
+ bfd_boolean create;
+ bfd_boolean copy;
+ bfd_boolean follow;
{
bfd_size_type amt;
@@ -541,7 +543,7 @@ bfd_wrapped_link_hash_lookup (abfd, info, string, create, copy, follow)
#undef WRAP
#define WRAP "__wrap_"
- if (bfd_hash_lookup (info->wrap_hash, l, false, false) != NULL)
+ if (bfd_hash_lookup (info->wrap_hash, l, FALSE, FALSE) != NULL)
{
char *n;
struct bfd_link_hash_entry *h;
@@ -559,7 +561,7 @@ bfd_wrapped_link_hash_lookup (abfd, info, string, create, copy, follow)
n[1] = '\0';
strcat (n, WRAP);
strcat (n, l);
- h = bfd_link_hash_lookup (info->hash, n, create, true, follow);
+ h = bfd_link_hash_lookup (info->hash, n, create, TRUE, follow);
free (n);
return h;
}
@@ -572,7 +574,7 @@ bfd_wrapped_link_hash_lookup (abfd, info, string, create, copy, follow)
if (*l == '_'
&& strncmp (l, REAL, sizeof REAL - 1) == 0
&& bfd_hash_lookup (info->wrap_hash, l + sizeof REAL - 1,
- false, false) != NULL)
+ FALSE, FALSE) != NULL)
{
char *n;
struct bfd_link_hash_entry *h;
@@ -590,7 +592,7 @@ bfd_wrapped_link_hash_lookup (abfd, info, string, create, copy, follow)
n[0] = bfd_get_symbol_leading_char (abfd);
n[1] = '\0';
strcat (n, l + sizeof REAL - 1);
- h = bfd_link_hash_lookup (info->hash, n, create, true, follow);
+ h = bfd_link_hash_lookup (info->hash, n, create, TRUE, follow);
free (n);
return h;
}
@@ -610,11 +612,11 @@ bfd_wrapped_link_hash_lookup (abfd, info, string, create, copy, follow)
void
bfd_link_hash_traverse (table, func, info)
struct bfd_link_hash_table *table;
- boolean (*func) PARAMS ((struct bfd_link_hash_entry *, PTR));
+ bfd_boolean (*func) PARAMS ((struct bfd_link_hash_entry *, PTR));
PTR info;
{
bfd_hash_traverse (&table->table,
- ((boolean (*) PARAMS ((struct bfd_hash_entry *, PTR)))
+ ((bfd_boolean (*) PARAMS ((struct bfd_hash_entry *, PTR)))
func),
info);
}
@@ -660,7 +662,7 @@ _bfd_generic_link_hash_newfunc (entry, table, string)
/* Set local fields. */
ret = (struct generic_link_hash_entry *) entry;
- ret->written = false;
+ ret->written = FALSE;
ret->sym = NULL;
}
@@ -706,7 +708,7 @@ _bfd_generic_link_hash_table_free (hash)
the hash table pointing to different instances of the symbol
structure. */
-static boolean
+static bfd_boolean
generic_link_read_symbols (abfd)
bfd *abfd;
{
@@ -717,30 +719,30 @@ generic_link_read_symbols (abfd)
symsize = bfd_get_symtab_upper_bound (abfd);
if (symsize < 0)
- return false;
+ return FALSE;
bfd_get_outsymbols (abfd) =
(asymbol **) bfd_alloc (abfd, (bfd_size_type) symsize);
if (bfd_get_outsymbols (abfd) == NULL && symsize != 0)
- return false;
+ return FALSE;
symcount = bfd_canonicalize_symtab (abfd, bfd_get_outsymbols (abfd));
if (symcount < 0)
- return false;
+ return FALSE;
bfd_get_symcount (abfd) = symcount;
}
- return true;
+ return TRUE;
}
/* Generic function to add symbols to from an object file to the
global hash table. This version does not automatically collect
constructors by name. */
-boolean
+bfd_boolean
_bfd_generic_link_add_symbols (abfd, info)
bfd *abfd;
struct bfd_link_info *info;
{
- return generic_link_add_symbols (abfd, info, false);
+ return generic_link_add_symbols (abfd, info, FALSE);
}
/* Generic function to add symbols from an object file to the global
@@ -750,12 +752,12 @@ _bfd_generic_link_add_symbols (abfd, info)
constructors and destructors; these are approximately those targets
for which gcc uses collect2 and do not support stabs. */
-boolean
+bfd_boolean
_bfd_generic_link_add_symbols_collect (abfd, info)
bfd *abfd;
struct bfd_link_info *info;
{
- return generic_link_add_symbols (abfd, info, true);
+ return generic_link_add_symbols (abfd, info, TRUE);
}
/* Indicate that we are only retrieving symbol values from this
@@ -773,13 +775,13 @@ _bfd_generic_link_just_syms (sec, info)
/* Add symbols from an object file to the global hash table. */
-static boolean
+static bfd_boolean
generic_link_add_symbols (abfd, info, collect)
bfd *abfd;
struct bfd_link_info *info;
- boolean collect;
+ bfd_boolean collect;
{
- boolean ret;
+ bfd_boolean ret;
switch (bfd_get_format (abfd))
{
@@ -795,7 +797,7 @@ generic_link_add_symbols (abfd, info, collect)
break;
default:
bfd_set_error (bfd_error_wrong_format);
- ret = false;
+ ret = FALSE;
}
return ret;
@@ -803,17 +805,17 @@ generic_link_add_symbols (abfd, info, collect)
/* Add symbols from an object file to the global hash table. */
-static boolean
+static bfd_boolean
generic_link_add_object_symbols (abfd, info, collect)
bfd *abfd;
struct bfd_link_info *info;
- boolean collect;
+ bfd_boolean collect;
{
bfd_size_type symcount;
struct symbol_cache_entry **outsyms;
if (! generic_link_read_symbols (abfd))
- return false;
+ return FALSE;
symcount = _bfd_generic_link_get_symcount (abfd);
outsyms = _bfd_generic_link_get_symbols (abfd);
return generic_link_add_symbol_list (abfd, info, symcount, outsyms, collect);
@@ -848,7 +850,7 @@ struct archive_hash_table
static struct bfd_hash_entry *archive_hash_newfunc
PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
-static boolean archive_hash_table_init
+static bfd_boolean archive_hash_table_init
PARAMS ((struct archive_hash_table *,
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
struct bfd_hash_table *,
@@ -887,7 +889,7 @@ archive_hash_newfunc (entry, table, string)
/* Initialize an archive hash table. */
-static boolean
+static bfd_boolean
archive_hash_table_init (table, newfunc)
struct archive_hash_table *table;
struct bfd_hash_entry *(*newfunc) PARAMS ((struct bfd_hash_entry *,
@@ -927,10 +929,10 @@ archive_hash_table_init (table, newfunc)
re-search the symbol table each time a new object file was added.
The CHECKFN argument is used to see if an object file should be
- included. CHECKFN should set *PNEEDED to true if the object file
+ included. CHECKFN should set *PNEEDED to TRUE if the object file
should be included, and must also call the bfd_link_info
add_archive_element callback function and handle adding the symbols
- to the global hash table. CHECKFN should only return false if some
+ to the global hash table. CHECKFN should only return FALSE if some
sort of error occurs.
For some formats, such as a.out, it is possible to look through an
@@ -944,12 +946,12 @@ archive_hash_table_init (table, newfunc)
may create new undefined symbols which cause a previously examined
object file to be included. */
-boolean
+bfd_boolean
_bfd_generic_link_add_archive_symbols (abfd, info, checkfn)
bfd *abfd;
struct bfd_link_info *info;
- boolean (*checkfn) PARAMS ((bfd *, struct bfd_link_info *,
- boolean *pneeded));
+ bfd_boolean (*checkfn)
+ PARAMS ((bfd *, struct bfd_link_info *, bfd_boolean *pneeded));
{
carsym *arsyms;
carsym *arsym_end;
@@ -963,9 +965,9 @@ _bfd_generic_link_add_archive_symbols (abfd, info, checkfn)
{
/* An empty archive is a special case. */
if (bfd_openr_next_archived_file (abfd, (bfd *) NULL) == NULL)
- return true;
+ return TRUE;
bfd_set_error (bfd_error_no_armap);
- return false;
+ return FALSE;
}
arsyms = bfd_ardata (abfd)->symdefs;
@@ -974,13 +976,13 @@ _bfd_generic_link_add_archive_symbols (abfd, info, checkfn)
/* In order to quickly determine whether an symbol is defined in
this archive, we build a hash table of the symbols. */
if (! archive_hash_table_init (&arsym_hash, archive_hash_newfunc))
- return false;
+ return FALSE;
for (arsym = arsyms, indx = 0; arsym < arsym_end; arsym++, indx++)
{
struct archive_hash_entry *arh;
struct archive_list *l, **pp;
- arh = archive_hash_lookup (&arsym_hash, arsym->name, true, false);
+ arh = archive_hash_lookup (&arsym_hash, arsym->name, TRUE, FALSE);
if (arh == (struct archive_hash_entry *) NULL)
goto error_return;
l = ((struct archive_list *)
@@ -1032,7 +1034,7 @@ _bfd_generic_link_add_archive_symbols (abfd, info, checkfn)
}
/* Look for this symbol in the archive symbol map. */
- arh = archive_hash_lookup (&arsym_hash, h->root.string, false, false);
+ arh = archive_hash_lookup (&arsym_hash, h->root.string, FALSE, FALSE);
if (arh == (struct archive_hash_entry *) NULL)
{
/* If we haven't found the exact symbol we're looking for,
@@ -1042,10 +1044,10 @@ _bfd_generic_link_add_archive_symbols (abfd, info, checkfn)
bfd_size_type amt = strlen (h->root.string) + 10;
char *buf = (char *) bfd_malloc (amt);
if (buf == NULL)
- return false;
+ return FALSE;
sprintf (buf, "__imp_%s", h->root.string);
- arh = archive_hash_lookup (&arsym_hash, buf, false, false);
+ arh = archive_hash_lookup (&arsym_hash, buf, FALSE, FALSE);
free(buf);
}
if (arh == (struct archive_hash_entry *) NULL)
@@ -1058,7 +1060,7 @@ _bfd_generic_link_add_archive_symbols (abfd, info, checkfn)
for (l = arh->defs; l != (struct archive_list *) NULL; l = l->next)
{
bfd *element;
- boolean needed;
+ bfd_boolean needed;
/* If the symbol has gotten defined along the way, quit. */
if (h->type != bfd_link_hash_undefined
@@ -1107,11 +1109,11 @@ _bfd_generic_link_add_archive_symbols (abfd, info, checkfn)
/* Save PASS in case we are called again. */
abfd->archive_pass = pass;
- return true;
+ return TRUE;
error_return:
archive_hash_table_free (&arsym_hash);
- return false;
+ return FALSE;
}
/* See if we should include an archive element. This version is used
@@ -1119,44 +1121,44 @@ _bfd_generic_link_add_archive_symbols (abfd, info, checkfn)
the symbol name, presumably because we have some other mechanism
for finding them. */
-static boolean
+static bfd_boolean
generic_link_check_archive_element_no_collect (abfd, info, pneeded)
bfd *abfd;
struct bfd_link_info *info;
- boolean *pneeded;
+ bfd_boolean *pneeded;
{
- return generic_link_check_archive_element (abfd, info, pneeded, false);
+ return generic_link_check_archive_element (abfd, info, pneeded, FALSE);
}
/* See if we should include an archive element. This version is used
when we want to automatically collect constructors based on the
symbol name, as collect2 does. */
-static boolean
+static bfd_boolean
generic_link_check_archive_element_collect (abfd, info, pneeded)
bfd *abfd;
struct bfd_link_info *info;
- boolean *pneeded;
+ bfd_boolean *pneeded;
{
- return generic_link_check_archive_element (abfd, info, pneeded, true);
+ return generic_link_check_archive_element (abfd, info, pneeded, TRUE);
}
/* See if we should include an archive element. Optionally collect
constructors. */
-static boolean
+static bfd_boolean
generic_link_check_archive_element (abfd, info, pneeded, collect)
bfd *abfd;
struct bfd_link_info *info;
- boolean *pneeded;
- boolean collect;
+ bfd_boolean *pneeded;
+ bfd_boolean collect;
{
asymbol **pp, **ppend;
- *pneeded = false;
+ *pneeded = FALSE;
if (! generic_link_read_symbols (abfd))
- return false;
+ return FALSE;
pp = _bfd_generic_link_get_symbols (abfd);
ppend = pp + _bfd_generic_link_get_symcount (abfd);
@@ -1177,8 +1179,8 @@ generic_link_check_archive_element (abfd, info, pneeded, collect)
symbol (type bfd_link_hash_undefweak) is not considered to be
a reference when pulling files out of an archive. See the
SVR4 ABI, p. 4-27. */
- h = bfd_link_hash_lookup (info->hash, bfd_asymbol_name (p), false,
- false, true);
+ h = bfd_link_hash_lookup (info->hash, bfd_asymbol_name (p), FALSE,
+ FALSE, TRUE);
if (h == (struct bfd_link_hash_entry *) NULL
|| (h->type != bfd_link_hash_undefined
&& h->type != bfd_link_hash_common))
@@ -1194,14 +1196,14 @@ generic_link_check_archive_element (abfd, info, pneeded, collect)
/* This object file defines this symbol, so pull it in. */
if (! (*info->callbacks->add_archive_element) (info, abfd,
bfd_asymbol_name (p)))
- return false;
+ return FALSE;
symcount = _bfd_generic_link_get_symcount (abfd);
symbols = _bfd_generic_link_get_symbols (abfd);
if (! generic_link_add_symbol_list (abfd, info, symcount,
symbols, collect))
- return false;
- *pneeded = true;
- return true;
+ return FALSE;
+ *pneeded = TRUE;
+ return TRUE;
}
/* P is a common symbol. */
@@ -1220,9 +1222,9 @@ generic_link_check_archive_element (abfd, info, pneeded, collect)
file. This is for the -u option in the linker. */
if (! (*info->callbacks->add_archive_element)
(info, abfd, bfd_asymbol_name (p)))
- return false;
- *pneeded = true;
- return true;
+ return FALSE;
+ *pneeded = TRUE;
+ return TRUE;
}
/* Turn the symbol into a common symbol but do not link in
@@ -1238,7 +1240,7 @@ generic_link_check_archive_element (abfd, info, pneeded, collect)
bfd_hash_allocate (&info->hash->table,
sizeof (struct bfd_link_hash_common_entry)));
if (h->u.c.p == NULL)
- return false;
+ return FALSE;
size = bfd_asymbol_value (p);
h->u.c.size = size;
@@ -1267,22 +1269,22 @@ generic_link_check_archive_element (abfd, info, pneeded, collect)
}
/* This archive element is not needed. */
- return true;
+ return TRUE;
}
/* Add the symbols from an object file to the global hash table. ABFD
is the object file. INFO is the linker information. SYMBOL_COUNT
is the number of symbols. SYMBOLS is the list of symbols. COLLECT
- is true if constructors should be automatically collected by name
+ is TRUE if constructors should be automatically collected by name
as is done by collect2. */
-static boolean
+static bfd_boolean
generic_link_add_symbol_list (abfd, info, symbol_count, symbols, collect)
bfd *abfd;
struct bfd_link_info *info;
bfd_size_type symbol_count;
asymbol **symbols;
- boolean collect;
+ bfd_boolean collect;
{
asymbol **pp, **ppend;
@@ -1331,8 +1333,8 @@ generic_link_add_symbol_list (abfd, info, symbol_count, symbols, collect)
bh = NULL;
if (! (_bfd_generic_link_add_one_symbol
(info, abfd, name, p->flags, bfd_get_section (p),
- p->value, string, false, collect, &bh)))
- return false;
+ p->value, string, FALSE, collect, &bh)))
+ return FALSE;
h = (struct generic_link_hash_entry *) bh;
/* If this is a constructor symbol, and the linker didn't do
@@ -1379,7 +1381,7 @@ generic_link_add_symbol_list (abfd, info, symbol_count, symbols, collect)
}
}
- return true;
+ return TRUE;
}
/* We use a state table to deal with adding symbols from an object
@@ -1506,15 +1508,15 @@ hash_entry_bfd (h)
STRING is used for either an indirect symbol, in which case it is
the name of the symbol to indirect to, or a warning symbol, in
which case it is the warning string.
- COPY is true if NAME or STRING must be copied into locally
+ COPY is TRUE if NAME or STRING must be copied into locally
allocated memory if they need to be saved.
- COLLECT is true if we should automatically collect gcc constructor
+ COLLECT is TRUE if we should automatically collect gcc constructor
or destructor names as collect2 does.
HASHP, if not NULL, is a place to store the created hash table
entry; if *HASHP is not NULL, the caller has already looked up
the hash table entry, and stored it in *HASHP. */
-boolean
+bfd_boolean
_bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
string, copy, collect, hashp)
struct bfd_link_info *info;
@@ -1524,13 +1526,13 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
asection *section;
bfd_vma value;
const char *string;
- boolean copy;
- boolean collect;
+ bfd_boolean copy;
+ bfd_boolean collect;
struct bfd_link_hash_entry **hashp;
{
enum link_row row;
struct bfd_link_hash_entry *h;
- boolean cycle;
+ bfd_boolean cycle;
if (bfd_is_ind_section (section)
|| (flags & BSF_INDIRECT) != 0)
@@ -1558,25 +1560,25 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
else
{
if (row == UNDEF_ROW || row == UNDEFW_ROW)
- h = bfd_wrapped_link_hash_lookup (abfd, info, name, true, copy, false);
+ h = bfd_wrapped_link_hash_lookup (abfd, info, name, TRUE, copy, FALSE);
else
- h = bfd_link_hash_lookup (info->hash, name, true, copy, false);
+ h = bfd_link_hash_lookup (info->hash, name, TRUE, copy, FALSE);
if (h == NULL)
{
if (hashp != NULL)
*hashp = NULL;
- return false;
+ return FALSE;
}
}
if (info->notice_all
|| (info->notice_hash != (struct bfd_hash_table *) NULL
- && (bfd_hash_lookup (info->notice_hash, name, false, false)
+ && (bfd_hash_lookup (info->notice_hash, name, FALSE, FALSE)
!= (struct bfd_hash_entry *) NULL)))
{
if (! (*info->callbacks->notice) (info, h->root.string, abfd, section,
value))
- return false;
+ return FALSE;
}
if (hashp != (struct bfd_link_hash_entry **) NULL)
@@ -1586,7 +1588,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
{
enum link_action action;
- cycle = false;
+ cycle = FALSE;
action = link_action[(int) row][(int) h->type];
switch (action)
{
@@ -1618,7 +1620,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
(info, h->root.string,
h->u.c.p->section->owner, bfd_link_hash_common, h->u.c.size,
abfd, bfd_link_hash_defined, (bfd_vma) 0)))
- return false;
+ return FALSE;
/* Fall through. */
case DEF:
case DEFW:
@@ -1678,7 +1680,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
if (! ((*info->callbacks->constructor)
(info, c == 'I',
h->root.string, abfd, section, value)))
- return false;
+ return FALSE;
}
}
}
@@ -1696,7 +1698,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
bfd_hash_allocate (&info->hash->table,
sizeof (struct bfd_link_hash_common_entry)));
if (h->u.c.p == NULL)
- return false;
+ return FALSE;
h->u.c.size = value;
@@ -1751,7 +1753,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
(info, h->root.string,
h->u.c.p->section->owner, bfd_link_hash_common, h->u.c.size,
abfd, bfd_link_hash_common, value)))
- return false;
+ return FALSE;
if (value > h->u.c.size)
{
unsigned int power;
@@ -1802,7 +1804,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
if (! ((*info->callbacks->multiple_common)
(info, h->root.string, obfd, h->type, (bfd_vma) 0,
abfd, bfd_link_hash_common, value)))
- return false;
+ return FALSE;
}
break;
@@ -1844,7 +1846,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
if (! ((*info->callbacks->multiple_definition)
(info, h->root.string, msec->owner, msec, mval,
abfd, section, value)))
- return false;
+ return FALSE;
}
break;
@@ -1855,7 +1857,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
(info, h->root.string,
h->u.c.p->section->owner, bfd_link_hash_common, h->u.c.size,
abfd, bfd_link_hash_indirect, (bfd_vma) 0)))
- return false;
+ return FALSE;
/* Fall through. */
case IND:
/* Create an indirect symbol. */
@@ -1864,10 +1866,10 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
/* STRING is the name of the symbol we want to indirect
to. */
- inh = bfd_wrapped_link_hash_lookup (abfd, info, string, true,
- copy, false);
+ inh = bfd_wrapped_link_hash_lookup (abfd, info, string, TRUE,
+ copy, FALSE);
if (inh == (struct bfd_link_hash_entry *) NULL)
- return false;
+ return FALSE;
if (inh->type == bfd_link_hash_indirect
&& inh->u.i.link == h)
{
@@ -1875,7 +1877,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
(_("%s: indirect symbol `%s' to `%s' is a loop"),
bfd_archive_filename (abfd), name, string);
bfd_set_error (bfd_error_invalid_operation);
- return false;
+ return FALSE;
}
if (inh->type == bfd_link_hash_new)
{
@@ -1890,7 +1892,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
if (h->type != bfd_link_hash_new)
{
row = UNDEF_ROW;
- cycle = true;
+ cycle = TRUE;
}
h->type = bfd_link_hash_indirect;
@@ -1902,7 +1904,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
/* Add an entry to a set. */
if (! (*info->callbacks->add_to_set) (info, h, BFD_RELOC_CTOR,
abfd, section, value))
- return false;
+ return FALSE;
break;
case WARNC:
@@ -1913,7 +1915,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
h->root.string, abfd,
(asection *) NULL,
(bfd_vma) 0))
- return false;
+ return FALSE;
/* Only issue a warning once. */
h->u.i.warning = NULL;
}
@@ -1921,7 +1923,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
case CYCLE:
/* Try again with the referenced symbol. */
h = h->u.i.link;
- cycle = true;
+ cycle = TRUE;
break;
case REFC:
@@ -1929,7 +1931,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
if (h->next == NULL && info->hash->undefs_tail != h)
h->next = h;
h = h->u.i.link;
- cycle = true;
+ cycle = TRUE;
break;
case WARN:
@@ -1937,7 +1939,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
if (! (*info->callbacks->warning) (info, string, h->root.string,
hash_entry_bfd (h),
(asection *) NULL, (bfd_vma) 0))
- return false;
+ return FALSE;
break;
case CWARN:
@@ -1952,7 +1954,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
hash_entry_bfd (h),
(asection *) NULL,
(bfd_vma) 0))
- return false;
+ return FALSE;
break;
}
/* Fall through. */
@@ -1967,7 +1969,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
((struct bfd_hash_entry *) NULL, &info->hash->table,
h->root.string)));
if (sub == NULL)
- return false;
+ return FALSE;
*sub = *h;
sub->type = bfd_link_hash_warning;
sub->u.i.link = h;
@@ -1980,7 +1982,7 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
w = bfd_hash_allocate (&info->hash->table, len);
if (w == NULL)
- return false;
+ return FALSE;
memcpy (w, string, len);
sub->u.i.warning = w;
}
@@ -1996,12 +1998,12 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
}
while (cycle);
- return true;
+ return TRUE;
}
/* Generic final link routine. */
-boolean
+bfd_boolean
_bfd_generic_final_link (abfd, info)
bfd *abfd;
struct bfd_link_info *info;
@@ -2020,12 +2022,12 @@ _bfd_generic_final_link (abfd, info)
for (o = abfd->sections; o != NULL; o = o->next)
for (p = o->link_order_head; p != NULL; p = p->next)
if (p->type == bfd_indirect_link_order)
- p->u.indirect.section->linker_mark = (unsigned int) true;
+ p->u.indirect.section->linker_mark = TRUE;
/* Build the output symbol table. */
for (sub = info->input_bfds; sub != (bfd *) NULL; sub = sub->link_next)
if (! _bfd_generic_link_output_symbols (abfd, sub, info, &outsymalloc))
- return false;
+ return FALSE;
/* Accumulate the global symbols. */
wginfo.info = info;
@@ -2039,7 +2041,7 @@ _bfd_generic_final_link (abfd, info)
shouldn't really need one, since we have SYMCOUNT, but some old
code still expects one. */
if (! generic_add_output_symbol (abfd, &outsymalloc, NULL))
- return false;
+ return FALSE;
if (info->relocateable)
{
@@ -2070,17 +2072,17 @@ _bfd_generic_final_link (abfd, info)
relsize = bfd_get_reloc_upper_bound (input_bfd,
input_section);
if (relsize < 0)
- return false;
+ return FALSE;
relocs = (arelent **) bfd_malloc ((bfd_size_type) relsize);
if (!relocs && relsize != 0)
- return false;
+ return FALSE;
symbols = _bfd_generic_link_get_symbols (input_bfd);
reloc_count = bfd_canonicalize_reloc (input_bfd,
input_section,
relocs,
symbols);
if (reloc_count < 0)
- return false;
+ return FALSE;
BFD_ASSERT ((unsigned long) reloc_count
== input_section->reloc_count);
o->reloc_count += reloc_count;
@@ -2095,7 +2097,7 @@ _bfd_generic_final_link (abfd, info)
amt *= sizeof (arelent *);
o->orelocation = (arelent **) bfd_alloc (abfd, amt);
if (!o->orelocation)
- return false;
+ return FALSE;
o->flags |= SEC_RELOC;
/* Reset the count so that it can be used as an index
when putting in the output relocs. */
@@ -2118,26 +2120,26 @@ _bfd_generic_final_link (abfd, info)
case bfd_section_reloc_link_order:
case bfd_symbol_reloc_link_order:
if (! _bfd_generic_reloc_link_order (abfd, info, o, p))
- return false;
+ return FALSE;
break;
case bfd_indirect_link_order:
- if (! default_indirect_link_order (abfd, info, o, p, true))
- return false;
+ if (! default_indirect_link_order (abfd, info, o, p, TRUE))
+ return FALSE;
break;
default:
if (! _bfd_default_link_order (abfd, info, o, p))
- return false;
+ return FALSE;
break;
}
}
}
- return true;
+ return TRUE;
}
/* Add an output symbol to the output BFD. */
-static boolean
+static bfd_boolean
generic_add_output_symbol (output_bfd, psymalloc, sym)
bfd *output_bfd;
size_t *psymalloc;
@@ -2156,7 +2158,7 @@ generic_add_output_symbol (output_bfd, psymalloc, sym)
amt *= sizeof (asymbol *);
newsyms = (asymbol **) bfd_realloc (bfd_get_outsymbols (output_bfd), amt);
if (newsyms == (asymbol **) NULL)
- return false;
+ return FALSE;
bfd_get_outsymbols (output_bfd) = newsyms;
}
@@ -2164,12 +2166,12 @@ generic_add_output_symbol (output_bfd, psymalloc, sym)
if (sym != NULL)
++ bfd_get_symcount (output_bfd);
- return true;
+ return TRUE;
}
/* Handle the symbols for an input BFD. */
-boolean
+bfd_boolean
_bfd_generic_link_output_symbols (output_bfd, input_bfd, info, psymalloc)
bfd *output_bfd;
bfd *input_bfd;
@@ -2180,7 +2182,7 @@ _bfd_generic_link_output_symbols (output_bfd, input_bfd, info, psymalloc)
asymbol **sym_end;
if (! generic_link_read_symbols (input_bfd))
- return false;
+ return FALSE;
/* Create a filename symbol if we are supposed to. */
if (info->create_object_symbols_section != (asection *) NULL)
@@ -2197,7 +2199,7 @@ _bfd_generic_link_output_symbols (output_bfd, input_bfd, info, psymalloc)
newsym = bfd_make_empty_symbol (input_bfd);
if (!newsym)
- return false;
+ return FALSE;
newsym->name = input_bfd->filename;
newsym->value = 0;
newsym->flags = BSF_LOCAL | BSF_FILE;
@@ -2205,7 +2207,7 @@ _bfd_generic_link_output_symbols (output_bfd, input_bfd, info, psymalloc)
if (! generic_add_output_symbol (output_bfd, psymalloc,
newsym))
- return false;
+ return FALSE;
break;
}
@@ -2220,7 +2222,7 @@ _bfd_generic_link_output_symbols (output_bfd, input_bfd, info, psymalloc)
{
asymbol *sym;
struct generic_link_hash_entry *h;
- boolean output;
+ bfd_boolean output;
h = (struct generic_link_hash_entry *) NULL;
sym = *sym_ptr;
@@ -2251,11 +2253,11 @@ _bfd_generic_link_output_symbols (output_bfd, input_bfd, info, psymalloc)
h = ((struct generic_link_hash_entry *)
bfd_wrapped_link_hash_lookup (output_bfd, info,
bfd_asymbol_name (sym),
- false, false, true));
+ FALSE, FALSE, TRUE));
else
h = _bfd_generic_link_hash_lookup (_bfd_generic_hash_table (info),
bfd_asymbol_name (sym),
- false, false, true);
+ FALSE, FALSE, TRUE);
if (h != (struct generic_link_hash_entry *) NULL)
{
@@ -2319,9 +2321,9 @@ _bfd_generic_link_output_symbols (output_bfd, input_bfd, info, psymalloc)
if (info->strip == strip_all
|| (info->strip == strip_some
&& (bfd_hash_lookup (info->keep_hash, bfd_asymbol_name (sym),
- false, false)
+ FALSE, FALSE)
== (struct bfd_hash_entry *) NULL)))
- output = false;
+ output = FALSE;
else if ((sym->flags & (BSF_GLOBAL | BSF_WEAK)) != 0)
{
/* If this symbol is marked as occurring now, rather
@@ -2330,48 +2332,48 @@ _bfd_generic_link_output_symbols (output_bfd, input_bfd, info, psymalloc)
better way. */
if (bfd_asymbol_bfd (sym) == input_bfd
&& (sym->flags & BSF_NOT_AT_END) != 0)
- output = true;
+ output = TRUE;
else
- output = false;
+ output = FALSE;
}
else if (bfd_is_ind_section (sym->section))
- output = false;
+ output = FALSE;
else if ((sym->flags & BSF_DEBUGGING) != 0)
{
if (info->strip == strip_none)
- output = true;
+ output = TRUE;
else
- output = false;
+ output = FALSE;
}
else if (bfd_is_und_section (sym->section)
|| bfd_is_com_section (sym->section))
- output = false;
+ output = FALSE;
else if ((sym->flags & BSF_LOCAL) != 0)
{
if ((sym->flags & BSF_WARNING) != 0)
- output = false;
+ output = FALSE;
else
{
switch (info->discard)
{
default:
case discard_all:
- output = false;
+ output = FALSE;
break;
case discard_sec_merge:
- output = true;
+ output = TRUE;
if (info->relocateable
|| ! (sym->section->flags & SEC_MERGE))
break;
/* FALLTHROUGH */
case discard_l:
if (bfd_is_local_label (input_bfd, sym))
- output = false;
+ output = FALSE;
else
- output = true;
+ output = TRUE;
break;
case discard_none:
- output = true;
+ output = TRUE;
break;
}
}
@@ -2379,9 +2381,9 @@ _bfd_generic_link_output_symbols (output_bfd, input_bfd, info, psymalloc)
else if ((sym->flags & BSF_CONSTRUCTOR))
{
if (info->strip != strip_all)
- output = true;
+ output = TRUE;
else
- output = false;
+ output = FALSE;
}
else
abort ();
@@ -2393,18 +2395,18 @@ _bfd_generic_link_output_symbols (output_bfd, input_bfd, info, psymalloc)
field set. */
if ((sym->section->flags & SEC_HAS_CONTENTS) != 0
&& ! sym->section->linker_mark)
- output = false;
+ output = FALSE;
if (output)
{
if (! generic_add_output_symbol (output_bfd, psymalloc, sym))
- return false;
+ return FALSE;
if (h != (struct generic_link_hash_entry *) NULL)
- h->written = true;
+ h->written = TRUE;
}
}
- return true;
+ return TRUE;
}
/* Set the section and value of a generic BFD symbol based on a linker
@@ -2473,7 +2475,7 @@ set_symbol_from_hash (sym, h)
/* Write out a global symbol, if it hasn't already been written out.
This is called for each symbol in the hash table. */
-boolean
+bfd_boolean
_bfd_generic_link_write_global_symbol (h, data)
struct generic_link_hash_entry *h;
PTR data;
@@ -2486,15 +2488,15 @@ _bfd_generic_link_write_global_symbol (h, data)
h = (struct generic_link_hash_entry *) h->root.u.i.link;
if (h->written)
- return true;
+ return TRUE;
- h->written = true;
+ h->written = TRUE;
if (wginfo->info->strip == strip_all
|| (wginfo->info->strip == strip_some
&& bfd_hash_lookup (wginfo->info->keep_hash, h->root.root.string,
- false, false) == NULL))
- return true;
+ FALSE, FALSE) == NULL))
+ return TRUE;
if (h->sym != (asymbol *) NULL)
sym = h->sym;
@@ -2502,7 +2504,7 @@ _bfd_generic_link_write_global_symbol (h, data)
{
sym = bfd_make_empty_symbol (wginfo->output_bfd);
if (!sym)
- return false;
+ return FALSE;
sym->name = h->root.root.string;
sym->flags = 0;
}
@@ -2518,12 +2520,12 @@ _bfd_generic_link_write_global_symbol (h, data)
abort ();
}
- return true;
+ return TRUE;
}
/* Create a relocation. */
-boolean
+bfd_boolean
_bfd_generic_reloc_link_order (abfd, info, sec, link_order)
bfd *abfd;
struct bfd_link_info *info;
@@ -2539,14 +2541,14 @@ _bfd_generic_reloc_link_order (abfd, info, sec, link_order)
r = (arelent *) bfd_alloc (abfd, (bfd_size_type) sizeof (arelent));
if (r == (arelent *) NULL)
- return false;
+ return FALSE;
r->address = link_order->offset;
r->howto = bfd_reloc_type_lookup (abfd, link_order->u.reloc.p->reloc);
if (r->howto == 0)
{
bfd_set_error (bfd_error_bad_value);
- return false;
+ return FALSE;
}
/* Get the symbol to use for the relocation. */
@@ -2559,16 +2561,16 @@ _bfd_generic_reloc_link_order (abfd, info, sec, link_order)
h = ((struct generic_link_hash_entry *)
bfd_wrapped_link_hash_lookup (abfd, info,
link_order->u.reloc.p->u.name,
- false, false, true));
+ FALSE, FALSE, TRUE));
if (h == (struct generic_link_hash_entry *) NULL
|| ! h->written)
{
if (! ((*info->callbacks->unattached_reloc)
(info, link_order->u.reloc.p->u.name,
(bfd *) NULL, (asection *) NULL, (bfd_vma) 0)))
- return false;
+ return FALSE;
bfd_set_error (bfd_error_bad_value);
- return false;
+ return FALSE;
}
r->sym_ptr_ptr = &h->sym;
}
@@ -2582,13 +2584,13 @@ _bfd_generic_reloc_link_order (abfd, info, sec, link_order)
bfd_size_type size;
bfd_reloc_status_type rstat;
bfd_byte *buf;
- boolean ok;
+ bfd_boolean ok;
file_ptr loc;
size = bfd_get_reloc_size (r->howto);
buf = (bfd_byte *) bfd_zmalloc (size);
if (buf == (bfd_byte *) NULL)
- return false;
+ return FALSE;
rstat = _bfd_relocate_contents (r->howto, abfd,
(bfd_vma) link_order->u.reloc.p->addend,
buf);
@@ -2609,7 +2611,7 @@ _bfd_generic_reloc_link_order (abfd, info, sec, link_order)
(bfd *) NULL, (asection *) NULL, (bfd_vma) 0)))
{
free (buf);
- return false;
+ return FALSE;
}
break;
}
@@ -2618,7 +2620,7 @@ _bfd_generic_reloc_link_order (abfd, info, sec, link_order)
(bfd_size_type) size);
free (buf);
if (! ok)
- return false;
+ return FALSE;
r->addend = 0;
}
@@ -2626,7 +2628,7 @@ _bfd_generic_reloc_link_order (abfd, info, sec, link_order)
sec->orelocation[sec->reloc_count] = r;
++sec->reloc_count;
- return true;
+ return TRUE;
}
/* Allocate a new link_order for a section. */
@@ -2658,7 +2660,7 @@ bfd_new_link_order (abfd, section)
the reloc_link_order types here, since they depend upon the details
of how the particular backends generates relocs. */
-boolean
+bfd_boolean
_bfd_default_link_order (abfd, info, sec, link_order)
bfd *abfd;
struct bfd_link_info *info;
@@ -2674,7 +2676,7 @@ _bfd_default_link_order (abfd, info, sec, link_order)
abort ();
case bfd_indirect_link_order:
return default_indirect_link_order (abfd, info, sec, link_order,
- false);
+ FALSE);
case bfd_data_link_order:
return default_data_link_order (abfd, info, sec, link_order);
}
@@ -2682,7 +2684,7 @@ _bfd_default_link_order (abfd, info, sec, link_order)
/* Default routine to handle a bfd_data_link_order. */
-static boolean
+static bfd_boolean
default_data_link_order (abfd, info, sec, link_order)
bfd *abfd;
struct bfd_link_info *info ATTRIBUTE_UNUSED;
@@ -2693,13 +2695,13 @@ default_data_link_order (abfd, info, sec, link_order)
size_t fill_size;
bfd_byte *fill;
file_ptr loc;
- boolean result;
+ bfd_boolean result;
BFD_ASSERT ((sec->flags & SEC_HAS_CONTENTS) != 0);
size = link_order->size;
if (size == 0)
- return true;
+ return TRUE;
fill = link_order->u.data.contents;
fill_size = link_order->u.data.size;
@@ -2708,7 +2710,7 @@ default_data_link_order (abfd, info, sec, link_order)
bfd_byte *p;
fill = (bfd_byte *) bfd_malloc (size);
if (fill == NULL)
- return false;
+ return FALSE;
p = fill;
if (fill_size == 1)
memset (p, (int) link_order->u.data.contents[0], (size_t) size);
@@ -2737,14 +2739,14 @@ default_data_link_order (abfd, info, sec, link_order)
/* Default routine to handle a bfd_indirect_link_order. */
-static boolean
+static bfd_boolean
default_indirect_link_order (output_bfd, info, output_section, link_order,
generic_linker)
bfd *output_bfd;
struct bfd_link_info *info;
asection *output_section;
struct bfd_link_order *link_order;
- boolean generic_linker;
+ bfd_boolean generic_linker;
{
asection *input_section;
bfd *input_bfd;
@@ -2756,7 +2758,7 @@ default_indirect_link_order (output_bfd, info, output_section, link_order,
BFD_ASSERT ((output_section->flags & SEC_HAS_CONTENTS) != 0);
if (link_order->size == 0)
- return true;
+ return TRUE;
input_section = link_order->u.indirect.section;
input_bfd = input_section->owner;
@@ -2778,7 +2780,7 @@ default_indirect_link_order (output_bfd, info, output_section, link_order,
(_("Attempt to do relocateable link with %s input and %s output"),
bfd_get_target (input_bfd), bfd_get_target (output_bfd));
bfd_set_error (bfd_error_wrong_format);
- return false;
+ return FALSE;
}
if (! generic_linker)
@@ -2791,7 +2793,7 @@ default_indirect_link_order (output_bfd, info, output_section, link_order,
a specific linker, presumably because we are linking
different types of object files together. */
if (! generic_link_read_symbols (input_bfd))
- return false;
+ return FALSE;
/* Since we have been called by a specific linker, rather than
the generic linker, the values of the symbols will not be
@@ -2823,11 +2825,11 @@ default_indirect_link_order (output_bfd, info, output_section, link_order,
else if (bfd_is_und_section (bfd_get_section (sym)))
h = bfd_wrapped_link_hash_lookup (output_bfd, info,
bfd_asymbol_name (sym),
- false, false, true);
+ FALSE, FALSE, TRUE);
else
h = bfd_link_hash_lookup (info->hash,
bfd_asymbol_name (sym),
- false, false, true);
+ FALSE, FALSE, TRUE);
if (h != NULL)
set_symbol_from_hash (sym, h);
}
@@ -2853,12 +2855,12 @@ default_indirect_link_order (output_bfd, info, output_section, link_order,
if (contents != NULL)
free (contents);
- return true;
+ return TRUE;
error_return:
if (contents != NULL)
free (contents);
- return false;
+ return FALSE;
}
/* A little routine to count the number of relocs in a link_order
@@ -2887,7 +2889,7 @@ FUNCTION
bfd_link_split_section
SYNOPSIS
- boolean bfd_link_split_section(bfd *abfd, asection *sec);
+ bfd_boolean bfd_link_split_section(bfd *abfd, asection *sec);
DESCRIPTION
Return nonzero if @var{sec} should be split during a
@@ -2899,10 +2901,10 @@ DESCRIPTION
*/
-boolean
+bfd_boolean
_bfd_generic_link_split_section (abfd, sec)
bfd *abfd ATTRIBUTE_UNUSED;
asection *sec ATTRIBUTE_UNUSED;
{
- return false;
+ return FALSE;
}