OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "ppapi/native_client/src/trusted/plugin/pnacl_options.h" | 5 #include "ppapi/native_client/src/trusted/plugin/pnacl_options.h" |
6 | 6 |
7 #include <iterator> | 7 #include <iterator> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "native_client/src/include/nacl_string.h" | 10 #include "native_client/src/include/nacl_string.h" |
11 | 11 |
12 namespace plugin { | 12 namespace plugin { |
13 | 13 |
14 PnaclOptions::PnaclOptions() : translate_(false), opt_level_(2) { } | 14 PnaclOptions::PnaclOptions() |
| 15 : translate_(false), |
| 16 is_debug_(false), |
| 17 opt_level_(2) { |
| 18 } |
15 | 19 |
16 PnaclOptions::~PnaclOptions() { | 20 PnaclOptions::~PnaclOptions() { |
17 } | 21 } |
18 | 22 |
19 void PnaclOptions::set_opt_level(int32_t l) { | 23 void PnaclOptions::set_opt_level(int32_t l) { |
20 if (l <= 0) { | 24 if (l <= 0) { |
21 opt_level_ = 0; | 25 opt_level_ = 0; |
22 return; | 26 return; |
23 } | 27 } |
24 // Currently only allow 0 or 2, since that is what we test. | 28 // Currently only allow 0 or 2, since that is what we test. |
25 opt_level_ = 2; | 29 opt_level_ = 2; |
26 } | 30 } |
27 | 31 |
28 std::vector<char> PnaclOptions::GetOptCommandline() const { | 32 std::vector<char> PnaclOptions::GetOptCommandline() const { |
29 std::vector<char> result; | 33 std::vector<char> result; |
30 nacl::string str; | 34 nacl::string str; |
31 | 35 |
32 nacl::stringstream ss; | 36 nacl::stringstream ss; |
33 ss << "-O" << opt_level_; | 37 ss << "-O" << opt_level_; |
| 38 // Debug info is only available in LLVM format pexes, |
| 39 // not in PNaCl format pexes. |
| 40 if (is_debug_) |
| 41 ss << "\x00-bitcode-format=llvm"; |
34 str = ss.str(); | 42 str = ss.str(); |
35 | 43 |
36 std::copy(str.begin(), str.end(), std::back_inserter(result)); | 44 std::copy(str.begin(), str.end(), std::back_inserter(result)); |
37 result.push_back('\x00'); | 45 result.push_back('\x00'); |
38 | 46 |
39 return result; | 47 return result; |
40 } | 48 } |
41 | 49 |
42 } // namespace plugin | 50 } // namespace plugin |
OLD | NEW |