>>> James E Wilson 20.01.05 02:24:42 >>> >On Wed, 2005-01-19 at 16:05, James E Wilson wrote: >> 3) Enable -xexplicit by default. Assembler programs with correct stop >> bits will always work, but a few may get false DV warnings. Assembler >> programs without correct stop bits will never work, and most but not all >> will get assembler warnings. > >If we do enable this or -xauto by default, we should probably also add a >-xnone or similar option to disable the DV checking code. No one in >their right mind should disable DV checking, but it might be useful if >someone runs into a DV checking bug, and can't figure out how to work >around it except by turning off the DV checking. line option (-xnone) to disable that. Built and tested on ia64-unknown-linux-gnu. Jan gas/ 2005-02-08 Jan Beulich * config/tc-ia64.c (md_parse_option): Handle -xnone and -xdebugn. (md_show_usage): Add -xnone. (ia64_init): Set md.detect_dv. (ia64_start_line): New static variable warned. Warn only once when encountering explicit stops in automatic mode. gas/testsuite/ 2005-02-08 Jan Beulich * gas/ia64/label.l: Adjust line numbers. * gas/ia64/label.s: Add .explicit. * gas/ia64/nop_x.s: Likewise. * gas/ia64/opc-a.d: Add assembler option -xnone. * gas/ia64/opc-b.d: Likewise. * gas/ia64/opc-f.d: Likewise. * gas/ia64/opc-i.d: Likewise. * gas/ia64/opc-m.d: Likewise. * gas/ia64/opc-x.d: Likewise. * gas/ia64/pseudo.d: Likewise. * gas/ia64/regs.d: Likewise. * gas/ia64/tls.d: Likewise. * gas/ia64/unwind-err.l: Adjust line numbers. * gas/ia64/unwind-err.s: Remove explicit stops. ld/testsuite/ 2005-02-08 Jan Beulich * ld-elfvers/vers.exp (as_options): New. Set to -x for ia64. (build_binary): Pass as_options to ld_assemble. (test_ldfail): Likewise. (build_exec): Likewise. Pass as_options to run_ld_link_tests. * ld-ia64/tlsbin.s: Add .explicit. * ld-ia64/tlsbinpic.s: Likewise. * ld-ia64/tlspic1.s: Likewise. --- /home/jbeulich/src/binutils/mainline/2005-02-08/gas/config/tc-ia64.c 2005-02-02 08:33:18.000000000 +0100 +++ 2005-02-08/gas/config/tc-ia64.c 2005-02-08 10:32:11.442268383 +0100 @@ -6849,6 +6849,10 @@ md_parse_option (c, arg) { md.default_explicit_mode = 0; } + else if (strcmp (arg, "none") == 0) + { + md.detect_dv = 0; + } else if (strcmp (arg, "debug") == 0) { md.debug_dv = 1; @@ -6858,6 +6862,11 @@ md_parse_option (c, arg) md.default_explicit_mode = 1; md.debug_dv = 1; } + else if (strcmp (arg, "debugn") == 0) + { + md.debug_dv = 1; + md.detect_dv = 0; + } else { as_bad (_("Unrecognized option '-x%s'"), arg); @@ -6897,8 +6906,9 @@ IA-64 options:\n\ EF_IA_64_NOFUNCDESC_CONS_GP)\n\ -milp32|-milp64|-mlp64|-mp64 select data model (default -mlp64)\n\ -mle | -mbe select little- or big-endian byte order (default -mle)\n\ - -x | -xexplicit turn on dependency violation checking (default)\n\ - -xauto automagically remove dependency violations\n\ + -x | -xexplicit turn on dependency violation checking\n\ + -xauto automagically remove dependency violations (default)\n\ + -xnone turn off dependency violation checking\n\ -xdebug debug dependency violation checker\n"), stream); } @@ -7242,6 +7252,7 @@ ia64_init (argc, argv) char **argv ATTRIBUTE_UNUSED; { md.flags = MD_FLAGS_DEFAULT; + md.detect_dv = 1; } /* Return a string for the target object file format. */ @@ -7317,7 +7328,15 @@ ia64_start_line () if (input_line_pointer[0] == ';' && input_line_pointer[-1] == ';') { if (md.detect_dv && !md.explicit_mode) - as_warn (_("Explicit stops are ignored in auto mode")); + { + static int warned; + + if (!warned) + { + warned = 1; + as_warn (_("Explicit stops are ignored in auto mode")); + } + } else insn_group_break (1, 0, 0); } --- /home/jbeulich/src/binutils/mainline/2005-02-08/gas/testsuite/gas/ia64/label.l 2005-01-21 15:52:42.000000000 +0100 +++ 2005-02-08/gas/testsuite/gas/ia64/label.l 2005-02-08 10:34:15.098516868 +0100 @@ -1,3 +1,3 @@ .*: Assembler messages: -.*:11: Error: Label must be first in a bundle -.*:18: Error: Label must be first in a bundle +.*:12: Error: Label must be first in a bundle +.*:19: Error: Label must be first in a bundle --- /home/jbeulich/src/binutils/mainline/2005-02-08/gas/testsuite/gas/ia64/label.s 2005-01-20 11:37:08.000000000 +0100 +++ 2005-02-08/gas/testsuite/gas/ia64/label.s 2005-02-08 10:34:22.953985522 +0100 @@ -1,3 +1,4 @@ +.explicit start: {.mii label0: --- /home/jbeulich/src/binutils/mainline/2005-02-08/gas/testsuite/gas/ia64/nop_x.s 2005-01-21 15:56:11.000000000 +0100 +++ 2005-02-08/gas/testsuite/gas/ia64/nop_x.s 2005-02-08 10:34:48.802618018 +0100 @@ -1,3 +1,4 @@ +.explicit _start: {.mlx nop 0 --- /home/jbeulich/src/binutils/mainline/2005-02-08/gas/testsuite/gas/ia64/opc-a.d 2003-09-26 05:54:09.000000000 +0200 +++ 2005-02-08/gas/testsuite/gas/ia64/opc-a.d 2005-02-04 11:11:47.000000000 +0100 @@ -1,3 +1,4 @@ +# as: -xnone # objdump: -d # name: ia64 opc-a --- /home/jbeulich/src/binutils/mainline/2005-02-08/gas/testsuite/gas/ia64/opc-b.d 2003-09-26 05:54:09.000000000 +0200 +++ 2005-02-08/gas/testsuite/gas/ia64/opc-b.d 2005-02-04 11:11:58.000000000 +0100 @@ -1,3 +1,4 @@ +#as: -xnone #objdump: -d #name: ia64 opc-b --- /home/jbeulich/src/binutils/mainline/2005-02-08/gas/testsuite/gas/ia64/opc-f.d 2003-09-26 05:54:09.000000000 +0200 +++ 2005-02-08/gas/testsuite/gas/ia64/opc-f.d 2005-02-04 11:12:02.000000000 +0100 @@ -1,3 +1,4 @@ +# as: -xnone # objdump: -d --disassemble-zeroes # name: ia64 opc-f --- /home/jbeulich/src/binutils/mainline/2005-02-08/gas/testsuite/gas/ia64/opc-i.d 2003-09-26 05:54:09.000000000 +0200 +++ 2005-02-08/gas/testsuite/gas/ia64/opc-i.d 2005-02-04 11:12:06.000000000 +0100 @@ -1,3 +1,4 @@ +# as: -xnone # objdump: -d # name: ia64 opc-i --- /home/jbeulich/src/binutils/mainline/2005-02-08/gas/testsuite/gas/ia64/opc-m.d 2003-09-26 05:54:09.000000000 +0200 +++ 2005-02-08/gas/testsuite/gas/ia64/opc-m.d 2005-02-04 11:12:10.000000000 +0100 @@ -1,3 +1,4 @@ +# as: -xnone # objdump: -d # name: ia64 opc-m --- /home/jbeulich/src/binutils/mainline/2005-02-08/gas/testsuite/gas/ia64/opc-x.d 2003-09-26 05:54:09.000000000 +0200 +++ 2005-02-08/gas/testsuite/gas/ia64/opc-x.d 2005-02-04 11:12:18.000000000 +0100 @@ -1,3 +1,4 @@ +#as: -xnone #objdump: -d #name: ia64 opc-x --- /home/jbeulich/src/binutils/mainline/2005-02-08/gas/testsuite/gas/ia64/pseudo.d 2005-01-21 15:10:07.000000000 +0100 +++ 2005-02-08/gas/testsuite/gas/ia64/pseudo.d 2005-02-08 10:35:26.639531617 +0100 @@ -1,3 +1,4 @@ +# as: -xnone # objdump: -d # name: ia64 pseudo-ops --- /home/jbeulich/src/binutils/mainline/2005-02-08/gas/testsuite/gas/ia64/regs.d 2004-06-02 16:36:20.000000000 +0200 +++ 2005-02-08/gas/testsuite/gas/ia64/regs.d 2005-02-08 10:32:11.452034008 +0100 @@ -1,3 +1,4 @@ +#as: -xnone #objdump: -d #name: ia64 regs --- /home/jbeulich/src/binutils/mainline/2005-02-08/gas/testsuite/gas/ia64/tls.d 2003-09-26 05:54:09.000000000 +0200 +++ 2005-02-08/gas/testsuite/gas/ia64/tls.d 2005-02-04 15:01:12.000000000 +0100 @@ -1,3 +1,4 @@ +#as: -xnone #objdump: -dr #name: ia64 tls --- /home/jbeulich/src/binutils/mainline/2005-02-08/gas/testsuite/gas/ia64/unwind-err.l 2005-01-28 10:15:27.000000000 +0100 +++ 2005-02-08/gas/testsuite/gas/ia64/unwind-err.l 2005-02-08 10:38:37.655154277 +0100 @@ -29,6 +29,6 @@ .*:36: Error: .save.b outside of prologue .*:37: Error: .altrp outside of prologue .*:42: Error: .prologue within prologue -.*:52: Error: .body outside of procedure -.*:59: Warning: Initial .prologue.* -.*:66: Warning: Initial .body.* +.*:50: Error: .body outside of procedure +.*:57: Warning: Initial .prologue.* +.*:64: Warning: Initial .body.* --- /home/jbeulich/src/binutils/mainline/2005-02-08/gas/testsuite/gas/ia64/unwind-err.s 2005-01-28 09:11:40.000000000 +0100 +++ 2005-02-08/gas/testsuite/gas/ia64/unwind-err.s 2005-02-08 10:36:17.905155989 +0100 @@ -42,11 +42,9 @@ start: .prologue .save ar.lc, r31 mov r31 = ar.lc - ;; .body .body br.ret.sptk rp - ;; .personality personality .handlerdata .body --- /home/jbeulich/src/binutils/mainline/2005-02-08/ld/testsuite/ld-elfvers/vers.exp 2004-11-02 17:16:17.000000000 +0100 +++ 2005-02-08/ld/testsuite/ld-elfvers/vers.exp 2005-02-08 11:32:10.477380545 +0100 @@ -91,6 +91,11 @@ if [istarget mips*-*-*] { } } +case $target_triplet in { + { ia64-*-* } { set as_options "-x" } + default { set as_options "" } +} + proc test_ar { test lib object expect } { global ar global nm @@ -506,6 +511,7 @@ proc build_binary { shared pic test sour global host_triplet global tmpdir global as + global as_options global objdump global CC global CFLAGS @@ -516,7 +522,7 @@ proc build_binary { shared pic test sour return } - if ![ld_assemble $as $tmpdir/$libname.s $tmpdir/$libname.o ] { + if ![ld_assemble $as "$as_options $tmpdir/$libname.s" $tmpdir/$libname.o ] { unresolved "$test" return } @@ -593,6 +599,7 @@ proc test_ldfail { test flag source exec global host_triplet global tmpdir global as + global as_options global objdump global CC global CFLAGS @@ -609,7 +616,7 @@ proc test_ldfail { test flag source exec return } - if ![ld_assemble $as $tmpdir/$execname.s $tmpdir/$execname.o ] { + if ![ld_assemble $as "$as_options $tmpdir/$execname.s" $tmpdir/$execname.o ] { unresolved "$test" return } @@ -697,6 +704,7 @@ proc build_exec { test source execname f global host_triplet global tmpdir global as + global as_options global objdump global CC global CFLAGS @@ -708,7 +716,7 @@ proc build_exec { test source execname f return } - if ![ld_assemble $as $tmpdir/$execname.s $tmpdir/$execname.o ] { + if ![ld_assemble $as "$as_options $tmpdir/$execname.s" $tmpdir/$execname.o ] { unresolved "$test" return } @@ -910,15 +918,15 @@ if [istarget sparc*-*-*] { } run_ld_link_tests [list "\"vers24a\" \"-shared --version-script $srcdir/$subdir/vers24.map\" - \"$as_pic_flags\" {vers24a.c vers24b.c} { { readelf -Wrs vers24.rd } } + \"$as_pic_flags $as_options\" {vers24a.c vers24b.c} { { readelf -Wrs vers24.rd } } \"libvers24a.so\" \"-fpic\""] run_ld_link_tests [list "\"vers24b\" \"-shared --version-script $srcdir/$subdir/vers24.map\" - \"$as_pic_flags\" {vers24b.c vers24a.c} { { readelf -Wrs vers24.rd } } + \"$as_pic_flags $as_options\" {vers24b.c vers24a.c} { { readelf -Wrs vers24.rd } } \"libvers24b.so\" \"-fpic\""] run_ld_link_tests [list "\"vers24c\" \"-shared --version-script $srcdir/$subdir/vers24.map\" - \"$as_pic_flags\" {vers24c.c} { { readelf -Wrs vers24.rd } } + \"$as_pic_flags $as_options\" {vers24c.c} { { readelf -Wrs vers24.rd } } \"libvers24c.so\" \"-fpic\""] # Test versioned definition vs. normal definition in different files. --- /home/jbeulich/src/binutils/mainline/2005-02-08/ld/testsuite/ld-ia64/tlsbin.s 2003-01-16 22:31:18.000000000 +0100 +++ 2005-02-08/ld/testsuite/ld-ia64/tlsbin.s 2005-02-08 11:38:39.422688280 +0100 @@ -16,6 +16,7 @@ bl5: .space 4 bl6: .space 4 bl7: .space 4 bl8: .space 4 + .explicit .pred.safe_across_calls p1-p5,p16-p63 .text .globl _start# --- /home/jbeulich/src/binutils/mainline/2005-02-08/ld/testsuite/ld-ia64/tlsbinpic.s 2003-01-16 22:31:18.000000000 +0100 +++ 2005-02-08/ld/testsuite/ld-ia64/tlsbinpic.s 2005-02-08 11:37:39.242024955 +0100 @@ -31,9 +31,10 @@ sh5: .long 261 sh6: .long 262 sh7: .long 263 sh8: .long 264 + .explicit + .pred.safe_across_calls p1-p5,p16-p63 /* Force .text aligned to 4K, so it very likely gets at 0x4000000000001000. */ - .pred.safe_across_calls p1-p5,p16-p63 .text .balign 4096 .globl fn2# --- /home/jbeulich/src/binutils/mainline/2005-02-08/ld/testsuite/ld-ia64/tlspic1.s 2003-01-18 00:27:57.000000000 +0100 +++ 2005-02-08/ld/testsuite/ld-ia64/tlspic1.s 2005-02-08 11:37:50.275227945 +0100 @@ -30,8 +30,9 @@ sh5: .long 261 sh6: .long 262 sh7: .long 263 sh8: .long 264 - /* Force .text aligned to 4K, so it very likely gets at 0x1000. */ + .explicit .pred.safe_across_calls p1-p5,p16-p63 + /* Force .text aligned to 4K, so it very likely gets at 0x1000. */ .text .balign 4096 .globl fn1#