2003-05-23 Raoul Gough <RaoulGough@yahoo.co.uk>

Committed by Elena Zannoni  <ezannoni@redhat.com>.
  	* coffread.c(coff_symtab_read): Do relocate static symbols from PE
	files, don't relocate absolute symbols (and do use mst_abs).
This commit is contained in:
Elena Zannoni 2003-05-23 16:16:00 +00:00
parent e8f3fcdde6
commit 182d43bc6e
2 changed files with 19 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2003-05-23 Raoul Gough <RaoulGough@yahoo.co.uk>
Committed by Elena Zannoni <ezannoni@redhat.com>.
* coffread.c(coff_symtab_read): Do relocate static symbols from PE
files, don't relocate absolute symbols (and do use mst_abs).
2003-05-23 Andrew Cagney <cagney@redhat.com>
* objc-lang.c: Include "gdb_assert.h".

View File

@ -869,7 +869,6 @@ coff_symtab_read (long symtab_offset, unsigned int nsyms,
print_address_symbolic work right without the (now
gone) "set fast-symbolic-addr off" kludge. */
/* FIXME: should use mst_abs, and not relocate, if absolute. */
enum minimal_symbol_type ms_type;
int sec;
@ -891,12 +890,23 @@ coff_symtab_read (long symtab_offset, unsigned int nsyms,
|| cs->c_sclass == C_THUMBEXT ?
mst_bss : mst_file_bss;
}
else if (cs->c_secnum == N_ABS)
{
/* Use the correct minimal symbol type (and don't
relocate) for absolute values. */
ms_type = mst_abs;
sec = cs_to_section (cs, objfile);
tmpaddr = cs->c_value;
}
else
{
sec = cs_to_section (cs, objfile);
tmpaddr = cs->c_value;
if (cs->c_sclass == C_EXT || cs->c_sclass == C_THUMBEXTFUNC
|| cs->c_sclass == C_THUMBEXT)
/* Statics in a PE file also get relocated */
if (cs->c_sclass == C_EXT
|| cs->c_sclass == C_THUMBEXTFUNC
|| cs->c_sclass == C_THUMBEXT
|| (pe_file && (cs->c_sclass == C_STAT)))
tmpaddr += ANOFFSET (objfile->section_offsets, sec);
if (sec == SECT_OFF_TEXT (objfile))