# HG changeset patch # User Sylvestre Ledru # Date 1549021026 0 # Node ID a0af61750393e61eb0bcfd59c083782403cd4d0d # Parent 32d053e72c45ea7f78d524bd8bc5dea5df7e8eec Bug 1524194 - Do not add stack pointer to clobber list r=ted Cherry-pick upstream patch to address a build issue with gcc 9 https://chromium.googlesource.com/linux-syscall-support/+/8048ece6c16c91acfe0d36d1d3cc0890ab6e945c Differential Revision: https://phabricator.services.mozilla.com/D18284 diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h b/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h --- a/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h +++ b/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h @@ -1959,17 +1959,17 @@ struct kernel_statfs { LSS_RETURN(type,__res) #undef _syscall0 #define _syscall0(type,name) \ type LSS_NAME(name)(void) { \ long __res; \ __asm__ volatile(LSS_ENTRYPOINT \ : "=a" (__res) \ : "0" (__NR_##name) \ - : "esp", "memory"); \ + : "memory"); \ LSS_RETURN(type,__res); \ } #undef _syscall1 #define _syscall1(type,name,type1,arg1) \ type LSS_NAME(name)(type1 arg1) { \ LSS_BODY(type, \ : "=a" (__res) \ : "0" (__NR_##name), "ri" ((long)(arg1))); \ @@ -2400,17 +2400,17 @@ struct kernel_statfs { : "0"(-EINVAL), "i"(__NR_clone), "i"(__NR_exit), "r"(LSS_SYSCALL_ARG(fn)), "S"(LSS_SYSCALL_ARG(child_stack)), "D"(LSS_SYSCALL_ARG(flags)), "r"(LSS_SYSCALL_ARG(arg)), "d"(LSS_SYSCALL_ARG(parent_tidptr)), "r"(LSS_SYSCALL_ARG(newtls)), "r"(LSS_SYSCALL_ARG(child_tidptr)) - : "rsp", "memory", "r8", "r10", "r11", "rcx"); + : "memory", "r8", "r10", "r11", "rcx"); } LSS_RETURN(int, __res); } LSS_INLINE _syscall2(int, arch_prctl, int, c, void *, a) LSS_INLINE void (*LSS_NAME(restore_rt)(void))(void) { /* On x86-64, the kernel does not know how to return from * a signal handler. Instead, it relies on user space to provide a