Treat GNU weak symbols as external.

This commit is contained in:
Nick Clifton 2000-06-25 16:39:45 +00:00
parent 307ff1df12
commit 05c58a7cfb
2 changed files with 26 additions and 1 deletions

View file

@ -1,3 +1,9 @@
2000-06-25 Mark Elbrecht <snowball3@bigfoot.com>
* rdcoff (parse_coff_symbol): Treat GNU weak symbols as external.
(external_coff_symbol_p): New function.
(parse_coff): Use it.
2000-06-25 Alexander Aganichev <AAganichev@hypercom.com>
* ar.c (normalize): Advance past both characters in a DOS based

View file

@ -99,6 +99,7 @@ static debug_type parse_coff_enum_type
static boolean parse_coff_symbol
PARAMS ((bfd *, struct coff_types *, asymbol *, long,
struct internal_syment *, PTR, debug_type, boolean));
static boolean external_coff_symbol_p PARAMS ((int sym_class));
/* Return the slot for a type. */
@ -588,6 +589,7 @@ parse_coff_symbol (abfd, types, sym, coff_symno, psyment, dhandle, type,
return false;
break;
case C_WEAKEXT:
case C_EXT:
if (! debug_record_variable (dhandle, bfd_asymbol_name (sym), type,
DEBUG_GLOBAL, bfd_asymbol_value (sym)))
@ -656,6 +658,22 @@ parse_coff_symbol (abfd, types, sym, coff_symno, psyment, dhandle, type,
return true;
}
/* Determine if a symbol has external visibility. */
static boolean
external_coff_symbol_p (int sym_class)
{
switch (sym_class)
{
case C_EXT:
case C_WEAKEXT:
return true;
default:
break;
}
return false;
}
/* This is the main routine. It looks through all the symbols and
handles them. */
@ -767,6 +785,7 @@ parse_coff (abfd, syms, symcount, dhandle)
if (syment.n_type == T_NULL)
break;
/* Fall through. */
case C_WEAKEXT:
case C_EXT:
if (ISFCN (syment.n_type))
{
@ -805,7 +824,7 @@ parse_coff (abfd, syms, symcount, dhandle)
return false;
if (! debug_record_function (dhandle, fnname, type,
fnclass == C_EXT,
external_coff_symbol_p (fnclass),
bfd_asymbol_value (sym)))
return false;