OLD | NEW |
---|---|
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 <sys/types.h> // Include something that will define __GLIBC__. | 5 #include <sys/types.h> // Include something that will define __GLIBC__. |
6 | 6 |
7 // The entire file is wrapped in this #if. We do this so this .cc file can be | 7 // The entire file is wrapped in this #if. We do this so this .cc file can be |
8 // compiled, even on a non-newlib build. | 8 // compiled, even on a non-newlib build. |
9 #if defined(__native_client__) && !defined(__GLIBC__) && !defined(__BIONIC__) | 9 #if defined(__native_client__) && !defined(__GLIBC__) && !defined(__BIONIC__) |
10 | 10 |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
265 __libnacl_irt_dev_fdio_init(); | 265 __libnacl_irt_dev_fdio_init(); |
266 EXPAND_SYMBOL_LIST_OPERATION(ASSIGN_REAL_PTR) | 266 EXPAND_SYMBOL_LIST_OPERATION(ASSIGN_REAL_PTR) |
267 assigned = true; | 267 assigned = true; |
268 } | 268 } |
269 } | 269 } |
270 | 270 |
271 #define CHECK_REAL(func) \ | 271 #define CHECK_REAL(func) \ |
272 if (!REAL(func)) \ | 272 if (!REAL(func)) \ |
273 assign_real_pointers(); | 273 assign_real_pointers(); |
274 | 274 |
275 #define CHECK_REAL_NOSYS(func) \ | |
276 CHECK_REAL(func) \ | |
277 if (!REAL(func)) \ | |
278 return ENOSYS; | |
279 | |
275 // "real" functions, i.e. the unwrapped original functions. | 280 // "real" functions, i.e. the unwrapped original functions. |
276 | 281 |
277 int _real_close(int fd) { | 282 int _real_close(int fd) { |
278 CHECK_REAL(close); | 283 CHECK_REAL(close); |
279 return REAL(close)(fd); | 284 return REAL(close)(fd); |
280 } | 285 } |
281 | 286 |
282 void _real_exit(int status) { | 287 void _real_exit(int status) { |
283 CHECK_REAL(exit); | 288 CHECK_REAL(exit); |
284 REAL(exit)(status); | 289 REAL(exit)(status); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
347 int _real_rmdir(const char* pathname) { | 352 int _real_rmdir(const char* pathname) { |
348 CHECK_REAL(rmdir); | 353 CHECK_REAL(rmdir); |
349 return REAL(rmdir)(pathname); | 354 return REAL(rmdir)(pathname); |
350 } | 355 } |
351 | 356 |
352 int _real_write(int fd, const void* buf, size_t count, size_t* nwrote) { | 357 int _real_write(int fd, const void* buf, size_t count, size_t* nwrote) { |
353 CHECK_REAL(write); | 358 CHECK_REAL(write); |
354 return REAL(write)(fd, buf, count, nwrote); | 359 return REAL(write)(fd, buf, count, nwrote); |
355 } | 360 } |
356 | 361 |
362 int _real_getcwd(char* pathname, size_t len) { | |
binji
2014/08/20 18:13:35
bionic too?
Sam Clegg
2014/08/21 10:19:34
Done.. looks like we don't have a trybot that ev
| |
363 CHECK_REAL_NOSYS(getcwd); | |
364 return REAL(getcwd)(pathname, len); | |
365 } | |
366 | |
357 static bool s_wrapped = false; | 367 static bool s_wrapped = false; |
358 | 368 |
359 void kernel_wrap_init() { | 369 void kernel_wrap_init() { |
360 if (!s_wrapped) { | 370 if (!s_wrapped) { |
361 LOG_TRACE("kernel_wrap_init"); | 371 LOG_TRACE("kernel_wrap_init"); |
362 assign_real_pointers(); | 372 assign_real_pointers(); |
363 EXPAND_SYMBOL_LIST_OPERATION(USE_WRAP) | 373 EXPAND_SYMBOL_LIST_OPERATION(USE_WRAP) |
364 s_wrapped = true; | 374 s_wrapped = true; |
365 } | 375 } |
366 } | 376 } |
367 | 377 |
368 void kernel_wrap_uninit() { | 378 void kernel_wrap_uninit() { |
369 if (s_wrapped) { | 379 if (s_wrapped) { |
370 LOG_TRACE("kernel_wrap_uninit"); | 380 LOG_TRACE("kernel_wrap_uninit"); |
371 EXPAND_SYMBOL_LIST_OPERATION(USE_REAL) | 381 EXPAND_SYMBOL_LIST_OPERATION(USE_REAL) |
372 s_wrapped = false; | 382 s_wrapped = false; |
373 } | 383 } |
374 } | 384 } |
375 | 385 |
376 EXTERN_C_END | 386 EXTERN_C_END |
377 | 387 |
378 #endif // defined(__native_client__) && !defined(__GLIBC__) ... | 388 #endif // defined(__native_client__) && !defined(__GLIBC__) ... |
OLD | NEW |