[PATCH 3/6] openssl: add ppc64 support
Adrian Schmutzler
mail at adrianschmutzler.de
Sun Aug 22 04:15:09 PDT 2021
Hi,
> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org]
> On Behalf Of Stijn Tintel
> Sent: Sonntag, 22. August 2021 01:15
> To: openwrt-devel at lists.openwrt.org
> Subject: [PATCH 3/6] openssl: add ppc64 support
>
> 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.
Looks like openssl still needs a PKG_RELEASE bump ...
Best
Adrian
>
> Signed-off-by: Stijn Tintel <stijn at linux-ipv6.be>
> ---
> ...m-ppc-xlate.pl-add-linux64v2-flavour.patch | 63 +++++++++++++++++++
> .../openssl/patches/110-openwrt_targets.patch | 6 +-
> 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100644
> package/libs/openssl/patches/001-crypto-perlasm-ppc-xlate.pl-add-
> linux64v2-flavour.patch
>
> diff --git a/package/libs/openssl/patches/001-crypto-perlasm-ppc-xlate.pl-
> add-linux64v2-flavour.patch b/package/libs/openssl/patches/001-crypto-
> perlasm-ppc-xlate.pl-add-linux64v2-flavour.patch
> new file mode 100644
> index 0000000000..bdc0509f8c
> --- /dev/null
> +++ b/package/libs/openssl/patches/001-crypto-perlasm-ppc-xlate.pl-add-l
> +++ inux64v2-flavour.patch
> @@ -0,0 +1,63 @@
> +From 34ab13b7d8e3e723adb60be8142e38b7c9cd382a Mon Sep 17 00:00:00
> 2001
> +From: Andy Polyakov <appro at 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 at oracle.com>
> +Reviewed-by: Richard Levitte <levitte at 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
> +
> diff --git a/package/libs/openssl/patches/110-openwrt_targets.patch
> b/package/libs/openssl/patches/110-openwrt_targets.patch
> index d0530b4661..828c14d21d 100644
> --- a/package/libs/openssl/patches/110-openwrt_targets.patch
> +++ b/package/libs/openssl/patches/110-openwrt_targets.patch
> @@ -12,7 +12,7 @@ new file mode 100644
> index 0000000000..86a86d31e4
> --- /dev/null
> +++ b/Configurations/25-openwrt.conf
> -@@ -0,0 +1,48 @@
> +@@ -0,0 +1,52 @@
> +## Openwrt "CONFIG_ARCH" matching targets.
> +
> +# The targets need to end in '-openwrt' for the AFALG patch to work @@ -
> 52,6 +52,10 @@ index 0000000000..86a86d31e4
> + "linux-powerpc-openwrt" => {
> + inherit_from => [ "linux-ppc", "openwrt" ],
> + },
> ++ "linux-powerpc64-openwrt" => {
> ++ inherit_from => [ "linux-ppc64", "openwrt" ],
> ++ perlasm_scheme => "linux64v2",
> ++ },
> + "linux-x86_64-openwrt" => {
> + inherit_from => [ "linux-x86_64", "openwrt" ],
> + },
> --
> 2.31.1
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list