oops - omitted fom previous delta

This commit is contained in:
Nick Clifton 2004-11-08 08:51:47 +00:00
parent 977cdf5aa7
commit 0c429e0711
1 changed files with 21 additions and 13 deletions

View File

@ -1976,7 +1976,8 @@ _bfd_coff_link_input_bfd (struct coff_final_link_info *finfo, bfd *input_bfd)
auxp->x_file.x_n.x_offset = STRING_SIZE_SIZE + indx;
}
}
else if (isymp->n_sclass != C_STAT || isymp->n_type != T_NULL)
else if ((isymp->n_sclass != C_STAT || isymp->n_type != T_NULL)
&& isymp->n_sclass != C_NT_WEAK)
{
unsigned long indx;
@ -2935,25 +2936,32 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd,
if (h->class == C_NT_WEAK && h->numaux == 1)
{
/* See _Microsoft Portable Executable and Common Object
* File Format Specification_, section 5.5.3.
* Note that weak symbols without aux records are a GNU
* extension.
* FIXME: All weak externals are treated as having
* characteristics IMAGE_WEAK_EXTERN_SEARCH_LIBRARY (2).
* There are no known uses of the other two types of
* weak externals.
*/
File Format Specification_, section 5.5.3.
Note that weak symbols without aux records are a GNU
extension.
FIXME: All weak externals are treated as having
characteristics IMAGE_WEAK_EXTERN_SEARCH_LIBRARY (2).
There are no known uses of the other two types of
weak externals. */
asection *sec;
struct coff_link_hash_entry *h2 =
input_bfd->tdata.coff_obj_data->sym_hashes[
h->aux->x_sym.x_tagndx.l];
sec = h2->root.u.def.section;
val = h2->root.u.def.value + sec->output_section->vma
+ sec->output_offset;
if (!h2 || h2->root.type == bfd_link_hash_undefined)
{
sec = bfd_abs_section_ptr;
val = 0;
}
else
{
sec = h2->root.u.def.section;
val = h2->root.u.def.value
+ sec->output_section->vma + sec->output_offset;
}
}
else
/* This is a GNU extension. */
/* This is a GNU extension. */
val = 0;
}