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

Side by Side Diff: build/android/gyp/pack_arm_relocations.py

Issue 396283002: Restrict relocation packing to Release build. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update for review feedback Created 6 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
« no previous file with comments | « no previous file | build/android/pack_arm_relocations.gypi » ('j') | 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 # 2 #
3 # Copyright 2014 The Chromium Authors. All rights reserved. 3 # Copyright 2014 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """Pack ARM relative relocations in a library (or copy unchanged). 7 """Pack ARM relative relocations in a library (or copy unchanged).
8 8
9 If --enable-packing, invoke the relocation_packer tool to pack the .rel.dyn 9 If --enable-packing and --configuration-name=='Release', invoke the
10 section in the given library files. This step is inserted after the libraries 10 relocation_packer tool to pack the .rel.dyn section in the given library
11 are stripped. Packing adds a new .android.rel.dyn section to the file and 11 files. This step is inserted after the libraries are stripped. Packing
12 reduces the size of .rel.dyn accordingly. 12 adds a new .android.rel.dyn section to the file and reduces the size of
13 .rel.dyn accordingly.
13 14
14 Currently packing only understands ARM32 shared libraries. For all other 15 Currently packing only understands ARM32 shared libraries. For all other
15 architectures --enable-packing should be set to zero. In this case the 16 architectures --enable-packing should be set to zero. In this case the
16 script copies files verbatim, with no attempt to pack relative relocations. 17 script copies files verbatim, with no attempt to pack relative relocations.
17 18
18 Any library listed in --exclude-packing-list is also copied verbatim, 19 Any library listed in --exclude-packing-list is also copied verbatim,
19 irrespective of any --enable-packing setting. Typically this would be 20 irrespective of any --enable-packing setting. Typically this would be
20 'libchromium_android_linker.so'. 21 'libchromium_android_linker.so'.
21 """ 22 """
22 23
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 def CopyArmLibraryUnchanged(library_path, output_path): 55 def CopyArmLibraryUnchanged(library_path, output_path):
55 if not build_utils.IsTimeStale(output_path, [library_path]): 56 if not build_utils.IsTimeStale(output_path, [library_path]):
56 return 57 return
57 58
58 shutil.copy(library_path, output_path) 59 shutil.copy(library_path, output_path)
59 60
60 61
61 def main(): 62 def main():
62 parser = optparse.OptionParser() 63 parser = optparse.OptionParser()
63 64
65 parser.add_option('--configuration-name',
66 default='Release',
67 help='Gyp configuration name (i.e. Debug, Release)')
64 parser.add_option('--enable-packing', 68 parser.add_option('--enable-packing',
65 choices=['0', '1'], 69 choices=['0', '1'],
66 help='Pack relocations if 1, otherwise plain file copy') 70 help=('Pack relocations if 1 and configuration name is \'Release\','
71 ' otherwise plain file copy'))
67 parser.add_option('--exclude-packing-list', 72 parser.add_option('--exclude-packing-list',
68 default='', 73 default='',
69 help='Names of any libraries explicitly not packed') 74 help='Names of any libraries explicitly not packed')
70 parser.add_option('--android-pack-relocations', 75 parser.add_option('--android-pack-relocations',
71 help='Path to the ARM relocations packer binary') 76 help='Path to the ARM relocations packer binary')
72 parser.add_option('--android-objcopy', 77 parser.add_option('--android-objcopy',
73 help='Path to the toolchain\'s objcopy binary') 78 help='Path to the toolchain\'s objcopy binary')
74 parser.add_option('--stripped-libraries-dir', 79 parser.add_option('--stripped-libraries-dir',
75 help='Directory for stripped libraries') 80 help='Directory for stripped libraries')
76 parser.add_option('--packed-libraries-dir', 81 parser.add_option('--packed-libraries-dir',
77 help='Directory for packed libraries') 82 help='Directory for packed libraries')
78 parser.add_option('--libraries-file', 83 parser.add_option('--libraries-file',
79 help='Path to json file containing list of libraries') 84 help='Path to json file containing list of libraries')
80 parser.add_option('--stamp', help='Path to touch on success') 85 parser.add_option('--stamp', help='Path to touch on success')
81 86
82 options, _ = parser.parse_args() 87 options, _ = parser.parse_args()
83 enable_packing = options.enable_packing == '1' 88 enable_packing = (options.enable_packing == '1' and
89 options.configuration_name == 'Release')
84 exclude_packing_set = set(shlex.split(options.exclude_packing_list)) 90 exclude_packing_set = set(shlex.split(options.exclude_packing_list))
85 91
86 with open(options.libraries_file, 'r') as libfile: 92 with open(options.libraries_file, 'r') as libfile:
87 libraries = json.load(libfile) 93 libraries = json.load(libfile)
88 94
89 build_utils.MakeDirectory(options.packed_libraries_dir) 95 build_utils.MakeDirectory(options.packed_libraries_dir)
90 96
91 for library in libraries: 97 for library in libraries:
92 library_path = os.path.join(options.stripped_libraries_dir, library) 98 library_path = os.path.join(options.stripped_libraries_dir, library)
93 output_path = os.path.join(options.packed_libraries_dir, library) 99 output_path = os.path.join(options.packed_libraries_dir, library)
94 100
95 if enable_packing and library not in exclude_packing_set: 101 if enable_packing and library not in exclude_packing_set:
96 PackArmLibraryRelocations(options.android_pack_relocations, 102 PackArmLibraryRelocations(options.android_pack_relocations,
97 options.android_objcopy, 103 options.android_objcopy,
98 library_path, 104 library_path,
99 output_path) 105 output_path)
100 else: 106 else:
101 CopyArmLibraryUnchanged(library_path, output_path) 107 CopyArmLibraryUnchanged(library_path, output_path)
102 108
103 if options.stamp: 109 if options.stamp:
104 build_utils.Touch(options.stamp) 110 build_utils.Touch(options.stamp)
105 111
106 return 0 112 return 0
107 113
108 114
109 if __name__ == '__main__': 115 if __name__ == '__main__':
110 sys.exit(main()) 116 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | build/android/pack_arm_relocations.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698