diff --git a/chromium-60.0.3112.113-breakpad-ucontext.patch b/chromium-60.0.3112.113-breakpad-ucontext.patch new file mode 100644 index 0000000..bcd3c26 --- /dev/null +++ b/chromium-60.0.3112.113-breakpad-ucontext.patch @@ -0,0 +1,206 @@ +Index: chromium-60.0.3112.113/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc +=================================================================== +--- chromium-60.0.3112.113.orig/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc 2017-08-24 21:06:37.000000000 +0200 ++++ chromium-60.0.3112.113/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc 2017-08-29 00:44:03.298893868 +0200 +@@ -40,15 +40,15 @@ namespace google_breakpad { + + #if defined(__i386__) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[REG_ESP]; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[REG_EIP]; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t*uc, + const struct _libc_fpstate* fp) { + const greg_t* regs = uc->uc_mcontext.gregs; + +@@ -88,15 +88,15 @@ void UContextReader::FillCPUContext(RawC + + #elif defined(__x86_64) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[REG_RSP]; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[REG_RIP]; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t*uc, + const struct _libc_fpstate* fpregs) { + const greg_t* regs = uc->uc_mcontext.gregs; + +@@ -145,15 +145,15 @@ void UContextReader::FillCPUContext(RawC + + #elif defined(__ARM_EABI__) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.arm_sp; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.arm_pc; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) { ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t*uc) { + out->context_flags = MD_CONTEXT_ARM_FULL; + + out->iregs[0] = uc->uc_mcontext.arm_r0; +@@ -184,15 +184,15 @@ void UContextReader::FillCPUContext(RawC + + #elif defined(__aarch64__) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.sp; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.pc; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t*uc, + const struct fpsimd_context* fpregs) { + out->context_flags = MD_CONTEXT_ARM64_FULL; + +@@ -210,15 +210,15 @@ void UContextReader::FillCPUContext(RawC + + #elif defined(__mips__) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[MD_CONTEXT_MIPS_REG_SP]; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.pc; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) { ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t*uc) { + #if _MIPS_SIM == _ABI64 + out->context_flags = MD_CONTEXT_MIPS64_FULL; + #elif _MIPS_SIM == _ABIO32 +Index: chromium-60.0.3112.113/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h +=================================================================== +--- chromium-60.0.3112.113.orig/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h 2017-08-24 21:06:37.000000000 +0200 ++++ chromium-60.0.3112.113/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h 2017-08-29 00:44:03.298893868 +0200 +@@ -41,21 +41,21 @@ namespace google_breakpad { + + // Wraps platform-dependent implementations of accessors to ucontext structs. + struct UContextReader { +- static uintptr_t GetStackPointer(const struct ucontext* uc); ++ static uintptr_t GetStackPointer(const ucontext_t* uc); + +- static uintptr_t GetInstructionPointer(const struct ucontext* uc); ++ static uintptr_t GetInstructionPointer(const ucontext_t* uc); + + // Juggle a arch-specific ucontext into a minidump format + // out: the minidump structure + // info: the collection of register structures. + #if defined(__i386__) || defined(__x86_64) +- static void FillCPUContext(RawContextCPU *out, const ucontext *uc, ++ static void FillCPUContext(RawContextCPU *out, const ucontext_t*uc, + const struct _libc_fpstate* fp); + #elif defined(__aarch64__) +- static void FillCPUContext(RawContextCPU *out, const ucontext *uc, ++ static void FillCPUContext(RawContextCPU *out, const ucontext_t*uc, + const struct fpsimd_context* fpregs); + #else +- static void FillCPUContext(RawContextCPU *out, const ucontext *uc); ++ static void FillCPUContext(RawContextCPU *out, const ucontext_t*uc); + #endif + }; + +Index: chromium-60.0.3112.113/breakpad/src/client/linux/handler/exception_handler.cc +=================================================================== +--- chromium-60.0.3112.113.orig/breakpad/src/client/linux/handler/exception_handler.cc 2017-08-24 21:06:37.000000000 +0200 ++++ chromium-60.0.3112.113/breakpad/src/client/linux/handler/exception_handler.cc 2017-08-29 00:44:03.230893211 +0200 +@@ -444,9 +444,9 @@ bool ExceptionHandler::HandleSignal(int + // Fill in all the holes in the struct to make Valgrind happy. + memset(&g_crash_context_, 0, sizeof(g_crash_context_)); + memcpy(&g_crash_context_.siginfo, info, sizeof(siginfo_t)); +- memcpy(&g_crash_context_.context, uc, sizeof(struct ucontext)); ++ memcpy(&g_crash_context_.context, uc, sizeof(ucontext_t)); + #if defined(__aarch64__) +- struct ucontext* uc_ptr = (struct ucontext*)uc; ++ ucontext_t* uc_ptr = (ucontext_t*)uc; + struct fpsimd_context* fp_ptr = + (struct fpsimd_context*)&uc_ptr->uc_mcontext.__reserved; + if (fp_ptr->head.magic == FPSIMD_MAGIC) { +@@ -455,9 +455,9 @@ bool ExceptionHandler::HandleSignal(int + } + #elif !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 ++ // In case of MIPS Linux FP state is already part of ucontext_t + // and 'float_state' is not a member of CrashContext. +- struct ucontext* uc_ptr = (struct ucontext*)uc; ++ ucontext_t* uc_ptr = (ucontext_t*)uc; + if (uc_ptr->uc_mcontext.fpregs) { + memcpy(&g_crash_context_.float_state, uc_ptr->uc_mcontext.fpregs, + sizeof(g_crash_context_.float_state)); +@@ -481,7 +481,7 @@ bool ExceptionHandler::SimulateSignalDel + // ExceptionHandler::HandleSignal(). + siginfo.si_code = SI_USER; + siginfo.si_pid = getpid(); +- struct ucontext context; ++ ucontext_t context; + getcontext(&context); + return HandleSignal(sig, &siginfo, &context); + } +Index: chromium-60.0.3112.113/breakpad/src/client/linux/handler/exception_handler.h +=================================================================== +--- chromium-60.0.3112.113.orig/breakpad/src/client/linux/handler/exception_handler.h 2017-08-24 21:06:37.000000000 +0200 ++++ chromium-60.0.3112.113/breakpad/src/client/linux/handler/exception_handler.h 2017-08-29 00:44:03.226893172 +0200 +@@ -191,7 +191,7 @@ class ExceptionHandler { + struct CrashContext { + siginfo_t siginfo; + pid_t tid; // the crashing thread. +- struct ucontext context; ++ 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 +Index: chromium-60.0.3112.113/breakpad/src/client/linux/microdump_writer/microdump_writer.cc +=================================================================== +--- chromium-60.0.3112.113.orig/breakpad/src/client/linux/microdump_writer/microdump_writer.cc 2017-08-24 21:06:37.000000000 +0200 ++++ chromium-60.0.3112.113/breakpad/src/client/linux/microdump_writer/microdump_writer.cc 2017-08-29 00:44:03.242893327 +0200 +@@ -593,7 +593,7 @@ class MicrodumpWriter { + + void* Alloc(unsigned bytes) { return dumper_->allocator()->Alloc(bytes); } + +- const struct ucontext* const ucontext_; ++ const ucontext_t* const ucontext_; + #if !defined(__ARM_EABI__) && !defined(__mips__) + const google_breakpad::fpstate_t* const float_state_; + #endif +Index: chromium-60.0.3112.113/breakpad/src/client/linux/minidump_writer/minidump_writer.cc +=================================================================== +--- chromium-60.0.3112.113.orig/breakpad/src/client/linux/minidump_writer/minidump_writer.cc 2017-08-24 21:06:37.000000000 +0200 ++++ chromium-60.0.3112.113/breakpad/src/client/linux/minidump_writer/minidump_writer.cc 2017-08-29 00:44:03.290893791 +0200 +@@ -1323,7 +1323,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 ucontext_t* const ucontext_; // also from the signal handler + #if !defined(__ARM_EABI__) && !defined(__mips__) + const google_breakpad::fpstate_t* const float_state_; // ditto + #endif diff --git a/chromium.changes b/chromium.changes index 421ce2f..3aeab4b 100644 --- a/chromium.changes +++ b/chromium.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Aug 28 22:57:05 UTC 2017 - astieger@suse.com + +- fix build with Factory glibc: + add chromium-60.0.3112.113-breakpad-ucontext.patch + ------------------------------------------------------------------- Fri Aug 25 09:17:27 UTC 2017 - tchvatal@suse.com diff --git a/chromium.spec b/chromium.spec index 2fcb8b1..0de76d1 100644 --- a/chromium.spec +++ b/chromium.spec @@ -70,6 +70,7 @@ Patch11: chromium-gcc7.patch Patch12: chromium-dma-buf.patch Patch13: chromium-override.patch Patch14: chromium-buildname.patch +Patch15: chromium-60.0.3112.113-breakpad-ucontext.patch # archlinux arm enhancement patches Patch100: arm-webrtc-fix.patch Patch101: arm_use_right_compiler.patch @@ -260,6 +261,7 @@ WebDriver is an open source tool for automated testing of webapps across many br %patch12 -p1 %patch13 -p1 %patch14 -p1 +%patch15 -p1 # archlinux arm enhancements %patch100