Fix handling of the "0:" label in arm-xlate.pl
authorTom Cosgrove <tom.cosgrove@arm.com>
Thu, 3 Aug 2023 18:43:17 +0000 (19:43 +0100)
committerTomas Mraz <tomas@openssl.org>
Tue, 8 Aug 2023 20:36:35 +0000 (22:36 +0200)
When $label == "0", $label is not truthy, so `if ($label)` thinks there isn't
a label. Correct this by looking at the result of the s/// command.

Verified that there are no changes in the .S files created during a normal
build, and that the "0:" labels appear in the translation given in the error
report (and they are the only difference in the before and after output).

Fixes #21647

Change-Id: I5f2440100c62360bf4bdb7c7ece8dddd32553c79

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21653)

(cherry picked from commit 9607f5ccf285ac9988a86f95c5ad9f92b556a843)

crypto/perlasm/arm-xlate.pl

index a90885905c0fdbf7c4f1b830d644181883720c99..57b75c4e5dad68456a60304cf91e824fa8941a31 100755 (executable)
@@ -159,9 +159,8 @@ while(my $line=<>) {
     }
 
     {
-       $line =~ s|(^[\.\w]+)\:\s*||;
-       my $label = $1;
-       if ($label) {
+       if ($line =~ s|(^[\.\w]+)\:\s*||) {
+           my $label = $1;
            printf "%s:",($GLOBALS{$label} or $label);
        }
     }