This makes automatic mode the default (matching ias behavior), adding a command line option (-xnone) to disable that. Built and tested on ia64-unknown-linux-gnu. Jan gas/ 2005-02-11 Jan Beulich * config/tc-ia64.c (md_parse_option): Handle -xnone and -xdebugn. (md_show_usage): Add -xnone, -xdebugn, and -xdebugx. Relocate default indicator. (ia64_init): Set md.detect_dv. (ia64_start_line): New static variable warned. Warn only once when encountering explicit stops in automatic mode. * doc/c-ia64.texi: Describe -xnone, -xdebugn, and -xdebugx. * NEWS: Mention new default mode. gas/testsuite/ 2005-02-11 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-11 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-11/gas/NEWS 2004-12-14 08:44:20.000000000 +0100 +++ 2005-02-11/gas/NEWS 2005-02-11 12:04:54.105276040 +0100 @@ -1,5 +1,8 @@ -*- text -*- +* The IA64 port now uses automatic dependency violation removal as its default + mode. + * Port to MAXQ processor contributed by HCL Tech. * Added support for generating unwind tables for ARM ELF targets. --- /home/jbeulich/src/binutils/mainline/2005-02-11/gas/config/tc-ia64.c 2005-02-11 11:09:20.000000000 +0100 +++ 2005-02-11/gas/config/tc-ia64.c 2005-02-11 12:01:05.033100304 +0100 @@ -6744,6 +6744,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; @@ -6753,6 +6757,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); @@ -6792,9 +6801,14 @@ 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\ - -xdebug debug dependency violation checker\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\ + -xdebugn debug dependency violation checker but turn off\n\ + dependency violation checking\n\ + -xdebugx debug dependency violation checker and turn on\n\ + dependency violation checking\n"), stream); } @@ -7137,6 +7151,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. */ @@ -7212,7 +7227,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-11/gas/doc/c-ia64.texi 2005-02-11 08:39:38.000000000 +0100 +++ 2005-02-11/gas/doc/c-ia64.texi 2005-02-11 12:03:42.319189184 +0100 @@ -67,17 +67,25 @@ IA-64 machine code always uses little-en @item -x @item -xexplicit -These options turn on dependency violation checking. This checking is turned on by -default. +These options turn on dependency violation checking. @item -xauto This option instructs the assembler to automatically insert stop bits where necessary -to remove dependency violations. +to remove dependency violations. This is the default mode. + +@item -xnone +This option turns off dependency violation checking. @item -xdebug This turns on debug output intended to help tracking down bugs in the dependency violation checker. +@item -xdebugn +This is a shortcut for -xnone -xdebug. + +@item -xdebugx +This is a shortcut for -xexplicit -xdebug. + @end table @cindex IA-64 Syntax --- /home/jbeulich/src/binutils/mainline/2005-02-11/gas/testsuite/gas/ia64/label.l 2005-01-21 15:52:42.000000000 +0100 +++ 2005-02-11/gas/testsuite/gas/ia64/label.l 2005-02-08 10:34:15.000000000 +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-11/gas/testsuite/gas/ia64/label.s 2005-01-20 11:37:08.000000000 +0100 +++ 2005-02-11/gas/testsuite/gas/ia64/label.s 2005-02-08 10:34:23.000000000 +0100 @@ -1,3 +1,4 @@ +.explicit start: {.mii label0: --- /home/jbeulich/src/binutils/mainline/2005-02-11/gas/testsuite/gas/ia64/nop_x.s 2005-01-21 15:56:11.000000000 +0100 +++ 2005-02-11/gas/testsuite/gas/ia64/nop_x.s 2005-02-08 10:34:49.000000000 +0100 @@ -1,3 +1,4 @@ +.explicit _start: {.mlx nop 0 --- /home/jbeulich/src/binutils/mainline/2005-02-11/gas/testsuite/gas/ia64/opc-a.d 2003-09-26 05:54:09.000000000 +0200 +++ 2005-02-11/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-11/gas/testsuite/gas/ia64/opc-b.d 2003-09-26 05:54:09.000000000 +0200 +++ 2005-02-11/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-11/gas/testsuite/gas/ia64/opc-f.d 2003-09-26 05:54:09.000000000 +0200 +++ 2005-02-11/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-11/gas/testsuite/gas/ia64/opc-i.d 2003-09-26 05:54:09.000000000 +0200 +++ 2005-02-11/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-11/gas/testsuite/gas/ia64/opc-m.d 2003-09-26 05:54:09.000000000 +0200 +++ 2005-02-11/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-11/gas/testsuite/gas/ia64/opc-x.d 2003-09-26 05:54:09.000000000 +0200 +++ 2005-02-11/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-11/gas/testsuite/gas/ia64/pseudo.d 2005-01-21 15:10:07.000000000 +0100 +++ 2005-02-11/gas/testsuite/gas/ia64/pseudo.d 2005-02-08 10:35:27.000000000 +0100 @@ -1,3 +1,4 @@ +# as: -xnone # objdump: -d # name: ia64 pseudo-ops --- /home/jbeulich/src/binutils/mainline/2005-02-11/gas/testsuite/gas/ia64/regs.d 2004-06-02 16:36:20.000000000 +0200 +++ 2005-02-11/gas/testsuite/gas/ia64/regs.d 2005-02-08 10:32:11.000000000 +0100 @@ -1,3 +1,4 @@ +#as: -xnone #objdump: -d #name: ia64 regs --- /home/jbeulich/src/binutils/mainline/2005-02-11/gas/testsuite/gas/ia64/tls.d 2003-09-26 05:54:09.000000000 +0200 +++ 2005-02-11/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-11/gas/testsuite/gas/ia64/unwind-err.l 2005-01-28 10:15:27.000000000 +0100 +++ 2005-02-11/gas/testsuite/gas/ia64/unwind-err.l 2005-02-08 10:38:38.000000000 +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-11/gas/testsuite/gas/ia64/unwind-err.s 2005-01-28 09:11:40.000000000 +0100 +++ 2005-02-11/gas/testsuite/gas/ia64/unwind-err.s 2005-02-08 10:36:18.000000000 +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-11/ld/testsuite/ld-elfvers/vers.exp 2004-11-02 17:16:17.000000000 +0100 +++ 2005-02-11/ld/testsuite/ld-elfvers/vers.exp 2005-02-08 11:32:10.000000000 +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-11/ld/testsuite/ld-ia64/tlsbin.s 2003-01-16 22:31:18.000000000 +0100 +++ 2005-02-11/ld/testsuite/ld-ia64/tlsbin.s 2005-02-08 11:38:39.000000000 +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-11/ld/testsuite/ld-ia64/tlsbinpic.s 2003-01-16 22:31:18.000000000 +0100 +++ 2005-02-11/ld/testsuite/ld-ia64/tlsbinpic.s 2005-02-08 11:37:39.000000000 +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-11/ld/testsuite/ld-ia64/tlspic1.s 2003-01-18 00:27:57.000000000 +0100 +++ 2005-02-11/ld/testsuite/ld-ia64/tlspic1.s 2005-02-08 11:37:50.000000000 +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#