diff options
author | Tom Rix <trix@redhat.com> | 2001-10-08 18:14:43 +0000 |
---|---|---|
committer | Tom Rix <trix@redhat.com> | 2001-10-08 18:14:43 +0000 |
commit | 8642cce86a850b9aa0c2fed31f29c9ca2cabd1c4 (patch) | |
tree | edc8db84d7a1afad3e5407ed41058f5ae8447bcc /gas | |
parent | ab7f1108bf52aad8ed01cee4ba5b21e896fe2b0a (diff) | |
download | gdb-8642cce86a850b9aa0c2fed31f29c9ca2cabd1c4.zip gdb-8642cce86a850b9aa0c2fed31f29c9ca2cabd1c4.tar.gz gdb-8642cce86a850b9aa0c2fed31f29c9ca2cabd1c4.tar.bz2 |
Fix 2 xcoff line number problems
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 6 | ||||
-rw-r--r-- | gas/config/obj-coff.c | 3 | ||||
-rw-r--r-- | gas/config/tc-ppc.c | 22 |
3 files changed, 28 insertions, 3 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index cbf955e..efe13df 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2001-10-08 Tom Rix <trix@redhat.com> + + * config/tc-ppc (ppc_bf, ppc_biei) : Set first .bi lineno value to + location of next .bf + * config/obj-coff.c (coff_frob_symbol) : XCOFF does not use endndx. + 2001-10-07 Alan Modra <amodra@bigpond.net.au> * config/obj-elf.c: Standardize error/warning messages - don't diff --git a/gas/config/obj-coff.c b/gas/config/obj-coff.c index 6c7cc59..90c77fb 100644 --- a/gas/config/obj-coff.c +++ b/gas/config/obj-coff.c @@ -1309,6 +1309,7 @@ coff_frob_symbol (symp, punt) set_end = next_set_end; } +#ifndef OBJ_XCOFF if (! *punt && S_GET_STORAGE_CLASS (symp) == C_FCN && strcmp (S_GET_NAME (symp), ".bf") == 0) @@ -1317,7 +1318,7 @@ coff_frob_symbol (symp, punt) SA_SET_SYM_ENDNDX (coff_last_bf, symp); coff_last_bf = symp; } - +#endif if (coffsymbol (symbol_get_bfdsym (symp))->lineno) { int i; diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c index ff63dfc..ef4341f 100644 --- a/gas/config/tc-ppc.c +++ b/gas/config/tc-ppc.c @@ -3168,7 +3168,10 @@ ppc_function (ignore) } /* The .bf pseudo-op. This is just like a COFF C_FCN symbol named - ".bf". */ + ".bf". If the pseudo op .bi was seen before .bf, patch the .bi sym + with the correct line number */ + +static symbolS *saved_bi_sym = 0; static void ppc_bf (ignore) @@ -3187,6 +3190,14 @@ ppc_bf (ignore) S_SET_NUMBER_AUXILIARY (sym, 1); SA_SET_SYM_LNNO (sym, coff_line_base); + /* Line number for bi. */ + if (saved_bi_sym) + { + S_SET_VALUE (saved_bi_sym, coff_n_line_nos); + saved_bi_sym = 0; + } + + symbol_get_tc (sym)->output = 1; ppc_frob_label (sym); @@ -3220,7 +3231,8 @@ ppc_ef (ignore) /* The .bi and .ei pseudo-ops. These take a string argument and generates a C_BINCL or C_EINCL symbol, which goes at the start of - the symbol list. */ + the symbol list. The value of .bi will be know when the next .bf + is encountered. */ static void ppc_biei (ei) @@ -3250,6 +3262,12 @@ ppc_biei (ei) S_SET_STORAGE_CLASS (sym, ei ? C_EINCL : C_BINCL); symbol_get_tc (sym)->output = 1; + /* Save bi. */ + if (ei) + saved_bi_sym = 0; + else + saved_bi_sym = sym; + for (look = last_biei ? last_biei : symbol_rootP; (look != (symbolS *) NULL && (S_GET_STORAGE_CLASS (look) == C_FILE |