forked from openwrt/openwrt
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Backport an upstream patch that adds support for ELFv2 ABI on big endian ppc64. As musl only supports ELFv2 ABI on ppc64 regardless of endianness, this is required to be able to build OpenSSL for ppc64be. Modify our targets patch to add linux-powerpc64-openwrt, which will use the linux64v2 perlasm scheme. This will probably break the combination ppc64 with glibc, but as we really only want to support musl, this shouldn't be a problem. Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be> Acked-by: Rui Salvaterra <rsalvaterra@gmail.com>
- Loading branch information
Showing
3 changed files
with
69 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
63 changes: 63 additions & 0 deletions
63
package/libs/openssl/patches/001-crypto-perlasm-ppc-xlate.pl-add-linux64v2-flavour.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
From 34ab13b7d8e3e723adb60be8142e38b7c9cd382a Mon Sep 17 00:00:00 2001 | ||
From: Andy Polyakov <appro@openssl.org> | ||
Date: Sun, 5 May 2019 18:25:50 +0200 | ||
Subject: [PATCH] crypto/perlasm/ppc-xlate.pl: add linux64v2 flavour | ||
MIME-Version: 1.0 | ||
Content-Type: text/plain; charset=UTF-8 | ||
Content-Transfer-Encoding: 8bit | ||
|
||
This is a big endian ELFv2 configuration. ELFv2 was already being | ||
used for little endian, and big endian was traditionally ELFv1 | ||
but there are practical configurations that use ELFv2 with big | ||
endian nowadays (Adélie Linux, Void Linux, possibly Gentoo, etc.) | ||
|
||
Reviewed-by: Paul Dale <paul.dale@oracle.com> | ||
Reviewed-by: Richard Levitte <levitte@openssl.org> | ||
(Merged from https://github.com/openssl/openssl/pull/8883) | ||
--- | ||
crypto/perlasm/ppc-xlate.pl | 8 ++++---- | ||
1 file changed, 4 insertions(+), 4 deletions(-) | ||
|
||
diff --git a/crypto/perlasm/ppc-xlate.pl b/crypto/perlasm/ppc-xlate.pl | ||
index e52f2f6ea6..5fcd0526df 100755 | ||
--- a/crypto/perlasm/ppc-xlate.pl | ||
+++ b/crypto/perlasm/ppc-xlate.pl | ||
@@ -49,7 +49,7 @@ my $globl = sub { | ||
/osx/ && do { $name = "_$name"; | ||
last; | ||
}; | ||
- /linux.*(32|64le)/ | ||
+ /linux.*(32|64(le|v2))/ | ||
&& do { $ret .= ".globl $name"; | ||
if (!$$type) { | ||
$ret .= "\n.type $name,\@function"; | ||
@@ -80,7 +80,7 @@ my $globl = sub { | ||
}; | ||
my $text = sub { | ||
my $ret = ($flavour =~ /aix/) ? ".csect\t.text[PR],7" : ".text"; | ||
- $ret = ".abiversion 2\n".$ret if ($flavour =~ /linux.*64le/); | ||
+ $ret = ".abiversion 2\n".$ret if ($flavour =~ /linux.*64(le|v2)/); | ||
$ret; | ||
}; | ||
my $machine = sub { | ||
@@ -186,7 +186,7 @@ my $vmr = sub { | ||
|
||
# Some ABIs specify vrsave, special-purpose register #256, as reserved | ||
# for system use. | ||
-my $no_vrsave = ($flavour =~ /aix|linux64le/); | ||
+my $no_vrsave = ($flavour =~ /aix|linux64(le|v2)/); | ||
my $mtspr = sub { | ||
my ($f,$idx,$ra) = @_; | ||
if ($idx == 256 && $no_vrsave) { | ||
@@ -320,7 +320,7 @@ while($line=<>) { | ||
if ($label) { | ||
my $xlated = ($GLOBALS{$label} or $label); | ||
print "$xlated:"; | ||
- if ($flavour =~ /linux.*64le/) { | ||
+ if ($flavour =~ /linux.*64(le|v2)/) { | ||
if ($TYPES{$label} =~ /function/) { | ||
printf "\n.localentry %s,0\n",$xlated; | ||
} | ||
-- | ||
2.31.1 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters