Line 1... |
Line 1... |
/* BFD semi-generic back-end for a.out binaries.
|
/* BFD semi-generic back-end for a.out binaries.
|
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
Written by Cygnus Support.
|
Written by Cygnus Support.
|
|
|
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
|
|
Line 3549... |
Line 3549... |
|
|
/* Write out a symbol that was not associated with an a.out input
|
/* Write out a symbol that was not associated with an a.out input
|
object. */
|
object. */
|
|
|
static bfd_boolean
|
static bfd_boolean
|
aout_link_write_other_symbol (struct aout_link_hash_entry *h, void * data)
|
aout_link_write_other_symbol (struct bfd_hash_entry *bh, void *data)
|
{
|
{
|
|
struct aout_link_hash_entry *h = (struct aout_link_hash_entry *) bh;
|
struct aout_final_link_info *finfo = (struct aout_final_link_info *) data;
|
struct aout_final_link_info *finfo = (struct aout_final_link_info *) data;
|
bfd *output_bfd;
|
bfd *output_bfd;
|
int type;
|
int type;
|
bfd_vma val;
|
bfd_vma val;
|
struct external_nlist outsym;
|
struct external_nlist outsym;
|
Line 3717... |
Line 3718... |
can't. Note that we lose the other and desc information
|
can't. Note that we lose the other and desc information
|
here. I don't think that will ever matter for a global
|
here. I don't think that will ever matter for a global
|
symbol. */
|
symbol. */
|
h->indx = -2;
|
h->indx = -2;
|
h->written = FALSE;
|
h->written = FALSE;
|
if (! aout_link_write_other_symbol (h, (void *) finfo))
|
if (!aout_link_write_other_symbol (&h->root.root, finfo))
|
return FALSE;
|
return FALSE;
|
r_index = h->indx;
|
r_index = h->indx;
|
}
|
}
|
else
|
else
|
{
|
{
|
Line 4075... |
Line 4076... |
global symbol. */
|
global symbol. */
|
if (h->indx < 0)
|
if (h->indx < 0)
|
{
|
{
|
h->indx = -2;
|
h->indx = -2;
|
h->written = FALSE;
|
h->written = FALSE;
|
if (! aout_link_write_other_symbol (h,
|
if (!aout_link_write_other_symbol (&h->root.root,
|
(void *) finfo))
|
finfo))
|
return FALSE;
|
return FALSE;
|
}
|
}
|
r_index = h->indx;
|
r_index = h->indx;
|
}
|
}
|
else
|
else
|
Line 4417... |
Line 4418... |
global symbol. */
|
global symbol. */
|
if (h->indx < 0)
|
if (h->indx < 0)
|
{
|
{
|
h->indx = -2;
|
h->indx = -2;
|
h->written = FALSE;
|
h->written = FALSE;
|
if (! aout_link_write_other_symbol (h,
|
if (!aout_link_write_other_symbol (&h->root.root,
|
(void *) finfo))
|
finfo))
|
return FALSE;
|
return FALSE;
|
}
|
}
|
r_index = h->indx;
|
r_index = h->indx;
|
}
|
}
|
else
|
else
|
Line 5466... |
Line 5467... |
struct aout_link_hash_entry *h;
|
struct aout_link_hash_entry *h;
|
|
|
h = aout_link_hash_lookup (aout_hash_table (info), "__DYNAMIC",
|
h = aout_link_hash_lookup (aout_hash_table (info), "__DYNAMIC",
|
FALSE, FALSE, FALSE);
|
FALSE, FALSE, FALSE);
|
if (h != NULL)
|
if (h != NULL)
|
aout_link_write_other_symbol (h, &aout_info);
|
aout_link_write_other_symbol (&h->root.root, &aout_info);
|
}
|
}
|
|
|
/* The most time efficient way to do the link would be to read all
|
/* The most time efficient way to do the link would be to read all
|
the input object files into memory and then sort out the
|
the input object files into memory and then sort out the
|
information into the output file. Unfortunately, that will
|
information into the output file. Unfortunately, that will
|
Line 5540... |
Line 5541... |
}
|
}
|
}
|
}
|
}
|
}
|
|
|
/* Write out any symbols that we have not already written out. */
|
/* Write out any symbols that we have not already written out. */
|
aout_link_hash_traverse (aout_hash_table (info),
|
bfd_hash_traverse (&info->hash->table,
|
aout_link_write_other_symbol,
|
aout_link_write_other_symbol,
|
(void *) &aout_info);
|
&aout_info);
|
|
|
/* Now handle any relocs we were asked to create by the linker.
|
/* Now handle any relocs we were asked to create by the linker.
|
These did not come from any input file. We must do these after
|
These did not come from any input file. We must do these after
|
we have written out all the symbols, so that we know the symbol
|
we have written out all the symbols, so that we know the symbol
|
indices to use. */
|
indices to use. */
|