ignore_rest_of_line ();
goto out;
}
- else if (temp != size || !exp.X_unsigned)
+ else if (temp != size || (!exp.X_unsigned && exp.X_add_number < 0))
{
as_warn (_("size (%ld) out of range, ignored"), (long) temp);
ignore_rest_of_line ();
if (exp.X_op == O_absent)
goto no_align;
- if (!exp.X_unsigned)
+ if (!exp.X_unsigned && exp.X_add_number < 0)
{
as_warn (_("alignment negative; 0 assumed"));
align = 0;
.comm foobar,30,4
+ .comm buf1, 5-1, 8
+ .comm buf2, 4, 9-1
+ .ifndef lcomm_align
+ .lcomm lbuf, 9-1
+ .else
+ .lcomm lbuf, 9-1, 8
+ .endif
#source: common3.s
#as: --elf-stt-common=yes
#readelf: -s -W
+# MIPS'es IRIX emulation puts lbuf (STB_LOCAL) after the globals in the
+# symbol table, and that mode is hard to check for (see irixemul in
+# binutils/testsuite/binutils-all/mips/mips.exp)
+#notarget: mips*-*-*
+#...
+ +[0-9]+: +0+ +8 +(OBJECT|NOTYPE) +LOCAL +DEFAULT +[1-9] +lbuf
#...
+[0-9]+: +0+4 +30 +COMMON +GLOBAL +DEFAULT +COM +foobar
+#...
+ +[0-9]+: +0+8 +4 +COMMON +GLOBAL +DEFAULT +COM +buf1
+ +[0-9]+: +0+8 +4 +COMMON +GLOBAL +DEFAULT +COM +buf2
#pass
#source: common3.s
#as: --elf-stt-common=no
#readelf: -s -W
+# MIPS'es IRIX emulation puts lbuf (STB_LOCAL) after the globals in the
+# symbol table, and that mode is hard to check for (see irixemul in
+# binutils/testsuite/binutils-all/mips/mips.exp)
+#notarget: mips*-*-*
+#...
+ +[0-9]+: +0+ +8 +(OBJECT|NOTYPE) +LOCAL +DEFAULT +[1-9] +lbuf
#...
+[0-9]+: +0+4 +30 +OBJECT +GLOBAL +DEFAULT +COM +foobar
+#...
+ +[0-9]+: +0+8 +4 +OBJECT +GLOBAL +DEFAULT +COM +buf1
+ +[0-9]+: +0+8 +4 +OBJECT +GLOBAL +DEFAULT +COM +buf2
#pass
# hpux has a non-standard common directive.
if { ![istarget "*-*-hpux*"] } then {
- run_dump_test "common3a"
- run_dump_test "common3b"
+ switch -glob $target_triplet {
+ ia64-*-* {
+ run_dump_test "common3a" { { as "--defsym lcomm_align=1" } }
+ run_dump_test "common3b" { { as "--defsym lcomm_align=1" } }
+ }
+ default {
+ run_dump_test "common3a"
+ run_dump_test "common3b"
+ }
+ }
run_dump_test "common4a"
run_dump_test "common4b"
run_dump_test "common5a"