* config/tc-mips.c (file_ase_mips16): Adjust comment.
(append_insn): Update file_ase_mips16.
(mips_after_parse_args): Don't set file_ase_mips16 here.
gas/testsuite/
* gas/mips/elf_ase_mips16.d: Update test for new MIPS16 ASE flag
semantics.
* gas/mips/elf_ase_mips16-2.d: New test.
* gas/mips/nop.s: Source for the new test.
* gas/mips/mips.exp: Run the new test.
binutils/testsuite/
* lib/binutils-common.exp (regexp_diff): Implement inverse
matching, requested by `!'.
+2010-12-09 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * lib/binutils-common.exp (regexp_diff): Implement inverse
+ matching, requested by `!'.
+
2010-11-20 Richard Sandiford <rdsandiford@googlemail.com>
* lib/binutils-common.exp (regexp_diff): New procedure.
# REGEXP
# Skip all lines in FILE_1 until the first that matches REGEXP.
#
-# Other # lines are comments. Skip empty lines in both files.
+# Other # lines are comments. Regexp lines starting with the `!' character
+# specify inverse matching (use `\!' for literal matching against a leading
+# `!'). Skip empty lines in both files.
#
# The first optional argument is a list of regexp substitutions of the form:
#
set diff_pass 1
break
}
+ set negated [expr { [string index $line_b 0] eq "!" }]
+ set line_bx [string range $line_b $negated end]
+ set n [expr { $negated ? "! " : "" }]
# Substitute on the reference.
foreach {name value} $ref_subst {
- regsub -- $name $line_b $value line_b
+ regsub -- $name $line_bx $value line_bx
}
- verbose "looking for \"^$line_b$\"" 3
- while { ![regexp "^$line_b$" "$line_a"] } {
+ verbose "looking for $n\"^$line_bx$\"" 3
+ while { [expr [regexp "^$line_bx$" "$line_a"] == $negated] } {
verbose "skipping \"$line_a\"" 3
if { [gets $file_a line_a] == $eof } {
set end_1 1
set differences 1
break
} else {
+ set negated [expr { [string index $line_b 0] eq "!" }]
+ set line_bx [string range $line_b $negated end]
+ set n [expr { $negated ? "! " : "" }]
+ set s [expr { $negated ? " " : "" }]
# Substitute on the reference.
foreach {name value} $ref_subst {
- regsub -- $name $line_b $value line_b
+ regsub -- $name $line_bx $value line_bx
}
- verbose "regexp \"^$line_b$\"\nline \"$line_a\"" 3
- if { ![regexp "^$line_b$" "$line_a"] } {
+ verbose "regexp $n\"^$line_bx$\"\nline \"$line_a\"" 3
+ if { [expr [regexp "^$line_bx$" "$line_a"] == $negated] } {
send_log "regexp_diff match failure\n"
- send_log "regexp \"^$line_b$\"\nline \"$line_a\"\n"
+ send_log "regexp $n\"^$line_bx$\"\nline $s\"$line_a\"\n"
verbose "regexp_diff match failure\n" 3
set differences 1
}
+2010-12-09 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * config/tc-mips.c (file_ase_mips16): Adjust comment.
+ (append_insn): Update file_ase_mips16.
+ (mips_after_parse_args): Don't set file_ase_mips16 here.
+
2010-12-09 Maciej W. Rozycki <macro@codesourcery.com>
* config/tc-mips.c (macro)
/* MIPS ISA we are using for this output file. */
static int file_mips_isa = ISA_UNKNOWN;
-/* True if -mips16 was passed or implied by arguments passed on the
- command line (e.g., by -march). */
+/* True if any MIPS16 code was produced. */
static int file_ase_mips16;
#define ISA_SUPPORTS_MIPS16E (mips_opts.isa == ISA_MIPS32 \
/* Mark instruction labels in mips16 mode. */
mips16_mark_labels ();
+ file_ase_mips16 |= mips_opts.mips16;
+
prev_pinfo = history[0].insn_mo->pinfo;
pinfo = ip->insn_mo->pinfo;
mips_cpu_info_from_isa (mips_opts.isa)->name);
file_mips_isa = mips_opts.isa;
- file_ase_mips16 = mips_opts.mips16;
file_ase_mips3d = mips_opts.ase_mips3d;
file_ase_mdmx = mips_opts.ase_mdmx;
file_ase_smartmips = mips_opts.ase_smartmips;
+2010-12-09 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * gas/mips/elf_ase_mips16.d: Update test for new MIPS16 ASE flag
+ semantics.
+ * gas/mips/elf_ase_mips16-2.d: New test.
+ * gas/mips/nop.s: Source for the new test.
+ * gas/mips/mips.exp: Run the new test.
+
2010-12-09 Maciej W. Rozycki <macro@codesourcery.com>
* gas/mips/jal-svr4pic.d: Also use wildcard address matching in
--- /dev/null
+# name: ELF MIPS16 ASE markings 2
+# source: nop.s
+# objdump: -p
+# as: -32 -mips16
+
+.*:.*file format.*mips.*
+private flags = [0-9a-f]*[4-7c-f]......: .*[[,]mips16[],].*
+
# as: -32 -mips16
.*:.*file format.*mips.*
-private flags = [0-9a-f]*[4-7c-f]......: .*[[,]mips16[],].*
+!private flags = .*mips16.*
run_dump_test "elf_arch_mips64r2"
# Verify that ASE markings are handled properly.
- if { !$no_mips16 } { run_dump_test "elf_ase_mips16" }
+ if { !$no_mips16 } {
+ run_dump_test "elf_ase_mips16"
+ run_dump_test "elf_ase_mips16-2"
+ }
run_dump_test "mips-gp32-fp32-pic"
run_dump_test "mips-gp32-fp64-pic"