Fix for gas seg fault and neg line numbers

This commit is contained in:
Tom Rix 2001-05-24 21:39:09 +00:00
parent 11a383ba17
commit 6877bb43e5
3 changed files with 34 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2000-05-24 Tom Rix <trix@redhat.com>
* config/obj-coff.c : (add_lineno) xcoff allows negative line
numbers
* config/tc-ppc.c (ppc_stabx) : fix generated symbol
2001-05-24 Alan Modra <amodra@one.net.au>
* write.c (write_object_file): Set finalize_syms = 1 before

View File

@ -446,12 +446,17 @@ add_lineno (frag, offset, num)
{
abort ();
}
#ifndef OBJ_XCOFF
/* The native aix assembler accepts negative line number */
if (num <= 0)
{
/* Zero is used as an end marker in the file. */
as_warn (_("Line numbers must be positive integers\n"));
num = 1;
}
#endif /* OBJ_XCOFF */
new_line->next = line_nos;
new_line->frag = frag;
new_line->l.line_number = num;

View File

@ -2845,9 +2845,31 @@ ppc_stabx (ignore)
symbol_get_tc (sym)->output = 1;
if (S_GET_STORAGE_CLASS (sym) == C_STSYM)
if (S_GET_STORAGE_CLASS (sym) == C_STSYM) {
symbol_get_tc (sym)->within = ppc_current_block;
/*
In this case :
.bs name
.stabx "z",arrays_,133,0
.es
.comm arrays_,13768,3
resolve_symbol_value will copy the exp's "within" into sym's when the
offset is 0. Since this seems to be corner case problem,
only do the correction for storage class C_STSYM. A better solution
would be to have the tc field updated in ppc_symbol_new_hook.
*/
if (exp.X_op == O_symbol) {
symbol_get_tc (exp.X_add_symbol)->within = ppc_current_block;
}
}
if (exp.X_op != O_symbol
|| ! S_IS_EXTERNAL (exp.X_add_symbol)
|| S_GET_SEGMENT (exp.X_add_symbol) != bss_section)