Fix for gas seg fault and neg line numbers
This commit is contained in:
parent
11a383ba17
commit
6877bb43e5
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue