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

Side by Side Diff: pnacl/driver/filetype.py

Issue 1825893002: PNaCl Dynamic Linking: Added portable dependencies to shared objects. (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client.git@master
Patch Set: Created 4 years, 8 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
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2013 The Native Client Authors. All rights reserved. 2 # Copyright (c) 2013 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 """Utilities for determining (and overriding) the types of files 6 """Utilities for determining (and overriding) the types of files
7 """ 7 """
8 8
9 import os 9 import os
10 10
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 60
61 @SimpleCache 61 @SimpleCache
62 def IsNativeObject(filename): 62 def IsNativeObject(filename):
63 return FileType(filename) == 'o' 63 return FileType(filename) == 'o'
64 64
65 @SimpleCache 65 @SimpleCache
66 def IsNativeDSO(filename): 66 def IsNativeDSO(filename):
67 return FileType(filename) == 'so' 67 return FileType(filename) == 'so'
68 68
69 @SimpleCache 69 @SimpleCache
70 def IsPll(filename):
71 return FileType(filename) == 'pll'
72
73 @SimpleCache
70 def GetBitcodeMagic(filename): 74 def GetBitcodeMagic(filename):
71 fp = driver_log.DriverOpen(filename, 'rb') 75 fp = driver_log.DriverOpen(filename, 'rb')
72 header = fp.read(4) 76 header = fp.read(4)
73 driver_log.DriverClose(fp) 77 driver_log.DriverClose(fp)
74 return header 78 return header
75 79
76 def IsLLVMBitcodeWrapperHeader(data): 80 def IsLLVMBitcodeWrapperHeader(data):
77 return data[:4] == LLVM_WRAPPER_MAGIC 81 return data[:4] == LLVM_WRAPPER_MAGIC
78 82
79 @SimpleCache 83 @SimpleCache
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 346
343 if elftools.IsELF(filename): 347 if elftools.IsELF(filename):
344 return GetELFType(filename) 348 return GetELFType(filename)
345 349
346 # If this is LLVM bitcode, we don't have a good way of determining if it 350 # If this is LLVM bitcode, we don't have a good way of determining if it
347 # is an object file or a non-finalized program, so just say 'po' for now. 351 # is an object file or a non-finalized program, so just say 'po' for now.
348 if IsLLVMBitcode(filename): 352 if IsLLVMBitcode(filename):
349 return 'po' 353 return 'po'
350 354
351 if IsPNaClBitcode(filename): 355 if IsPNaClBitcode(filename):
356 # Although this file looks like a native ".so", it actually is in a
Mark Seaborn 2016/03/30 23:24:57 "looks like" -> "has the same extension as"?
Sean Klein 2016/04/01 23:12:24 Done.
357 # portable format and should be handled slightly differently.
358 if ext == 'so':
359 return 'pll'
352 return 'pexe' 360 return 'pexe'
353 361
354 if IsLinkerScript(filename): 362 if IsLinkerScript(filename):
355 return 'ldscript' 363 return 'ldscript'
356 364
357 # Use the file extension if it is recognized 365 # Use the file extension if it is recognized
358 if ext in ExtensionMap: 366 if ext in ExtensionMap:
359 return ExtensionMap[ext] 367 return ExtensionMap[ext]
360 368
361 driver_log.Log.Fatal('%s: Unrecognized file type', filename) 369 driver_log.Log.Fatal('%s: Unrecognized file type', filename)
362 370
363 # Map from GCC's -x file types and this driver's file types. 371 # Map from GCC's -x file types and this driver's file types.
364 FILE_TYPE_MAP = { 372 FILE_TYPE_MAP = {
365 'c' : 'c', 373 'c' : 'c',
366 'c++' : 'c++', 374 'c++' : 'c++',
367 'assembler' : 's', 375 'assembler' : 's',
368 'assembler-with-cpp': 'S', 376 'assembler-with-cpp': 'S',
369 'c-header' : 'c-header', 377 'c-header' : 'c-header',
370 'c++-header' : 'c++-header', 378 'c++-header' : 'c++-header',
371 } 379 }
372 FILE_TYPE_MAP_REVERSE = dict([reversed(_tmp) for _tmp in FILE_TYPE_MAP.items()]) 380 FILE_TYPE_MAP_REVERSE = dict([reversed(_tmp) for _tmp in FILE_TYPE_MAP.items()])
373 381
374 def FileTypeToGCCType(filetype): 382 def FileTypeToGCCType(filetype):
375 return FILE_TYPE_MAP_REVERSE[filetype] 383 return FILE_TYPE_MAP_REVERSE[filetype]
376 384
377 def GCCTypeToFileType(gcctype): 385 def GCCTypeToFileType(gcctype):
378 if gcctype not in FILE_TYPE_MAP: 386 if gcctype not in FILE_TYPE_MAP:
379 driver_log.Log.Fatal('language "%s" not recognized' % gcctype) 387 driver_log.Log.Fatal('language "%s" not recognized' % gcctype)
380 return FILE_TYPE_MAP[gcctype] 388 return FILE_TYPE_MAP[gcctype]
OLDNEW
« no previous file with comments | « pnacl/build.sh ('k') | pnacl/driver/pnacl-ld.py » ('j') | pnacl/driver/pnacl-ld.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698