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

Side by Side Diff: ppapi/native_client/src/trusted/plugin/pnacl_coordinator.cc

Issue 8790016: Add rough version pnacl shim commandlines to pnacl coordinator. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "native_client/src/trusted/plugin/pnacl_coordinator.h" 5 #include "native_client/src/trusted/plugin/pnacl_coordinator.h"
6 6
7 #include <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "native_client/src/include/portability_io.h" 10 #include "native_client/src/include/portability_io.h"
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 nacl::string GeneratedObjectFileName() { 347 nacl::string GeneratedObjectFileName() {
348 return nacl::string("___PNACL_GENERATED"); 348 return nacl::string("___PNACL_GENERATED");
349 } 349 }
350 350
351 nacl::string ResourceBaseUrl() { 351 nacl::string ResourceBaseUrl() {
352 nacl::string sandbox_isa = GetSandboxISA(); 352 nacl::string sandbox_isa = GetSandboxISA();
353 nacl::string base_url = "pnacl_support/" + sandbox_isa + "/"; 353 nacl::string base_url = "pnacl_support/" + sandbox_isa + "/";
354 return base_url; 354 return base_url;
355 } 355 }
356 356
357 string_vector LinkResources(bool withGenerated) { 357 string_vector LinkResources(const nacl::string& sandbox_isa,
358 bool withGenerated) {
358 string_vector results; 359 string_vector results;
359 // NOTE: order of items == link order. 360 // NOTE: order of items == link order.
361 if (sandbox_isa.compare("x86-64") == 0) {
362 results.push_back("libpnacl_irt_shim.a");
363 }
360 results.push_back("crtbegin.o"); 364 results.push_back("crtbegin.o");
361 if (withGenerated) { 365 if (withGenerated) {
362 results.push_back(GeneratedObjectFileName()); 366 results.push_back(GeneratedObjectFileName());
363 } 367 }
364 results.push_back("libcrt_platform.a"); 368 results.push_back("libcrt_platform.a");
365 results.push_back("libgcc.a"); 369 results.push_back("libgcc.a");
366 results.push_back("libgcc_eh.a"); 370 results.push_back("libgcc_eh.a");
367 results.push_back("crtend.o"); 371 results.push_back("crtend.o");
368 return results; 372 return results;
369 } 373 }
(...skipping 27 matching lines...) Expand all
397 // TODO(jvoung): Be able to handle the dynamic linking flags too, 401 // TODO(jvoung): Be able to handle the dynamic linking flags too,
398 // and don't hardcode so much here. 402 // and don't hardcode so much here.
399 string_vector flags; 403 string_vector flags;
400 nacl::string sandbox_isa = GetSandboxISA(); 404 nacl::string sandbox_isa = GetSandboxISA();
401 flags.push_back("-nostdlib"); 405 flags.push_back("-nostdlib");
402 flags.push_back("-m"); 406 flags.push_back("-m");
403 if (sandbox_isa.compare("x86-32") == 0) { 407 if (sandbox_isa.compare("x86-32") == 0) {
404 flags.push_back("elf_nacl"); 408 flags.push_back("elf_nacl");
405 } else if (sandbox_isa.compare("x86-64") == 0) { 409 } else if (sandbox_isa.compare("x86-64") == 0) {
406 flags.push_back("elf64_nacl"); 410 flags.push_back("elf64_nacl");
411 flags.push_back("-entry=_pnacl_wrapper_start");
407 } else if (sandbox_isa.compare("arm") == 0) { 412 } else if (sandbox_isa.compare("arm") == 0) {
408 flags.push_back("armelf_nacl"); 413 flags.push_back("armelf_nacl");
409 } else { 414 } else {
410 AbortLinkThread(p, 415 AbortLinkThread(p,
411 "PnaclCoordinator linker unhandled ISA " + 416 "PnaclCoordinator linker unhandled ISA " +
412 sandbox_isa + "."); 417 sandbox_isa + ".");
413 } 418 }
414 419
415 for (string_vector::iterator i = flags.begin(), e = flags.end(); 420 for (string_vector::iterator i = flags.begin(), e = flags.end();
416 i != e; ++i) { 421 i != e; ++i) {
417 const nacl::string& flag = *i; 422 const nacl::string& flag = *i;
418 if (coordinator->SubprocessesShouldDie()) { 423 if (coordinator->SubprocessesShouldDie()) {
419 NaClThreadExit(1); 424 NaClThreadExit(1);
420 } 425 }
421 SrpcParams dummy_params; 426 SrpcParams dummy_params;
422 if (!PnaclSrpcLib::InvokeSrpcMethod(browser_interface, 427 if (!PnaclSrpcLib::InvokeSrpcMethod(browser_interface,
423 ld_subprocess, 428 ld_subprocess,
424 "AddArg", 429 "AddArg",
425 "C", 430 "C",
426 &dummy_params, 431 &dummy_params,
427 flag.c_str())) { 432 flag.c_str())) {
428 AbortLinkThread(p, 433 AbortLinkThread(p,
429 "PnaclCoordinator linker AddArg(" + flag + 434 "PnaclCoordinator linker AddArg(" + flag +
430 ") failed."); 435 ") failed.");
431 } 436 }
432 } 437 }
433 438
434 //// Files. 439 //// Files.
435 string_vector files = LinkResources(true); 440 string_vector files = LinkResources(sandbox_isa, true);
436 PnaclResources* resources = coordinator->resources(); 441 PnaclResources* resources = coordinator->resources();
437 for (string_vector::iterator i = files.begin(), e = files.end(); 442 for (string_vector::iterator i = files.begin(), e = files.end();
438 i != e; ++i) { 443 i != e; ++i) {
439 const nacl::string& link_file = *i; 444 const nacl::string& link_file = *i;
440 if (coordinator->SubprocessesShouldDie()) { 445 if (coordinator->SubprocessesShouldDie()) {
441 NaClThreadExit(1); 446 NaClThreadExit(1);
442 } 447 }
443 // Add as argument. 448 // Add as argument.
444 SrpcParams dummy_params; 449 SrpcParams dummy_params;
445 if (!PnaclSrpcLib::InvokeSrpcMethod(browser_interface, 450 if (!PnaclSrpcLib::InvokeSrpcMethod(browser_interface,
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 617
613 translation_unit_.reset(new PnaclTranslationUnit(this)); 618 translation_unit_.reset(new PnaclTranslationUnit(this));
614 619
615 // When resources loading completes, this causes the pexe download. 620 // When resources loading completes, this causes the pexe download.
616 pp::CompletionCallback resources_cb = 621 pp::CompletionCallback resources_cb =
617 callback_factory_.NewCallback(&PnaclCoordinator::ResourcesDidLoad, 622 callback_factory_.NewCallback(&PnaclCoordinator::ResourcesDidLoad,
618 pexe_url, 623 pexe_url,
619 translation_unit_.get()); 624 translation_unit_.get());
620 resources_->AddResourceUrl(llc_url_); 625 resources_->AddResourceUrl(llc_url_);
621 resources_->AddResourceUrl(ld_url_); 626 resources_->AddResourceUrl(ld_url_);
622 string_vector link_resources = LinkResources(false); 627 string_vector link_resources = LinkResources(GetSandboxISA(), false);
623 for (string_vector::iterator 628 for (string_vector::iterator
624 i = link_resources.begin(), e = link_resources.end(); 629 i = link_resources.begin(), e = link_resources.end();
625 i != e; 630 i != e;
626 ++i) { 631 ++i) {
627 resources_->AddResourceUrl(*i); 632 resources_->AddResourceUrl(*i);
628 } 633 }
629 resources_->RunWhenAllLoaded(resources_cb); 634 resources_->RunWhenAllLoaded(resources_cb);
630 resources_->StartDownloads(); 635 resources_->StartDownloads();
631 } 636 }
632 637
633 } // namespace plugin 638 } // namespace plugin
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698