1010import re
1111
1212
13- def get_llvm_bin_path ():
14- if "LLVM_BIN_PATH" in os .environ :
15- return os .environ ["LLVM_BIN_PATH" ]
16- return ""
17-
18-
1913def match_symbol (sym_binding , sym_type , sym_section ):
2014 if sym_binding is None or sym_type is None or sym_section is None :
2115 return False
@@ -65,7 +59,7 @@ def parse_readobj_output(output):
6559 return parsed_symbols
6660
6761
68- def dump_symbols (target_path , output ):
62+ def dump_symbols (target_path , output , llvm_bin_path ):
6963 with open (output , "w" ) as out :
7064 out .write (
7165 "################################################################################"
@@ -93,7 +87,7 @@ def dump_symbols(target_path, output):
9387 readobj_opts = "--coff-exports" if os .name == "nt" else "--syms"
9488 readobj_out = subprocess .check_output (
9589 [
96- os .path .join (get_llvm_bin_path () , "llvm-readobj" ),
90+ os .path .join (llvm_bin_path , "llvm-readobj" ),
9791 readobj_opts ,
9892 target_path ,
9993 ]
@@ -113,7 +107,7 @@ def compare_results(ref_records, records):
113107
114108# Dumps symbols from from binary at target_path and compares with a snapshot
115109# stored at ref_path. Reports new and absent symbols (if there are any).
116- def check_symbols (ref_path , target_path ):
110+ def check_symbols (ref_path , target_path , llvm_bin_path ):
117111 with open (ref_path , "r" ) as ref :
118112 ref_symbols = []
119113 for line in ref :
@@ -123,7 +117,7 @@ def check_symbols(ref_path, target_path):
123117 readobj_opts = "--coff-exports" if os .name == "nt" else "--syms"
124118 readobj_out = subprocess .check_output (
125119 [
126- os .path .join (get_llvm_bin_path () , "llvm-readobj" ),
120+ os .path .join (llvm_bin_path , "llvm-readobj" ),
127121 readobj_opts ,
128122 target_path ,
129123 ]
@@ -171,20 +165,27 @@ def main():
171165 )
172166 parser .add_argument ("--reference" , type = str , help = "Reference ABI dump" )
173167 parser .add_argument ("--output" , type = str , help = "Output for dump modes" )
168+ parser .add_argument (
169+ "--llvm-bin-path" ,
170+ type = str ,
171+ default = os .getenv ("LLVM_BIN_PATH" , "" ),
172+ help =
173+ "Path to LLVM binaries. Can be overridden by LLVM_BIN_PATH environment variable."
174+ )
174175 parser .add_argument ("target_library" , type = str )
175176
176177 args = parser .parse_args ()
177178
178179 if args .mode == "check_symbols" :
179180 if args .reference is None :
180- print ("Please specify --reference option. Quiting ." )
181+ print ("Please specify --reference option. Quitting ." )
181182 sys .exit (- 2 )
182- check_symbols (args .reference , args .target_library )
183+ check_symbols (args .reference , args .target_library , args . llvm_bin_path )
183184 elif args .mode == "dump_symbols" :
184185 if args .output is None :
185- print ("Please specify --output option. Quiting ." )
186+ print ("Please specify --output option. Quitting ." )
186187 sys .exit (- 2 )
187- dump_symbols (args .target_library , args .output )
188+ dump_symbols (args .target_library , args .output , args . llvm_bin_path )
188189
189190
190191if __name__ == "__main__" :
0 commit comments