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

Side by Side Diff: native_client_sdk/src/tools/sel_ldr.py

Issue 1331443008: [NaCl SDK] Add msan support to SDK build system (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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
« no previous file with comments | « native_client_sdk/src/tools/nacl_gcc.mk ('k') | 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 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Copyright 2013 The Chromium 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 """Wrapper script for launching application within the sel_ldr. 6 """Wrapper script for launching application within the sel_ldr.
7 """ 7 """
8 8
9 import argparse 9 import argparse
10 import os 10 import os
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 parser = argparse.ArgumentParser(description=__doc__, epilog=epilog) 53 parser = argparse.ArgumentParser(description=__doc__, epilog=epilog)
54 parser.add_argument('-v', '--verbose', action='store_true', 54 parser.add_argument('-v', '--verbose', action='store_true',
55 help='Verbose output') 55 help='Verbose output')
56 parser.add_argument('-d', '--debug', action='store_true', 56 parser.add_argument('-d', '--debug', action='store_true',
57 help='Enable debug stub') 57 help='Enable debug stub')
58 parser.add_argument('-e', '--exceptions', action='store_true', 58 parser.add_argument('-e', '--exceptions', action='store_true',
59 help='Enable exception handling interface') 59 help='Enable exception handling interface')
60 parser.add_argument('-p', '--passthrough-environment', action='store_true', 60 parser.add_argument('-p', '--passthrough-environment', action='store_true',
61 help='Pass environment of host through to nexe') 61 help='Pass environment of host through to nexe')
62 parser.add_argument('--debug-libs', action='store_true', 62 parser.add_argument('--debug-libs', action='store_true',
63 help='For dynamic executables, reference debug ' 63 help='Legacy option, do not use')
64 'libraries rather then release') 64 parser.add_argument('--config', default='Release',
65 help='Use a particular library configuration (normally '
66 'Debug or Release)')
65 parser.add_argument('executable', help='executable (.nexe) to run') 67 parser.add_argument('executable', help='executable (.nexe) to run')
66 parser.add_argument('args', nargs='*', help='argument to pass to exectuable') 68 parser.add_argument('args', nargs='*', help='argument to pass to exectuable')
67 parser.add_argument('--library-path', 69 parser.add_argument('--library-path',
68 help='Pass extra library paths') 70 help='Pass extra library paths')
69 71
70 # To enable bash completion for this command first install optcomplete 72 # To enable bash completion for this command first install optcomplete
71 # and then add this line to your .bashrc: 73 # and then add this line to your .bashrc:
72 # complete -F _optcomplete sel_ldr.py 74 # complete -F _optcomplete sel_ldr.py
73 try: 75 try:
74 import optcomplete 76 import optcomplete
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 144
143 arm_libpath = os.path.join(NACL_SDK_ROOT, 'tools', 'lib', 'arm_trusted') 145 arm_libpath = os.path.join(NACL_SDK_ROOT, 'tools', 'lib', 'arm_trusted')
144 if not os.path.isdir(arm_libpath): 146 if not os.path.isdir(arm_libpath):
145 raise Error('Could not find ARM library path: %s' % arm_libpath) 147 raise Error('Could not find ARM library path: %s' % arm_libpath)
146 qemu = [qemu_bin, '-cpu', 'cortex-a8', '-L', arm_libpath] 148 qemu = [qemu_bin, '-cpu', 'cortex-a8', '-L', arm_libpath]
147 # '-Q' disables platform qualification, allowing arm binaries to run. 149 # '-Q' disables platform qualification, allowing arm binaries to run.
148 cmd = qemu + cmd + ['-Q'] 150 cmd = qemu + cmd + ['-Q']
149 151
150 if dynamic: 152 if dynamic:
151 if options.debug_libs: 153 if options.debug_libs:
152 sdk_lib_dir = os.path.join(NACL_SDK_ROOT, 'lib', 154 sys.stderr.write('warning: --debug-libs is deprecated (use --config).\n')
153 'glibc_%s' % arch_suffix, 'Debug') 155 options.config = 'Debug'
154 else: 156
155 sdk_lib_dir = os.path.join(NACL_SDK_ROOT, 'lib', 157 sdk_lib_dir = os.path.join(NACL_SDK_ROOT, 'lib',
156 'glibc_%s' % arch_suffix, 'Release') 158 'glibc_%s' % arch_suffix, options.config)
157 159
158 if elf_arch == 'x86-64': 160 if elf_arch == 'x86-64':
159 lib_subdir = 'lib' 161 lib_subdir = 'lib'
160 tcarch = 'x86' 162 tcarch = 'x86'
161 tcsubarch = 'x86_64' 163 tcsubarch = 'x86_64'
162 usr_arch = 'x86_64' 164 usr_arch = 'x86_64'
163 elif elf_arch == 'arm': 165 elif elf_arch == 'arm':
164 lib_subdir = 'lib' 166 lib_subdir = 'lib'
165 tcarch = 'arm' 167 tcarch = 'arm'
166 tcsubarch = 'arm' 168 tcsubarch = 'arm'
167 usr_arch = 'arm' 169 usr_arch = 'arm'
168 elif elf_arch == 'x86-32': 170 elif elf_arch == 'x86-32':
169 lib_subdir = 'lib32' 171 lib_subdir = 'lib32'
170 tcarch = 'x86' 172 tcarch = 'x86'
171 tcsubarch = 'x86_64' 173 tcsubarch = 'x86_64'
172 usr_arch = 'i686' 174 usr_arch = 'i686'
173 else: 175 else:
174 raise Error("Unknown arch: %s" % elf_arch) 176 raise Error("Unknown arch: %s" % elf_arch)
175 177
176 toolchain = '%s_%s_glibc' % (osname, tcarch) 178 toolchain = '%s_%s_glibc' % (osname, tcarch)
177 toolchain_dir = os.path.join(NACL_SDK_ROOT, 'toolchain', toolchain) 179 toolchain_dir = os.path.join(NACL_SDK_ROOT, 'toolchain', toolchain)
178 interp_prefix = os.path.join(toolchain_dir, tcsubarch + '-nacl') 180 interp_prefix = os.path.join(toolchain_dir, tcsubarch + '-nacl')
179 lib_dir = os.path.join(interp_prefix, lib_subdir) 181 lib_dir = os.path.join(interp_prefix, lib_subdir)
180 usr_lib_dir = os.path.join(toolchain_dir, usr_arch + '-nacl', 'usr', 'lib') 182 usr_lib_dir = os.path.join(toolchain_dir, usr_arch + '-nacl', 'usr', 'lib')
181 183
182 libpath = [usr_lib_dir, sdk_lib_dir, lib_dir] 184 libpath = [usr_lib_dir, sdk_lib_dir, lib_dir]
185
186 if options.config not in ['Debug', 'Release']:
187 config_fallback = 'Release'
188 if 'Debug' in options.config:
189 config_fallback = 'Debug'
190 libpath.append(os.path.join(NACL_SDK_ROOT, 'lib',
191 'glibc_%s' % arch_suffix, config_fallback))
192
183 if options.library_path: 193 if options.library_path:
184 libpath.extend([os.path.abspath(p) for p 194 libpath.extend([os.path.abspath(p) for p
185 in options.library_path.split(':')]) 195 in options.library_path.split(':')])
186 libpath = ':'.join(libpath) 196 libpath = ':'.join(libpath)
187 if elf_arch == 'arm': 197 if elf_arch == 'arm':
188 ldso = os.path.join(SCRIPT_DIR, 'elf_loader_arm.nexe') 198 ldso = os.path.join(SCRIPT_DIR, 'elf_loader_arm.nexe')
189 cmd.append('-E') 199 cmd.append('-E')
190 cmd.append('LD_LIBRARY_PATH=%s' % libpath) 200 cmd.append('LD_LIBRARY_PATH=%s' % libpath)
191 cmd.append(ldso) 201 cmd.append(ldso)
192 cmd.append('--interp-prefix') 202 cmd.append('--interp-prefix')
(...skipping 13 matching lines...) Expand all
206 Log(cmd) 216 Log(cmd)
207 return subprocess.call(cmd) 217 return subprocess.call(cmd)
208 218
209 219
210 if __name__ == '__main__': 220 if __name__ == '__main__':
211 try: 221 try:
212 sys.exit(main(sys.argv[1:])) 222 sys.exit(main(sys.argv[1:]))
213 except Error as e: 223 except Error as e:
214 sys.stderr.write(str(e) + '\n') 224 sys.stderr.write(str(e) + '\n')
215 sys.exit(1) 225 sys.exit(1)
OLDNEW
« no previous file with comments | « native_client_sdk/src/tools/nacl_gcc.mk ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698