mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
BFD/XCOFF: Fix storage class setting for weak defined symbols
Fix an issue with commit 8602d4fea6
("Add AIX weak support"),
<https://sourceware.org/ml/binutils/2009-03/msg00189.html>, and use the
correct condition to set the storage class for weak defined symbols.
The context here is as follows:
else if ((h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
&& h->smclas == XMC_XO)
{
BFD_ASSERT (bfd_is_abs_section (h->root.u.def.section));
isym.n_value = h->root.u.def.value;
isym.n_scnum = N_UNDEF;
if (h->root.type == bfd_link_hash_undefweak
&& C_WEAKEXT == C_AIX_WEAKEXT)
isym.n_sclass = C_WEAKEXT;
else
isym.n_sclass = C_EXT;
aux.x_csect.x_smtyp = XTY_ER;
}
so clearly the inner condition can never be true. Correct the condition
then to check for the `bfd_link_hash_defweak' symbol type instead here,
and in a similar place a little further down in the same function.
bfd/
* xcofflink.c (xcoff_write_global_symbol): Fix symbol type
checks for defined weak symbols.
This commit is contained in:
parent
972450a72c
commit
d3554ec1ed
@ -1,3 +1,8 @@
|
||||
2018-07-18 Maciej W. Rozycki <macro@mips.com>
|
||||
|
||||
* xcofflink.c (xcoff_write_global_symbol): Fix symbol type
|
||||
checks for defined weak symbols.
|
||||
|
||||
2018-07-17 Maciej W. Rozycki <macro@mips.com>
|
||||
|
||||
* elf32-nds32.c (nds32_elf_relax_loadstore): Use
|
||||
|
@ -5589,7 +5589,7 @@ xcoff_write_global_symbol (struct bfd_hash_entry *bh, void * inf)
|
||||
BFD_ASSERT (bfd_is_abs_symbol (&h->root));
|
||||
isym.n_value = h->root.u.def.value;
|
||||
isym.n_scnum = N_UNDEF;
|
||||
if (h->root.type == bfd_link_hash_undefweak
|
||||
if (h->root.type == bfd_link_hash_defweak
|
||||
&& C_WEAKEXT == C_AIX_WEAKEXT)
|
||||
isym.n_sclass = C_WEAKEXT;
|
||||
else
|
||||
@ -5655,7 +5655,7 @@ xcoff_write_global_symbol (struct bfd_hash_entry *bh, void * inf)
|
||||
/* We just output an SD symbol. Now output an LD symbol. */
|
||||
h->indx += 2;
|
||||
|
||||
if (h->root.type == bfd_link_hash_undefweak
|
||||
if (h->root.type == bfd_link_hash_defweak
|
||||
&& C_WEAKEXT == C_AIX_WEAKEXT)
|
||||
isym.n_sclass = C_WEAKEXT;
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user