mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-25 02:53:48 +08:00
Fix for problem with default alignment of .comm
This commit is contained in:
parent
1fe213d941
commit
1ad63b2f00
@ -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).
|
||||||
|
@ -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;
|
||||||
|
@ -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.
|
||||||
|
63
gas/testsuite/gas/ppc/aix.exp
Normal file
63
gas/testsuite/gas/ppc/aix.exp
Normal 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
|
||||||
|
}
|
6
gas/testsuite/gas/ppc/align.s
Normal file
6
gas/testsuite/gas/ppc/align.s
Normal 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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user