diff options
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | PKGBUILD | 10 | ||||
-rw-r--r-- | ucontext.patch | 96 |
3 files changed, 106 insertions, 4 deletions
@@ -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 @@ -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_; |