summaryrefslogtreecommitdiffstats
path: root/sandbox
diff options
context:
space:
mode:
authorkmackay <kmackay@chromium.org>2015-05-04 11:22:46 -0700
committerCommit bot <commit-bot@chromium.org>2015-05-04 18:23:09 +0000
commit4eb373ddb517503e20d99afd7cde9dfc439d3384 (patch)
treeed7cd0c6a6a588689beba568d06bf4e68f8b9fa9 /sandbox
parentbce10d97d6fc5233071427cf622aaad7abde9e19 (diff)
downloadchromium_src-4eb373ddb517503e20d99afd7cde9dfc439d3384.zip
chromium_src-4eb373ddb517503e20d99afd7cde9dfc439d3384.tar.gz
chromium_src-4eb373ddb517503e20d99afd7cde9dfc439d3384.tar.bz2
Fix Thumb asm directives to allow unwinding through SyscallAsm.
The BaselinePolicy.SIGSYS_InvalidSyscall fails with Thumb and -fno-omit-frame-pointer due to a missing .save directive that indicates where to find r7. I also removed the usage of r7 as the CFA register since it seems incorrect (since r7 is clobbered). TEST=sandbox_linux_unittests --gtest_filter=BaselinePolicy.SIGSYS_InvalidSyscall --single-process-tests (on Chromecast) Review URL: https://codereview.chromium.org/1121083002 Cr-Commit-Position: refs/heads/master@{#328155}
Diffstat (limited to 'sandbox')
-rw-r--r--sandbox/linux/seccomp-bpf/syscall.cc3
1 files changed, 1 insertions, 2 deletions
diff --git a/sandbox/linux/seccomp-bpf/syscall.cc b/sandbox/linux/seccomp-bpf/syscall.cc
index 1c77533..bc6461f 100644
--- a/sandbox/linux/seccomp-bpf/syscall.cc
+++ b/sandbox/linux/seccomp-bpf/syscall.cc
@@ -145,10 +145,9 @@ asm(// We need to be able to tell the kernel exactly where we made a
#if defined(__thumb__)
".cfi_startproc\n"
"push {r7, lr}\n"
+ ".save {r7, lr}\n"
".cfi_offset 14, -4\n"
".cfi_offset 7, -8\n"
- "mov r7, sp\n"
- ".cfi_def_cfa_register 7\n"
".cfi_def_cfa_offset 8\n"
#else
"stmfd sp!, {fp, lr}\n"