From: Richard Earnshaw Date: Mon, 1 Sep 2025 15:52:54 +0000 (+0100) Subject: arm: rework fix for PR gas/15273 X-Git-Tag: gdb-17-branchpoint~90 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8132afd2de85bddf4a9ec56a693b631751495c5b;p=thirdparty%2Fbinutils-gdb.git arm: rework fix for PR gas/15273 PR gas/15273 The apparent intent of the original code added in https://sourceware.org/pipermail/binutils/2012-August/078044.html was to emit an error message if the instruction was obsolete and only to emit a deprecation warning if an error hadn't already been emitted. However, when the insn has not yet been obsoleted, the code would generate a warning with a (null) message body if the selected CPU was 'any'. The previous fix for this bug was to remove the support for the obsoletion message entirely, which was probably the wrong approach. A better fix is to only call check_obsolete if obs_msg is non-null; we can use this as a proxy for the instruction not being obsolete on any architecture. While we are here, fix an incorrect capitalization in the deprecation message ('This' to 'this'). --- diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 9b557d97f11..a58949f10ef 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -9455,7 +9455,7 @@ struct deprecated_coproc_regs_s }; #define DEPR_ACCESS_V8 \ - N_("This coprocessor register access is deprecated in ARMv8") + N_("this coprocessor register access is deprecated in ARMv8") /* Table of all deprecated coprocessor registers. */ static struct deprecated_coproc_regs_s deprecated_coproc_regs[] = @@ -9517,7 +9517,7 @@ do_co_reg (void) && inst.operands[4].reg == r->crm && inst.operands[5].imm == r->opc2) { - if (! ARM_CPU_IS_ANY (cpu_variant) + if (!(r->obs_msg && check_obsolete (&r->obsoleted, r->obs_msg)) && warn_on_deprecated && ARM_CPU_HAS_FEATURE (cpu_variant, r->deprecated)) as_tsktsk ("%s", r->dep_msg); diff --git a/gas/testsuite/gas/arm/armv8-ar-bad.l b/gas/testsuite/gas/arm/armv8-ar-bad.l index c7ed4171231..57e375c9913 100644 --- a/gas/testsuite/gas/arm/armv8-ar-bad.l +++ b/gas/testsuite/gas/arm/armv8-ar-bad.l @@ -1,10 +1,10 @@ .*: Assembler messages: .*:6: Error: swp{b} use is obsoleted for ARMv8 and later -.*:9: Warning: This coprocessor register access is deprecated in ARMv8 -.*:10: Warning: This coprocessor register access is deprecated in ARMv8 -.*:11: Warning: This coprocessor register access is deprecated in ARMv8 -.*:12: Warning: This coprocessor register access is deprecated in ARMv8 -.*:13: Warning: This coprocessor register access is deprecated in ARMv8 +.*:9: Warning: this coprocessor register access is deprecated in ARMv8 +.*:10: Warning: this coprocessor register access is deprecated in ARMv8 +.*:11: Warning: this coprocessor register access is deprecated in ARMv8 +.*:12: Warning: this coprocessor register access is deprecated in ARMv8 +.*:13: Warning: this coprocessor register access is deprecated in ARMv8 .*:16: Warning: setend use is deprecated for ARMv8 .*:19: Warning: setend use is deprecated for ARMv8 .*:23: Error: immediate value out of range -- `hlt 0x10000'