summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO4
-rw-r--r--PKGBUILD10
-rw-r--r--ucontext.patch96
3 files changed, 106 insertions, 4 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 3a4e6ce9b85f..6650fa4d2935 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = megasync
pkgdesc = Sync your files to your Mega account. Official app
pkgver = 3.1.4.0
- pkgrel = 1
+ pkgrel = 2
url = https://github.com/meganz/megasync
arch = i686
arch = x86_64
@@ -20,7 +20,9 @@ pkgbase = megasync
depends = openssl
optdepends = sni-qt: fix systray issue on KDE and LXQt
source = git+https://github.com/meganz/MEGAsync.git#tag=v3.1.4.0_Linux
+ source = ucontext.patch
md5sums = SKIP
+ md5sums = 269c3d2ff3e911774c2cc8e6de980cb2
pkgname = megasync
diff --git a/PKGBUILD b/PKGBUILD
index 446623e2aa88..51a751de9ed0 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -3,7 +3,7 @@
# Contributor: Hexchain Tong <i at hexchain dot org>
pkgname=megasync
pkgver=3.1.4.0
-pkgrel=1
+pkgrel=2
pkgdesc="Sync your files to your Mega account. Official app"
arch=('i686' 'x86_64')
url="https://github.com/meganz/megasync"
@@ -11,12 +11,16 @@ license=('custom:MEGA LIMITED CODE REVIEW LICENCE')
depends=('curl' 'c-ares' 'crypto++' 'libsodium' 'hicolor-icon-theme' 'qt5-base' 'libuv' 'openssl')
makedepends=('git' 'qt5-tools' 'swig' 'doxygen')
optdepends=('sni-qt: fix systray issue on KDE and LXQt')
-source=("git+https://github.com/meganz/MEGAsync.git#tag=v${pkgver}_Linux")
-md5sums=('SKIP')
+source=("git+https://github.com/meganz/MEGAsync.git#tag=v${pkgver}_Linux"
+ "ucontext.patch")
+md5sums=('SKIP'
+ '269c3d2ff3e911774c2cc8e6de980cb2')
prepare(){
cd "${srcdir}/MEGAsync"
git submodule update --init --recursive
+
+ patch -p1 < "${srcdir}/ucontext.patch"
}
build(){
diff --git a/ucontext.patch b/ucontext.patch
new file mode 100644
index 000000000000..ab8673bbfbab
--- /dev/null
+++ b/ucontext.patch
@@ -0,0 +1,96 @@
+diff --git a/src/MEGASync/google_breakpad/client/linux/handler/exception_handler.cc b/src/MEGASync/google_breakpad/client/linux/handler/exception_handler.cc
+index edb2ab05..1f48d6d9 100644
+--- a/src/MEGASync/google_breakpad/client/linux/handler/exception_handler.cc
++++ b/src/MEGASync/google_breakpad/client/linux/handler/exception_handler.cc
+@@ -397,12 +397,12 @@ bool ExceptionHandler::HandleSignal(int, siginfo_t* info, void* uc) {
+ }
+ CrashContext context;
+ memcpy(&context.siginfo, info, sizeof(siginfo_t));
+- memcpy(&context.context, uc, sizeof(struct ucontext));
++ memcpy(&context.context, uc, sizeof(struct ucontext_t));
+ #if !defined(__ARM_EABI__) && !defined(__mips__)
+ // FP state is not part of user ABI on ARM Linux.
+ // In case of MIPS Linux FP state is already part of struct ucontext
+ // and 'float_state' is not a member of CrashContext.
+- struct ucontext *uc_ptr = (struct ucontext*)uc;
++ struct ucontext_t *uc_ptr = (struct ucontext_t*)uc;
+ if (uc_ptr->uc_mcontext.fpregs) {
+ memcpy(&context.float_state,
+ uc_ptr->uc_mcontext.fpregs,
+@@ -421,12 +421,12 @@ bool ExceptionHandler::HandleSignal(int, siginfo_t* info, void* uc) {
+ // This is a public interface to HandleSignal that allows the client to
+ // generate a crash dump. This function may run in a compromised context.
+ bool ExceptionHandler::SimulateSignalDelivery(int sig) {
+- siginfo_t siginfo = {0, 0, 0, {0}};
++ siginfo_t siginfo = {0, 0, 0, 0, 0};
+ // Mimic a trusted signal to allow tracing the process (see
+ // ExceptionHandler::HandleSignal().
+ siginfo.si_code = SI_USER;
+ siginfo.si_pid = getpid();
+- struct ucontext context;
++ struct ucontext_t context;
+ getcontext(&context);
+ return HandleSignal(sig, &siginfo, &context);
+ }
+diff --git a/src/MEGASync/google_breakpad/client/linux/handler/exception_handler.h b/src/MEGASync/google_breakpad/client/linux/handler/exception_handler.h
+index bbd962cb..8012a83f 100644
+--- a/src/MEGASync/google_breakpad/client/linux/handler/exception_handler.h
++++ b/src/MEGASync/google_breakpad/client/linux/handler/exception_handler.h
+@@ -189,7 +189,7 @@ class ExceptionHandler {
+ struct CrashContext {
+ siginfo_t siginfo;
+ pid_t tid; // the crashing thread.
+- struct ucontext context;
++ struct ucontext_t context;
+ #if !defined(__ARM_EABI__) && !defined(__mips__)
+ // #ifdef this out because FP state is not part of user ABI for Linux ARM.
+ // In case of MIPS Linux FP state is already part of struct ucontext
+diff --git a/src/MEGASync/google_breakpad/client/linux/minidump_writer/minidump_writer.cc b/src/MEGASync/google_breakpad/client/linux/minidump_writer/minidump_writer.cc
+index ee759274..100dbf69 100644
+--- a/src/MEGASync/google_breakpad/client/linux/minidump_writer/minidump_writer.cc
++++ b/src/MEGASync/google_breakpad/client/linux/minidump_writer/minidump_writer.cc
+@@ -177,7 +177,7 @@ void CPUFillFromThreadInfo(MDRawContextX86 *out,
+ // Juggle an x86 ucontext into minidump format
+ // out: the minidump structure
+ // info: the collection of register structures.
+-void CPUFillFromUContext(MDRawContextX86 *out, const ucontext *uc,
++void CPUFillFromUContext(MDRawContextX86 *out, const ucontext_t *uc,
+ const struct _libc_fpstate* fp) {
+ const greg_t* regs = uc->uc_mcontext.gregs;
+
+@@ -277,7 +277,7 @@ void CPUFillFromThreadInfo(MDRawContextAMD64 *out,
+ my_memcpy(&out->flt_save.xmm_registers, &info.fpregs.xmm_space, 16 * 16);
+ }
+
+-void CPUFillFromUContext(MDRawContextAMD64 *out, const ucontext *uc,
++void CPUFillFromUContext(MDRawContextAMD64 *out, const ucontext_t *uc,
+ const struct _libc_fpstate* fpregs) {
+ const greg_t* regs = uc->uc_mcontext.gregs;
+
+@@ -344,7 +344,7 @@ void CPUFillFromThreadInfo(MDRawContextARM* out,
+ #endif
+ }
+
+-void CPUFillFromUContext(MDRawContextARM* out, const ucontext* uc,
++void CPUFillFromUContext(MDRawContextARM* out, const ucontext_t* uc,
+ const struct _libc_fpstate* fpregs) {
+ out->context_flags = MD_CONTEXT_ARM_FULL;
+
+@@ -405,7 +405,7 @@ static void CPUFillFromThreadInfo(MDRawContextMIPS* out,
+ out->float_save.fir = info.fpregs.fir;
+ }
+
+-static void CPUFillFromUContext(MDRawContextMIPS* out, const ucontext* uc,
++static void CPUFillFromUContext(MDRawContextMIPS* out, const ucontext_t* uc,
+ const struct _libc_fpstate* fpregs) {
+ out->context_flags = MD_CONTEXT_MIPS_FULL;
+
+@@ -1725,7 +1725,7 @@ class MinidumpWriter {
+ const int fd_; // File descriptor where the minidum should be written.
+ const char* path_; // Path to the file where the minidum should be written.
+
+- const struct ucontext* const ucontext_; // also from the signal handler
++ const struct ucontext_t* const ucontext_; // also from the signal handler
+ const struct _libc_fpstate* const float_state_; // ditto
+ LinuxDumper* dumper_;
+ MinidumpFileWriter minidump_writer_;