def perform_check(self, arguments, my_env): """Check if compiling to asm then assembling in separate steps results in different code than compiling to object directly.""" output_file_b = get_temp_file_name('.o') alternate_command = arguments + ['-via-file-asm'] alternate_command = set_output_file(alternate_command, output_file_b) run_step(alternate_command, my_env, "Error compiling with -via-file-asm") # Compare if object files are exactly the same exactly_equal = obj_diff.compare_exact(self._output_file_a, output_file_b) if not exactly_equal: # Compare disassembly (returns first diff if differs) difference = obj_diff.compare_object_files(self._output_file_a, output_file_b) if difference: raise WrapperCheckException( "Code difference detected with -S\n{}".format(difference)) # Code is identical, compare debug info dbgdifference = obj_diff.compare_debug_info(self._output_file_a, output_file_b) if dbgdifference: raise WrapperCheckException( "Debug info difference detected with -S\n{}".format(dbgdifference)) raise WrapperCheckException("Object files not identical with -S\n") # Clean up temp file if comparison okay os.remove(output_file_b)
def perform_check(self, arguments, my_env): """Check if compiling to asm then assembling in separate steps results in different code than compiling to object directly.""" output_file_b = get_temp_file_name('.o') alternate_command = arguments + ['-via-file-asm'] alternate_command = set_output_file(alternate_command, output_file_b) run_step(alternate_command, my_env, "Error compiling with -via-file-asm") # Compare if object files are exactly the same exactly_equal = obj_diff.compare_exact(self._output_file_a, output_file_b) if not exactly_equal: # Compare disassembly (returns first diff if differs) difference = obj_diff.compare_object_files(self._output_file_a, output_file_b) if difference: raise WrapperCheckException( "Code difference detected with -S\n{}".format(difference)) # Code is identical, compare debug info dbgdifference = obj_diff.compare_debug_info( self._output_file_a, output_file_b) if dbgdifference: raise WrapperCheckException( "Debug info difference detected with -S\n{}".format( dbgdifference)) raise WrapperCheckException("Object files not identical with -S\n") # Clean up temp file if comparison okay os.remove(output_file_b)