This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Patch for ppc gas
- To: binutils at sources dot redhat dot com
- Subject: Patch for ppc gas
- From: Tom Rix <trix at redhat dot com>
- Date: Thu, 24 May 2001 13:47:34 -0500
- Organization: GCC
This is a patch for a segfault in gas when running the
gcc/testsuite/g77.f-torture/compile/19990905-2.f
A stabx symbol was not being correctly generated.
--
Tom Rix
GCC Engineer
trix@redhat.com
256.704.9201
diff -rcp gas/ChangeLog gas-new/ChangeLog
*** gas/ChangeLog Thu May 24 11:34:18 2001
--- gas-new/ChangeLog Thu May 24 11:33:24 2001
***************
*** 1,3 ****
--- 1,7 ----
+ 2000-05-24 Tom Rix <trix@redhat.com>
+
+ * config/tc-ppc.c (ppc_stabx) : fix generated symbol
+
diff -rcp gas/config/tc-ppc.c gas-new/config/tc-ppc.c
*** gas/config/tc-ppc.c Thu May 24 11:34:24 2001
--- gas-new/config/tc-ppc.c Thu May 24 11:33:31 2001
*************** ppc_stabx (ignore)
*** 2766,2773 ****
symbol_get_tc (sym)->output = 1;
! if (S_GET_STORAGE_CLASS (sym) == C_STSYM)
symbol_get_tc (sym)->within = ppc_current_block;
if (exp.X_op != O_symbol
|| ! S_IS_EXTERNAL (exp.X_add_symbol)
--- 2766,2797 ----
symbol_get_tc (sym)->output = 1;
! 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.
+
+ Tom Rix, 5.23.01
+ */
+
+ 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)