Fix handling of case sensitive register aliases and add a test for the bug

This commit is contained in:
Nick Clifton 2004-04-30 10:51:13 +00:00
parent 20f0a1ada4
commit 376eb240f8
6 changed files with 75 additions and 56 deletions

View file

@ -1,3 +1,12 @@
2004-04-30 Nick Clifton <nickc@redhat.com>
* config/tc-arm.c (create_register_alias): Fix typo checking for
case sensitive register aliases.
(co_proc_number): Use error message string in all_reg_maps[]
array.
(cp_reg_required_here): Likewise.
(fp_reg_required_here): Likewise.
2004-04-29 Brian Ford <ford@vss.fsi.com>
* dwarf2dbg.c (dwarf2_finish): Add SEC_DEBUGGING to section flags.

View file

@ -3595,7 +3595,7 @@ co_proc_number (str)
}
else
{
inst.error = _("bad or missing co-processor number");
inst.error = all_reg_maps[REG_TYPE_CP].expected;
return FAIL;
}
}
@ -3650,7 +3650,7 @@ cp_reg_required_here (str, where)
/* In the few cases where we might be able to accept something else
this error can be overridden. */
inst.error = _("co-processor register expected");
inst.error = all_reg_maps[REG_TYPE_CN].expected;
/* Restore the start point. */
*str = start;
@ -3673,7 +3673,7 @@ fp_reg_required_here (str, where)
/* In the few cases where we might be able to accept something else
this error can be overridden. */
inst.error = _("floating point register expected");
inst.error = all_reg_maps[REG_TYPE_FN].expected;
/* Restore the start point. */
*str = start;
@ -11439,7 +11439,7 @@ create_register_alias (newname, p)
char *copy_of_str;
char *r;
#ifdef IGNORE_OPCODE_CASE
#ifndef IGNORE_OPCODE_CASE
newname = original_case_string;
#endif
copy_of_str = newname;

View file

@ -1,3 +1,11 @@
2004-04-30 Nick Clifton <nickc@redhat.com>
* gas/arm/reg-alias.s: New file: Test case sensitive register
aliases.
* gas/arm/reg-alias.d: New file: Expected test output.
* gas/arm/arm.exp: Run reg-alias test.
Arrange tests in a more orderly fashion.
2004-04-30 Ben Elliston <bje@au.ibm.com>
* gas/ppc/power4.s: Add dcbz and dcbzl test cases.

View file

@ -28,66 +28,44 @@ if {[istarget *arm*-*-*] || [istarget "xscale-*-*"]} then {
run_dump_test "copro"
}
run_dump_test "armv1"
run_errors_test "armv1-bad" "-mcpu=arm7m" "ARM v1 errors"
gas_test "arm3.s" "-mcpu=arm3" $stdoptlist "Arm 3 instructions"
gas_test "arm6.s" "-mcpu=arm6" $stdoptlist "Arm 6 instructions"
gas_test "arm7dm.s" "-mcpu=arm7dm" $stdoptlist "Arm 7DM instructions"
gas_test "arch4t.s" "-march=armv4t" $stdoptlist "Arm architecture 4t instructions"
gas_test "immed.s" "" $stdoptlist "immediate expressions"
gas_test "float.s" "-mcpu=arm7tdmi -mfpu=fpa" $stdoptlist "Core floating point instructions"
gas_test "offset.s" "" $stdoptlist "OFFSET_IMM regression"
run_dump_test "armv1"
run_dump_test "arch5tej"
run_dump_test "fpa-monadic"
run_dump_test "fpa-dyadic"
run_dump_test "fpa-mem"
run_dump_test "vfp1xD"
run_dump_test "vfp1"
run_dump_test "vfp2"
run_dump_test "xscale"
run_dump_test "adrl"
run_dump_test "reg-alias"
run_dump_test "maverick"
run_dump_test "archv6"
run_dump_test "thumbv6"
run_errors_test "vfp-bad" "-mfpu=vfp" "VFP errors"
run_errors_test "req" "-mcpu=arm7m" ".req errors"
run_errors_test "armv1-bad" "-mcpu=arm7m" "ARM v1 errors"
run_errors_test "r15-bad" "" "Invalid use of r15 errors"
run_errors_test "undefined" "" "Undefined local label error"
if {[istarget *-*-elf*] || [istarget *-*-linux*]} then {
run_dump_test "pic"
run_dump_test "mapping"
}
if {! [istarget arm*-*-aout] && ![istarget arm-*-pe]} then {
# The arm-aout port does not support Thumb mode.
gas_test "thumb.s" "-mcpu=arm7t" $stdoptlist "Thumb instructions"
}
gas_test "arch4t.s" "-march=armv4t" $stdoptlist "Arm architecture 4t instructions"
run_dump_test "arch5tej"
gas_test "immed.s" "" $stdoptlist "immediate expressions"
gas_test "float.s" "-mcpu=arm7tdmi -mfpu=fpa" $stdoptlist "Core floating point instructions"
run_dump_test "fpa-monadic"
run_dump_test "fpa-dyadic"
run_dump_test "fpa-mem"
run_dump_test "vfp1xD"
run_dump_test "vfp1"
run_dump_test "vfp2"
run_errors_test "vfp-bad" "-mfpu=vfp" "VFP errors"
run_dump_test "xscale"
run_dump_test "adrl"
run_errors_test "req" "-mcpu=arm7m" ".req errors"
run_dump_test "maverick"
run_dump_test "archv6"
run_dump_test "thumbv6"
run_errors_test "r15-bad" "" "Invalid use of r15 errors"
if {[istarget *-*-elf*] || [istarget *-*-linux*]} then {
run_dump_test "pic"
run_dump_test "mapping"
}
gas_test "offset.s" "" $stdoptlist "OFFSET_IMM regression"
run_errors_test "undefined" "" "Undefined local label error"
}
# Not all arm targets are bi-endian, so only run this test on ones

View file

@ -0,0 +1,10 @@
#objdump: -dr --prefix-addresses --show-raw-insn
#name: Case Sensitive Register Aliases
.*: +file format .*arm.*
Disassembly of section .text:
0+0 <.*> ee060f10 mcr 15, 0, r0, cr6, cr0, \{0\}
0+4 <.*> e1a00000 nop \(mov r0,r0\)
0+8 <.*> e1a00000 nop \(mov r0,r0\)
0+c <.*> e1a00000 nop \(mov r0,r0\)

View file

@ -0,0 +1,14 @@
@ Test case-sensitive register aliases
.text
.global fred
fred:
MMUPurgeTLBReg .req c6
MMUCP .req p15
MCR MMUCP, 0, a1, MMUPurgeTLBReg, c0, 0
@ The NOPs are here for ports like arm-aout which will pad
@ the .text section to a 16 byte boundary.
nop
nop
nop