Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Side by Side Diff: sandbox/linux/seccomp-bpf/syscall.cc

Issue 1128733002: Update from https://crrev.com/328418 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "sandbox/linux/seccomp-bpf/syscall.h" 5 #include "sandbox/linux/seccomp-bpf/syscall.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 // interworking. That's OK, as we don't make any of the assembly 126 // interworking. That's OK, as we don't make any of the assembly
127 // symbols public. They are all local to this file. 127 // symbols public. They are all local to this file.
128 ".text\n" 128 ".text\n"
129 ".align 2\n" 129 ".align 2\n"
130 ".type SyscallAsm, %function\n" 130 ".type SyscallAsm, %function\n"
131 #if defined(__thumb__) 131 #if defined(__thumb__)
132 ".thumb_func\n" 132 ".thumb_func\n"
133 #else 133 #else
134 ".arm\n" 134 ".arm\n"
135 #endif 135 #endif
136 "SyscallAsm:.fnstart\n" 136 "SyscallAsm:\n"
137 #if !defined(__native_client_nonsfi__)
138 // .fnstart and .fnend pseudo operations creates unwind table.
139 // It also creates a reference to the symbol __aeabi_unwind_cpp_pr0, which
140 // is not provided by PNaCl toolchain. Disable it.
141 ".fnstart\n"
142 #endif
137 "@ args = 0, pretend = 0, frame = 8\n" 143 "@ args = 0, pretend = 0, frame = 8\n"
138 "@ frame_needed = 1, uses_anonymous_args = 0\n" 144 "@ frame_needed = 1, uses_anonymous_args = 0\n"
139 #if defined(__thumb__) 145 #if defined(__thumb__)
140 ".cfi_startproc\n" 146 ".cfi_startproc\n"
141 "push {r7, lr}\n" 147 "push {r7, lr}\n"
148 ".save {r7, lr}\n"
142 ".cfi_offset 14, -4\n" 149 ".cfi_offset 14, -4\n"
143 ".cfi_offset 7, -8\n" 150 ".cfi_offset 7, -8\n"
144 "mov r7, sp\n"
145 ".cfi_def_cfa_register 7\n"
146 ".cfi_def_cfa_offset 8\n" 151 ".cfi_def_cfa_offset 8\n"
147 #else 152 #else
148 "stmfd sp!, {fp, lr}\n" 153 "stmfd sp!, {fp, lr}\n"
149 "add fp, sp, #4\n" 154 "add fp, sp, #4\n"
150 #endif 155 #endif
151 // Check if "r0" is negative. If so, do not attempt to make a 156 // Check if "r0" is negative. If so, do not attempt to make a
152 // system call. Instead, compute the return address that is visible 157 // system call. Instead, compute the return address that is visible
153 // to the kernel after we execute "swi 0". This address can be 158 // to the kernel after we execute "swi 0". This address can be
154 // used as a marker that BPF code inspects. 159 // used as a marker that BPF code inspects.
155 "cmp r0, #0\n" 160 "cmp r0, #0\n"
(...skipping 14 matching lines...) Expand all
170 // Enter the kernel 175 // Enter the kernel
171 "swi 0\n" 176 "swi 0\n"
172 // Restore the frame pointer. Also restore the program counter from 177 // Restore the frame pointer. Also restore the program counter from
173 // the link register; this makes us return to the caller. 178 // the link register; this makes us return to the caller.
174 #if defined(__thumb__) 179 #if defined(__thumb__)
175 "2:pop {r7, pc}\n" 180 "2:pop {r7, pc}\n"
176 ".cfi_endproc\n" 181 ".cfi_endproc\n"
177 #else 182 #else
178 "2:ldmfd sp!, {fp, pc}\n" 183 "2:ldmfd sp!, {fp, pc}\n"
179 #endif 184 #endif
185 #if !defined(__native_client_nonsfi__)
186 // Do not use .fnstart and .fnend for PNaCl toolchain. See above comment,
187 // for more details.
180 ".fnend\n" 188 ".fnend\n"
189 #endif
181 "9:.size SyscallAsm, 9b-SyscallAsm\n" 190 "9:.size SyscallAsm, 9b-SyscallAsm\n"
182 #elif defined(__mips__) 191 #elif defined(__mips__)
183 ".text\n" 192 ".text\n"
184 ".align 4\n" 193 ".align 4\n"
185 ".type SyscallAsm, @function\n" 194 ".type SyscallAsm, @function\n"
186 "SyscallAsm:.ent SyscallAsm\n" 195 "SyscallAsm:.ent SyscallAsm\n"
187 ".frame $sp, 40, $ra\n" 196 ".frame $sp, 40, $ra\n"
188 ".set push\n" 197 ".set push\n"
189 ".set noreorder\n" 198 ".set noreorder\n"
190 "addiu $sp, $sp, -40\n" 199 "addiu $sp, $sp, -40\n"
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 } 412 }
404 413
405 // Set an error status so it can be used outside of this function 414 // Set an error status so it can be used outside of this function
406 *err_ret = err_stat; 415 *err_ret = err_stat;
407 416
408 return ret; 417 return ret;
409 } 418 }
410 #endif // defined(__mips__) 419 #endif // defined(__mips__)
411 420
412 } // namespace sandbox 421 } // namespace sandbox
OLDNEW
« no previous file with comments | « sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc ('k') | sandbox/linux/seccomp-bpf/trap.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698