aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorTom Rix <trix@redhat.com>2001-10-08 18:14:43 +0000
committerTom Rix <trix@redhat.com>2001-10-08 18:14:43 +0000
commit8642cce86a850b9aa0c2fed31f29c9ca2cabd1c4 (patch)
treeedc8db84d7a1afad3e5407ed41058f5ae8447bcc /gas
parentab7f1108bf52aad8ed01cee4ba5b21e896fe2b0a (diff)
downloadgdb-8642cce86a850b9aa0c2fed31f29c9ca2cabd1c4.zip
gdb-8642cce86a850b9aa0c2fed31f29c9ca2cabd1c4.tar.gz
gdb-8642cce86a850b9aa0c2fed31f29c9ca2cabd1c4.tar.bz2
Fix 2 xcoff line number problems
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/obj-coff.c3
-rw-r--r--gas/config/tc-ppc.c22
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