aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorTom Rix <trix@redhat.com>2001-06-20 13:34:10 +0000
committerTom Rix <trix@redhat.com>2001-06-20 13:34:10 +0000
commit1ad63b2f000e4fea64a8fa6a11a3015aadd6e8fe (patch)
tree3cd51a4f6839101cc4113ff174f16def51bbcf52 /gas
parent1fe213d94107550465599da19836632e0de4c020 (diff)
downloadgdb-1ad63b2f000e4fea64a8fa6a11a3015aadd6e8fe.zip
gdb-1ad63b2f000e4fea64a8fa6a11a3015aadd6e8fe.tar.gz
gdb-1ad63b2f000e4fea64a8fa6a11a3015aadd6e8fe.tar.bz2
Fix for problem with default alignment of .comm
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog4
-rw-r--r--gas/config/tc-ppc.c13
-rw-r--r--gas/testsuite/ChangeLog5
-rw-r--r--gas/testsuite/gas/ppc/aix.exp63
-rw-r--r--gas/testsuite/gas/ppc/align.s6
5 files changed, 83 insertions, 8 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index a9a0332..4f30ec3 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,7 @@
+2000-06-20 Tom Rix <trix@redhat.com>
+
+ * config/tc-ppc.c (ppc_comm): Change default alignment to 4 bytes.
+
2001-06-18 H.J. Lu <hjl@gnu.org>
* doc/Makefile.am (info): Depend on $(MANS).
diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c
index b98f751..f0e23d5 100644
--- a/gas/config/tc-ppc.c
+++ b/gas/config/tc-ppc.c
@@ -2340,7 +2340,8 @@ static boolean ppc_stab_symbol;
/* The .comm and .lcomm pseudo-ops for XCOFF. XCOFF puts common
symbols in the .bss segment as though they were local common
- symbols, and uses a different smclas. */
+ symbols, and uses a different smclas. The native Aix 4.3.3 assember
+ aligns .comm and .lcomm to 4 bytes. */
static void
ppc_comm (lcomm)
@@ -2382,7 +2383,7 @@ ppc_comm (lcomm)
{
/* The third argument to .comm is the alignment. */
if (*input_line_pointer != ',')
- align = 3;
+ align = 2;
else
{
++input_line_pointer;
@@ -2390,7 +2391,7 @@ ppc_comm (lcomm)
if (align <= 0)
{
as_warn (_("ignoring bad alignment"));
- align = 3;
+ align = 2;
}
}
}
@@ -2399,11 +2400,7 @@ ppc_comm (lcomm)
char *lcomm_name;
char lcomm_endc;
- if (size <= 1)
- align = 0;
- else if (size <= 2)
- align = 1;
- else if (size <= 4)
+ if (size <= 4)
align = 2;
else
align = 3;
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 615b92c..441cbd9 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2001-06-18 Tom Rix <trix@redhat.com>
+
+ * gas/ppc/aix.exp: New file, aix specific tests.
+ * gas/ppc/align.s: New file, .comm alignment test.
+
2001-06-13 Andreas Jaeger <aj@suse.de>
* gas/vtable/vtable.exp (run_list_test): Don't run on sparc64.
diff --git a/gas/testsuite/gas/ppc/aix.exp b/gas/testsuite/gas/ppc/aix.exp
new file mode 100644
index 0000000..46eeb3e
--- /dev/null
+++ b/gas/testsuite/gas/ppc/aix.exp
@@ -0,0 +1,63 @@
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# Contributed by Red Hat
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+
+#
+# Aix on PowerPC tests
+#
+proc do_align_test {} {
+ set testname "align.s: Alignment of symbols part 1"
+ set x0 0
+ set x1 0
+ set x2 0
+ set x3 0
+ set x4 0
+
+ set testname "align.s (part 2)"
+
+ if [gas_test_old "align.s" "" "Alignment of symbols part 1"] {
+ objdump_start_no_subdir "a.out" "-t"
+
+ while 1 {
+ expect {
+ -re "AUX val 16 prmhsh 0 snhsh 0 typ 3 algn 2 clss 5 stb 0 snstb 0" { set x0 1 }
+ -re "AUX val 32 prmhsh 0 snhsh 0 typ 3 algn 1 clss 5 stb 0 snstb 0" { set x1 1 }
+ -re "AUX val 64 prmhsh 0 snhsh 0 typ 3 algn 2 clss 5 stb 0 snstb 0" { set x2 1 }
+ -re "AUX val 128 prmhsh 0 snhsh 0 typ 3 algn 3 clss 5 stb 0 snstb 0" { set x3 1 }
+ -re "AUX val 256 prmhsh 0 snhsh 0 typ 3 algn 4 clss 5 stb 0 snstb 0" { set x4 1 }
+ -re "\[^\n\]*\n" { }
+ timeout { perror "timeout\n"; break }
+ eof { break }
+ }
+ }
+
+ objdump_finish
+
+ if [all_ones $x0 $x1 $x2 $x3 $x4] then {
+ pass $testname
+ } else {
+ fail $testname
+ }
+ }
+}
+
+
+if [istarget powerpc*-*-aix4.3*] then {
+
+ # Make sure that symbols are correctly aligned
+ do_align_test
+}
diff --git a/gas/testsuite/gas/ppc/align.s b/gas/testsuite/gas/ppc/align.s
new file mode 100644
index 0000000..fbb630a
--- /dev/null
+++ b/gas/testsuite/gas/ppc/align.s
@@ -0,0 +1,6 @@
+ .comm default_align_4,16
+ .comm align_1,32,1
+ .comm align_2,64,2
+ .comm align_4,128,3
+ .comm align_8,256,4
+