diff --git a/src/3rdparty/chromium/sandbox/linux/bpf_dsl/seccomp_macros.h b/src/3rdparty/chromium/sandbox/linux/bpf_dsl/seccomp_macros.h index a6aec544e..2a4a7f1bc 100644 --- a/src/3rdparty/chromium/sandbox/linux/bpf_dsl/seccomp_macros.h +++ b/src/3rdparty/chromium/sandbox/linux/bpf_dsl/seccomp_macros.h @@ -16,7 +16,7 @@ #if defined(__mips__) // sys/user.h in eglibc misses size_t definition #include -#elif defined(__powerpc64__) +#elif defined(__powerpc64__) && defined(__GLIBC__) // Manually define greg_t on ppc64 typedef unsigned long long greg_t; #endif @@ -361,11 +361,11 @@ typedef struct pt_regs regs_struct; #define SECCOMP_ARCH AUDIT_ARCH_PPC64 #endif -#define SECCOMP_REG(_ctx, _reg) ((_ctx)->uc_mcontext.regs->gpr[_reg]) +#define SECCOMP_REG(_ctx, _reg) (((struct pt_regs *)(_ctx)->uc_mcontext.regs)->gpr[_reg]) #define SECCOMP_RESULT(_ctx) SECCOMP_REG(_ctx, 3) #define SECCOMP_SYSCALL(_ctx) SECCOMP_REG(_ctx, 0) -#define SECCOMP_IP(_ctx) (_ctx)->uc_mcontext.regs->nip +#define SECCOMP_IP(_ctx) ((struct pt_regs *)(_ctx)->uc_mcontext.regs)->nip #define SECCOMP_PARM1(_ctx) SECCOMP_REG(_ctx, 3) #define SECCOMP_PARM2(_ctx) SECCOMP_REG(_ctx, 4) #define SECCOMP_PARM3(_ctx) SECCOMP_REG(_ctx, 5) diff --git a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf/syscall.cc b/src/3rdparty/chromium/sandbox/linux/seccomp-bpf/syscall.cc index 10fa5fd07..30b7b3851 100644 --- a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf/syscall.cc +++ b/src/3rdparty/chromium/sandbox/linux/seccomp-bpf/syscall.cc @@ -497,9 +497,9 @@ void Syscall::PutValueInUcontext(intptr_t ret_val, ucontext_t* ctx) { // Same as MIPS, need to invert ret and set error register (cr0.SO) if (ret_val <= -1 && ret_val >= -4095) { ret_val = -ret_val; - ctx->uc_mcontext.regs->ccr |= (1 << 28); + ((struct pt_regs *)ctx->uc_mcontext.regs)->ccr |= (1 << 28); } else { - ctx->uc_mcontext.regs->ccr &= ~(1 << 28); + ((struct pt_regs *)ctx->uc_mcontext.regs)->ccr &= ~(1 << 28); } #endif SECCOMP_RESULT(ctx) = static_cast(ret_val); diff --git a/src/3rdparty/chromium/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h b/src/3rdparty/chromium/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h index cdce9bf8a..73d77dda4 100644 --- a/src/3rdparty/chromium/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +++ b/src/3rdparty/chromium/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h @@ -46,7 +46,7 @@ // The following platforms have an implementation of a hardware counter. #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \ - defined(__powerpc__) || defined(__ppc__) || \ + ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || \ defined(_M_IX86) || defined(_M_X64) #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1 #else --- a/src/3rdparty/chromium/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +++ b/src/3rdparty/chromium/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h @@ -64,7 +64,7 @@ #elif defined(__i386__) || defined(__x86_64__) #define ABSL_STACKTRACE_INL_HEADER \ "absl/debugging/internal/stacktrace_x86-inl.inc" -#elif defined(__ppc__) || defined(__PPC__) +#elif (defined(__ppc__) || defined(__PPC__)) && defined(__GLIBC__) #define ABSL_STACKTRACE_INL_HEADER \ "absl/debugging/internal/stacktrace_powerpc-inl.inc" #elif defined(__aarch64__) diff --git a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.cc b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.cc index 03afec7a5..0264ecf13 100644 --- a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.cc +++ b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.cc @@ -273,6 +273,9 @@ void ThreadInfo::FillCPUContext(RawContextCPU* out) const { #elif defined(__powerpc64__) +#include +#include + uintptr_t ThreadInfo::GetInstructionPointer() const { return mcontext.gp_regs[PT_NIP]; } @@ -290,9 +293,9 @@ void ThreadInfo::FillCPUContext(RawContextCPU* out) const { out->ctr = mcontext.gp_regs[PT_CTR]; for (int i = 0; i < MD_FLOATINGSAVEAREA_PPC_FPR_COUNT; i++) - out->float_save.fpregs[i] = mcontext.fp_regs[i]; + out->float_save.fpregs[i] = ((uint64_t *)&mcontext.fp_regs)[i]; - out->float_save.fpscr = mcontext.fp_regs[NFPREG-1]; + out->float_save.fpscr = ((uint64_t *)&mcontext.fp_regs)[ELF_NFPREG-1]; for (int i = 0; i < MD_VECTORSAVEAREA_PPC_VR_COUNT; i++) out->vector_save.save_vr[i] = \ diff --git a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc index 7620cf6f7..54e373611 100644 --- a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc +++ b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc @@ -257,6 +257,9 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) { #elif defined(__powerpc64__) +#include +#include + uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { return uc->uc_mcontext.gp_regs[MD_CONTEXT_PPC64_REG_SP]; } @@ -280,9 +283,9 @@ void UContextReader::FillCPUContext(RawContextCPU* out, const ucontext_t* uc, out->ctr = uc->uc_mcontext.gp_regs[PT_CTR]; for (int i = 0; i < MD_FLOATINGSAVEAREA_PPC_FPR_COUNT; i++) - out->float_save.fpregs[i] = uc->uc_mcontext.fp_regs[i]; + out->float_save.fpregs[i] = ((uint64_t *)&uc->uc_mcontext.fp_regs)[i]; - out->float_save.fpscr = uc->uc_mcontext.fp_regs[NFPREG-1]; + out->float_save.fpscr = ((uint64_t *)&uc->uc_mcontext.fp_regs)[ELF_NFPREG-1]; for (int i = 0; i < MD_VECTORSAVEAREA_PPC_VR_COUNT; i++) out->vector_save.save_vr[i] = diff --git a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc index 901cd68fb..561958c44 100644 --- a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc +++ b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc @@ -105,6 +105,11 @@ #define PR_SET_PTRACER 0x59616d61 #endif +/* musl hack, can't include asm/ptrace.h as that causes conflicts */ +#if defined(__powerpc64__) && !defined(PT_NIP) +#define PT_NIP 32 +#endif + namespace google_breakpad { namespace { diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/snapshot/linux/signal_context.h b/src/3rdparty/chromium/third_party/crashpad/crashpad/snapshot/linux/signal_context.h index 8e335a09..b2a0f155 100644 --- a/src/3rdparty/chromium/third_party/crashpad/crashpad/snapshot/linux/signal_context.h +++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/snapshot/linux/signal_context.h @@ -469,7 +469,11 @@ struct MContext64 { SignalThreadContext64 gp_regs; SignalFloatContext64 fp_regs; SignalVectorContext64 *v_regs; +#ifdef __GLIBC__ int64_t vmx_reserve[69]; +#else + int64_t vmx_reserve[101]; +#endif }; struct ContextTraits64 : public Traits64 { diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/util/linux/thread_info.h b/src/3rdparty/chromium/third_party/crashpad/crashpad/util/linux/thread_info.h index dea0d1f39..b203e5b2f 100644 --- a/src/3rdparty/chromium/third_party/crashpad/crashpad/util/linux/thread_info.h +++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/util/linux/thread_info.h @@ -30,6 +30,7 @@ #if defined(ARCH_CPU_PPC64_FAMILY) #include +#include #endif namespace crashpad { diff --git a/src/3rdparty/chromium/third_party/lss/linux_syscall_support.h b/src/3rdparty/chromium/third_party/lss/linux_syscall_support.h index 9955ce44..4c1cc488 100644 --- a/src/3rdparty/chromium/third_party/lss/linux_syscall_support.h +++ b/src/3rdparty/chromium/third_party/lss/linux_syscall_support.h @@ -4216,9 +4216,17 @@ struct kernel_statfs { } #endif #if defined(__NR_fstatat64) + // musl does #define fstatat64 fstatat + #ifndef __GLIBC__ + #undef fstatat64 + #endif LSS_INLINE _syscall4(int, fstatat64, int, d, const char *, p, struct kernel_stat64 *, b, int, f) + // set it back like it was + #ifndef __GLIBC__ + #define fstatat64 fstatat + #endif #endif #if defined(__NR_waitpid) // waitpid is polyfilled below when not available.