Fix for problem with default alignment of .comm

This commit is contained in:
Tom Rix 2001-06-20 13:34:10 +00:00
parent 1fe213d941
commit 1ad63b2f00
5 changed files with 83 additions and 8 deletions

View File

@ -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> 2001-06-18 H.J. Lu <hjl@gnu.org>
* doc/Makefile.am (info): Depend on $(MANS). * doc/Makefile.am (info): Depend on $(MANS).

View File

@ -2340,7 +2340,8 @@ static boolean ppc_stab_symbol;
/* The .comm and .lcomm pseudo-ops for XCOFF. XCOFF puts common /* The .comm and .lcomm pseudo-ops for XCOFF. XCOFF puts common
symbols in the .bss segment as though they were local 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 static void
ppc_comm (lcomm) ppc_comm (lcomm)
@ -2382,7 +2383,7 @@ ppc_comm (lcomm)
{ {
/* The third argument to .comm is the alignment. */ /* The third argument to .comm is the alignment. */
if (*input_line_pointer != ',') if (*input_line_pointer != ',')
align = 3; align = 2;
else else
{ {
++input_line_pointer; ++input_line_pointer;
@ -2390,7 +2391,7 @@ ppc_comm (lcomm)
if (align <= 0) if (align <= 0)
{ {
as_warn (_("ignoring bad alignment")); as_warn (_("ignoring bad alignment"));
align = 3; align = 2;
} }
} }
} }
@ -2399,11 +2400,7 @@ ppc_comm (lcomm)
char *lcomm_name; char *lcomm_name;
char lcomm_endc; char lcomm_endc;
if (size <= 1) if (size <= 4)
align = 0;
else if (size <= 2)
align = 1;
else if (size <= 4)
align = 2; align = 2;
else else
align = 3; align = 3;

View File

@ -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> 2001-06-13 Andreas Jaeger <aj@suse.de>
* gas/vtable/vtable.exp (run_list_test): Don't run on sparc64. * gas/vtable/vtable.exp (run_list_test): Don't run on sparc64.

View File

@ -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
}

View File

@ -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