Line 1... |
Line 1... |
/* Generic ECOFF (Extended-COFF) routines.
|
/* Generic ECOFF (Extended-COFF) routines.
|
Copyright 1990, 1991, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
|
Copyright 1990, 1991, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
|
2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
Original version by Per Bothner.
|
Original version by Per Bothner.
|
Full support added by Ian Lance Taylor, ian@cygnus.com.
|
Full support added by Ian Lance Taylor, ian@cygnus.com.
|
|
|
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
Line 3229... |
Line 3229... |
|
|
#define ecoff_link_hash_lookup(table, string, create, copy, follow) \
|
#define ecoff_link_hash_lookup(table, string, create, copy, follow) \
|
((struct ecoff_link_hash_entry *) \
|
((struct ecoff_link_hash_entry *) \
|
bfd_link_hash_lookup (&(table)->root, (string), (create), (copy), (follow)))
|
bfd_link_hash_lookup (&(table)->root, (string), (create), (copy), (follow)))
|
|
|
/* Traverse an ECOFF link hash table. */
|
|
|
|
#define ecoff_link_hash_traverse(table, func, info) \
|
|
(bfd_link_hash_traverse \
|
|
(&(table)->root, \
|
|
(bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func), \
|
|
(info)))
|
|
|
|
/* Get the ECOFF link hash table from the info structure. This is
|
/* Get the ECOFF link hash table from the info structure. This is
|
just a cast. */
|
just a cast. */
|
|
|
#define ecoff_hash_table(p) ((struct ecoff_link_hash_table *) ((p)->hash))
|
#define ecoff_hash_table(p) ((struct ecoff_link_hash_table *) ((p)->hash))
|
|
|
Line 4257... |
Line 4249... |
|
|
/* Put out information for an external symbol. These come only from
|
/* Put out information for an external symbol. These come only from
|
the hash table. */
|
the hash table. */
|
|
|
static bfd_boolean
|
static bfd_boolean
|
ecoff_link_write_external (struct ecoff_link_hash_entry *h, void * data)
|
ecoff_link_write_external (struct bfd_hash_entry *bh, void * data)
|
{
|
{
|
|
struct ecoff_link_hash_entry *h = (struct ecoff_link_hash_entry *) bh;
|
struct extsym_info *einfo = (struct extsym_info *) data;
|
struct extsym_info *einfo = (struct extsym_info *) data;
|
bfd *output_bfd = einfo->abfd;
|
bfd *output_bfd = einfo->abfd;
|
bfd_boolean strip;
|
bfd_boolean strip;
|
|
|
if (h->root.type == bfd_link_hash_warning)
|
if (h->root.type == bfd_link_hash_warning)
|
Line 4489... |
Line 4482... |
}
|
}
|
|
|
/* Write out the external symbols. */
|
/* Write out the external symbols. */
|
einfo.abfd = abfd;
|
einfo.abfd = abfd;
|
einfo.info = info;
|
einfo.info = info;
|
ecoff_link_hash_traverse (ecoff_hash_table (info),
|
bfd_hash_traverse (&info->hash->table, ecoff_link_write_external, &einfo);
|
ecoff_link_write_external,
|
|
(void *) &einfo);
|
|
|
|
if (info->relocatable)
|
if (info->relocatable)
|
{
|
{
|
/* We need to make a pass over the link_orders to count up the
|
/* We need to make a pass over the link_orders to count up the
|
number of relocations we will need to output, so that we know
|
number of relocations we will need to output, so that we know
|