Line 8598... |
Line 8598... |
}
|
}
|
|
|
return TRUE;
|
return TRUE;
|
}
|
}
|
|
|
/* Called by bfd_link_hash_traverse to fill the symbol table.
|
/* Called by bfd_hash_traverse to fill the symbol table.
|
Return FALSE in case of failure. */
|
Return FALSE in case of failure. */
|
|
|
static bfd_boolean
|
static bfd_boolean
|
alpha_vms_link_output_symbol (struct bfd_link_hash_entry *hc, void *infov)
|
alpha_vms_link_output_symbol (struct bfd_hash_entry *bh, void *infov)
|
{
|
{
|
|
struct bfd_link_hash_entry *hc = (struct bfd_link_hash_entry *) bh;
|
struct bfd_link_info *info = (struct bfd_link_info *)infov;
|
struct bfd_link_info *info = (struct bfd_link_info *)infov;
|
struct alpha_vms_link_hash_entry *h = (struct alpha_vms_link_hash_entry *)hc;
|
struct alpha_vms_link_hash_entry *h;
|
struct vms_symbol_entry *sym;
|
struct vms_symbol_entry *sym;
|
|
|
|
if (hc->type == bfd_link_hash_warning)
|
|
{
|
|
hc = hc->u.i.link;
|
|
if (hc->type == bfd_link_hash_new)
|
|
return TRUE;
|
|
}
|
|
h = (struct alpha_vms_link_hash_entry *) hc;
|
|
|
switch (h->root.type)
|
switch (h->root.type)
|
{
|
{
|
case bfd_link_hash_undefined:
|
case bfd_link_hash_undefined:
|
return TRUE;
|
return TRUE;
|
case bfd_link_hash_new:
|
case bfd_link_hash_new:
|
|
case bfd_link_hash_warning:
|
abort ();
|
abort ();
|
case bfd_link_hash_undefweak:
|
case bfd_link_hash_undefweak:
|
return TRUE;
|
return TRUE;
|
case bfd_link_hash_defined:
|
case bfd_link_hash_defined:
|
case bfd_link_hash_defweak:
|
case bfd_link_hash_defweak:
|
Line 8632... |
Line 8642... |
}
|
}
|
break;
|
break;
|
case bfd_link_hash_common:
|
case bfd_link_hash_common:
|
break;
|
break;
|
case bfd_link_hash_indirect:
|
case bfd_link_hash_indirect:
|
case bfd_link_hash_warning:
|
|
return TRUE;
|
return TRUE;
|
}
|
}
|
|
|
/* Do not write not kept symbols. */
|
/* Do not write not kept symbols. */
|
if (info->strip == strip_some
|
if (info->strip == strip_some
|
Line 8738... |
Line 8747... |
#endif
|
#endif
|
|
|
/* Generate the symbol table. */
|
/* Generate the symbol table. */
|
BFD_ASSERT (PRIV (syms) == NULL);
|
BFD_ASSERT (PRIV (syms) == NULL);
|
if (info->strip != strip_all)
|
if (info->strip != strip_all)
|
bfd_link_hash_traverse (info->hash, alpha_vms_link_output_symbol, info);
|
bfd_hash_traverse (&info->hash->table, alpha_vms_link_output_symbol, info);
|
|
|
/* Find the entry point. */
|
/* Find the entry point. */
|
if (bfd_get_start_address (abfd) == 0)
|
if (bfd_get_start_address (abfd) == 0)
|
{
|
{
|
bfd *startbfd = NULL;
|
bfd *startbfd = NULL;
|
Line 9360... |
Line 9369... |
| SEC_READONLY | SEC_CODE | SEC_DATA
|
| SEC_READONLY | SEC_CODE | SEC_DATA
|
| SEC_HAS_CONTENTS | SEC_IN_MEMORY), /* Sect flags. */
|
| SEC_HAS_CONTENTS | SEC_IN_MEMORY), /* Sect flags. */
|
0, /* symbol_leading_char. */
|
0, /* symbol_leading_char. */
|
' ', /* ar_pad_char. */
|
' ', /* ar_pad_char. */
|
15, /* ar_max_namelen. */
|
15, /* ar_max_namelen. */
|
|
0, /* match priority. */
|
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
|
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
|
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
|
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
|
bfd_getl16, bfd_getl_signed_16, bfd_putl16,
|
bfd_getl16, bfd_getl_signed_16, bfd_putl16,
|
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
|
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
|
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
|
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
|