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

* config/obj-coff.c (obj_coff_endef) [BFD_ASSEMBLER]: Handle .ef
	C_FCN symbol differently if TE_PE.
	(obj_coff_line) [BFD_ASSEMBLER]: Always use the line number which
	appears in the pseudo-op, rather coff_line_base which is only set
	for a .bf symbol.
This commit is contained in:
Ian Lance Taylor
1999-09-12 02:49:28 +00:00
parent 28428223eb
commit 23dab925ad
2 changed files with 32 additions and 10 deletions

View File

@ -5,6 +5,12 @@
1999-09-11 Donn Terry <donn@interix.com>
* config/obj-coff.c (obj_coff_endef) [BFD_ASSEMBLER]: Handle .ef
C_FCN symbol differently if TE_PE.
(obj_coff_line) [BFD_ASSEMBLER]: Always use the line number which
appears in the pseudo-op, rather coff_line_base which is only set
for a .bf symbol.
* config/obj-coff.c (obj_coff_loc): New static function.
(obj_pseudo_table): Add "loc".

View File

@ -659,14 +659,30 @@ obj_coff_endef (ignore)
S_SET_SEGMENT (def_symbol_in_progress, text_section);
name = S_GET_NAME (def_symbol_in_progress);
if (name[1] == 'b' && name[2] == 'f')
{
if (! in_function ())
as_warn (_("`%s' symbol without preceding function"), name);
/* SA_SET_SYM_LNNO (def_symbol_in_progress, 12345);*/
/* Will need relocating */
SF_SET_PROCESS (def_symbol_in_progress);
clear_function ();
if (name[0] == '.' && name[2] == 'f' && name[3] == '\0')
{
switch (name[1])
{
case 'b':
/* .bf */
if (! in_function ())
as_warn (_("`%s' symbol without preceding function"), name);
/* Will need relocating. */
SF_SET_PROCESS (def_symbol_in_progress);
clear_function ();
break;
#ifdef TE_PE
case 'e':
/* .ef */
/* The MS compilers output the actual endline, not the
function-relative one... we want to match without
changing the assembler input. */
SA_SET_SYM_LNNO (def_symbol_in_progress,
(SA_GET_SYM_LNNO (def_symbol_in_progress)
+ coff_line_base));
break;
#endif
}
}
}
break;
@ -856,7 +872,7 @@ obj_coff_line (ignore)
coff_line_base = this_base;
S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1);
SA_SET_SYM_LNNO (def_symbol_in_progress, coff_line_base);
SA_SET_SYM_LNNO (def_symbol_in_progress, this_base);
demand_empty_rest_of_line ();
@ -866,7 +882,7 @@ obj_coff_line (ignore)
extern int listing;
if (listing)
listing_source_line ((unsigned int) coff_line_base);
listing_source_line ((unsigned int) this_base);
}
#endif
}