diff options
author | kmackay <kmackay@chromium.org> | 2015-05-04 11:22:46 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-05-04 18:23:09 +0000 |
commit | 4eb373ddb517503e20d99afd7cde9dfc439d3384 (patch) | |
tree | ed7cd0c6a6a588689beba568d06bf4e68f8b9fa9 /sandbox | |
parent | bce10d97d6fc5233071427cf622aaad7abde9e19 (diff) | |
download | chromium_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.cc | 3 |
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" |