1999-09-11 Donn Terry <donn@interix.com>

* coffcode.h (coff_slurp_symbol_table): If PE, set BSF_DEBUGGING
	for C_FCN/C_EFCN symbols, and set BSF_DEBUGGING_RELOC for such
	symbols named .bf.
This commit is contained in:
Ian Lance Taylor 1999-09-11 21:04:09 +00:00
parent eeaf533e61
commit d510f9a69b
2 changed files with 13 additions and 2 deletions

View File

@ -12,6 +12,9 @@
function symbols.
* syms.c (BSF_DEBUGGING_RELOC): Define.
* coffcode.h (coff_slurp_symbol_table): If PE, set BSF_DEBUGGING
for C_FCN/C_EFCN symbols, and set BSF_DEBUGGING_RELOC for such
symbols named .bf.
* coffgen.c (fixup_symbol_value): Relocate a symbol which has
BSF_DEBUGGING_RELOC set.
* bfd-in2.h: Rebuild.

View File

@ -4139,16 +4139,24 @@ coff_slurp_symbol_table (abfd)
#endif
case C_BLOCK: /* ".bb" or ".eb" */
case C_FCN: /* ".bf" or ".ef" */
case C_FCN: /* ".bf" or ".ef" (or PE ".lf") */
case C_EFCN: /* physical end of function */
dst->symbol.flags = BSF_LOCAL;
#if defined COFF_WITH_PE
/* PE sets the symbol to a value relative to the start
of the section. */
dst->symbol.value = src->u.syment.n_value;
if (strcmp (dst->symbol.name, ".bf") != 0)
{
/* PE uses funny values for .ef and .lf; don't
relocate them. */
dst->symbol.flags = BSF_DEBUGGING;
}
else
dst->symbol.flags = BSF_DEBUGGING | BSF_DEBUGGING_RELOC;
#else
/* Base the value as an index from the base of the
section. */
dst->symbol.flags = BSF_LOCAL;
dst->symbol.value = (src->u.syment.n_value
- dst->symbol.section->vma);
#endif