summaryrefslogtreecommitdiff
path: root/user
diff options
context:
space:
mode:
Diffstat (limited to 'user')
-rw-r--r--user/chntpw/APKBUILD40
-rw-r--r--user/chntpw/chntpw-080526-correct-test-for-failing-open-syscall.patch75
-rw-r--r--user/chntpw/chntpw-110511-detect-failure-to-write-key.patch19
-rw-r--r--user/chntpw/chntpw-110511-reged-no-deref-null.patch15
-rw-r--r--user/chntpw/chntpw-110511-robustness.patch39
-rw-r--r--user/chntpw/chntpw-140201-get_abs_path.patch10
-rw-r--r--user/chntpw/getopt-signed-char-return.patch37
-rw-r--r--user/chntpw/stdint.patch11
-rw-r--r--user/ckbcomp/APKBUILD22
-rw-r--r--user/clisp/APKBUILD44
-rw-r--r--user/clisp/no-page.h.patch12
-rw-r--r--user/dovecot/APKBUILD286
-rw-r--r--user/dovecot/default-config.patch46
-rw-r--r--user/dovecot/dovecot.initd40
-rw-r--r--user/dovecot/dovecot.logrotate12
-rw-r--r--user/dovecot/dovecot.post-install45
-rw-r--r--user/dovecot/dovecot.post-upgrade7
-rw-r--r--user/dovecot/dovecot.pre-install8
-rw-r--r--user/dovecot/skip-iconv-check.patch11
-rw-r--r--user/dovecot/split-protocols.patch30
-rw-r--r--user/dovecot/ssl-paths.patch13
-rw-r--r--user/efibootmgr/APKBUILD2
-rw-r--r--user/efivar/APKBUILD2
-rw-r--r--user/elixir/APKBUILD28
-rw-r--r--user/eudev/APKBUILD6
-rw-r--r--user/f2fs-tools/APKBUILD34
-rw-r--r--user/ffmpeg/APKBUILD11
-rw-r--r--user/ffmpeg/CVE-2019-13312.patch30
-rw-r--r--user/ffmpeg/CVE-2020-12284.patch32
-rw-r--r--user/firefox-esr/APKBUILD24
-rw-r--r--user/firefox-esr/rust-config.patch20
-rw-r--r--user/firefox-esr/seccomp-membarrier.patch12
-rw-r--r--user/firefox-esr/seccomp-musl.patch49
-rw-r--r--user/firefox-esr/seccomp-time64.patch112
-rw-r--r--user/glfw/APKBUILD48
-rw-r--r--user/horizon/APKBUILD136
-rw-r--r--user/horizon/fix-qt-runner.patch25
-rw-r--r--user/libffcall/APKBUILD42
-rw-r--r--user/libffcall/ppc64.patch1685
-rw-r--r--user/libsigsegv/APKBUILD38
-rw-r--r--user/libsigsegv/musl-ppc32.patch10
-rw-r--r--user/mtools/APKBUILD32
-rw-r--r--user/net-snmp/APKBUILD4
-rw-r--r--user/netqmail/0005-CVE-2005-1513.patch19
-rw-r--r--user/netqmail/APKBUILD4
-rw-r--r--user/thunderbird/APKBUILD12
-rw-r--r--user/thunderbird/rust-config.patch20
-rw-r--r--user/ttf-jetbrains-mono/APKBUILD25
-rw-r--r--user/wimlib/APKBUILD29
-rw-r--r--user/wireguard-module/APKBUILD6
-rw-r--r--user/wireguard-tools/APKBUILD6
51 files changed, 3248 insertions, 77 deletions
diff --git a/user/chntpw/APKBUILD b/user/chntpw/APKBUILD
new file mode 100644
index 000000000..a62408ce0
--- /dev/null
+++ b/user/chntpw/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: CyberLeo <cyberleo@cyberleo.net>
+# Maintainer: CyberLeo <cyberleo@cyberleo.net>
+pkgname=chntpw
+pkgver=140201
+pkgrel=0
+pkgdesc="Change passwords in Windows SAM files"
+url="https://pogostick.net/~pnh/ntpasswd/"
+arch="all"
+options="!check" # No test suite.
+license="(LGPL-2.1-only AND GPL-2.0-only)"
+depends=""
+makedepends=""
+source="https://pogostick.net/~pnh/ntpasswd/$pkgname-source-$pkgver.zip
+ stdint.patch
+ chntpw-080526-correct-test-for-failing-open-syscall.patch
+ chntpw-110511-detect-failure-to-write-key.patch
+ chntpw-110511-reged-no-deref-null.patch
+ chntpw-110511-robustness.patch
+ chntpw-140201-get_abs_path.patch
+ getopt-signed-char-return.patch
+ "
+
+build() {
+ make CC="${CC:-gcc}" CFLAGS="$CFLAGS" \
+ chntpw cpnt reged
+}
+
+package() {
+ install -d "$pkgdir"/usr/bin
+ install chntpw cpnt reged "$pkgdir"/usr/bin/
+}
+
+sha512sums="a26d747f6e077d1bb3e9b8077781f8c37dd978e07b7426495862f15c9004572b706c34736fc4d1ed8856b1a43335d726b4d87c688f7f9a11fd6cc3a74d71a7fa chntpw-source-140201.zip
+3ed747119d125b3e4dc8dbb2a697d411ef2f4403ec84c60177d8e35389bc695bb0c65f7aa4314ca320ffceec87e60e2a0c81d52544b90463fe23aa7d4a50df67 stdint.patch
+1332407858eb20e0f1304472bc458789ef78638059137b91ff0b7bac9619740e8a608aace0330ace363853b5c02642fdbbc66bc47dac19f6807dae57cdaca4ca chntpw-080526-correct-test-for-failing-open-syscall.patch
+a570451f52943a2ccdced349c5fe4e82e1a338dd6d0067ddaf18dc328b2c3ee3976d08827eee866b4654ccbda93ad95dcbabaddd0b6487a1e4112b66fc63bde1 chntpw-110511-detect-failure-to-write-key.patch
+c61ea69ea1f039e470f501fddd1d3674ee7427e9084361a1aba03402d302a07efd1a2630e16f479bd3cef13b17e85c14cbfff53cb33bccb470465276b1b7ac22 chntpw-110511-reged-no-deref-null.patch
+bcc314545272b5be04612e435a2f9dd13cbf065cfbd80aed2ed57147ee9e73b2478cd18e95cbaa7ad3b5dfcf4788a3026b5ddd767f89ea9c80ba7a2efc7ea8c4 chntpw-110511-robustness.patch
+1bb5939d2cfd3718b9e630998b250c3c37d50d5769463f4f8456ede9fa4521e1bf9d9f05986883df36418d91bef591b34a81cd36bfacca053160e4d95c03cb4b chntpw-140201-get_abs_path.patch
+85bbe9c7f21362cdff6becd94fe402d051a770105ec2eeb61e1936693e0a39ee03b6e971843c251f7768499444711392d966227f6126c328f7f58055cafe38d7 getopt-signed-char-return.patch"
diff --git a/user/chntpw/chntpw-080526-correct-test-for-failing-open-syscall.patch b/user/chntpw/chntpw-080526-correct-test-for-failing-open-syscall.patch
new file mode 100644
index 000000000..3c68146b0
--- /dev/null
+++ b/user/chntpw/chntpw-080526-correct-test-for-failing-open-syscall.patch
@@ -0,0 +1,75 @@
+From jim@meyering.net Mon Jul 20 20:05:55 2009
+Return-Path: jim@meyering.net
+X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on amd.home.annexia.org
+X-Spam-Level:
+X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,
+ UNPARSEABLE_RELAY autolearn=ham version=3.2.5
+Received: from mail.corp.redhat.com [10.5.5.51]
+ by amd.home.annexia.org with IMAP (fetchmail-6.3.8)
+ for <rjones@localhost> (single-drop); Mon, 20 Jul 2009 20:05:55 +0100 (BST)
+Received: from zmta03.collab.prod.int.phx2.redhat.com (LHLO
+ zmta03.collab.prod.int.phx2.redhat.com) (10.5.5.33) by
+ mail06.corp.redhat.com with LMTP; Mon, 20 Jul 2009 15:05:47 -0400 (EDT)
+Received: from localhost (localhost.localdomain [127.0.0.1])
+ by zmta03.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 2C1134E4EB
+ for <rjones@redhat.com>; Mon, 20 Jul 2009 15:05:47 -0400 (EDT)
+Received: from zmta03.collab.prod.int.phx2.redhat.com ([127.0.0.1])
+ by localhost (zmta03.collab.prod.int.phx2.redhat.com [127.0.0.1]) (amavisd-new, port 10024)
+ with ESMTP id a7N9dvNRkYQB for <rjones@redhat.com>;
+ Mon, 20 Jul 2009 15:05:47 -0400 (EDT)
+Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26])
+ by zmta03.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 034384E4D6
+ for <rjones@mail.corp.redhat.com>; Mon, 20 Jul 2009 15:05:46 -0400 (EDT)
+Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199])
+ by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n6KJ5kIt032703
+ for <rjones@int-mx2.corp.redhat.com>; Mon, 20 Jul 2009 15:05:46 -0400
+Received: from mx.meyering.net (sebastian-int.corp.redhat.com [172.16.52.221])
+ by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n6KJ5jf3021050
+ for <rjones@redhat.com>; Mon, 20 Jul 2009 15:05:45 -0400
+Received: by rho.meyering.net (Acme Bit-Twister, from userid 1000)
+ id D674638154; Mon, 20 Jul 2009 21:05:44 +0200 (CEST)
+From: Jim Meyering <jim@meyering.net>
+To: "Richard W. M. Jones" <rjones@redhat.com>
+Subject: chntpw [PATCH] correct test for failing "open" syscall
+Date: Mon, 20 Jul 2009 21:05:44 +0200
+Message-ID: <878wij899z.fsf@meyering.net>
+MIME-Version: 1.0
+Content-Type: text/plain; charset=us-ascii
+X-Scanned-By: MIMEDefang 2.58 on 172.16.27.26
+Status: RO
+Content-Length: 1103
+Lines: 33
+
+This one is weird.
+It must be code that is never exercised,
+since the existing code is totally bogus.
+The condition, !open(...), will almost always be true.
+(sole exception is when starting a program with stdin
+initially closed)
+
+>From bc4cddb06cf13c189fbdc93e6962cad072779097 Mon Sep 17 00:00:00 2001
+From: Jim Meyering <meyering@redhat.com>
+Date: Mon, 20 Jul 2009 14:59:19 -0400
+Subject: [PATCH] correct test for failing "open" syscall
+
+* ntreg.c (writeHive): Test open() < 0, not !open().
+---
+ ntreg.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/ntreg.c b/ntreg.c
+index be6b680..21cd3e3 100644
+--- a/ntreg.c
++++ b/ntreg.c
+@@ -2765,7 +2765,7 @@ int writeHive(struct hive *hdesc)
+ if ( !(hdesc->state & HMODE_DIRTY)) return(0);
+
+ if ( !(hdesc->state & HMODE_OPEN)) { /* File has been closed */
+- if (!(hdesc->filedesc = open(hdesc->filename,O_RDWR))) {
++ if ((hdesc->filedesc = open(hdesc->filename,O_RDWR)) < 0) {
+ fprintf(stderr,"writeHive: open(%s) failed: %s, FILE NOT WRITTEN!\n",hdesc->filename,strerror(errno));
+ return(1);
+ }
+--
+1.6.2.5
+
diff --git a/user/chntpw/chntpw-110511-detect-failure-to-write-key.patch b/user/chntpw/chntpw-110511-detect-failure-to-write-key.patch
new file mode 100644
index 000000000..818639d83
--- /dev/null
+++ b/user/chntpw/chntpw-110511-detect-failure-to-write-key.patch
@@ -0,0 +1,19 @@
+diff -ur chntpw-110511.orig/ntreg.c chntpw-110511/ntreg.c
+--- chntpw-110511.orig/ntreg.c 2011-05-11 12:33:56.000000000 -0700
++++ chntpw-110511/ntreg.c 2011-11-01 13:45:02.550421729 -0700
+@@ -3389,7 +3389,14 @@
+
+ fprintf(file,"\r\n"); /* Must end file with an empty line, windows does that */
+
+- fclose(file);
++ if (ferror (file)) {
++ printf("failed to write file '%s'\n", filename);
++ fclose (file);
++ return;
++ }
++ if (fclose(file))
++ printf("failed to write file '%s': %s\n", filename,
++ strerror(errno));
+ }
+
+ /* ================================================================ */
diff --git a/user/chntpw/chntpw-110511-reged-no-deref-null.patch b/user/chntpw/chntpw-110511-reged-no-deref-null.patch
new file mode 100644
index 000000000..0193cd493
--- /dev/null
+++ b/user/chntpw/chntpw-110511-reged-no-deref-null.patch
@@ -0,0 +1,15 @@
+diff -ur chntpw-110511.orig/reged.c chntpw-110511/reged.c
+--- chntpw-110511.orig/reged.c 2011-05-11 12:33:56.000000000 -0700
++++ chntpw-110511/reged.c 2011-11-01 13:46:55.569625286 -0700
+@@ -167,6 +167,11 @@
+
+ if (edit) { /* Call editor. Rest of arguments are considered hives to load */
+ hivename = argv[optind+no_hives];
++ if (!hivename) {
++ fprintf(stderr,"with -e you must specify at least one hive file name\n");
++ usage();
++ exit(1);
++ }
+ do {
+ if (!(hive[no_hives] = openHive(hivename,
+ HMODE_RW|mode))) {
diff --git a/user/chntpw/chntpw-110511-robustness.patch b/user/chntpw/chntpw-110511-robustness.patch
new file mode 100644
index 000000000..ea2363f34
--- /dev/null
+++ b/user/chntpw/chntpw-110511-robustness.patch
@@ -0,0 +1,39 @@
+--- chntpw-110511.orig/ntreg.c 2011-05-11 12:33:56.000000000 -0700
++++ chntpw-110511/ntreg.c 2011-12-18 17:09:06.290818997 -0800
+@@ -190,14 +190,18 @@
+
+ int fmyinput(char *prmpt, char *ibuf, int maxlen)
+ {
+-
++ int len;
+ printf("%s",prmpt);
+
+ fgets(ibuf,maxlen+1,stdin);
++ len = strlen(ibuf);
+
+- ibuf[strlen(ibuf)-1] = 0;
++ if (len) {
++ ibuf[len-1] = 0;
++ --len;
++ }
+
+- return(strlen(ibuf));
++ return len;
+ }
+
+ /* Print len number of hexbytes */
+@@ -4119,6 +4123,14 @@
+ closeHive(hdesc);
+ return(NULL);
+ }
++
++ if (r < sizeof (*hdesc)) {
++ fprintf(stderr,
++ "file is too small; got %d bytes while expecting %d or more\n",
++ r, sizeof (*hdesc));
++ closeHive(hdesc);
++ return(NULL);
++ }
+
+ /* Now run through file, tallying all pages */
+ /* NOTE/KLUDGE: Assume first page starts at offset 0x1000 */
diff --git a/user/chntpw/chntpw-140201-get_abs_path.patch b/user/chntpw/chntpw-140201-get_abs_path.patch
new file mode 100644
index 000000000..c9f1a3dec
--- /dev/null
+++ b/user/chntpw/chntpw-140201-get_abs_path.patch
@@ -0,0 +1,10 @@
+--- chntpw-140201/ntreg.c.orig 2014-02-01 08:54:37.000000000 -0800
++++ chntpw-140201/ntreg.c 2018-07-02 16:10:39.625152640 -0700
+@@ -1511,6 +1511,7 @@
+ }
+
+ strncpy(tmp,path,ABSPATHLEN-1);
++ tmp[ABSPATHLEN-1] = '\0';
+
+ if (key->type & 0x20)
+ keyname = mem_str(key->keyname, key->len_name);
diff --git a/user/chntpw/getopt-signed-char-return.patch b/user/chntpw/getopt-signed-char-return.patch
new file mode 100644
index 000000000..6dc78c624
--- /dev/null
+++ b/user/chntpw/getopt-signed-char-return.patch
@@ -0,0 +1,37 @@
+diff -ur chntpw-140201.orig/chntpw.c chntpw-140201/chntpw.c
+--- chntpw-140201.orig/chntpw.c 2020-06-08 14:21:55.839494887 +0000
++++ chntpw-140201/chntpw.c 2020-06-08 14:22:29.922115922 +0000
+@@ -1026,7 +1026,8 @@
+ int mode = HMODE_INFO;
+ extern int /* opterr, */ optind;
+ extern char* optarg;
+- char *filename,c;
++ char *filename;
++ signed char c;
+ char *who = "Administrator";
+ char iwho[100];
+ FILE *ch; /* Write out names of touched files to this */
+diff -ur chntpw-140201.orig/sampasswd.c chntpw-140201/sampasswd.c
+--- chntpw-140201.orig/sampasswd.c 2020-06-08 14:21:49.661563576 +0000
++++ chntpw-140201/sampasswd.c 2020-06-08 14:22:21.009215027 +0000
+@@ -140,7 +140,7 @@
+ int first = 0;
+ int ret, wret, il;
+ char *hivename;
+- char c;
++ signed char c;
+ char *usr = NULL;
+
+ char *options = "rlHu:vNEthaf";
+diff -ur chntpw-140201.orig/samusrgrp.c chntpw-140201/samusrgrp.c
+--- chntpw-140201.orig/samusrgrp.c 2020-06-08 14:21:47.330589493 +0000
++++ chntpw-140201/samusrgrp.c 2020-06-08 14:22:19.218234941 +0000
+@@ -176,7 +176,7 @@
+ int human = 0;
+ int ret, wret, il;
+ char *hivename;
+- char c;
++ signed char c;
+ char *usr = NULL;
+ char *grp = NULL;
+
diff --git a/user/chntpw/stdint.patch b/user/chntpw/stdint.patch
new file mode 100644
index 000000000..841e25ed7
--- /dev/null
+++ b/user/chntpw/stdint.patch
@@ -0,0 +1,11 @@
+--- ./ntreg.h.orig
++++ ./ntreg.h
+@@ -25,6 +25,8 @@
+ #ifndef _INCLUDE_NTREG_H
+ #define _INCLUDE_NTREG_H 1
+
++#include <stdint.h>
++
+ #define SZ_MAX 4096 /* Max unicode strlen before we truncate */
+
+ #define KEY_ROOT 0x2c /* Type ID of ROOT key node */
diff --git a/user/ckbcomp/APKBUILD b/user/ckbcomp/APKBUILD
new file mode 100644
index 000000000..8f4de4ff3
--- /dev/null
+++ b/user/ckbcomp/APKBUILD
@@ -0,0 +1,22 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=ckbcomp
+pkgver=1.195
+pkgrel=0
+pkgdesc="XKB keyboard layout translation utility"
+url="https://salsa.debian.org/installer-team/console-setup"
+arch="noarch"
+options="!check" # No test suite.
+license="GPL-2.0+"
+depends="perl"
+makedepends=""
+subpackages="$pkgname-doc"
+source="http://ftp.de.debian.org/debian/pool/main/c/console-setup/console-setup_$pkgver.tar.xz"
+builddir="$srcdir/console-setup"
+
+package() {
+ install -Dm755 -t "$pkgdir"/usr/bin Keyboard/ckbcomp
+ install -Dm644 -t "$pkgdir"/usr/share/man/man1 man/ckbcomp.1
+}
+
+sha512sums="f9ee8df45cfb78dea12b1ba3020e32f245dd940bc1d22801849f673f4448853c0ebadb6944a92b462e3e56c59ee13fd6d2130c260a1a406e1bb1c72e9902c04d console-setup_1.195.tar.xz"
diff --git a/user/clisp/APKBUILD b/user/clisp/APKBUILD
new file mode 100644
index 000000000..e4ce5999d
--- /dev/null
+++ b/user/clisp/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: Soren Tempel <soeren+alpine@soeren-tempel.net>
+# Contrubutor: Carlo Landmeter <clandmeter@gmail.com>
+# Contributor: Lee Starnes <lee@canned-death.us>
+# Maintainer: Lee Starnes <lee@canned-death.us>
+pkgname=clisp
+pkgver=2.49
+pkgrel=0
+pkgdesc="ANSI Common Lisp interpreter, compiler, and debugger"
+url="https://clisp.sourceforge.io"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+depends_dev="libsigsegv-dev libffcall-dev ncurses-dev"
+makedepends="$depends_dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2
+ no-page.h.patch"
+
+prepare() {
+ default_prepare
+ update_config_sub
+}
+
+build() {
+ ./configure \
+ --prefix=/usr \
+ --with-ffcall \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ "$builddir"
+ # Parallel builds fail
+ make -j1
+}
+
+check() {
+ make check
+}
+
+package() {
+ make -j1 DESTDIR="$pkgdir" install
+}
+
+sha512sums="eef66fc85199a2c283b616db61bf67ff103eeb0f19fa907da48994dc790b6f5f8d0c74fb3bd723c6b827c0ff3cfd89fa6ba67934fc669ed5d5249044b5140d81 clisp-2.49.tar.bz2
+86273c5d5d05a8d41ab6311192e0c757d3f7fe4d78546590830aa00f8c2f170fcb08f66ea739ae8834cec00cdf0f6a20824eb6a3d0f6df97be405c26b1cc5d39 no-page.h.patch"
diff --git a/user/clisp/no-page.h.patch b/user/clisp/no-page.h.patch
new file mode 100644
index 000000000..aafb98a31
--- /dev/null
+++ b/user/clisp/no-page.h.patch
@@ -0,0 +1,12 @@
+--- a/src/unix.d
++++ b/src/unix.d
+@@ -135,9 +135,6 @@
+ #ifdef UNIX_AUX
+ #include <sys/mmu.h> /* for SHMLBA */
+ #endif
+- #if defined(UNIX_LINUX) && !defined(UNIX_GNU)
+- #include <asm/page.h> /* for SHMLBA on Linux 2.0 */
+- #endif
+ /* <sys/shm.h> declares shmget(), shmat(), shmdt(), shmctl() */
+ #endif
+ /* used by SPVW, STREAM */
diff --git a/user/dovecot/APKBUILD b/user/dovecot/APKBUILD
new file mode 100644
index 000000000..5af5254e1
--- /dev/null
+++ b/user/dovecot/APKBUILD
@@ -0,0 +1,286 @@
+# Contributor: Valery Kartel <valery.kartel@gmail.com>
+# Contributor: Lukasz Jendrysik <scadu@yandex.com>
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Lee Starnes <lee@canned-death.us>
+pkgname=dovecot
+pkgver=2.3.10.1
+_pkgvermajor=2.3
+pkgrel=0
+_pigeonholever=0.5.9
+_pigeonholevermajor=${_pigeonholever%.*}
+pkgdesc="IMAP and POP3 server"
+url="https://www.dovecot.org/"
+arch="all"
+options="libtool"
+license="LGPL-2.0+"
+depends="openssl"
+pkgusers="dovecot dovenull"
+pkggroups="dovecot dovenull"
+makedepends="
+ autoconf
+ automake
+ bzip2-dev
+ clucene-dev
+ expat-dev
+ krb5-dev
+ libcap-dev
+ openssl-dev
+ libtool
+ linux-headers
+ linux-pam-dev
+ mariadb-dev
+ openldap-dev
+ postgresql-dev
+ sqlite-dev
+ zlib-dev
+ libsodium-dev
+ "
+install="$pkgname.pre-install $pkgname.post-install $pkgname.post-upgrade"
+subpackages="
+ $pkgname-doc
+ $pkgname-dev
+ $pkgname-openrc
+ $pkgname-lmtpd
+ $pkgname-pop3d
+ $pkgname-submissiond
+ $pkgname-pigeonhole-plugin-ldap:_sieve_ldap
+ $pkgname-pigeonhole-plugin:_sieve
+ $pkgname-sql
+ $pkgname-pgsql
+ $pkgname-mysql
+ $pkgname-sqlite
+ $pkgname-gssapi
+ $pkgname-ldap
+ $pkgname-fts-solr:_fts_solr
+ $pkgname-fts-lucene:_fts_lucene
+ "
+source="https://www.dovecot.org/releases/$_pkgvermajor/dovecot-$pkgver.tar.gz
+ https://pigeonhole.dovecot.org/releases/$_pkgvermajor/$pkgname-$_pkgvermajor-pigeonhole-$_pigeonholever.tar.gz
+ skip-iconv-check.patch
+ split-protocols.patch
+ default-config.patch
+ ssl-paths.patch
+ dovecot.logrotate
+ dovecot.initd
+ "
+_builddir_pigeonhole="$srcdir/$pkgname-$_pkgvermajor-pigeonhole-$_pigeonholever"
+
+# secfixes:
+# 2.3.10.1-r0:
+# - CVE-2020-10957
+# - CVE-2020-10958
+# - CVE-2020-10967
+
+_configure() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --localstatedir=/var \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --disable-static \
+ "$@"
+}
+
+build() {
+ _configure \
+ --with-gssapi=plugin \
+ --with-ldap=plugin \
+ --with-sql=plugin \
+ --with-pam \
+ --with-mysql \
+ --with-sqlite \
+ --with-pgsql \
+ --with-solr \
+ --with-lucene \
+ --with-ssl=openssl \
+ --with-ssldir=/etc/ssl/dovecot \
+ --with-rundir=/run/dovecot
+ make
+
+ # Build pigeonhole plugin
+ cd "$_builddir_pigeonhole"
+ _configure \
+ --with-dovecot="$builddir" \
+ --with-ldap=plugin
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+
+ cd "$pkgdir"
+
+ install -d ./etc/ssl/dovecot
+ install -D -m 755 "$srcdir"/dovecot.initd ./etc/init.d/dovecot
+ install -D -m 644 "$srcdir"/dovecot.logrotate ./etc/logrotate.d/dovecot
+
+ # default config
+ rm ./etc/dovecot/*
+ rm ./usr/share/doc/dovecot/mkcert.sh
+ mv ./usr/share/doc/dovecot/dovecot-openssl.cnf ./etc/dovecot/
+ mv ./usr/share/doc/dovecot/example-config/dovecot* \
+ ./usr/share/doc/dovecot/example-config/conf.d \
+ ./etc/dovecot/
+ rm -fr ./usr/share/doc/dovecot/example-config
+
+ # Installing pigeonhole plugin.
+ cd "$_builddir_pigeonhole"
+ make install DESTDIR="$pkgdir"
+
+ # Moving config in the correct place
+ mv "$pkgdir"/usr/share/doc/dovecot/example-config/conf.d/* \
+ "$pkgdir"/etc/dovecot/conf.d
+
+ # Remove libtool archives. abuild doesn't remove them automatically even without options=libtool.
+ find "$pkgdir" -name '*.la' | xargs rm -f
+}
+
+dev() {
+ default_dev
+ mkdir -p "$subpkgdir"/usr/lib/dovecot
+ mv "$pkgdir"/usr/lib/dovecot/dovecot-config \
+ "$subpkgdir"/usr/lib/dovecot/
+}
+
+lmtpd() {
+ pkgdesc="$pkgdesc (LMTP server)"
+ _protocol lmtp
+}
+
+pop3d() {
+ pkgdesc="$pkgdesc (POP3 daemon)"
+ _protocol pop3
+}
+
+submissiond() {
+ pkgdesc="$pkgdesc (mail submission agent)"
+ _protocol submission
+}
+
+_protocol() {
+ depends="$pkgname=$pkgver-r$pkgrel"
+ _name="$1"
+ _protocolsd="$subpkgdir/usr/share/dovecot/protocols.d"
+
+ cd "$pkgdir"
+ _submv usr/libexec/dovecot/$_name*
+ _submv etc/dovecot/conf.d/*-$_name.conf
+
+ mkdir -p "$_protocolsd"
+ echo "protocols = \$protocols $_name" \
+ > "$_protocolsd"/${subpkgname#$pkgname-}.conf
+}
+
+_sieve() {
+ pkgdesc="Sieve and managesieve plugin for Dovecot"
+ depends="$pkgname=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*sieve_extprograms*')
+ _submv $(find usr/ -name '*sieve_imapsieve*')
+ _submv $(find usr/ -name '*sieve*')
+ _submv $(find usr/ -name '*pigeonhole*')
+ _submv $(find etc/dovecot/ -name '*sieve*')
+}
+
+_sieve_ldap() {
+ pkgdesc="Sieve and managesieve plugin for Dovecot (LDAP support)"
+ depends="$pkgname-pigeonhole-plugin=$pkgver-r$pkgrel $pkgname-ldap=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*_sieve_storage_ldap_*')
+}
+
+pgsql() {
+ pkgdesc="PostgreSQL driver for Dovecot"
+ depends="$pkgname-sql=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*_pgsql*')
+}
+
+mysql() {
+ pkgdesc="MySQL driver for Dovecot"
+ depends="$pkgname-sql=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*_mysql*')
+}
+
+sqlite() {
+ pkgdesc="SQLite driver for Dovecot"
+ depends="$pkgname-sql=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*_sqlite*')
+}
+
+gssapi() {
+ pkgdesc="GSSAPI auth plugin for Dovecot"
+ depends="$pkgname=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*_gssapi*')
+}
+
+ldap() {
+ pkgdesc="LDAP auth plugin for Dovecot"
+ depends="$pkgname=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*[_-]ldap*')
+ _submv $(find etc/dovecot/ -name '*-ldap.conf*')
+}
+
+sql() {
+ pkgdesc="SQL plugin for dovecot"
+ depends="$pkgname=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*-sql.*')
+ _submv $(find etc/dovecot/ -name '*-sql.conf*')
+}
+
+_fts_solr() {
+ pkgdesc="FTS-Solr plugin for dovecot"
+ depends="$pkgname=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*fts*solr*')
+}
+
+_fts_lucene() {
+ pkgdesc="FTS-Lucene plugin for dovecot"
+ depends="$pkgname=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*fts*lucene*')
+}
+
+_submv() {
+ while [ $# -gt 0 ]; do
+ _dir=${1%/*}
+ mkdir -p "$subpkgdir"/$_dir
+ mv "$pkgdir/$1" "$subpkgdir/$_dir/"
+ [ "$(ls -A $pkgdir/$_dir)" ] || rmdir "$pkgdir"/$_dir
+ shift
+ done
+}
+
+sha512sums="5c07436a3e861993f241caa2c60f035c533c5fceb5c8540c1717d31bedd54b82299f7ea11bfee12c72d4d33985d93a7130c4f56877864a7ad21cf7373a29cc06 dovecot-2.3.10.1.tar.gz
+1b8d2ac8d3985dde035fc45df519788a924ba971f3e39717f5196ea56a982d4156226586d0a964473525d086967883ea52f2e624e81f7035cb0952b76f2414d8 dovecot-2.3-pigeonhole-0.5.9.tar.gz
+fe4fbeaedb377d809f105d9dbaf7c1b961aa99f246b77189a73b491dc1ae0aa9c68678dde90420ec53ec877c08f735b42d23edb13117d7268420e001aa30967a skip-iconv-check.patch
+794875dbf0ded1e82c5c3823660cf6996a7920079149cd8eed54231a53580d931b966dfb17185ab65e565e108545ecf6591bae82f935ab1b6ff65bb8ee93d7d5 split-protocols.patch
+0d8f89c7ba6f884719b5f9fc89e8b2efbdc3e181de308abf9b1c1b0e42282f4df72c7bf62f574686967c10a8677356560c965713b9d146e2770aab17e95bcc07 default-config.patch
+5e68a0042a7c11b3d8c411fc157f5960e2e3305dac11f4b6b880441e2b4105769ddf6c56f67a995af6e1a58f3bfa2c199ea51318a3a0e37c7ef0ae6c4109b13f ssl-paths.patch
+9f19698ab45969f1f94dc4bddf6de59317daee93c9421c81f2dbf8a7efe6acf89689f1d30f60f536737bb9526c315215d2bce694db27e7b8d7896036a59c31f0 dovecot.logrotate
+d91951b81150d7a3ef6a674c0dc7b012f538164dac4b9d27a6801d31da6813b764995a438f69b6a680463e1b60a3b4f2959654f68e565fe116ea60312d5e5e70 dovecot.initd"
diff --git a/user/dovecot/default-config.patch b/user/dovecot/default-config.patch
new file mode 100644
index 000000000..0f8a7385a
--- /dev/null
+++ b/user/dovecot/default-config.patch
@@ -0,0 +1,46 @@
+--- a/doc/example-config/conf.d/10-mail.conf
++++ b/doc/example-config/conf.d/10-mail.conf
+@@ -208,10 +208,10 @@
+
+ # UNIX socket path to master authentication server to find users.
+ # This is used by imap (for shared users) and lda.
+-#auth_socket_path = /var/run/dovecot/auth-userdb
++#auth_socket_path = /run/dovecot/auth-userdb
+
+ # Directory where to look up mail plugins.
+-#mail_plugin_dir = /usr/lib/dovecot
++#mail_plugin_dir = /usr/lib/dovecot/modules
+
+ # Space separated list of plugins to load for all services. Plugins specific to
+ # IMAP, LDA, etc. are added to this list in their own .conf files.
+@@ -322,6 +322,7 @@ protocol !indexer-worker {
+ # them simultaneously.
+ #mbox_read_locks = fcntl
+ #mbox_write_locks = dotlock fcntl
++mbox_write_locks = fcntl
+
+ # Maximum time to wait for lock (all of them) before aborting.
+ #mbox_lock_timeout = 5 mins
+--- a/doc/example-config/conf.d/10-ssl.conf
++++ b/doc/example-config/conf.d/10-ssl.conf
+@@ -3,7 +3,10 @@
+ ##
+
+ # SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
+-#ssl = yes
++# Disable plain (unencrypted) POP3 and IMAP, allowed are only POP3+TLS,
++# POP3S, IMAP+TLS and IMAPS.
++# Plain IMAP and POP3 are still allowed for local connections.
++ssl = required
+
+ # PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
+ # dropping root privileges, so keep the key file unreadable by anyone but
+@@ -67,7 +67,7 @@
+ #ssl_curve_list =
+
+ # Prefer the server's order of ciphers over client's.
+-#ssl_prefer_server_ciphers = no
++ssl_prefer_server_ciphers = yes
+
+ # SSL crypto device to use, for valid values run "openssl engine"
+ #ssl_crypto_device =
diff --git a/user/dovecot/dovecot.initd b/user/dovecot/dovecot.initd
new file mode 100644
index 000000000..721f131ad
--- /dev/null
+++ b/user/dovecot/dovecot.initd
@@ -0,0 +1,40 @@
+#!/sbin/openrc-run
+
+[ "$RC_SVCNAME" != "${RC_SVCNAME##*.}" ] && instance=${RC_SVCNAME##*.}
+
+description="Secure POP3/IMAP server"
+
+cfgfile=/etc/dovecot/dovecot${instance:+.$instance}.conf
+pidfile=$(doveconf -c $cfgfile -h base_dir 2>/dev/null)/master.pid
+command=/usr/sbin/dovecot
+command_args=${instance:+-c $cfgfile}
+required_files="$cfgfile"
+extra_started_commands="reload reopen"
+description_reload="Reload configuration"
+description_reopen="Reopen log files"
+
+depend() {
+ need localmount net
+ before mta
+ after bootmisc firewall ldap mysql ntp-client ntpd postgresql saslauthd slapd
+ use logger
+}
+
+start_pre() {
+ ebegin
+ doveconf -c $cfgfile -x >/dev/null 2>&1 && \
+ checkpath --directory ${pidfile%/*}
+ eend $?
+}
+
+reload() {
+ ebegin "Reloading $RC_SVCNAME configs and restarting auth/login processes"
+ start_pre && start-stop-daemon --signal HUP --pidfile $pidfile
+ eend $?
+}
+
+reopen() {
+ ebegin "Reopening $RC_SVCNAME log files"
+ start-stop-daemon --signal USR1 --pidfile $pidfile
+ eend $?
+}
diff --git a/user/dovecot/dovecot.logrotate b/user/dovecot/dovecot.logrotate
new file mode 100644
index 000000000..b1a4087b4
--- /dev/null
+++ b/user/dovecot/dovecot.logrotate
@@ -0,0 +1,12 @@
+/var/log/dovecot*.log {
+ daily
+ missingok
+ copytruncate
+ rotate 7
+ compress
+ notifempty
+ sharedscripts
+ postrotate
+ /etc/init.d/dovecot --quiet --ifstarted reopen
+ endscript
+}
diff --git a/user/dovecot/dovecot.post-install b/user/dovecot/dovecot.post-install
new file mode 100644
index 000000000..eb70cdece
--- /dev/null
+++ b/user/dovecot/dovecot.post-install
@@ -0,0 +1,45 @@
+#!/bin/sh
+
+# based on doc/mkcert.sh
+
+# if ssl disabled then lets just exit
+doveconf ssl 2>/dev/null | grep -Eq '(yes|required)' || exit 0
+# Generates a self-signed certificate.
+
+OPENSSL=${OPENSSL-openssl}
+SSLDIR=${SSLDIR-/etc/ssl/dovecot}
+OPENSSLCONFIG=${OPENSSLCONFIG-/etc/dovecot/dovecot-openssl.cnf}
+
+CERTDIR=$SSLDIR
+KEYDIR=$SSLDIR
+
+# check if we have ssl_cert and/or key (for dovecot-2.0+)
+# try expand the cert/key itself and if found, lets just keep it
+[ -n "$(doveconf -x ssl_cert 2>/dev/null)" ] && exit 0
+[ -n "$(doveconf -x ssl_key 2>/dev/null)" ] && exit 0
+
+ssl_cert_file=$(doveconf ssl_cert | sed 's/.*= <//')
+ssl_key_file=$(doveconf ssl_key | sed 's/.*= <//')
+
+CERTFILE=${ssl_cert_file:-$CERTDIR/server.pem}
+KEYFILE=${ssl_key_file:-$KEYDIR/server.key}
+
+if [ -e "$CERTFILE" ]; then
+ echo "Keeping existing $CERTFILE"
+ exit 0
+fi
+
+if [ -e "$KEYFILE" ]; then
+ echo "Keeping existing $KEYFILE"
+ exit 0
+fi
+
+if [ ! -c /dev/urandom ] && [ ! -c /dev/random ]; then
+ echo "No /dev/urandom or /dev/random so ssl cert not created"
+ exit 1
+fi
+
+$OPENSSL req -new -x509 -nodes -config $OPENSSLCONFIG -out $CERTFILE -keyout $KEYFILE -days 365 || exit 2
+chmod 0600 $KEYFILE
+echo
+$OPENSSL x509 -subject -fingerprint -noout -in $CERTFILE || exit 2
diff --git a/user/dovecot/dovecot.post-upgrade b/user/dovecot/dovecot.post-upgrade
new file mode 100644
index 000000000..69f4366ed
--- /dev/null
+++ b/user/dovecot/dovecot.post-upgrade
@@ -0,0 +1,7 @@
+#!/bin/sh
+if ! grep ^"version_ignore=yes" /etc/dovecot/dovecot.conf; then
+ printf "dovecot restart required (version_ignore=yes not set)\n"
+fi
+
+exit $?
+
diff --git a/user/dovecot/dovecot.pre-install b/user/dovecot/dovecot.pre-install
new file mode 100644
index 000000000..73a0aa3e3
--- /dev/null
+++ b/user/dovecot/dovecot.pre-install
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+groupadd -r dovecot 2>/dev/null
+groupadd -r dovenull 2>/dev/null
+useradd -r -u 90 -h /dev/null -s /sbin/nologin -g dovecot dovecot 2>/dev/null
+useradd -r -u 91 -h /dev/null -s /sbin/nologin -g dovenull dovenull 2>/dev/null
+
+exit 0
diff --git a/user/dovecot/skip-iconv-check.patch b/user/dovecot/skip-iconv-check.patch
new file mode 100644
index 000000000..bb1002c84
--- /dev/null
+++ b/user/dovecot/skip-iconv-check.patch
@@ -0,0 +1,11 @@
+--- a/src/lib-charset/test-charset.c
++++ b/src/lib-charset/test-charset.c
+@@ -159,7 +159,7 @@
+ static void (*const test_functions[])(void) = {
+ test_charset_is_utf8,
+ test_charset_utf8,
+-#ifdef HAVE_ICONV
++#if 0 //def HAVE_ICONV
+ test_charset_iconv,
+ test_charset_iconv_crashes,
+ test_charset_iconv_utf7_state,
diff --git a/user/dovecot/split-protocols.patch b/user/dovecot/split-protocols.patch
new file mode 100644
index 000000000..b4bed2ccb
--- /dev/null
+++ b/user/dovecot/split-protocols.patch
@@ -0,0 +1,30 @@
+For each protocol $prot, which is moved into subpackage $subname,
+is installed file /usr/share/dovecot/protocols.d/$subname.conf with:
+
+ protocols = $protocols $prot
+
+--- a/doc/example-config/dovecot.conf
++++ b/doc/example-config/dovecot.conf
+@@ -20,8 +20,9 @@
+ # options. The paths listed here are for configure --prefix=/usr
+ # --sysconfdir=/etc --localstatedir=/var
+
+-# Protocols we want to be serving.
+-#protocols = imap pop3 lmtp submission
++# Enable installed protocols.
++#protocols = imap
++!include_try /usr/share/dovecot/protocols.d/*.conf
+
+ # A comma separated list of IPs or hosts where to listen in for connections.
+ # "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces.
+--- a/src/master/master-settings.c.orig
++++ b/src/master/master-settings.c
+@@ -206,7 +206,7 @@
+ .state_dir = PKG_STATEDIR,
+ .libexec_dir = PKG_LIBEXECDIR,
+ .instance_name = PACKAGE,
+- .protocols = "imap pop3 lmtp",
++ .protocols = "imap",
+ .listen = "*, ::",
+ .ssl = "yes:no:required",
+ .default_internal_user = "dovecot",
diff --git a/user/dovecot/ssl-paths.patch b/user/dovecot/ssl-paths.patch
new file mode 100644
index 000000000..b354b607e
--- /dev/null
+++ b/user/dovecot/ssl-paths.patch
@@ -0,0 +1,13 @@
+--- dovecot-2.3.10/doc/example-config/conf.d/10-ssl.conf 2020-03-05 14:35:53.000000000 +0000
++++ dovecot-2.3.10.new/doc/example-config/conf.d/10-ssl.conf 2020-04-26 06:49:45.860000000 +0000
+@@ -9,8 +9,8 @@
+ # dropping root privileges, so keep the key file unreadable by anyone but
+ # root. Included doc/mkcert.sh can be used to easily generate self-signed
+ # certificate, just make sure to update the domains in dovecot-openssl.cnf
+-ssl_cert = </etc/ssl/certs/dovecot.pem
+-ssl_key = </etc/ssl/private/dovecot.pem
++ssl_cert = </etc/ssl/dovecot/server.pem
++ssl_key = </etc/ssl/dovecot/server.key
+
+ # If key file is password protected, give the password here. Alternatively
+ # give it when starting dovecot with -p parameter. Since this file is often
diff --git a/user/efibootmgr/APKBUILD b/user/efibootmgr/APKBUILD
index 5f2149b22..379316b65 100644
--- a/user/efibootmgr/APKBUILD
+++ b/user/efibootmgr/APKBUILD
@@ -5,7 +5,7 @@ pkgver=16
pkgrel=0
pkgdesc="User-space application to modify the Intel EFI Boot Manager"
url="https://github.com/rhboot/efibootmgr"
-arch="pmmx x86_64 arm64 ia64"
+arch="pmmx x86_64 aarch64 ia64"
options="!check" # Dangerous.
license="GPL-2.0-only"
depends=""
diff --git a/user/efivar/APKBUILD b/user/efivar/APKBUILD
index 13b1b64bd..c8a8ba600 100644
--- a/user/efivar/APKBUILD
+++ b/user/efivar/APKBUILD
@@ -5,7 +5,7 @@ pkgver=37
pkgrel=0
pkgdesc="Tools and library to manipulate EFI variables"
url="https://github.com/rhboot/efivar"
-arch="pmmx x86_64 arm64 ia64"
+arch="pmmx x86_64 aarch64 ia64"
options="!check" # "WARNING: You should probably not run tests /ever/. This is not a joke."
license="LGPL-2.1+"
depends=""
diff --git a/user/elixir/APKBUILD b/user/elixir/APKBUILD
new file mode 100644
index 000000000..e23466f18
--- /dev/null
+++ b/user/elixir/APKBUILD
@@ -0,0 +1,28 @@
+# Contributor: Daniel Isaksen <d@duniel.no>
+# Contributor: Marlus Saraiva <marlus.saraiva@gmail.com>
+# Maintainer: Lee Starnes <lee@canned-death.us>
+pkgname=elixir
+pkgver=1.10.3
+pkgrel=0
+pkgdesc="Dynamic, functional language designed for building scalable and maintainable applications"
+url="https://elixir-lang.org/"
+arch="noarch"
+license="Apache-2.0"
+depends="erlang"
+makedepends="erlang-dev"
+subpackages="$pkgname-doc"
+source="$pkgname-$pkgver.tar.gz::https://github.com/elixir-lang/elixir/archive/v$pkgver.tar.gz"
+
+build() {
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" PREFIX=/usr install
+}
+
+sha512sums="66b18b983e5374afbd4d94c43a880c5e46a9aa150fa6f38be74ff7f58a19eaaee00248b202d9ae3f6b78e2495fc8d5cec755de644256a731be367766c3812855 elixir-1.10.3.tar.gz"
diff --git a/user/eudev/APKBUILD b/user/eudev/APKBUILD
index 16858e1f5..86a8e30f8 100644
--- a/user/eudev/APKBUILD
+++ b/user/eudev/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=eudev
pkgver=3.2.9
-pkgrel=0
+pkgrel=1
pkgdesc="OpenRC compatible fork of systemd-udev"
url="https://wiki.gentoo.org/wiki/Project:Eudev"
arch="all"
@@ -91,12 +91,16 @@ openrc() {
replaces="udev-init-scripts-openrc"
default_openrc
install -d "$subpkgdir"/usr/share/openrc/runlevels/sysinit
+ install -d "$subpkgdir"/etc/runlevels/sysinit
# https://bts.adelielinux.org/show_bug.cgi?id=51
# if eudev is installed, it should be running in the sysinit runlevel
ln -s /etc/init.d/udev \
"$subpkgdir"/usr/share/openrc/runlevels/sysinit/udev
+ ln -s /etc/init.d/udev "$subpkgdir"/etc/runlevels/sysinit/udev
ln -s /etc/init.d/udev-trigger \
"$subpkgdir"/usr/share/openrc/runlevels/sysinit/udev-trigger
+ ln -s /etc/init.d/udev-trigger \
+ "$subpkgdir"/etc/runlevels/sysinit/udev-trigger
}
sha512sums="09e49fff9848e72507ef14b9d4cfab2d1443f16d5b3d54d2b0e4f6b04c471ca41f09200cb8772e9f850f0dc4a574a7ec7eede7ce11cbabda65e210a89287531f eudev-3.2.9.tar.gz
diff --git a/user/f2fs-tools/APKBUILD b/user/f2fs-tools/APKBUILD
new file mode 100644
index 000000000..7784c170d
--- /dev/null
+++ b/user/f2fs-tools/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: CyberLeo <cyberleo@cyberleo.net>
+# Maintainer: CyberLeo <cyberleo@cyberleo.net>
+pkgname=f2fs-tools
+pkgver=1.13.0
+pkgrel=0
+pkgdesc="Tools for the Flash-Friendly File System (F2FS)"
+url="https://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs-tools.git"
+arch="all"
+options="!check" # No test suite.
+license="GPL-2.0+ OR LGPL-2.1+"
+depends=""
+makedepends="automake autoconf bsd-compat-headers libtool util-linux-dev linux-headers"
+subpackages="$pkgname-doc $pkgname-dev $pkgname-libs"
+source="https://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs-tools.git/snapshot/$pkgname-$pkgver.tar.gz"
+
+prepare() {
+ default_prepare
+ ./autogen.sh
+}
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr
+ make
+}
+
+package() {
+ make install DESTDIR="$pkgdir"
+ install -D -m644 mkfs/f2fs_format_utils.h "$pkgdir"/usr/include/
+}
+
+sha512sums="fd920a19e8705a65395809aeef55791c5678ed31c026cdf41fc173e0dbcacdef1db7e0e184ec1aae8637b1784e2ad6e0207583e918255483fe43c73f89bd7f7f f2fs-tools-1.13.0.tar.gz"
diff --git a/user/ffmpeg/APKBUILD b/user/ffmpeg/APKBUILD
index b6de0597c..06e68aecb 100644
--- a/user/ffmpeg/APKBUILD
+++ b/user/ffmpeg/APKBUILD
@@ -4,7 +4,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ffmpeg
pkgver=4.2.2
-pkgrel=0
+pkgrel=1
pkgdesc="Record, convert, and stream audio and video"
url="https://ffmpeg.org/"
arch="all"
@@ -21,6 +21,8 @@ makedepends="alsa-lib-dev bzip2-dev freetype-dev gnutls-dev imlib2-dev
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
source="https://ffmpeg.org/releases/ffmpeg-$pkgver.tar.xz
0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
+ CVE-2019-13312.patch
+ CVE-2020-12284.patch
"
# secfixes:
@@ -37,6 +39,9 @@ source="https://ffmpeg.org/releases/ffmpeg-$pkgver.tar.xz
# - CVE-2017-14222
# - CVE-2017-14223
# - CVE-2017-14225
+# 4.2.2-r1:
+# - CVE-2019-13312
+# - CVE-2020-12284
build() {
_asm=""
@@ -98,4 +103,6 @@ libs() {
}
sha512sums="381cd6732fa699eb89000621cf34256920596ed1f9de3c2194dbad35fdf2165269eb7d3a147a0eb75dc18fbb6d601382b5801750e09fc63547766842f84208e3 ffmpeg-4.2.2.tar.xz
-1047a23eda51b576ac200d5106a1cd318d1d5291643b3a69e025c0a7b6f3dbc9f6eb0e1e6faa231b7e38c8dd4e49a54f7431f87a93664da35825cc2e9e8aedf4 0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch"
+1047a23eda51b576ac200d5106a1cd318d1d5291643b3a69e025c0a7b6f3dbc9f6eb0e1e6faa231b7e38c8dd4e49a54f7431f87a93664da35825cc2e9e8aedf4 0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
+0c53680ae480b8f848893d4e5c40ea522bd25a72860e0955e039ec838ee09159ab2bfa0eafc71113009082c7f53981ba70116dcef17053cd3cc3ea59e4da5a5c CVE-2019-13312.patch
+910f8da9ed8e0998c311cc451f1725a20c4cc3e9f0c2d1981a1ceea8da5f434519044b4997e71d87424e19fcc45cb203238e49ad178e313696667e6c9bf311c9 CVE-2020-12284.patch"
diff --git a/user/ffmpeg/CVE-2019-13312.patch b/user/ffmpeg/CVE-2019-13312.patch
new file mode 100644
index 000000000..1ef9d92b4
--- /dev/null
+++ b/user/ffmpeg/CVE-2019-13312.patch
@@ -0,0 +1,30 @@
+From ea56af88956061d700043c5c4b026ac57834b0c8 Mon Sep 17 00:00:00 2001
+From: Carl Eugen Hoyos <ceffmpeg@gmail.com>
+Date: Mon, 1 Jul 2019 01:45:36 +0200
+Subject: [PATCH] lavc/zmbvenc: Do not left-shift negative values.
+
+Fixes the following ubsan errors with the sample from ticket #7980:
+libavcodec/zmbvenc.c:243:29: runtime error: left shift of negative value -4
+libavcodec/zmbvenc.c:244:28: runtime error: left shift of negative value -2
+---
+ libavcodec/zmbvenc.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libavcodec/zmbvenc.c b/libavcodec/zmbvenc.c
+index 4887175..0e22ce6 100644
+--- a/libavcodec/zmbvenc.c
++++ b/libavcodec/zmbvenc.c
+@@ -240,8 +240,8 @@ FF_ENABLE_DEPRECATION_WARNINGS
+ tprev = prev + x * c->bypp;
+
+ zmbv_me(c, tsrc, p->linesize[0], tprev, c->pstride, x, y, &mx, &my, &xored);
+- mv[0] = (mx << 1) | !!xored;
+- mv[1] = my << 1;
++ mv[0] = (mx * 2) | !!xored;
++ mv[1] = my * 2;
+ tprev += mx * c->bypp + my * c->pstride;
+ if(xored){
+ for(j = 0; j < bh2; j++){
+--
+2.7.4
+
diff --git a/user/ffmpeg/CVE-2020-12284.patch b/user/ffmpeg/CVE-2020-12284.patch
new file mode 100644
index 000000000..7360b5870
--- /dev/null
+++ b/user/ffmpeg/CVE-2020-12284.patch
@@ -0,0 +1,32 @@
+From 1812352d767ccf5431aa440123e2e260a4db2726 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michael@niedermayer.cc>
+Date: Sat, 7 Mar 2020 15:42:58 +0100
+Subject: [PATCH] avcodec/cbs_jpeg: Check length for SOS
+
+Fixes: out of array access
+Fixes: 19734/clusterfuzz-testcase-minimized-ffmpeg_BSF_TRACE_HEADERS_fuzzer-5673507031875584
+Fixes: 19353/clusterfuzz-testcase-minimized-ffmpeg_BSF_TRACE_HEADERS_fuzzer-5703944462663680
+
+Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
+Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
+---
+ libavcodec/cbs_jpeg.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/libavcodec/cbs_jpeg.c b/libavcodec/cbs_jpeg.c
+index 6bbce5f..89512a2 100644
+--- a/libavcodec/cbs_jpeg.c
++++ b/libavcodec/cbs_jpeg.c
+@@ -197,6 +197,9 @@ static int cbs_jpeg_split_fragment(CodedBitstreamContext *ctx,
+ if (marker == JPEG_MARKER_SOS) {
+ length = AV_RB16(frag->data + start);
+
++ if (length > end - start)
++ return AVERROR_INVALIDDATA;
++
+ data_ref = NULL;
+ data = av_malloc(end - start +
+ AV_INPUT_BUFFER_PADDING_SIZE);
+--
+2.7.4
+
diff --git a/user/firefox-esr/APKBUILD b/user/firefox-esr/APKBUILD
index 8dfad228a..f780d8765 100644
--- a/user/firefox-esr/APKBUILD
+++ b/user/firefox-esr/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Molly Miller <adelie@m-squa.red>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=firefox-esr
-pkgver=68.7.0
-pkgrel=1
+pkgver=68.9.0
+pkgrel=0
pkgdesc="Firefox web browser (extended support release)"
url="https://www.mozilla.org/firefox/"
arch="all"
@@ -41,8 +41,8 @@ source="https://ftp.mozilla.org/pub/firefox/releases/$_ffxver/source/firefox-$_f
mozilla-build-arm.patch
ppc32-fix.patch
rust-32bit.patch
- rust-config.patch
- seccomp-membarrier.patch
+ seccomp-musl.patch
+ seccomp-time64.patch
shut-up-warning.patch
skia-sucks1.patch
skia-sucks2.patch
@@ -121,6 +121,16 @@ ldpath="$_mozappdir"
# - CVE-2020-6821
# - CVE-2020-6822
# - CVE-2020-6825
+# 68.8.0-r0:
+# - CVE-2020-6831
+# - CVE-2020-12387
+# - CVE-2020-12392
+# - CVE-2020-12395
+# 68.9.0-r0:
+# - CVE-2020-12399
+# - CVE-2020-12405
+# - CVE-2020-12406
+# - CVE-2020-12410
unpack() {
default_unpack
@@ -236,7 +246,7 @@ package() {
EOF
}
-sha512sums="a3ddcf8ffe5f568b30b1fc9ddcaa5cebe600bf11ce353c09507d5466f999022d45a0dee9a08f53f37b10202a2e2ce4c180743cd6a2ca38dfea1c3e4487b18593 firefox-68.7.0esr.source.tar.xz
+sha512sums="98431800d80f7c680aef9eede29df8217810912a319a7f7f8c2e637c43ecd4f4e29223a417afb2a6315e825f979453ff6e6b5a575649aba5cc63ce5956375bb8 firefox-68.9.0esr.source.tar.xz
16e814e8dcffc707b595ca2919bd2fa3db0d15794c63d977364652c4a5b92e90e72b8c9e1cc83b5020398bd90a1b397dbdd7cb931c49f1aa4af6ef95414b43e0 Python-2.7.16.tar.xz
f82758d279cd12a1b30a9b36ac3c265cfb137df3db7ae185f2c538504e46fa70ace1b051fce847356851062b5cc9cd741a6d33d54f8cd103aa0c8272cb19ccc4 mozconfig
ace7492f4fb0523c7340fdc09c831906f74fddad93822aff367135538dacd3f56288b907f5a04f53f94c76e722ba0bab73e28d83ec12d3e672554712e6b08613 bad-google-code.patch
@@ -247,8 +257,8 @@ de8e3b15cd7dffb0eca5a729434986e5916234914cdc5fdcdbbc67d8bb439a535ed932293518dd74
e61664bc93eadce5016a06a4d0684b34a05074f1815e88ef2613380d7b369c6fd305fb34f83b5eb18b9e3138273ea8ddcfdcb1084fdcaa922a1e5b30146a3b18 mozilla-build-arm.patch
06a3f4ee6d3726adf3460952fcbaaf24bb15ef8d15b3357fdd1766c7a62b00bd53a1e943b5df7f4e1a69f4fae0d44b64fae1e027d7812499c77894975969ea10 ppc32-fix.patch
7c615703dc9b8427eeadd13bc9beda02e1c3d986cac1167feaf48fdfdcc15b7456460d4d58f301054cf459242ee75bbcd76bf67e26c2a443bc5655975d24ca1b rust-32bit.patch
-45613d476e85fe333ef8091acce4806803953c1a99de4f03ff577cf20c5a1a3d635d0589e1490da104ef80721f4f1b1d35045af3c6892c1a468fa84095f27ad8 rust-config.patch
-36369f2e237e894b2f9e70ffa0579bb3cddf1efa638a36b3469e9f529c28d7b72611fa426c5534d93094a8deb1376f43f6661447072dc6dfc6191ca5eebd4604 seccomp-membarrier.patch
+efc77a320850e10e8b99e6fb5d3dd28a3044e287fd87efbdf95807de26a6885235b2d994743cb374345d91a0353abd70a5790b829e37b717b77605e24d4f7f98 seccomp-musl.patch
+4b20dfa3ef3d470af069a274c53ea35c67d2d123f1b543ee243e7038ed94f5a1a6121f1f67713a9442e246b979c042f11efc7a6c32d0b8d3fd2c448dd1258733 seccomp-time64.patch
39ddb15d1453a8412275c36fc8db3befc69dffd4a362e932d280fb7fd1190db595a2af9b468ee49e0714f5e9df6e48eb5794122a64fa9f30d689de8693acbb15 shut-up-warning.patch
e751ffab263f03d4c74feebc617e3af115b1b53cf54fe16c3acc585eec67773f37aa8de4c19599fa6478179b01439025112ef2b759aa9923c9900e7081cb65a9 skia-sucks1.patch
9152bd3e6dc446337e6a2ed602279c620aedecc796ba28e777854c4f41fcf3067f9ebd086a4b63a6b76c2e69ec599ac6435b8eeda4f7488b1c45f69113facba4 skia-sucks2.patch
diff --git a/user/firefox-esr/rust-config.patch b/user/firefox-esr/rust-config.patch
deleted file mode 100644
index eab72a0e4..000000000
--- a/user/firefox-esr/rust-config.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -urw firefox-68.0-old/build/moz.configure/rust.configure firefox-68.0/build/moz.configure/rust.configure
---- firefox-68.0-old/build/moz.configure/rust.configure 2019-07-07 15:56:29.345963800 +0000
-+++ firefox-68.0/build/moz.configure/rust.configure 2019-07-07 16:19:25.990645334 +0000
-@@ -193,12 +193,16 @@
- ambiguous = set()
- per_raw_os = {}
- for t in out:
-+ if 'fuchsia' in t: continue
- t = split_triplet(t, allow_unknown=True)
- endianness = t.endianness
- if t.cpu.startswith('thumb') and endianness not in ('big', 'little'):
- endianness = 'little'
- key = (t.cpu, endianness, t.os)
- if key in per_os:
-+ # hax to allow Adélie toolchains to work
-+ if 'foxkit' in per_os[key].alias:
-+ continue
- previous = per_os[key]
- per_raw_os[(previous.cpu, previous.endianness,
- previous.raw_os)] = previous
diff --git a/user/firefox-esr/seccomp-membarrier.patch b/user/firefox-esr/seccomp-membarrier.patch
deleted file mode 100644
index be1744113..000000000
--- a/user/firefox-esr/seccomp-membarrier.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-musl ldso issues a membarrier when setting up TLS
-
---- firefox-68.7.0/security/sandbox/linux/SandboxFilter.cpp 2020-04-03 19:30:03.000000000 +0000
-+++ firefox-68.7.0/security/sandbox/linux/SandboxFilter.cpp 2020-04-19 04:59:30.280000000 +0000
-@@ -529,6 +529,7 @@ class SandboxPolicyCommon : public Sandb
-
- // ipc::Shmem; also, glibc when creating threads:
- case __NR_mprotect:
-+ case __NR_membarrier:
- return Allow();
-
- // madvise hints used by malloc; see bug 1303813 and bug 1364533
diff --git a/user/firefox-esr/seccomp-musl.patch b/user/firefox-esr/seccomp-musl.patch
new file mode 100644
index 000000000..edd4a3024
--- /dev/null
+++ b/user/firefox-esr/seccomp-musl.patch
@@ -0,0 +1,49 @@
+Backport of https://hg.mozilla.org/mozilla-central/rev/a0be746532f437055e4190cc8db802ad1239405e
+
+diff --git a/security/sandbox/linux/SandboxFilter.cpp b/security/sandbox/linux/SandboxFilter.cpp
+--- a/security/sandbox/linux/SandboxFilter.cpp
++++ b/security/sandbox/linux/SandboxFilter.cpp
+@@ -419,16 +419,20 @@ class SandboxPolicyCommon : public Sandb
+ case __NR_faccessat:
+ return Trap(AccessAtTrap, mBroker);
+ CASES_FOR_stat:
+ return Trap(StatTrap, mBroker);
+ CASES_FOR_lstat:
+ return Trap(LStatTrap, mBroker);
+ CASES_FOR_fstatat:
+ return Trap(StatAtTrap, mBroker);
++ // Used by new libc and Rust's stdlib, if available.
++ // We don't have broker support yet so claim it does not exist.
++ case __NR_statx:
++ return Error(ENOSYS);
+ case __NR_chmod:
+ return Trap(ChmodTrap, mBroker);
+ case __NR_link:
+ return Trap(LinkTrap, mBroker);
+ case __NR_mkdir:
+ return Trap(MkdirTrap, mBroker);
+ case __NR_symlink:
+ return Trap(SymlinkTrap, mBroker);
+@@ -538,16 +542,20 @@ class SandboxPolicyCommon : public Sandb
+ .ElseIf(advice == MADV_HUGEPAGE, Allow())
+ .ElseIf(advice == MADV_NOHUGEPAGE, Allow())
+ #ifdef MOZ_ASAN
+ .ElseIf(advice == MADV_DONTDUMP, Allow())
+ #endif
+ .Else(InvalidSyscall());
+ }
+
++ // musl libc will set this up in pthreads support.
++ case __NR_membarrier:
++ return Allow();
++
+ // Signal handling
+ #if defined(ANDROID) || defined(MOZ_ASAN)
+ case __NR_sigaltstack:
+ #endif
+ CASES_FOR_sigreturn:
+ CASES_FOR_sigprocmask:
+ CASES_FOR_sigaction:
+ return Allow();
+
+
diff --git a/user/firefox-esr/seccomp-time64.patch b/user/firefox-esr/seccomp-time64.patch
new file mode 100644
index 000000000..72cc28b5d
--- /dev/null
+++ b/user/firefox-esr/seccomp-time64.patch
@@ -0,0 +1,112 @@
+This drops the use of the chromium sandbox syscall headers which were
+defining syscall numbers if they were undefined. This masked the time64
+issue initially since while musl renamed several of the time32 syscall
+numbers to catch breakage like this, these headers were silently
+bringing them back. I did this by comparing the syscall numbers provided
+by the chromium and musl headers and redefining the generic names to
+their time64 counterparts.
+
+For gettimeofday and settimeofday there does not appear to be a time64
+counterpart so I have defined them as the time32 versions. For
+settimeofday this should not matter (the seccomp filter will block this
+by virture of not being on the whitelist - no content process needs to
+set the time anyway).
+
+It is not possible to entirely block the usage of time32 syscalls
+because musl uses them internally when it can or in fallback paths.
+
+I did not check the MIPS headers since we don't currently ship a MIPS
+port, so in the future those includes should be examined and dropped
+too...
+
+--- firefox-68.8.0/security/sandbox/chromium/sandbox/linux/system_headers/linux_syscalls.h 2020-04-29 16:49:45.000000000 -0500
++++ firefox-68.8.0/security/sandbox/chromium/sandbox/linux/system_headers/linux_syscalls.h 2020-05-20 03:09:47.369457646 -0500
+@@ -8,18 +8,7 @@
+
+ #ifndef SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_
+ #define SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_
+-
+-#if defined(__x86_64__)
+-#include "sandbox/linux/system_headers/x86_64_linux_syscalls.h"
+-#endif
+-
+-#if defined(__i386__)
+-#include "sandbox/linux/system_headers/x86_32_linux_syscalls.h"
+-#endif
+-
+-#if defined(__arm__) && defined(__ARM_EABI__)
+-#include "sandbox/linux/system_headers/arm_linux_syscalls.h"
+-#endif
++#include <sys/syscall.h>
+
+ #if defined(__mips__) && (_MIPS_SIM == _ABIO32)
+ #include "sandbox/linux/system_headers/mips_linux_syscalls.h"
+@@ -33,5 +22,36 @@
+ #include "sandbox/linux/system_headers/arm64_linux_syscalls.h"
+ #endif
+
++#if !defined(__NR_clock_getres) && defined(__NR_clock_getres_time64)
++#define __NR_clock_getres __NR_clock_getres_time64
++#endif
++#if !defined(__NR_clock_gettime) && defined(__NR_clock_gettime64)
++#define __NR_clock_gettime __NR_clock_gettime64
++#endif
++#if !defined(__NR_clock_nanosleep) && defined(__NR_clock_nanosleep_time64)
++#define __NR_clock_nanosleep __NR_clock_nanosleep_time64
++#endif
++#if !defined(__NR_clock_settime) && defined(__NR_clock_settime64)
++#define __NR_clock_settime __NR_clock_settime64
++#endif
++#if !defined(__NR_gettimeofday) && defined(__NR_gettimeofday_time32)
++#define __NR_gettimeofday __NR_gettimeofday_time32
++#endif
++#if !defined(__NR_settimeofday) && defined(__NR_settimeofday_time32)
++#define __NR_settimeofday __NR_settimeofday_time32
++#endif
++#if !defined(__NR_timer_gettime) && defined(__NR_timer_gettime64)
++#define __NR_timer_gettime __NR_timer_gettime64
++#endif
++#if !defined(__NR_timer_settime) && defined(__NR_timer_settime64)
++#define __NR_timer_settime __NR_timer_settime64
++#endif
++#if !defined(__NR_timerfd_gettime) && defined(__NR_timerfd_gettime64)
++#define __NR_timerfd_gettime __NR_timerfd_gettime64
++#endif
++#if !defined(__NR_timerfd_settime) && defined(__NR_timerfd_settime64)
++#define __NR_timerfd_settime __NR_timerfd_settime64
++#endif
++
+ #endif // SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_
+
+--- firefox-68.8.0/security/sandbox/linux/SandboxFilter.cpp 2020-04-29 16:49:45.000000000 -0500
++++ firefox-68.8.0/security/sandbox/linux/SandboxFilter.cpp 2020-05-19 23:33:27.829642593 -0500
+@@ -478,6 +478,9 @@ class SandboxPolicyCommon : public Sandb
+
+ // Thread synchronization
+ case __NR_futex:
++#ifdef __NR_futex_time64
++ case __NR_futex_time64:
++#endif
+ // FIXME: This could be more restrictive....
+ return Allow();
+
+@@ -488,6 +491,9 @@ class SandboxPolicyCommon : public Sandb
+ case __NR_epoll_pwait:
+ case __NR_epoll_ctl:
+ case __NR_ppoll:
++#ifdef __NR_ppoll_time64
++ case __NR_ppoll_time64:
++#endif
+ case __NR_poll:
+ return Allow();
+
+@@ -1017,6 +1023,9 @@ class ContentSandboxPolicy : public Sand
+
+ CASES_FOR_select:
+ case __NR_pselect6:
++#ifdef __NR_pselect6_time64
++ case __NR_pselect6_time64:
++#endif
+ return Allow();
+
+ CASES_FOR_getdents:
diff --git a/user/glfw/APKBUILD b/user/glfw/APKBUILD
new file mode 100644
index 000000000..ab55f9771
--- /dev/null
+++ b/user/glfw/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=glfw
+pkgver=3.2.1
+pkgrel=0
+pkgdesc="OpenGL desktop development library"
+url="http://www.glfw.org/"
+arch="all"
+options="!check" # Tests require X11, GL, and manual intervention.
+license="Zlib"
+depends=""
+depends_dev="mesa-dev"
+makedepends="$depends_dev cmake doxygen libx11-dev libxrandr-dev libxcursor-dev
+ libxinerama-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/glfw/glfw/releases/download/3.2.1/glfw-$pkgver.zip"
+
+build() {
+ cd "$builddir"
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DBUILD_SHARED_LIBS=ON \
+ -DGLFW_BUILD_TESTS=OFF \
+ -DGLFW_BUILD_EXAMPLES=OFF \
+ ${CMAKE_CROSSOPTS}
+ make
+}
+
+check() {
+ cd "$builddir"
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ install -D -d "$builddir"/docs/html "$pkgdir"/usr/share/doc/$pkgname/
+}
+
+sha512sums="73dd6d4a8d28a2b423f0fb25489659c1a845182b7ef09848d4f442cdc489528aea90f43ac84aeedb9d2301c4487f39782b647ee4959e67e83babb838372b980c glfw-3.2.1.zip"
diff --git a/user/horizon/APKBUILD b/user/horizon/APKBUILD
new file mode 100644
index 000000000..6c3278bc1
--- /dev/null
+++ b/user/horizon/APKBUILD
@@ -0,0 +1,136 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=horizon
+pkgver=0.9.2
+pkgrel=0
+pkgdesc="Installation tools for Adélie Linux"
+url="https://horizon.adelielinux.org/"
+arch="all"
+options="!archcheck !check" # Unpackaged dependency ruby-aruba.
+license="AGPL-3.0+"
+depends=""
+checkdepends="ruby-aruba ruby-rspec valgrind"
+# Second group is the Qt5 UI deps.
+makedepends="bcnm-dev boost-dev cmake curl-dev eudev-dev libarchive-dev
+ linux-headers parted-dev skalibs-dev util-linux-dev
+
+ libcap-dev libx11-dev libxkbfile-dev qt5-qtbase-dev"
+subpackages="$pkgname-image $pkgname-dbg $pkgname-dev $pkgname-doc $pkgname-qt5
+ $pkgname-tools $pkgname-wizard $pkgname-boot"
+source="https://distfiles.adelielinux.org/source/horizon-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DBUILD_SHARED_LIBS=True \
+ -DBUILD_TOOLS=ON \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS -Wno-format-truncation" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DINSTALL=ON \
+ ${CMAKE_CROSSOPTS} \
+ -Bbuild
+ make -C build
+
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DBUILD_SHARED_LIBS=False \
+ -DBUILD_TOOLS=OFF \
+ -DBUILD_UI=ON \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS -Wno-format-truncation" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DINSTALL=OFF \
+ ${CMAKE_CROSSOPTS} \
+ -Bbuild-wizard
+ make -C build-wizard
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
+}
+
+package() {
+ make DESTDIR="$pkgdir" -C build install
+}
+
+image() {
+ pkgdesc="Tools for generating images using HorizonScript"
+ depends="mtools"
+ mkdir -p "$subpkgdir"/usr/bin
+ mkdir -p "$subpkgdir"/usr/lib
+ mkdir -p "$subpkgdir"/usr/share/horizon
+
+ mv "$pkgdir"/usr/bin/hscript-image "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/usr/lib/libhi-backends.so "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/share/horizon/iso "$subpkgdir"/usr/share/horizon/
+}
+
+qt5() {
+ pkgdesc="Qt 5 installation wizard for Adélie Linux"
+ depends="horizon"
+ mkdir -p "$subpkgdir"/etc/horizon
+ mkdir -p "$subpkgdir"/usr/bin
+ mkdir -p "$subpkgdir"/var/log/horizon
+
+ for _bin in horizon-ppc64-detect horizon-qt5 horizon-run-qt5; do
+ mv "$pkgdir"/usr/bin/$_bin "$subpkgdir"/usr/bin/
+ done
+}
+
+tools() {
+ pkgdesc="Tools for authoring HorizonScript files"
+ mkdir -p "$subpkgdir"/usr/bin
+
+ for _bin in hscript-fromjson hscript-simulate hscript-validate; do
+ mv "$pkgdir"/usr/bin/$_bin "$subpkgdir"/usr/bin/
+ done
+}
+
+wizard() {
+ pkgdesc="Wizard to generate a HorizonScript for another computer"
+
+ make DESTDIR="$subpkgdir" -C "$builddir"/build-wizard install
+ rm -r "$subpkgdir"/usr/include
+ rm -r "$subpkgdir"/usr/lib
+ rm -r "$subpkgdir"/usr/share
+}
+
+boot() {
+ pkgdesc="Boot to Horizon"
+ depends="horizon-qt5 horizon kwin qt5ct sddm
+ netsurf partitionmanager xterm"
+
+ mkdir -p "$subpkgdir"/etc/profile.d
+ mkdir -p "$subpkgdir"/etc/sddm.conf.d
+ mkdir -p "$subpkgdir"/etc/xdg/qt5ct
+ mkdir -p "$subpkgdir"/usr/bin
+ mkdir -p "$subpkgdir"/usr/share/qt5ct/qss
+ mkdir -p "$subpkgdir"/usr/share/xsessions
+
+ cat >"$subpkgdir"/etc/profile.d/horizon-qt5.sh <<PROFILE
+#!/bin/sh
+export QT_QUICK_BACKEND=software
+export QT_QPA_PLATFORMTHEME=qt5ct
+PROFILE
+ chmod 755 "$subpkgdir"/etc/profile.d/horizon-qt5.sh
+
+ install -D -m644 "$builddir"/boot/horizon.sddm.conf \
+ "$subpkgdir"/etc/sddm.conf.d/horizon.conf
+
+ install -D -m755 "$builddir"/boot/start-horizon-qt5 \
+ "$subpkgdir"/usr/bin/start-horizon-qt5
+
+ install -D -m644 "$builddir"/boot/qt5ct.conf \
+ "$subpkgdir"/etc/xdg/qt5ct/qt5ct.conf
+ install -D -m644 "$builddir"/boot/horizon.qss \
+ "$subpkgdir"/usr/share/qt5ct/qss/horizon.qss
+
+ install -D -m644 "$builddir"/boot/horizon-session.desktop \
+ "$subpkgdir"/usr/share/xsessions/horizon.desktop
+}
+
+sha512sums="ef7ad97508dd70bd8d179e844c8d619ff9802fbb4812bddd677fe5ed945cadad416667995a4a358dfe9b426b9c40f9b847ce5aa11e44357b7952fecbc37184fc horizon-0.9.2.tar.xz"
diff --git a/user/horizon/fix-qt-runner.patch b/user/horizon/fix-qt-runner.patch
new file mode 100644
index 000000000..39cab1181
--- /dev/null
+++ b/user/horizon/fix-qt-runner.patch
@@ -0,0 +1,25 @@
+From 9f737dbab8b9ed9fa57bdf15542cc00a8363d98b Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Thu, 4 Jun 2020 21:29:37 -0500
+Subject: [PATCH] Qt UI: Ensure log is opened when built in release modes
+
+---
+ ui/qt5/runner/executepage.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ui/qt5/runner/executepage.cc b/ui/qt5/runner/executepage.cc
+index 999731a..d5788df 100644
+--- a/ui/qt5/runner/executepage.cc
++++ b/ui/qt5/runner/executepage.cc
+@@ -48,7 +48,7 @@ ExecutePage::ExecutePage(QWidget *parent) : HorizonWizardPage(parent) {
+ });
+
+ log.setFileName("/var/log/horizon/executor.log");
+- Q_ASSERT(log.open(QFile::Append));
++ log.open(QFile::Append);
+
+ this->current = Prepare;
+ markRunning(this->current);
+--
+2.25.4
+
diff --git a/user/libffcall/APKBUILD b/user/libffcall/APKBUILD
new file mode 100644
index 000000000..48b16a78f
--- /dev/null
+++ b/user/libffcall/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Contributor: Will Sinatra <wpsinatra@gmail.com>
+# Contributor: Lee Starnes <lee@canned-death.us>
+# Maintainer: Lee Starnes <lee@canned-death.us>
+pkgname=libffcall
+pkgver=2.2
+pkgrel=0
+pkgdesc="C library for implementing foreign function calls in embedded interpreters"
+url="https://www.gnu.org/software/libffcall"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://ftp.gnu.org/gnu/libffcall/libffcall-$pkgver.tar.gz
+ ppc64.patch
+ "
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var
+ # Fails to build if building in parallel
+ make -j1
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" htmldir=/usr/share/doc/ffcall install
+
+}
+
+sha512sums="b9d3ca4c67ab92915a8183d850153e585dcb58ceb2199a104426a7aae363d37017b1226440acd18a2db0cc207e044f71e932857189964261e8eaa6de5cef1731 libffcall-2.2.tar.gz
+db7fae1d2f0d95003186671fd89b097b4abf6184d3001e34dd93419640502b9cd5cf32aef4839d6a4208f4aed793c70f9a4367f12adde21372dc131b111238fe ppc64.patch"
diff --git a/user/libffcall/ppc64.patch b/user/libffcall/ppc64.patch
new file mode 100644
index 000000000..74525987b
--- /dev/null
+++ b/user/libffcall/ppc64.patch
@@ -0,0 +1,1685 @@
+--- libffcall-2.2/avcall/avcall-powerpc64.c.old 2018-09-17 16:47:43.000000000 +0000
++++ libffcall-2.2/avcall/avcall-powerpc64.c 2020-05-11 23:06:57.534813743 +0000
+@@ -181,111 +181,111 @@
+ /* In the ELFv2 ABI, gcc returns structs of size <= 16 in registers. */
+ if (l->rsize > 0 && l->rsize <= 16) {
+ void* raddr = l->raddr;
+- #if 0 /* Unoptimized */
++ #if 1 /* Unoptimized */
+ if (l->rsize == 1) {
+ ((unsigned char *)raddr)[0] = (unsigned char)(iret);
+ } else
+ if (l->rsize == 2) {
+- ((unsigned char *)raddr)[0] = (unsigned char)(iret);
+- ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8);
++ ((unsigned char *)raddr)[1] = (unsigned char)(iret);
++ ((unsigned char *)raddr)[0] = (unsigned char)(iret>>8);
+ } else
+ if (l->rsize == 3) {
+- ((unsigned char *)raddr)[0] = (unsigned char)(iret);
++ ((unsigned char *)raddr)[2] = (unsigned char)(iret);
+ ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8);
+- ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16);
++ ((unsigned char *)raddr)[0] = (unsigned char)(iret>>16);
+ } else
+ if (l->rsize == 4) {
+- ((unsigned char *)raddr)[0] = (unsigned char)(iret);
+- ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8);
+- ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16);
+- ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24);
++ ((unsigned char *)raddr)[3] = (unsigned char)(iret);
++ ((unsigned char *)raddr)[2] = (unsigned char)(iret>>8);
++ ((unsigned char *)raddr)[1] = (unsigned char)(iret>>16);
++ ((unsigned char *)raddr)[0] = (unsigned char)(iret>>24);
+ } else
+ if (l->rsize == 5) {
+- ((unsigned char *)raddr)[0] = (unsigned char)(iret);
+- ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8);
++ ((unsigned char *)raddr)[4] = (unsigned char)(iret);
++ ((unsigned char *)raddr)[3] = (unsigned char)(iret>>8);
+ ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16);
+- ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24);
+- ((unsigned char *)raddr)[4] = (unsigned char)(iret>>32);
++ ((unsigned char *)raddr)[1] = (unsigned char)(iret>>24);
++ ((unsigned char *)raddr)[0] = (unsigned char)(iret>>32);
+ } else
+ if (l->rsize == 6) {
+- ((unsigned char *)raddr)[0] = (unsigned char)(iret);
+- ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8);
+- ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16);
+- ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24);
+- ((unsigned char *)raddr)[4] = (unsigned char)(iret>>32);
+- ((unsigned char *)raddr)[5] = (unsigned char)(iret>>40);
++ ((unsigned char *)raddr)[5] = (unsigned char)(iret);
++ ((unsigned char *)raddr)[4] = (unsigned char)(iret>>8);
++ ((unsigned char *)raddr)[3] = (unsigned char)(iret>>16);
++ ((unsigned char *)raddr)[2] = (unsigned char)(iret>>24);
++ ((unsigned char *)raddr)[1] = (unsigned char)(iret>>32);
++ ((unsigned char *)raddr)[0] = (unsigned char)(iret>>40);
+ } else
+ if (l->rsize == 7) {
+- ((unsigned char *)raddr)[0] = (unsigned char)(iret);
+- ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8);
+- ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16);
++ ((unsigned char *)raddr)[6] = (unsigned char)(iret);
++ ((unsigned char *)raddr)[5] = (unsigned char)(iret>>8);
++ ((unsigned char *)raddr)[4] = (unsigned char)(iret>>16);
+ ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24);
+- ((unsigned char *)raddr)[4] = (unsigned char)(iret>>32);
+- ((unsigned char *)raddr)[5] = (unsigned char)(iret>>40);
+- ((unsigned char *)raddr)[6] = (unsigned char)(iret>>48);
++ ((unsigned char *)raddr)[2] = (unsigned char)(iret>>32);
++ ((unsigned char *)raddr)[1] = (unsigned char)(iret>>40);
++ ((unsigned char *)raddr)[0] = (unsigned char)(iret>>48);
+ } else
+ if (l->rsize >= 8 && l->rsize <= 16) {
+- ((unsigned char *)raddr)[0] = (unsigned char)(iret);
+- ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8);
+- ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16);
+- ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24);
+- ((unsigned char *)raddr)[4] = (unsigned char)(iret>>32);
+- ((unsigned char *)raddr)[5] = (unsigned char)(iret>>40);
+- ((unsigned char *)raddr)[6] = (unsigned char)(iret>>48);
+- ((unsigned char *)raddr)[7] = (unsigned char)(iret>>56);
++ ((unsigned char *)raddr)[7] = (unsigned char)(iret);
++ ((unsigned char *)raddr)[6] = (unsigned char)(iret>>8);
++ ((unsigned char *)raddr)[5] = (unsigned char)(iret>>16);
++ ((unsigned char *)raddr)[4] = (unsigned char)(iret>>24);
++ ((unsigned char *)raddr)[3] = (unsigned char)(iret>>32);
++ ((unsigned char *)raddr)[2] = (unsigned char)(iret>>40);
++ ((unsigned char *)raddr)[1] = (unsigned char)(iret>>48);
++ ((unsigned char *)raddr)[0] = (unsigned char)(iret>>56);
+ if (l->rsize == 8) {
+ } else
+ if (l->rsize == 9) {
+- ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2);
++ ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56);
+ } else
+ if (l->rsize == 10) {
+- ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2);
+- ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8);
++ ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56);
++ ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48);
+ } else
+ if (l->rsize == 11) {
+- ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2);
+- ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8);
+- ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16);
++ ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56);
++ ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48);
++ ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40);
+ } else
+ if (l->rsize == 12) {
+- ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2);
+- ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8);
+- ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16);
+- ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24);
++ ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56);
++ ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48);
++ ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40);
++ ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32);
+ } else
+ if (l->rsize == 13) {
+- ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2);
+- ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8);
+- ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16);
+- ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24);
+- ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>32);
++ ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56);
++ ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48);
++ ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40);
++ ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32);
++ ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>24);
+ } else
+ if (l->rsize == 14) {
+- ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2);
+- ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8);
+- ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16);
+- ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24);
+- ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>32);
+- ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>40);
++ ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56);
++ ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48);
++ ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40);
++ ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32);
++ ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>24);
++ ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>16);
+ } else
+ if (l->rsize == 15) {
+- ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2);
+- ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8);
+- ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16);
+- ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24);
+- ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>32);
+- ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>40);
+- ((unsigned char *)raddr)[8+6] = (unsigned char)(iret2>>48);
++ ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56);
++ ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48);
++ ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40);
++ ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32);
++ ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>24);
++ ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>16);
++ ((unsigned char *)raddr)[8+6] = (unsigned char)(iret2>>8);
+ } else
+ if (l->rsize == 16) {
+- ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2);
+- ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8);
+- ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16);
+- ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24);
+- ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>32);
+- ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>40);
+- ((unsigned char *)raddr)[8+6] = (unsigned char)(iret2>>48);
+- ((unsigned char *)raddr)[8+7] = (unsigned char)(iret2>>56);
++ ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56);
++ ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48);
++ ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40);
++ ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32);
++ ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>24);
++ ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>16);
++ ((unsigned char *)raddr)[8+6] = (unsigned char)(iret2>>8);
++ ((unsigned char *)raddr)[8+7] = (unsigned char)(iret2);
+ }
+ }
+ #else /* Optimized: fewer conditional jumps, fewer memory accesses */
+--- libffcall-2.2/avcall/avcall-powerpc64-elfv2-linux.S.old 2019-08-25 01:03:04.000000000 +0000
++++ libffcall-2.2/avcall/avcall-powerpc64-elfv2-linux.S 2020-05-11 23:07:17.992574561 +0000
+@@ -1,44 +1,52 @@
+ .file "avcall-powerpc64.c"
+- .machine power4
+ .abiversion 2
+- .section ".toc","aw"
+ .section ".text"
+ .align 2
+ .p2align 4,,15
+ .globl avcall_call
+ .type avcall_call, @function
+ avcall_call:
+-0: addis 2,12,.TOC.-0b@ha
+- addi 2,2,.TOC.-0b@l
++.LFB0:
++ .cfi_startproc
++.LCF0:
++0: addis 2,12,.TOC.-.LCF0@ha
++ addi 2,2,.TOC.-.LCF0@l
+ .localentry avcall_call,.-avcall_call
+ mflr 0
+ std 30,-16(1)
+ std 31,-8(1)
++ .cfi_register 65, 0
++ .cfi_offset 30, -16
++ .cfi_offset 31, -8
+ mr 30,3
+ std 0,16(1)
+- stdu 1,-112(1)
+- ld 3,48(3)
+- ld 9,40(30)
++ stdu 1,-128(1)
++ .cfi_def_cfa_offset 128
++ .cfi_offset 65, 16
+ mr 31,1
++ .cfi_def_cfa_register 31
++ ld 3,48(3)
+ ld 10,0(1)
++ ld 9,-28688(13)
++ std 9,104(31)
++ li 9,0
++ ld 9,40(30)
++ stdu 10,-2048(1)
+ subf 9,3,9
+- stdu 10,-2064(1)
+ sradi 9,9,3
+ cmpwi 7,9,8
+ ble 7,.L6
+- addi 10,9,-9
+- addi 8,1,96
+- addi 9,3,56
+- rldicl 10,10,0,32
+- addi 8,8,-8
+- addi 10,10,8
+- sldi 10,10,3
+- add 10,3,10
++ addi 8,9,-9
++ addi 7,1,96
++ addi 10,3,56
++ rldic 8,8,3,29
++ addi 9,7,-8
++ add 7,7,8
+ .p2align 4,,15
+ .L5:
+- ldu 7,8(9)
+- cmpld 7,10,9
+- stdu 7,8(8)
++ ldu 8,8(10)
++ stdu 8,8(9)
++ cmpld 7,7,9
+ bne 7,.L5
+ .L6:
+ ld 10,64(30)
+@@ -114,191 +122,210 @@
+ ld 2,24(1)
+ lwz 9,24(30)
+ cmplwi 7,9,1
+- beq 7,.L19
++ beq 7,.L20
+ cmpdi 7,9,0
+- beq 7,.L50
++ beq 7,.L68
+ cmplwi 7,9,2
+- beq 7,.L45
++ beq 7,.L62
+ cmplwi 7,9,3
+- beq 7,.L45
++ beq 7,.L62
+ cmplwi 7,9,4
+- beq 7,.L45
++ beq 7,.L62
+ cmplwi 7,9,5
+- beq 7,.L46
++ beq 7,.L63
+ cmplwi 7,9,6
+- beq 7,.L46
++ beq 7,.L63
+ cmplwi 7,9,7
+- beq 7,.L47
++ beq 7,.L64
+ cmplwi 7,9,8
+- beq 7,.L47
++ beq 7,.L64
+ cmplwi 7,9,9
+- beq 7,.L50
++ beq 7,.L68
+ cmplwi 7,9,10
+- beq 7,.L50
++ beq 7,.L68
+ cmplwi 7,9,11
+- beq 7,.L50
++ beq 7,.L68
+ cmplwi 7,9,12
+- beq 7,.L50
++ beq 7,.L68
+ cmplwi 7,9,13
+- beq 7,.L52
++ beq 7,.L71
+ cmplwi 7,9,14
+- beq 7,.L53
++ beq 7,.L72
+ cmplwi 7,9,15
+- beq 7,.L50
++ beq 7,.L68
+ cmplwi 7,9,16
+- bne 7,.L19
++ bne 7,.L20
+ lwz 9,0(30)
+- rldicl. 10,9,55,63
+- beq 0,.L19
++ andi. 9,9,0x200
++ beq 0,.L20
+ ld 10,32(30)
+ addi 9,10,-1
+ cmpldi 7,9,15
+- bgt 7,.L19
+- ld 8,16(30)
+- cmpldi 7,10,8
+- rldicl 9,8,0,61
+- rldicr 8,8,0,60
+- add 10,10,9
+- bgt 7,.L35
++ bgt 7,.L20
++ cmpldi 7,10,1
++ ld 9,16(30)
++ rlwinm 8,3,0,0xff
++ beq 7,.L69
++ cmpldi 7,10,2
++ beq 7,.L73
++ cmpldi 7,10,3
++ rldicl 8,3,48,56
++ beq 7,.L74
++ cmpldi 7,10,4
++ beq 7,.L75
++ cmpldi 7,10,5
++ rldicl 8,3,32,56
++ beq 7,.L76
++ cmpldi 7,10,6
++ rldicl 7,3,24,56
++ beq 7,.L77
++ cmpldi 7,10,7
++ rldicl 6,3,16,56
++ beq 7,.L78
++ std 3,0(9)
++ ld 10,32(30)
+ cmpldi 7,10,8
+- bgt 7,.L36
+- slwi 10,10,3
+- li 7,2
+- ld 6,0(8)
+- slwi 9,9,3
+- addi 10,10,-1
+- sld 10,7,10
+- li 7,1
+- sld 7,7,9
+- sld 9,3,9
+- subf 10,7,10
+- xor 9,9,6
+- and 9,10,9
+- xor 9,9,6
+- std 9,0(8)
+-.L19:
+- addi 1,31,112
++ beq 7,.L20
++ cmpldi 7,10,9
++ beq 7,.L79
++ cmpldi 7,10,10
++ beq 7,.L80
++ cmpldi 7,10,11
++ beq 7,.L81
++ cmpldi 7,10,12
++ beq 7,.L82
++ cmpldi 7,10,13
++ beq 7,.L83
++ cmpldi 7,10,14
++ beq 7,.L84
++ cmpldi 7,10,15
++ beq 7,.L85
++ cmpldi 7,10,16
++ bne 7,.L20
++ std 4,8(9)
++ .p2align 4,,15
++.L20:
++ ld 9,104(31)
++ ld 10,-28688(13)
++ xor. 9,9,10
++ li 10,0
+ li 3,0
++ bne 0,.L86
++ addi 1,31,128
++ .cfi_remember_state
++ .cfi_def_cfa 1, 0
+ ld 0,16(1)
+ ld 30,-16(1)
+ ld 31,-8(1)
+ mtlr 0
++ .cfi_restore 65
++ .cfi_restore 31
++ .cfi_restore 30
+ blr
+ .p2align 4,,15
+-.L50:
++.L68:
++ .cfi_restore_state
+ ld 9,16(30)
+ std 3,0(9)
+- addi 1,31,112
+- li 3,0
+- ld 0,16(1)
+- ld 30,-16(1)
+- ld 31,-8(1)
+- mtlr 0
+- blr
++ b .L20
+ .p2align 4,,15
+-.L45:
++.L62:
+ ld 9,16(30)
+ stb 3,0(9)
+- addi 1,31,112
+- li 3,0
+- ld 0,16(1)
+- ld 30,-16(1)
+- ld 31,-8(1)
+- mtlr 0
+- blr
+-.L46:
++ b .L20
++.L63:
+ ld 9,16(30)
+ sth 3,0(9)
+- b .L19
+-.L47:
++ b .L20
++.L64:
+ ld 9,16(30)
+ stw 3,0(9)
+- b .L19
+-.L52:
++ b .L20
++.L71:
+ ld 9,16(30)
+ stfs 1,0(9)
+- b .L19
+-.L53:
++ b .L20
++.L72:
+ ld 9,16(30)
+ stfd 1,0(9)
+- b .L19
+-.L36:
+- rldicl 9,9,0,32
+- slwi 10,10,3
+- ld 11,0(8)
+- ld 4,8(8)
+- li 7,2
+- mulli 6,9,-8
+- addi 10,10,-65
+- slwi 9,9,3
+- sld 10,7,10
+- sld 5,3,9
+- li 7,-1
+- addi 6,6,64
+- addi 10,10,-1
+- sld 7,7,9
+- srad 3,3,6
+- xor 6,5,11
+- xor 9,3,4
+- and 7,7,6
+- and 9,10,9
+- xor 10,7,11
+- xor 9,9,4
+- std 10,0(8)
+- std 9,8(8)
+- b .L19
+-.L35:
+- rldicl 9,9,0,32
+- ld 11,0(8)
+- li 6,-1
+- cmpldi 7,10,16
+- slwi 5,9,3
+- sld 7,3,5
+- sld 6,6,5
+- xor 7,7,11
+- and 7,6,7
+- xor 7,7,11
+- std 7,0(8)
+- ble 7,.L54
+- mulli 9,9,-8
+- ld 11,16(8)
+- slwi 10,10,3
+- li 7,2
+- addi 10,10,-129
+- addi 9,9,64
+- sld 7,7,10
+- srad 6,4,9
+- srad 3,3,9
+- addi 7,7,-1
+- sld 9,4,5
+- xor 10,6,11
+- or 9,3,9
+- and 10,7,10
+- std 9,8(8)
+- xor 10,10,11
+- std 10,16(8)
+- b .L19
+-.L54:
+- mulli 9,9,-4
+- slwi 10,10,3
+- ld 11,8(8)
+- sld 4,4,5
+- addi 10,10,-65
+- li 6,2
+- addi 9,9,32
+- sld 10,6,10
+- srad 3,3,9
+- srad 9,3,9
+- or 7,9,4
+- addi 9,10,-1
+- xor 10,7,11
+- and 9,10,9
+- xor 9,9,11
+- std 9,8(8)
+- b .L19
++ b .L20
++.L86:
++ bl __stack_chk_fail
++ nop
++.L74:
++ sth 3,1(9)
++.L69:
++ stb 8,0(9)
++ b .L20
++.L85:
++ srdi 7,4,32
++ sradi 8,4,24
++ sradi 10,4,16
++ sradi 4,4,8
++ stw 7,8(9)
++ stb 8,12(9)
++ stb 10,13(9)
++ stb 4,14(9)
++ b .L20
++.L76:
++ stw 3,1(9)
++ stb 8,0(9)
++ b .L20
++.L75:
++ stw 3,0(9)
++ b .L20
++.L73:
++ sth 3,0(9)
++ b .L20
++.L84:
++ srdi 8,4,32
++ sradi 10,4,24
++ sradi 4,4,16
++ stw 8,8(9)
++ stb 10,12(9)
++ stb 4,13(9)
++ b .L20
++.L83:
++ srdi 10,4,32
++ sradi 4,4,24
++ stw 10,8(9)
++ stb 4,12(9)
++ b .L20
++.L82:
++ srdi 4,4,32
++ stw 4,8(9)
++ b .L20
++.L81:
++ srdi 10,4,48
++ sradi 4,4,40
++ sth 10,8(9)
++ stb 4,10(9)
++ b .L20
++.L80:
++ srdi 4,4,48
++ sth 4,8(9)
++ b .L20
++.L79:
++ sradi 4,4,56
++ stb 4,8(9)
++ b .L20
++.L78:
++ stw 3,3(9)
++ stb 8,2(9)
++ stb 7,1(9)
++ stb 6,0(9)
++ b .L20
++.L77:
++ stw 3,2(9)
++ stb 8,1(9)
++ stb 7,0(9)
++ b .L20
+ .long 0
+ .byte 0,0,0,1,128,2,0,0
++ .cfi_endproc
++.LFE0:
+ .size avcall_call,.-avcall_call
++ .gnu_attribute 4, 9
+ #if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__
+ .section .note.GNU-stack,"",@progbits
+ #endif
+--- libffcall-2.2/vacall/vacall-powerpc64.c.old 2020-05-11 23:11:15.566571148 +0000
++++ libffcall-2.2/vacall/vacall-powerpc64.c 2020-05-11 23:16:52.489693582 +0000
+@@ -140,111 +140,111 @@
+ if (list.flags & __VA_REGISTER_STRUCT_RETURN) {
+ /* In the ELFv2 ABI, gcc returns structs of size <= 16 in registers. */
+ if (list.rsize > 0 && list.rsize <= 16) {
+- #if 0 /* Unoptimized */
++ #if 1 /* Unoptimized */
+ if (list.rsize == 1) {
+ iret = (__vaword)((unsigned char *) list.raddr)[0];
+ } else
+ if (list.rsize == 2) {
+- iret = ((__vaword)((unsigned char *) list.raddr)[0])
+- | ((__vaword)((unsigned char *) list.raddr)[1] << 8);
++ iret = ((__vaword)((unsigned char *) list.raddr)[1])
++ | ((__vaword)((unsigned char *) list.raddr)[0] << 8);
+ } else
+ if (list.rsize == 3) {
+- iret = ((__vaword)((unsigned char *) list.raddr)[0])
++ iret = ((__vaword)((unsigned char *) list.raddr)[2])
+ | ((__vaword)((unsigned char *) list.raddr)[1] << 8)
+- | ((__vaword)((unsigned char *) list.raddr)[2] << 16);
++ | ((__vaword)((unsigned char *) list.raddr)[0] << 16);
+ } else
+ if (list.rsize == 4) {
+- iret = ((__vaword)((unsigned char *) list.raddr)[0])
+- | ((__vaword)((unsigned char *) list.raddr)[1] << 8)
+- | ((__vaword)((unsigned char *) list.raddr)[2] << 16)
+- | ((__vaword)((unsigned char *) list.raddr)[3] << 24);
++ iret = ((__vaword)((unsigned char *) list.raddr)[3])
++ | ((__vaword)((unsigned char *) list.raddr)[2] << 8)
++ | ((__vaword)((unsigned char *) list.raddr)[1] << 16)
++ | ((__vaword)((unsigned char *) list.raddr)[0] << 24);
+ } else
+ if (list.rsize == 5) {
+- iret = ((__vaword)((unsigned char *) list.raddr)[0])
+- | ((__vaword)((unsigned char *) list.raddr)[1] << 8)
++ iret = ((__vaword)((unsigned char *) list.raddr)[4])
++ | ((__vaword)((unsigned char *) list.raddr)[3] << 8)
+ | ((__vaword)((unsigned char *) list.raddr)[2] << 16)
+- | ((__vaword)((unsigned char *) list.raddr)[3] << 24)
+- | ((__vaword)((unsigned char *) list.raddr)[4] << 32);
++ | ((__vaword)((unsigned char *) list.raddr)[1] << 24)
++ | ((__vaword)((unsigned char *) list.raddr)[0] << 32);
+ } else
+ if (list.rsize == 6) {
+- iret = ((__vaword)((unsigned char *) list.raddr)[0])
+- | ((__vaword)((unsigned char *) list.raddr)[1] << 8)
+- | ((__vaword)((unsigned char *) list.raddr)[2] << 16)
+- | ((__vaword)((unsigned char *) list.raddr)[3] << 24)
+- | ((__vaword)((unsigned char *) list.raddr)[4] << 32)
+- | ((__vaword)((unsigned char *) list.raddr)[5] << 40);
++ iret = ((__vaword)((unsigned char *) list.raddr)[5])
++ | ((__vaword)((unsigned char *) list.raddr)[4] << 8)
++ | ((__vaword)((unsigned char *) list.raddr)[3] << 16)
++ | ((__vaword)((unsigned char *) list.raddr)[2] << 24)
++ | ((__vaword)((unsigned char *) list.raddr)[1] << 32)
++ | ((__vaword)((unsigned char *) list.raddr)[0] << 40);
+ } else
+ if (list.rsize == 7) {
+- iret = ((__vaword)((unsigned char *) list.raddr)[0])
+- | ((__vaword)((unsigned char *) list.raddr)[1] << 8)
+- | ((__vaword)((unsigned char *) list.raddr)[2] << 16)
++ iret = ((__vaword)((unsigned char *) list.raddr)[6])
++ | ((__vaword)((unsigned char *) list.raddr)[5] << 8)
++ | ((__vaword)((unsigned char *) list.raddr)[4] << 16)
+ | ((__vaword)((unsigned char *) list.raddr)[3] << 24)
+- | ((__vaword)((unsigned char *) list.raddr)[4] << 32)
+- | ((__vaword)((unsigned char *) list.raddr)[5] << 40)
+- | ((__vaword)((unsigned char *) list.raddr)[6] << 48);
++ | ((__vaword)((unsigned char *) list.raddr)[2] << 32)
++ | ((__vaword)((unsigned char *) list.raddr)[1] << 40)
++ | ((__vaword)((unsigned char *) list.raddr)[0] << 48);
+ } else
+ if (list.rsize >= 8 && list.rsize <= 16) {
+- iret = ((__vaword)((unsigned char *) list.raddr)[0])
+- | ((__vaword)((unsigned char *) list.raddr)[1] << 8)
+- | ((__vaword)((unsigned char *) list.raddr)[2] << 16)
+- | ((__vaword)((unsigned char *) list.raddr)[3] << 24)
+- | ((__vaword)((unsigned char *) list.raddr)[4] << 32)
+- | ((__vaword)((unsigned char *) list.raddr)[5] << 40)
+- | ((__vaword)((unsigned char *) list.raddr)[6] << 48)
+- | ((__vaword)((unsigned char *) list.raddr)[7] << 56);
++ iret = ((__vaword)((unsigned char *) list.raddr)[7])
++ | ((__vaword)((unsigned char *) list.raddr)[6] << 8)
++ | ((__vaword)((unsigned char *) list.raddr)[5] << 16)
++ | ((__vaword)((unsigned char *) list.raddr)[4] << 24)
++ | ((__vaword)((unsigned char *) list.raddr)[3] << 32)
++ | ((__vaword)((unsigned char *) list.raddr)[2] << 40)
++ | ((__vaword)((unsigned char *) list.raddr)[1] << 48)
++ | ((__vaword)((unsigned char *) list.raddr)[0] << 56);
+ if (list.rsize == 8) {
+ } else
+ if (list.rsize == 9) {
+- iret2 = (__vaword)((unsigned char *) list.raddr)[8];
++ iret2 = (__vaword)((unsigned char *) list.raddr)[8] << 56;
+ } else
+ if (list.rsize == 10) {
+- iret2 = ((__vaword)((unsigned char *) list.raddr)[8])
+- | ((__vaword)((unsigned char *) list.raddr)[9] << 8);
++ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56)
++ | ((__vaword)((unsigned char *) list.raddr)[9] << 48);
+ } else
+ if (list.rsize == 11) {
+- iret2 = ((__vaword)((unsigned char *) list.raddr)[8])
+- | ((__vaword)((unsigned char *) list.raddr)[9] << 8)
+- | ((__vaword)((unsigned char *) list.raddr)[10] << 16);
++ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56)
++ | ((__vaword)((unsigned char *) list.raddr)[9] << 48)
++ | ((__vaword)((unsigned char *) list.raddr)[10] << 40);
+ } else
+ if (list.rsize == 12) {
+- iret2 = ((__vaword)((unsigned char *) list.raddr)[8])
+- | ((__vaword)((unsigned char *) list.raddr)[9] << 8)
+- | ((__vaword)((unsigned char *) list.raddr)[10] << 16)
+- | ((__vaword)((unsigned char *) list.raddr)[11] << 24);
++ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56)
++ | ((__vaword)((unsigned char *) list.raddr)[9] << 48)
++ | ((__vaword)((unsigned char *) list.raddr)[10] << 40)
++ | ((__vaword)((unsigned char *) list.raddr)[11] << 32);
+ } else
+ if (list.rsize == 13) {
+- iret2 = ((__vaword)((unsigned char *) list.raddr)[8])
+- | ((__vaword)((unsigned char *) list.raddr)[9] << 8)
+- | ((__vaword)((unsigned char *) list.raddr)[10] << 16)
+- | ((__vaword)((unsigned char *) list.raddr)[11] << 24)
+- | ((__vaword)((unsigned char *) list.raddr)[12] << 32);
++ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56)
++ | ((__vaword)((unsigned char *) list.raddr)[9] << 48)
++ | ((__vaword)((unsigned char *) list.raddr)[10] << 40)
++ | ((__vaword)((unsigned char *) list.raddr)[11] << 32)
++ | ((__vaword)((unsigned char *) list.raddr)[12] << 24);
+ } else
+ if (list.rsize == 14) {
+- iret2 = ((__vaword)((unsigned char *) list.raddr)[8])
+- | ((__vaword)((unsigned char *) list.raddr)[9] << 8)
+- | ((__vaword)((unsigned char *) list.raddr)[10] << 16)
+- | ((__vaword)((unsigned char *) list.raddr)[11] << 24)
+- | ((__vaword)((unsigned char *) list.raddr)[12] << 32)
+- | ((__vaword)((unsigned char *) list.raddr)[13] << 40);
++ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56)
++ | ((__vaword)((unsigned char *) list.raddr)[9] << 48)
++ | ((__vaword)((unsigned char *) list.raddr)[10] << 40)
++ | ((__vaword)((unsigned char *) list.raddr)[11] << 32)
++ | ((__vaword)((unsigned char *) list.raddr)[12] << 24)
++ | ((__vaword)((unsigned char *) list.raddr)[13] << 16);
+ } else
+ if (list.rsize == 15) {
+- iret2 = ((__vaword)((unsigned char *) list.raddr)[8])
+- | ((__vaword)((unsigned char *) list.raddr)[9] << 8)
+- | ((__vaword)((unsigned char *) list.raddr)[10] << 16)
+- | ((__vaword)((unsigned char *) list.raddr)[11] << 24)
+- | ((__vaword)((unsigned char *) list.raddr)[12] << 32)
+- | ((__vaword)((unsigned char *) list.raddr)[13] << 40)
+- | ((__vaword)((unsigned char *) list.raddr)[14] << 48);
++ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56)
++ | ((__vaword)((unsigned char *) list.raddr)[9] << 48)
++ | ((__vaword)((unsigned char *) list.raddr)[10] << 40)
++ | ((__vaword)((unsigned char *) list.raddr)[11] << 32)
++ | ((__vaword)((unsigned char *) list.raddr)[12] << 24)
++ | ((__vaword)((unsigned char *) list.raddr)[13] << 16)
++ | ((__vaword)((unsigned char *) list.raddr)[14] << 8);
+ } else
+ if (list.rsize == 16) {
+- iret2 = ((__vaword)((unsigned char *) list.raddr)[8])
+- | ((__vaword)((unsigned char *) list.raddr)[9] << 8)
+- | ((__vaword)((unsigned char *) list.raddr)[10] << 16)
+- | ((__vaword)((unsigned char *) list.raddr)[11] << 24)
+- | ((__vaword)((unsigned char *) list.raddr)[12] << 32)
+- | ((__vaword)((unsigned char *) list.raddr)[13] << 40)
+- | ((__vaword)((unsigned char *) list.raddr)[14] << 48)
+- | ((__vaword)((unsigned char *) list.raddr)[15] << 56);
++ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56)
++ | ((__vaword)((unsigned char *) list.raddr)[9] << 48)
++ | ((__vaword)((unsigned char *) list.raddr)[10] << 40)
++ | ((__vaword)((unsigned char *) list.raddr)[11] << 32)
++ | ((__vaword)((unsigned char *) list.raddr)[12] << 24)
++ | ((__vaword)((unsigned char *) list.raddr)[13] << 16)
++ | ((__vaword)((unsigned char *) list.raddr)[14] << 8)
++ | ((__vaword)((unsigned char *) list.raddr)[15]);
+ }
+ }
+ #else /* Optimized: fewer conditional jumps, fewer memory accesses */
+--- libffcall-2.2/vacall/vacall-powerpc64-elfv2-linux.S.old 2019-08-25 01:03:06.000000000 +0000
++++ libffcall-2.2/vacall/vacall-powerpc64-elfv2-linux.S 2020-05-11 23:18:00.842212129 +0000
+@@ -1,9 +1,8 @@
+ .file "vacall-powerpc64.c"
+- .machine power4
+ .abiversion 2
+- .section ".toc","aw"
+ .section ".text"
+ .section ".toc","aw"
++ .align 3
+ .LC0:
+ .quad vacall_function
+ .section ".text"
+@@ -12,40 +11,50 @@
+ .globl vacall_receiver
+ .type vacall_receiver, @function
+ vacall_receiver:
+-0: addis 2,12,.TOC.-0b@ha
+- addi 2,2,.TOC.-0b@l
++.LFB0:
++ .cfi_startproc
++.LCF0:
++0: addis 2,12,.TOC.-.LCF0@ha
++ addi 2,2,.TOC.-.LCF0@l
+ .localentry vacall_receiver,.-vacall_receiver
+ mflr 0
+ std 31,-8(1)
++ std 30,-16(1)
+ addis 11,2,.LC0@toc@ha
+- ld 12,.LC0@toc@l(11)
+- li 11,0
+ std 0,16(1)
+ stdu 1,-224(1)
+- mr 31,1
+- ld 0,0(12)
++ .cfi_def_cfa_offset 224
++ .cfi_offset 65, 16
++ .cfi_offset 31, -8
++ .cfi_offset 30, -16
++ li 0,0
++ ld 12,.LC0@toc@l(11)
+ std 2,24(1)
++ mr 31,1
++ .cfi_def_cfa_register 31
++ addi 11,31,256
++ ld 30,-28688(13)
++ std 30,200(31)
++ li 30,0
++ std 6,280(31)
++ ld 6,0(12)
+ std 9,304(31)
+ li 9,0
+ std 3,256(31)
+- addi 3,31,32
+ std 4,264(31)
++ stfd 1,96(31)
+ std 5,272(31)
+- mtctr 0
+- stw 9,32(31)
+- std 6,280(31)
+ std 7,288(31)
+ std 8,296(31)
++ mtctr 6
+ std 10,312(31)
+- stfd 1,96(31)
+- addi 9,31,256
+ stfd 2,104(31)
+ stfd 3,112(31)
+ stfd 4,120(31)
++ mr 12,6
+ stfd 5,128(31)
+- mr 12,0
+- std 9,56(31)
+ stfd 6,136(31)
++ addi 3,31,32
+ stfd 7,144(31)
+ stfd 8,152(31)
+ stfd 9,160(31)
+@@ -53,173 +62,232 @@
+ stfd 11,176(31)
+ stfd 12,184(31)
+ stfd 13,192(31)
+- std 11,64(31)
+- stw 11,72(31)
+- stw 11,88(31)
++ stw 0,32(31)
++ std 11,56(31)
++ std 9,64(31)
++ stw 9,72(31)
++ stw 9,88(31)
+ bctrl
+ ld 2,24(1)
+ lwz 9,72(31)
+ cmpdi 7,9,0
+ beq 7,.L1
+ cmplwi 7,9,1
+- beq 7,.L27
++ beq 7,.L41
+ cmplwi 7,9,2
+- beq 7,.L30
++ beq 7,.L45
+ cmplwi 7,9,3
+- beq 7,.L27
++ beq 7,.L41
+ cmplwi 7,9,4
+- beq 7,.L31
++ beq 7,.L46
+ cmplwi 7,9,5
+- beq 7,.L32
++ beq 7,.L47
+ cmplwi 7,9,6
+- beq 7,.L33
++ beq 7,.L48
+ cmplwi 7,9,7
+- beq 7,.L34
++ beq 7,.L49
+ cmplwi 7,9,8
+- beq 7,.L28
++ beq 7,.L42
+ cmplwi 7,9,9
+- beq 7,.L28
++ beq 7,.L42
+ cmplwi 7,9,10
+- beq 7,.L28
++ beq 7,.L42
+ cmplwi 7,9,11
+- beq 7,.L28
++ beq 7,.L42
+ cmplwi 7,9,12
+- beq 7,.L35
++ beq 7,.L50
+ cmplwi 7,9,13
+- beq 7,.L36
++ beq 7,.L51
+ cmplwi 7,9,14
+- beq 7,.L28
++ beq 7,.L42
+ cmplwi 7,9,15
+ bne 7,.L1
+ lwz 9,32(31)
+- rldicl. 10,9,54,63
++ andi. 9,9,0x400
+ beq 0,.L1
+- ld 9,80(31)
+- addi 10,9,-1
+- cmpldi 7,10,15
++ ld 10,80(31)
++ addi 9,10,-1
++ cmpldi 7,9,15
+ bgt 7,.L1
++ cmpldi 7,10,1
+ ld 8,64(31)
+- cmpldi 7,9,8
+- rldicl 10,8,0,61
+- rldicr 8,8,0,60
+- add 9,9,10
+- bgt 7,.L17
+- cmpldi 7,9,8
+- slwi 9,9,3
+- bgt 7,.L18
+- ld 7,0(8)
+- addi 9,9,-1
+- li 8,2
+- slwi 10,10,3
+- sld 9,8,9
+- addi 9,9,-1
+- and 9,9,7
+- srad 3,9,10
++ lbz 9,0(8)
++ beq 7,.L52
++ cmpldi 7,10,2
++ beq 7,.L53
++ cmpldi 7,10,3
++ lbz 7,1(8)
++ lbz 6,2(8)
++ beq 7,.L54
++ cmpldi 7,10,4
++ beq 7,.L55
++ cmpldi 7,10,5
++ beq 7,.L56
++ cmpldi 7,10,6
++ beq 7,.L57
++ cmpldi 7,10,7
++ beq 7,.L58
++ cmpldi 7,10,8
++ ld 3,0(8)
++ beq 7,.L1
++ cmpldi 7,10,9
++ lbz 9,8(8)
++ sldi 9,9,56
++ beq 7,.L59
++ lbz 7,9(8)
++ cmpldi 7,10,10
++ sldi 7,7,48
++ or 7,7,9
++ beq 7,.L60
++ cmpldi 7,10,11
++ lbz 9,10(8)
++ sldi 9,9,40
++ beq 7,.L43
++ cmpldi 7,10,12
++ lbz 6,11(8)
++ sldi 6,6,32
++ beq 7,.L61
++ cmpldi 7,10,13
++ lbz 5,12(8)
++ sldi 5,5,24
++ beq 7,.L62
++ cmpldi 7,10,14
++ lbz 11,13(8)
++ sldi 11,11,16
++ beq 7,.L63
++ cmpldi 7,10,15
++ beq 7,.L64
++ ld 4,8(8)
++ .p2align 4,,15
+ .L1:
++ ld 9,200(31)
++ ld 10,-28688(13)
++ xor. 9,9,10
++ li 10,0
++ bne 0,.L65
+ addi 1,31,224
++ .cfi_remember_state
++ .cfi_def_cfa 1, 0
+ ld 0,16(1)
++ ld 30,-16(1)
+ ld 31,-8(1)
+ mtlr 0
++ .cfi_restore 65
++ .cfi_restore 31
++ .cfi_restore 30
+ blr
+ .p2align 4,,15
+-.L27:
+- addi 1,31,224
++.L41:
++ .cfi_restore_state
+ lbz 3,40(31)
+- ld 0,16(1)
+- ld 31,-8(1)
+- mtlr 0
+- blr
++ b .L1
+ .p2align 4,,15
+-.L30:
+- lbz 9,40(31)
+- extsb 3,9
++.L45:
++ lbz 3,40(31)
++ extsb 3,3
+ b .L1
+ .p2align 4,,15
+-.L28:
+- ld 3,40(31)
++.L48:
++ lwa 3,40(31)
+ b .L1
+ .p2align 4,,15
+-.L31:
++.L46:
+ lha 3,40(31)
+ b .L1
+ .p2align 4,,15
+-.L32:
++.L47:
+ lhz 3,40(31)
+ b .L1
+ .p2align 4,,15
+-.L33:
+- lwa 3,40(31)
+- b .L1
+- .p2align 4,,15
+-.L35:
+- lfs 1,40(31)
++.L42:
++ ld 3,40(31)
+ b .L1
+ .p2align 4,,15
+-.L34:
++.L49:
+ lwz 3,40(31)
+ b .L1
+-.L36:
++.L50:
++ lfs 1,40(31)
++ b .L1
++.L51:
+ lfd 1,40(31)
+ b .L1
+-.L17:
+- cmpldi 7,9,16
+- rldicl 10,10,0,32
+- slwi 9,9,3
+- ble 7,.L37
+- li 7,2
+- addi 9,9,-129
+- ld 11,16(8)
+- ld 5,0(8)
+- mulli 6,10,-8
+- sld 9,7,9
+- ld 7,8(8)
+- addi 8,9,-1
+- slwi 9,10,3
+- addi 6,6,64
+- and 10,8,11
+- srad 8,5,9
+- sld 5,7,6
+- srad 9,7,9
+- sld 10,10,6
+- or 3,8,5
+- or 4,10,9
+- b .L1
+-.L18:
+- rldicl 10,10,0,32
+- li 7,2
+- ld 6,8(8)
+- ld 8,0(8)
+- addi 9,9,-65
+- sld 9,7,9
+- mulli 7,10,-8
+- slwi 10,10,3
+- addi 9,9,-1
+- srad 10,8,10
+- and 9,9,6
+- addi 7,7,64
+- sld 9,9,7
+- or 3,9,10
+- b .L1
+-.L37:
+- li 7,2
+- addi 9,9,-65
+- ld 5,8(8)
+- ld 6,0(8)
+- sld 9,7,9
+- mulli 7,10,-4
+- addi 9,9,-1
+- addi 7,7,32
+- and 8,9,5
+- slwi 9,10,3
+- sld 10,8,7
+- srad 6,6,9
+- srad 4,8,9
+- sld 7,10,7
+- or 3,6,7
++.L65:
++ bl __stack_chk_fail
++ nop
++.L64:
++ or 4,9,6
++ lbz 9,14(8)
++ or 4,4,5
++ sldi 9,9,8
++ or 4,4,11
++ or 4,4,9
++ or 4,4,7
++ b .L1
++.L63:
++ or 4,9,6
++ or 4,4,5
++ or 4,4,11
++ or 4,4,7
++ b .L1
++.L55:
++ lwz 3,0(8)
++ b .L1
++.L54:
++ sldi 7,7,8
++ sldi 9,9,16
++ or 9,7,9
++ or 3,9,6
++ b .L1
++.L53:
++ lhz 3,0(8)
++ b .L1
++.L52:
++ mr 3,9
++ b .L1
++.L62:
++ or 9,9,6
++ or 4,9,5
++ or 4,4,7
++ b .L1
++.L61:
++ or 9,9,6
++.L43:
++ or 4,9,7
++ b .L1
++.L60:
++ mr 4,7
++ b .L1
++.L59:
++ mr 4,9
++ b .L1
++.L58:
++ sldi 6,6,32
++ sldi 7,7,40
++ lwz 3,3(8)
++ sldi 9,9,48
++ or 7,6,7
++ or 3,7,3
++ or 3,3,9
++ b .L1
++.L57:
++ sldi 7,7,32
++ sldi 9,9,40
++ lwz 3,2(8)
++ or 9,7,9
++ or 3,9,3
++ b .L1
++.L56:
++ lwz 3,1(8)
++ sldi 9,9,32
++ or 3,3,9
+ b .L1
+ .long 0
+- .byte 0,0,0,1,128,1,0,0
++ .byte 0,0,0,1,128,2,0,0
++ .cfi_endproc
++.LFE0:
+ .size vacall_receiver,.-vacall_receiver
++ .gnu_attribute 4, 9
+ #if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__
+ .section .note.GNU-stack,"",@progbits
+ #endif
+--- libffcall-2.2/callback/vacall_r/vacall-powerpc64-elfv2-linux.S.old 2019-08-25 01:03:08.000000000 +0000
++++ libffcall-2.2/callback/vacall_r/vacall-powerpc64-elfv2-linux.S 2020-05-11 23:26:54.443785997 +0000
+@@ -1,45 +1,56 @@
+ .file "vacall-powerpc64.c"
+- .machine power4
+ .abiversion 2
+- .section ".toc","aw"
+ .section ".text"
+ .align 2
+ .p2align 4,,15
+ .type callback_receiver, @function
+ callback_receiver:
+-0: addis 2,12,.TOC.-0b@ha
+- addi 2,2,.TOC.-0b@l
++.LFB0:
++ .cfi_startproc
++.LCF0:
++0: addis 2,12,.TOC.-.LCF0@ha
++ addi 2,2,.TOC.-.LCF0@l
+ .localentry callback_receiver,.-callback_receiver
+ mflr 0
+- std 30,-16(1)
++ std 28,-32(1)
++ std 29,-24(1)
+ std 31,-8(1)
++ std 30,-16(1)
+ std 0,16(1)
+- stdu 1,-224(1)
+- li 0,0
+- ld 30,0(11)
++ stdu 1,-240(1)
++ .cfi_def_cfa_offset 240
++ .cfi_offset 65, 16
++ .cfi_offset 28, -32
++ .cfi_offset 29, -24
++ .cfi_offset 31, -8
++ .cfi_offset 30, -16
++ li 28,0
++ std 2,24(1)
+ mr 31,1
+- std 3,256(31)
+- std 4,264(31)
+- addi 4,31,32
+- ld 3,8(11)
+- std 9,304(31)
+- mtctr 30
++ .cfi_def_cfa_register 31
++ addi 29,31,272
++ ld 0,-28688(13)
++ std 0,200(31)
++ li 0,0
++ ld 0,0(11)
++ std 9,320(31)
+ li 9,0
+- std 5,272(31)
+- std 6,280(31)
+- std 7,288(31)
+- std 8,296(31)
+- stw 9,32(31)
+- std 10,312(31)
+ stfd 1,96(31)
++ std 3,272(31)
++ std 4,280(31)
++ std 5,288(31)
+ stfd 2,104(31)
+- mr 12,30
+- addi 9,31,256
++ mtctr 0
++ std 6,296(31)
++ std 7,304(31)
++ std 8,312(31)
++ std 10,328(31)
+ stfd 3,112(31)
+ stfd 4,120(31)
+ stfd 5,128(31)
+ stfd 6,136(31)
+- std 9,56(31)
++ mr 12,0
++ addi 4,31,32
+ stfd 7,144(31)
+ stfd 8,152(31)
+ stfd 9,160(31)
+@@ -47,195 +58,266 @@
+ stfd 11,176(31)
+ stfd 12,184(31)
+ stfd 13,192(31)
+- std 0,64(31)
+- stw 0,72(31)
+- stw 0,88(31)
+- std 2,24(1)
++ ld 3,8(11)
++ stw 28,32(31)
++ std 9,64(31)
++ stw 9,72(31)
++ stw 9,88(31)
++ std 29,56(31)
+ bctrl
+ ld 2,24(1)
+ lwz 9,72(31)
+ cmpdi 7,9,0
+ beq 7,.L1
+ cmplwi 7,9,1
+- beq 7,.L27
++ beq 7,.L41
+ cmplwi 7,9,2
+- beq 7,.L30
++ beq 7,.L45
+ cmplwi 7,9,3
+- beq 7,.L27
++ beq 7,.L41
+ cmplwi 7,9,4
+- beq 7,.L31
++ beq 7,.L46
+ cmplwi 7,9,5
+- beq 7,.L32
++ beq 7,.L47
+ cmplwi 7,9,6
+- beq 7,.L33
++ beq 7,.L48
+ cmplwi 7,9,7
+- beq 7,.L34
++ beq 7,.L49
+ cmplwi 7,9,8
+- beq 7,.L28
++ beq 7,.L42
+ cmplwi 7,9,9
+- beq 7,.L28
++ beq 7,.L42
+ cmplwi 7,9,10
+- beq 7,.L28
++ beq 7,.L42
+ cmplwi 7,9,11
+- beq 7,.L28
++ beq 7,.L42
+ cmplwi 7,9,12
+- beq 7,.L35
++ beq 7,.L50
+ cmplwi 7,9,13
+- beq 7,.L36
++ beq 7,.L51
+ cmplwi 7,9,14
+- beq 7,.L28
++ beq 7,.L42
+ cmplwi 7,9,15
+ bne 7,.L1
+ lwz 9,32(31)
+- rldicl. 10,9,54,63
++ andi. 9,9,0x400
+ beq 0,.L1
+- ld 9,80(31)
+- addi 10,9,-1
+- cmpldi 7,10,15
++ ld 10,80(31)
++ addi 9,10,-1
++ cmpldi 7,9,15
+ bgt 7,.L1
++ cmpldi 7,10,1
+ ld 8,64(31)
+- cmpldi 7,9,8
+- rldicl 10,8,0,61
+- rldicr 8,8,0,60
+- add 9,9,10
+- bgt 7,.L17
+- cmpldi 7,9,8
+- slwi 9,9,3
+- bgt 7,.L18
+- ld 7,0(8)
+- addi 9,9,-1
+- li 8,2
+- slwi 10,10,3
+- sld 9,8,9
+- addi 9,9,-1
+- and 9,9,7
+- srad 3,9,10
++ lbz 9,0(8)
++ beq 7,.L52
++ cmpldi 7,10,2
++ beq 7,.L53
++ cmpldi 7,10,3
++ lbz 7,1(8)
++ lbz 6,2(8)
++ beq 7,.L54
++ cmpldi 7,10,4
++ beq 7,.L55
++ cmpldi 7,10,5
++ beq 7,.L56
++ cmpldi 7,10,6
++ beq 7,.L57
++ cmpldi 7,10,7
++ beq 7,.L58
++ cmpldi 7,10,8
++ ld 3,0(8)
++ beq 7,.L1
++ cmpldi 7,10,9
++ lbz 9,8(8)
++ sldi 9,9,56
++ beq 7,.L59
++ lbz 7,9(8)
++ cmpldi 7,10,10
++ sldi 7,7,48
++ or 7,7,9
++ beq 7,.L60
++ cmpldi 7,10,11
++ lbz 9,10(8)
++ sldi 9,9,40
++ beq 7,.L43
++ cmpldi 7,10,12
++ lbz 6,11(8)
++ sldi 6,6,32
++ beq 7,.L61
++ cmpldi 7,10,13
++ lbz 5,12(8)
++ sldi 5,5,24
++ beq 7,.L62
++ cmpldi 7,10,14
++ lbz 0,13(8)
++ sldi 0,0,16
++ beq 7,.L63
++ cmpldi 7,10,15
++ beq 7,.L64
++ ld 4,8(8)
++ .p2align 4,,15
+ .L1:
+- addi 1,31,224
++ ld 9,200(31)
++ ld 10,-28688(13)
++ xor. 9,9,10
++ li 10,0
++ bne 0,.L65
++ addi 1,31,240
++ .cfi_remember_state
++ .cfi_def_cfa 1, 0
+ ld 0,16(1)
++ ld 28,-32(1)
++ ld 29,-24(1)
+ ld 30,-16(1)
+ ld 31,-8(1)
+ mtlr 0
++ .cfi_restore 65
++ .cfi_restore 31
++ .cfi_restore 30
++ .cfi_restore 29
++ .cfi_restore 28
+ blr
+ .p2align 4,,15
+-.L27:
+- addi 1,31,224
++.L41:
++ .cfi_restore_state
+ lbz 3,40(31)
+- ld 0,16(1)
+- ld 30,-16(1)
+- ld 31,-8(1)
+- mtlr 0
+- blr
++ b .L1
+ .p2align 4,,15
+-.L30:
+- lbz 9,40(31)
+- extsb 3,9
++.L45:
++ lbz 3,40(31)
++ extsb 3,3
+ b .L1
+ .p2align 4,,15
+-.L28:
+- ld 3,40(31)
++.L48:
++ lwa 3,40(31)
+ b .L1
+ .p2align 4,,15
+-.L31:
++.L46:
+ lha 3,40(31)
+ b .L1
+ .p2align 4,,15
+-.L32:
++.L47:
+ lhz 3,40(31)
+ b .L1
+ .p2align 4,,15
+-.L33:
+- lwa 3,40(31)
+- b .L1
+- .p2align 4,,15
+-.L35:
+- lfs 1,40(31)
++.L42:
++ ld 3,40(31)
+ b .L1
+ .p2align 4,,15
+-.L34:
++.L49:
+ lwz 3,40(31)
+ b .L1
+-.L36:
++.L50:
++ lfs 1,40(31)
++ b .L1
++.L51:
+ lfd 1,40(31)
+ b .L1
+-.L17:
+- cmpldi 7,9,16
+- rldicl 10,10,0,32
+- slwi 9,9,3
+- ble 7,.L37
+- li 7,2
+- addi 9,9,-129
+- ld 0,16(8)
+- ld 5,0(8)
+- mulli 6,10,-8
+- sld 9,7,9
+- ld 7,8(8)
+- addi 8,9,-1
+- slwi 9,10,3
+- addi 6,6,64
+- and 10,8,0
+- srad 8,5,9
+- sld 5,7,6
+- srad 9,7,9
+- sld 10,10,6
+- or 3,8,5
+- or 4,10,9
+- b .L1
+-.L18:
+- rldicl 10,10,0,32
+- li 7,2
+- ld 6,8(8)
+- ld 8,0(8)
+- addi 9,9,-65
+- sld 9,7,9
+- mulli 7,10,-8
+- slwi 10,10,3
+- addi 9,9,-1
+- srad 10,8,10
+- and 9,9,6
+- addi 7,7,64
+- sld 9,9,7
+- or 3,9,10
+- b .L1
+-.L37:
+- li 7,2
+- addi 9,9,-65
+- ld 5,8(8)
+- ld 6,0(8)
+- sld 9,7,9
+- mulli 7,10,-4
+- addi 9,9,-1
+- addi 7,7,32
+- and 8,9,5
+- slwi 9,10,3
+- sld 10,8,7
+- srad 6,6,9
+- srad 4,8,9
+- sld 7,10,7
+- or 3,6,7
++.L65:
++ bl __stack_chk_fail
++ nop
++.L64:
++ or 4,9,6
++ lbz 9,14(8)
++ or 4,4,5
++ sldi 9,9,8
++ or 4,4,0
++ or 4,4,9
++ or 4,4,7
++ b .L1
++.L63:
++ or 4,9,6
++ or 4,4,5
++ or 4,4,0
++ or 4,4,7
++ b .L1
++.L55:
++ lwz 3,0(8)
++ b .L1
++.L54:
++ sldi 7,7,8
++ sldi 9,9,16
++ or 9,7,9
++ or 3,9,6
++ b .L1
++.L53:
++ lhz 3,0(8)
++ b .L1
++.L52:
++ mr 3,9
++ b .L1
++.L62:
++ or 9,9,6
++ or 4,9,5
++ or 4,4,7
++ b .L1
++.L61:
++ or 9,9,6
++.L43:
++ or 4,9,7
++ b .L1
++.L60:
++ mr 4,7
++ b .L1
++.L59:
++ mr 4,9
++ b .L1
++.L58:
++ sldi 6,6,32
++ sldi 7,7,40
++ lwz 3,3(8)
++ sldi 9,9,48
++ or 7,6,7
++ or 3,7,3
++ or 3,3,9
++ b .L1
++.L57:
++ sldi 7,7,32
++ sldi 9,9,40
++ lwz 3,2(8)
++ or 9,7,9
++ or 3,9,3
++ b .L1
++.L56:
++ lwz 3,1(8)
++ sldi 9,9,32
++ or 3,3,9
+ b .L1
+ .long 0
+- .byte 0,0,0,1,128,2,0,0
++ .byte 0,0,0,1,128,4,0,0
++ .cfi_endproc
++.LFE0:
+ .size callback_receiver,.-callback_receiver
+ .align 2
+ .p2align 4,,15
+ .globl callback_get_receiver
+ .type callback_get_receiver, @function
+ callback_get_receiver:
+-0: addis 2,12,.TOC.-0b@ha
+- addi 2,2,.TOC.-0b@l
++.LFB1:
++ .cfi_startproc
++.LCF1:
++0: addis 2,12,.TOC.-.LCF1@ha
++ addi 2,2,.TOC.-.LCF1@l
+ .localentry callback_get_receiver,.-callback_get_receiver
+ std 31,-8(1)
+ stdu 1,-48(1)
++ .cfi_def_cfa_offset 48
++ .cfi_offset 31, -8
+ addis 3,2,callback_receiver@toc@ha
+ addi 3,3,callback_receiver@toc@l
+ mr 31,1
++ .cfi_def_cfa_register 31
+ addi 1,31,48
++ .cfi_def_cfa 1, 0
+ ld 31,-8(1)
++ .cfi_restore 31
+ blr
+ .long 0
+ .byte 0,0,0,0,128,1,0,0
++ .cfi_endproc
++.LFE1:
+ .size callback_get_receiver,.-callback_get_receiver
++ .gnu_attribute 4, 9
+ #if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__
+ .section .note.GNU-stack,"",@progbits
+ #endif
diff --git a/user/libsigsegv/APKBUILD b/user/libsigsegv/APKBUILD
new file mode 100644
index 000000000..a99ee7075
--- /dev/null
+++ b/user/libsigsegv/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Contributor: Lee Starnes <lee@canned-death.us>
+# Maintainer: Lee Starnes <lee@canned-death.us>
+pkgname=libsigsegv
+pkgver=2.12
+pkgrel=0
+pkgdesc="A library for handling page faults in user mode"
+url="https://www.gnu.org/software/libsigsegv"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends=""
+subpackages="$pkgname-dev"
+source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz
+ musl-ppc32.patch
+ "
+
+build() {
+ ./configure \
+ --prefix=/usr \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --localstatedir=/var \
+ --sysconfdir=/etc \
+ --enable-shared
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="27986e8aaf4357ed131032aa7c281a5a28c5759530c62bb76f034aea33959547dcaae805e06347a1f532f0488b72fbbbdac4400f74e8d3f2128511526e8a5913 libsigsegv-2.12.tar.gz
+fba3bf8679619d9e363bf42e476960dd73cc9a01915773193d6b6d2ca76ee5240a9284982d00bc40601c6da3210c08eb90e61661404ccaf017144ccc36b25762 musl-ppc32.patch"
diff --git a/user/libsigsegv/musl-ppc32.patch b/user/libsigsegv/musl-ppc32.patch
new file mode 100644
index 000000000..75e10a45f
--- /dev/null
+++ b/user/libsigsegv/musl-ppc32.patch
@@ -0,0 +1,10 @@
+--- libsigsegv-2.12/src/fault-linux-powerpc.h.old 2017-03-04 15:28:15.000000000 +0000
++++ libsigsegv-2.12/src/fault-linux-powerpc.h 2020-05-11 21:49:56.190783142 +0000
+@@ -33,6 +33,6 @@
+ # if 0
+ # define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.regs->gpr[1]
+ # else
+-# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.uc_regs->gregs[1]
++# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.gregs[1]
+ # endif
+ #endif
diff --git a/user/mtools/APKBUILD b/user/mtools/APKBUILD
new file mode 100644
index 000000000..34b0b8730
--- /dev/null
+++ b/user/mtools/APKBUILD
@@ -0,0 +1,32 @@
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=mtools
+pkgver=4.0.24
+pkgrel=0
+pkgdesc="Utilities to access MS-DOS disks without mounting them"
+url="https://www.gnu.org/software/mtools/"
+arch="all"
+options="!check" # No test suite.
+license="GPL-3.0+"
+depends=""
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://ftp.gnu.org/gnu/mtools/mtools-$pkgver.tar.bz2"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ install -Dm644 -t "$pkgdir"/etc mtools.conf
+ sed -i -e 's/^SAMPLE FILE$/#&/' "$pkgdir"/etc/mtools.conf
+}
+
+sha512sums="b74becc4f696315cfabc016d1746e744b43e366de73bf1bffeec4fbab1e4815967594de8acb4af01f89d36a925f93672efbac205b89540161bd53ab7edebcf04 mtools-4.0.24.tar.bz2"
diff --git a/user/net-snmp/APKBUILD b/user/net-snmp/APKBUILD
index 3fc1bceb4..8dea420b2 100644
--- a/user/net-snmp/APKBUILD
+++ b/user/net-snmp/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer:
pkgname=net-snmp
pkgver=5.8
-pkgrel=0
+pkgrel=1
pkgdesc="Simple Network Management Protocol"
url="http://www.net-snmp.org/"
arch="all"
@@ -74,7 +74,7 @@ package() {
install -m644 -D "$srcdir"/snmpd.confd "$pkgdir"/etc/conf.d/snmpd
install -m644 -D "$srcdir"/snmptrapd.confd \
"$pkgdir"/etc/conf.d/snmptrapd
- install -m644 -D EXAMPLE.conf "$pkgdir"/etc/snmp/snmpd.conf
+ install -m600 -D EXAMPLE.conf "$pkgdir"/etc/snmp/snmpd.conf
echo "authCommunity log,execute,net public" > "$pkgdir"/etc/snmp/snmptrapd.conf
mkdir -p "$pkgdir"/var/lib/net-snmp
find "$pkgdir" -name perllocal.pod -delete
diff --git a/user/netqmail/0005-CVE-2005-1513.patch b/user/netqmail/0005-CVE-2005-1513.patch
new file mode 100644
index 000000000..3b3876cb3
--- /dev/null
+++ b/user/netqmail/0005-CVE-2005-1513.patch
@@ -0,0 +1,19 @@
+diff -rNU3 netqmail-1.06.old/alloc.c netqmail-1.06/alloc.c
+--- netqmail-1.06.old/alloc.c 1998-06-15 10:53:16.000000000 +0000
++++ netqmail-1.06/alloc.c 2020-05-21 11:33:24.689739728 +0000
+@@ -1,3 +1,4 @@
++#include <limits.h>
+ #include "alloc.h"
+ #include "error.h"
+ extern char *malloc();
+@@ -15,6 +16,10 @@
+ unsigned int n;
+ {
+ char *x;
++ if (n >= (INT_MAX >> 3)) {
++ errno = error_nomem;
++ return 0;
++ }
+ n = ALIGNMENT + n - (n & (ALIGNMENT - 1)); /* XXX: could overflow */
+ if (n <= avail) { avail -= n; return space + avail; }
+ x = malloc(n);
diff --git a/user/netqmail/APKBUILD b/user/netqmail/APKBUILD
index 551895f83..45b92dbc8 100644
--- a/user/netqmail/APKBUILD
+++ b/user/netqmail/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
pkgname=netqmail
pkgver=1.06
-pkgrel=6
+pkgrel=7
pkgdesc="The qmail mail transfer agent (community version)"
url="http://www.netqmail.org/"
arch="all"
@@ -19,6 +19,7 @@ source="http://www.netqmail.org/$pkgname-$pkgver.tar.gz
0002-qbiffutmpx-20170820.patch
0003-qmailremote-20170716.patch
0004-notifyfd.patch
+ 0005-CVE-2005-1513.patch
qmail.run
smtpd.run
smtpsd.run
@@ -106,6 +107,7 @@ ad126cad5c0d35351919ad87022fd94b910519d91cf82f38c158f423bbfc1b82455844a791ba0c69
b3af9c29e6d46daa2a1b9f677c6f32892d5f8c9b8d5c2bdd6f34b106dd5ad41394c05a5ebe145c6e29b4ced4482f08b2d09e7818fd309123c0d087600500e336 0002-qbiffutmpx-20170820.patch
cbebdc72c7cc5c437531c9277534ae552c6d044a83b36e3f3ce60ab5563c55eb814d6c543cc0997abab73075d1b517cc0929dd65674d468d517b0ca38196e2b4 0003-qmailremote-20170716.patch
b32a8a36c8ab8872abd4f1a117482f064a6d631a6bb2ba75cafe61743bef09f923d26935d9514eec33a7dec5aeb3d0b517d677e55924859d2db5233bc11f9f11 0004-notifyfd.patch
+ac8406c1d16ce2e55e47bc83ca6e095833a54de73cecee222cad3fcececa518386b95a11cb0c9c2dcc6851bae28aa539b11069305aa887a291177bf177ee7b01 0005-CVE-2005-1513.patch
954a905bac5e3bc49f180dc0de7f6ee4c4ae8f94dd400ee4b06d3c944f1ff1cfc44bddccb07ae439f2523ad06fcb89023e57d091737da88f836013757794e931 qmail.run
c0cd244af4d8186305c51b0e93960bdb1ea6ce40f1adf20c4f72419aa7498e35649590919ebd16547a0313676bf9171c9efea2ff8ac3a5c773b18473a972a977 smtpd.run
719c4ce5ad93cddeafbb734cffeec3fd959d3f374e44e1f34e9a25d638303dd97df41642d3df5c7a069a8db47d1e31c32a16ecd2d04b72860c4e00bbba0c9fcf smtpsd.run
diff --git a/user/thunderbird/APKBUILD b/user/thunderbird/APKBUILD
index 1270dcbc3..fc2887d63 100644
--- a/user/thunderbird/APKBUILD
+++ b/user/thunderbird/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=thunderbird
-pkgver=68.7.0
+pkgver=68.9.0
pkgrel=0
pkgdesc="Email client from Mozilla"
url="https://www.thunderbird.net/"
@@ -36,7 +36,6 @@ source="https://archive.mozilla.org/pub/thunderbird/releases/$pkgver/source/thun
fix-mutex-build.patch
fix-seccomp-bpf.patch
mozilla-build-arm.patch
- rust-config.patch
shut-up-warning.patch
skia-sucks1.patch
skia-sucks2.patch
@@ -70,6 +69,12 @@ ldpath="$_mozappdir"
# - CVE-2020-6821
# - CVE-2020-6822
# - CVE-2020-6825
+# 68.9.0-r0:
+# - CVE-2020-6831
+# - CVE-2020-12387
+# - CVE-2020-12392
+# - CVE-2020-12395
+# - CVE-2020-12397
unpack() {
default_unpack
@@ -164,7 +169,7 @@ package() {
${pkgdir}/usr/share/applications/thunderbird.desktop
}
-sha512sums="fae763030b7a54930291a10f298b7fa4ffc400849082f576556b9040d095f1007ae686daf1241dff8b73bac35c14acf21c156a18a3e16d62a7719c6cc34e4d1f thunderbird-68.7.0.source.tar.xz
+sha512sums="891472c95ba6ff46061131504e89010da512a84b0e1dea0482e603fd4c87f11e099280a245c7dd9fc9320c48229c26602565c089d86f1a1f4271b29b6fc606f0 thunderbird-68.9.0.source.tar.xz
16e814e8dcffc707b595ca2919bd2fa3db0d15794c63d977364652c4a5b92e90e72b8c9e1cc83b5020398bd90a1b397dbdd7cb931c49f1aa4af6ef95414b43e0 Python-2.7.16.tar.xz
5519234df2934ac2f3d76c8cad7e4f0fe15cf83ea4beb32c6489d8b7839b3ebea88bdb342e0d2a9c1c7c95e9455d234b0a5aa0e73446fd8027b520f080a2bb5b mozconfig
ace7492f4fb0523c7340fdc09c831906f74fddad93822aff367135538dacd3f56288b907f5a04f53f94c76e722ba0bab73e28d83ec12d3e672554712e6b08613 bad-google-code.patch
@@ -172,7 +177,6 @@ ace7492f4fb0523c7340fdc09c831906f74fddad93822aff367135538dacd3f56288b907f5a04f53
c0b2bf43206c2a5154e560ef30189a1062ae856861b39f52ce69002390ff9972d43e387bfd2bf8d2ab3cac621987bc042c8c0a8b4cf90ae05717ca7705271880 fix-mutex-build.patch
70863b985427b9653ce5e28d6064f078fb6d4ccf43dd1b68e72f97f44868fc0ce063161c39a4e77a0a1a207b7365d5dc7a7ca5e68c726825eba814f2b93e2f5d fix-seccomp-bpf.patch
e61664bc93eadce5016a06a4d0684b34a05074f1815e88ef2613380d7b369c6fd305fb34f83b5eb18b9e3138273ea8ddcfdcb1084fdcaa922a1e5b30146a3b18 mozilla-build-arm.patch
-45613d476e85fe333ef8091acce4806803953c1a99de4f03ff577cf20c5a1a3d635d0589e1490da104ef80721f4f1b1d35045af3c6892c1a468fa84095f27ad8 rust-config.patch
39ddb15d1453a8412275c36fc8db3befc69dffd4a362e932d280fb7fd1190db595a2af9b468ee49e0714f5e9df6e48eb5794122a64fa9f30d689de8693acbb15 shut-up-warning.patch
e751ffab263f03d4c74feebc617e3af115b1b53cf54fe16c3acc585eec67773f37aa8de4c19599fa6478179b01439025112ef2b759aa9923c9900e7081cb65a9 skia-sucks1.patch
9152bd3e6dc446337e6a2ed602279c620aedecc796ba28e777854c4f41fcf3067f9ebd086a4b63a6b76c2e69ec599ac6435b8eeda4f7488b1c45f69113facba4 skia-sucks2.patch
diff --git a/user/thunderbird/rust-config.patch b/user/thunderbird/rust-config.patch
deleted file mode 100644
index eab72a0e4..000000000
--- a/user/thunderbird/rust-config.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -urw firefox-68.0-old/build/moz.configure/rust.configure firefox-68.0/build/moz.configure/rust.configure
---- firefox-68.0-old/build/moz.configure/rust.configure 2019-07-07 15:56:29.345963800 +0000
-+++ firefox-68.0/build/moz.configure/rust.configure 2019-07-07 16:19:25.990645334 +0000
-@@ -193,12 +193,16 @@
- ambiguous = set()
- per_raw_os = {}
- for t in out:
-+ if 'fuchsia' in t: continue
- t = split_triplet(t, allow_unknown=True)
- endianness = t.endianness
- if t.cpu.startswith('thumb') and endianness not in ('big', 'little'):
- endianness = 'little'
- key = (t.cpu, endianness, t.os)
- if key in per_os:
-+ # hax to allow Adélie toolchains to work
-+ if 'foxkit' in per_os[key].alias:
-+ continue
- previous = per_os[key]
- per_raw_os[(previous.cpu, previous.endianness,
- previous.raw_os)] = previous
diff --git a/user/ttf-jetbrains-mono/APKBUILD b/user/ttf-jetbrains-mono/APKBUILD
new file mode 100644
index 000000000..54857a62a
--- /dev/null
+++ b/user/ttf-jetbrains-mono/APKBUILD
@@ -0,0 +1,25 @@
+# Contributor: Jonas Vautherin <jonas.vautherin@protonmail.ch>
+# Maintainer: Jonas Vautherin <jonas.vautherin@protonmail.ch>
+pkgname=ttf-jetbrains-mono
+pkgver=1.0.6
+pkgrel=0
+pkgdesc="A typeface for developers"
+url="https://www.jetbrains.com/lp/mono"
+arch="noarch"
+options="!check" # No test suite
+license="Apache-2.0"
+depends="fontconfig"
+makedepends=""
+source="https://github.com/JetBrains/JetBrainsMono/releases/download/v${pkgver}/JetBrainsMono-${pkgver}.zip"
+builddir="$srcdir/JetBrainsMono-$pkgver"
+
+package() {
+ mkdir -p "$pkgdir"/usr/share/fonts/X11/TTF/${pkgname#*-}
+
+ cd ttf
+ for i in *.ttf; do
+ install -Dm644 "$i" "$pkgdir"/usr/share/fonts/X11/TTF/${pkgname#*-}
+ done
+}
+
+sha512sums="c7d980f8aa16f0773510d71c1b96bdf0d6adc73bef188a50b789517eb4c5eae98fa4feffc0d75f504a31b913d5531f03a709cb87584171f37af662e3c88e4561 JetBrainsMono-1.0.6.zip"
diff --git a/user/wimlib/APKBUILD b/user/wimlib/APKBUILD
new file mode 100644
index 000000000..a8268910a
--- /dev/null
+++ b/user/wimlib/APKBUILD
@@ -0,0 +1,29 @@
+# Contributor: CyberLeo <cyberleo@cyberleo.net>
+# Maintainer: CyberLeo <cyberleo@cyberleo.net>
+pkgname=wimlib
+pkgver=1.13.1
+pkgrel=0
+pkgdesc="Windows Imaging (WIM) archive manipulation library and tools"
+url="https://wimlib.net/"
+arch="all"
+license="(GPL-2.0 OR LGPL-2.1) AND CC0"
+depends=""
+makedepends="libxml2-dev fuse-dev ntfs-3g ntfs-3g-dev"
+subpackages="$pkgname-doc $pkgname-dev $pkgname-libs"
+source="https://wimlib.net/downloads/wimlib-$pkgver.tar.gz"
+
+build() {
+ ./configure \
+ --prefix=/usr
+ make
+}
+
+check() {
+ PATH="/usr/sbin:${PATH}" make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="a874eafa979e715adf06398371380f06ae42370392473b2eb8aca969b2019664b187f3f2bfa74819bc1d85db4977a08e915c69efc67e77e933c82e6bbcda0243 wimlib-1.13.1.tar.gz"
diff --git a/user/wireguard-module/APKBUILD b/user/wireguard-module/APKBUILD
index 7fac2165c..3ac5683cf 100644
--- a/user/wireguard-module/APKBUILD
+++ b/user/wireguard-module/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
+# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
_kver="5.4.5-mc0"
-pkgver=1.0.20200401
+pkgver=1.0.20200506
pkgrel=0
_pkgname="wireguard-module"
pkgname="$_pkgname-$_kver"
@@ -39,4 +39,4 @@ _patch() {
"$builddir"/kernel-tree-scripts/create-patch.sh > "$subpkgdir/usr/share/wireguard/wireguard-$pkgver.patch"
}
-sha512sums="894da609c7102eb1d076a4a7bdaa96c7d5f0d64b4b86fdf01068ac5f4af966652e7ad7f18b1295a7fc4447f53b55a9ec45f1b3f36f0f9df7fb08836dfdff89f0 wireguard-linux-compat-1.0.20200401.tar.xz"
+sha512sums="39a27a515919933dbed71624be3f8f3f512073b522e1e16248c9eda749dd72a3db5a02d85d29855160eb182415f489a4c02c1659ef9589507c99dbfe74ea3074 wireguard-linux-compat-1.0.20200506.tar.xz"
diff --git a/user/wireguard-tools/APKBUILD b/user/wireguard-tools/APKBUILD
index db64e132e..219a91836 100644
--- a/user/wireguard-tools/APKBUILD
+++ b/user/wireguard-tools/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
+# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
pkgname=wireguard-tools
-pkgver=1.0.20200319
+pkgver=1.0.20200513
pkgrel=0
pkgdesc="Userland tools for the WireGuard VPN"
url="https://www.wireguard.com/"
@@ -29,4 +29,4 @@ bashcomp() {
mv "$pkgdir/usr/share/bash-completion" "$subpkgdir/usr/share/"
}
-sha512sums="d5bcd153f9b10f184b9a1bf9a81f33a9713ab4863ab5aa190eac60e92919756c8fecbb0d3cfb83bae20ac78fc43fdd7168f37294cdd7c5ee21f2a1b2db5fdf41 wireguard-tools-1.0.20200319.tar.xz"
+sha512sums="4d27b262350b6b47843a323c2e7ab8d2bdd48065c265778abdec85b3f6fc92aa9af77d76e368df9cc8e435eae1c0ce50fed52e1d78db54358c1884d34be08d2c wireguard-tools-1.0.20200513.tar.xz"