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

Side by Side Diff: src/trusted/service_runtime/sel_main_chrome.c

Issue 10681005: Allow sel_ldr to continue without the IRT, when nexe doesn't have segment gap (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: simpler check? Created 8 years, 5 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The Native Client Authors. All rights reserved. 2 * Copyright (c) 2012 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 #include "native_client/src/trusted/service_runtime/sel_main_chrome.h" 7 #include "native_client/src/trusted/service_runtime/sel_main_chrome.h"
8 8
9 #include "native_client/src/include/portability.h" 9 #include "native_client/src/include/portability.h"
10 #include "native_client/src/include/portability_io.h" 10 #include "native_client/src/include/portability_io.h"
(...skipping 12 matching lines...) Expand all
23 #include "native_client/src/trusted/desc/nacl_desc_io.h" 23 #include "native_client/src/trusted/desc/nacl_desc_io.h"
24 #include "native_client/src/trusted/fault_injection/fault_injection.h" 24 #include "native_client/src/trusted/fault_injection/fault_injection.h"
25 #include "native_client/src/trusted/gio/gio_nacl_desc.h" 25 #include "native_client/src/trusted/gio/gio_nacl_desc.h"
26 #include "native_client/src/trusted/service_runtime/include/sys/fcntl.h" 26 #include "native_client/src/trusted/service_runtime/include/sys/fcntl.h"
27 #include "native_client/src/trusted/service_runtime/nacl_globals.h" 27 #include "native_client/src/trusted/service_runtime/nacl_globals.h"
28 #include "native_client/src/trusted/service_runtime/env_cleanser.h" 28 #include "native_client/src/trusted/service_runtime/env_cleanser.h"
29 #include "native_client/src/trusted/service_runtime/nacl_app.h" 29 #include "native_client/src/trusted/service_runtime/nacl_app.h"
30 #include "native_client/src/trusted/service_runtime/nacl_all_modules.h" 30 #include "native_client/src/trusted/service_runtime/nacl_all_modules.h"
31 #include "native_client/src/trusted/service_runtime/nacl_debug_init.h" 31 #include "native_client/src/trusted/service_runtime/nacl_debug_init.h"
32 #include "native_client/src/trusted/service_runtime/nacl_signal.h" 32 #include "native_client/src/trusted/service_runtime/nacl_signal.h"
33 #include "native_client/src/trusted/service_runtime/nacl_text.h"
33 #include "native_client/src/trusted/service_runtime/osx/mach_exception_handler.h " 34 #include "native_client/src/trusted/service_runtime/osx/mach_exception_handler.h "
34 #include "native_client/src/trusted/service_runtime/sel_addrspace.h" 35 #include "native_client/src/trusted/service_runtime/sel_addrspace.h"
35 #include "native_client/src/trusted/service_runtime/sel_ldr.h" 36 #include "native_client/src/trusted/service_runtime/sel_ldr.h"
36 #include "native_client/src/trusted/service_runtime/sel_qualify.h" 37 #include "native_client/src/trusted/service_runtime/sel_qualify.h"
37 #include "native_client/src/trusted/service_runtime/win/exception_patch/ntdll_pa tch.h" 38 #include "native_client/src/trusted/service_runtime/win/exception_patch/ntdll_pa tch.h"
38 39
39 struct NaClChromeMainArgs *NaClChromeMainArgsCreate(void) { 40 struct NaClChromeMainArgs *NaClChromeMainArgsCreate(void) {
40 struct NaClChromeMainArgs *args = malloc(sizeof(*args)); 41 struct NaClChromeMainArgs *args = malloc(sizeof(*args));
41 if (args == NULL) 42 if (args == NULL)
42 return NULL; 43 return NULL;
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 } 275 }
275 276
276 /* 277 /*
277 * error reporting done; can quit now if there was an error earlier. 278 * error reporting done; can quit now if there was an error earlier.
278 */ 279 */
279 if (LOAD_OK != errcode) { 280 if (LOAD_OK != errcode) {
280 goto done; 281 goto done;
281 } 282 }
282 283
283 /* Load the integrated runtime (IRT) library. */ 284 /* Load the integrated runtime (IRT) library. */
284 NaClLoadIrt(nap, args->irt_fd); 285 /* We check if there is a segment gap before trying to load the IRT. This
Mark Seaborn 2012/06/28 22:05:11 The comment style is /* * blah * blah */ Can y
jvoung (off chromium) 2012/06/28 22:41:56 Done.
286 * is to support IRT-less / segment-gap-free PNaCl translator nexes.
287 * We should plumb through a flag from Chrome in such cases, instead of
Mark Seaborn 2012/06/28 22:05:11 Can you make this: "TODO(mseaborn): Plumb through
jvoung (off chromium) 2012/06/28 22:41:56 Done.
288 * looking for the absence of a segment gap, to provide better diagnostics
289 * when the linker did not create a segment gap!
290 */
291 if (NaClHasSegmentGapForDyncode(nap)) {
292 NaClLoadIrt(nap, args->irt_fd);
293 } else {
294 NaClLog(LOG_WARNING,
295 "NaCl app doesn't have a segment gap, not loading IRT.\n"
Mark Seaborn 2012/06/28 22:05:11 'executable' rather than 'app'? "Main executable
jvoung (off chromium) 2012/06/28 22:41:56 Done.
296 "This is expected for PNaCl's translator nexes.\n");
297 }
285 298
286 NaClEnvCleanserCtor(&env_cleanser, 1); 299 NaClEnvCleanserCtor(&env_cleanser, 1);
287 if (!NaClEnvCleanserInit(&env_cleanser, envp, NULL)) { 300 if (!NaClEnvCleanserInit(&env_cleanser, envp, NULL)) {
288 NaClLog(LOG_FATAL, "Failed to initialise env cleanser\n"); 301 NaClLog(LOG_FATAL, "Failed to initialise env cleanser\n");
289 } 302 }
290 303
291 if (!NaClAppLaunchServiceThreads(nap)) { 304 if (!NaClAppLaunchServiceThreads(nap)) {
292 fprintf(stderr, "Launch service threads failed\n"); 305 fprintf(stderr, "Launch service threads failed\n");
293 goto done; 306 goto done;
294 } 307 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 if (LOAD_OK != errcode) { 345 if (LOAD_OK != errcode) {
333 NaClBlockIfCommandChannelExists(nap); 346 NaClBlockIfCommandChannelExists(nap);
334 } 347 }
335 348
336 done_ctor: 349 done_ctor:
337 350
338 NaClAllModulesFini(); 351 NaClAllModulesFini();
339 352
340 NaClExit(ret_code); 353 NaClExit(ret_code);
341 } 354 }
OLDNEW
« src/trusted/service_runtime/sel_main.c ('K') | « src/trusted/service_runtime/sel_main.c ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698