diff --git a/compiler-rt/lib/profile/abi/aarch64-unknown-fuchsia.abilist b/compiler-rt/lib/profile/abi/aarch64-unknown-fuchsia.abilist new file mode 100644 --- /dev/null +++ b/compiler-rt/lib/profile/abi/aarch64-unknown-fuchsia.abilist @@ -0,0 +1,143 @@ +- {Name: CurrentVNode, Size: 8, Type: Object} +- {Name: DynamicBufferIOBuffer, Size: 8, Type: Object} +- {Name: EndVNode, Size: 8, Type: Object} +- {Name: FreeHook, Size: 8, Type: Object} +- {Name: InstProfClzll, Type: Function} +- {Name: InstProfPopcountll, Type: Function} +- {Name: InstrProfGetRangeRepValue, Type: Function} +- {Name: InstrProfIsSingleValRange, Type: Function} +- {Name: VPBufferSize, Size: 4, Type: Object} +- {Name: VPMaxNumValsPerSite, Size: 4, Type: Object} +- {Name: VPMergeHook, Size: 8, Type: Object} +- {Name: __ehdr_start, Size: 0, Type: None, Undefined: true} +- {Name: __errno_location, Size: 0, Type: None, Undefined: true} +- {Name: __llvm_get_function_addr, Type: Function} +- {Name: __llvm_profile_begin_counters, Type: Function} +- {Name: __llvm_profile_begin_data, Type: Function} +- {Name: __llvm_profile_begin_names, Type: Function} +- {Name: __llvm_profile_begin_orderfile, Type: Function} +- {Name: __llvm_profile_begin_vnodes, Type: Function} +- {Name: __llvm_profile_check_compatibility, Type: Function} +- {Name: __llvm_profile_counter_bias, Size: 0, Type: None, Undefined: true} +- {Name: __llvm_profile_counter_entry_size, Type: Function} +- {Name: __llvm_profile_enable_continuous_mode, Type: Function} +- {Name: __llvm_profile_end_counters, Type: Function} +- {Name: __llvm_profile_end_data, Type: Function} +- {Name: __llvm_profile_end_names, Type: Function} +- {Name: __llvm_profile_end_vnodes, Type: Function} +- {Name: __llvm_profile_filename, Size: 1, Type: Object, Weak: true} +- {Name: __llvm_profile_get_counters_size, Type: Function} +- {Name: __llvm_profile_get_data_size, Type: Function} +- {Name: __llvm_profile_get_dir_mode, Type: Function} +- {Name: __llvm_profile_get_magic, Type: Function} +- {Name: __llvm_profile_get_num_counters, Type: Function} +- {Name: __llvm_profile_get_num_data, Type: Function} +- {Name: __llvm_profile_get_num_padding_bytes, Type: Function} +- {Name: __llvm_profile_get_padding_sizes_for_counters, Type: Function} +- {Name: __llvm_profile_get_size_for_buffer, Type: Function} +- {Name: __llvm_profile_get_size_for_buffer_internal, Type: Function} +- {Name: __llvm_profile_get_version, Type: Function} +- {Name: __llvm_profile_initialize, Type: Function} +- {Name: __llvm_profile_instrument_memop, Type: Function} +- {Name: __llvm_profile_instrument_target, Type: Function} +- {Name: __llvm_profile_instrument_target_value, Type: Function} +- {Name: __llvm_profile_is_continuous_mode_enabled, Type: Function} +- {Name: __llvm_profile_iterate_data, Type: Function} +- {Name: __llvm_profile_merge_from_buffer, Type: Function} +- {Name: __llvm_profile_raw_version, Size: 8, Type: Object, Weak: true} +- {Name: __llvm_profile_recursive_mkdir, Type: Function} +- {Name: __llvm_profile_reset_counters, Type: Function} +- {Name: __llvm_profile_runtime, Size: 4, Type: Object} +- {Name: __llvm_profile_set_dir_mode, Type: Function} +- {Name: __llvm_profile_set_dumped, Type: Function} +- {Name: __llvm_profile_set_num_value_sites, Type: Function} +- {Name: __llvm_profile_set_page_size, Type: Function} +- {Name: __llvm_profile_set_timestamp, Type: Function} +- {Name: __llvm_profile_write_buffer, Type: Function} +- {Name: __llvm_profile_write_buffer_internal, Type: Function} +- {Name: __llvm_write_binary_ids, Type: Function} +- {Name: __sanitizer_log_write, Size: 0, Type: None, Undefined: true} +- {Name: __sanitizer_publish_data, Size: 0, Type: None, Undefined: true} +- {Name: __stack_chk_fail, Size: 0, Type: None, Undefined: true} +- {Name: __start___llvm_orderfile, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __start___llvm_prf_cnts, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __start___llvm_prf_data, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __start___llvm_prf_names, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __start___llvm_prf_vnds, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __stop___llvm_prf_cnts, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __stop___llvm_prf_data, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __stop___llvm_prf_names, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __stop___llvm_prf_vnds, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: _zx_handle_close, Size: 0, Type: None, Undefined: true} +- {Name: _zx_object_set_property, Size: 0, Type: None, Undefined: true} +- {Name: _zx_status_get_string, Size: 0, Type: None, Undefined: true} +- {Name: _zx_vmar_map, Size: 0, Type: None, Undefined: true} +- {Name: _zx_vmar_op_range, Size: 0, Type: None, Undefined: true} +- {Name: _zx_vmar_root_self, Size: 0, Type: None, Undefined: true} +- {Name: _zx_vmo_create, Size: 0, Type: None, Undefined: true} +- {Name: _zx_vmo_get_size, Size: 0, Type: None, Undefined: true} +- {Name: _zx_vmo_set_size, Size: 0, Type: None, Undefined: true} +- {Name: _zx_vmo_write, Size: 0, Type: None, Undefined: true} +- {Name: atoi, Size: 0, Type: None, Undefined: true} +- {Name: calloc, Size: 0, Type: None, Undefined: true} +- {Name: fcntl, Size: 0, Type: None, Undefined: true} +- {Name: fdopen, Size: 0, Type: None, Undefined: true} +- {Name: fileno, Size: 0, Type: None, Undefined: true} +- {Name: fprintf, Size: 0, Type: None, Undefined: true} +- {Name: free, Size: 0, Type: None, Undefined: true} +- {Name: getFirstValueProfRecord, Type: Function} +- {Name: getValueProfDataSize, Type: Function} +- {Name: getValueProfRecordHeaderSize, Type: Function} +- {Name: getValueProfRecordNext, Type: Function} +- {Name: getValueProfRecordNumValueData, Type: Function} +- {Name: getValueProfRecordSize, Type: Function} +- {Name: getValueProfRecordValueData, Type: Function} +- {Name: getenv, Size: 0, Type: None, Undefined: true} +- {Name: getpagesize, Size: 0, Type: None, Undefined: true} +- {Name: getpid, Size: 0, Type: None, Undefined: true} +- {Name: initBufferWriter, Type: Function} +- {Name: lprofApplyPathPrefix, Type: Function} +- {Name: lprofBoolCmpXchg, Type: Function} +- {Name: lprofBufferIOFlush, Type: Function} +- {Name: lprofBufferIOWrite, Type: Function} +- {Name: lprofBufferWriter, Type: Function} +- {Name: lprofCreateBufferIO, Type: Function} +- {Name: lprofDeleteBufferIO, Type: Function} +- {Name: lprofDirMode, Size: 4, Type: Object} +- {Name: lprofFindFirstDirSeparator, Type: Function} +- {Name: lprofFindLastDirSeparator, Type: Function} +- {Name: lprofGetHostName, Type: Function} +- {Name: lprofGetLoadModuleSignature, Type: Function} +- {Name: lprofGetPathPrefix, Type: Function} +- {Name: lprofGetVPDataReader, Type: Function} +- {Name: lprofLockFd, Type: Function} +- {Name: lprofLockFileHandle, Type: Function} +- {Name: lprofOpenFileEx, Type: Function} +- {Name: lprofProfileDumped, Type: Function} +- {Name: lprofPtrFetchAdd, Type: Function} +- {Name: lprofReleaseMemoryPagesToOS, Type: Function} +- {Name: lprofRestoreSigKill, Type: Function} +- {Name: lprofSetMaxValsPerSite, Type: Function} +- {Name: lprofSetProfileDumped, Type: Function} +- {Name: lprofSetupValueProfiler, Type: Function} +- {Name: lprofSuspendSigKill, Type: Function} +- {Name: lprofUnlockFd, Type: Function} +- {Name: lprofUnlockFileHandle, Type: Function} +- {Name: lprofValueProfNodes, Size: 24576, Type: Object} +- {Name: lprofWriteData, Type: Function} +- {Name: lprofWriteDataImpl, Type: Function} +- {Name: lprofWriteOneBinaryId, Type: Function} +- {Name: memcpy, Size: 0, Type: None, Undefined: true} +- {Name: memset, Size: 0, Type: None, Undefined: true} +- {Name: mkdir, Size: 0, Type: None, Undefined: true} +- {Name: open, Size: 0, Type: None, Undefined: true} +- {Name: serializeValueProfDataFrom, Type: Function} +- {Name: serializeValueProfRecordFrom, Type: Function} +- {Name: snprintf, Size: 0, Type: None, Undefined: true} +- {Name: stderr, Size: 0, Type: None, Undefined: true} +- {Name: strchr, Size: 0, Type: None, Undefined: true} +- {Name: strlen, Size: 0, Type: None, Undefined: true} +- {Name: strncpy, Size: 0, Type: None, Undefined: true} +- {Name: strrchr, Size: 0, Type: None, Undefined: true} +- {Name: uname, Size: 0, Type: None, Undefined: true} +- {Name: vsnprintf, Size: 0, Type: None, Undefined: true} diff --git a/compiler-rt/lib/profile/abi/aarch64-unknown-linux-gnu.abilist b/compiler-rt/lib/profile/abi/aarch64-unknown-linux-gnu.abilist new file mode 100644 --- /dev/null +++ b/compiler-rt/lib/profile/abi/aarch64-unknown-linux-gnu.abilist @@ -0,0 +1,177 @@ +- {Name: CurrentVNode, Size: 8, Type: Object} +- {Name: DynamicBufferIOBuffer, Size: 8, Type: Object} +- {Name: EndVNode, Size: 8, Type: Object} +- {Name: FreeHook, Size: 8, Type: Object} +- {Name: InstProfClzll, Type: Function} +- {Name: InstProfPopcountll, Type: Function} +- {Name: InstrProfGetRangeRepValue, Type: Function} +- {Name: InstrProfIsSingleValRange, Type: Function} +- {Name: VPBufferSize, Size: 4, Type: Object} +- {Name: VPMaxNumValsPerSite, Size: 4, Type: Object} +- {Name: VPMergeHook, Size: 8, Type: Object} +- {Name: __ehdr_start, Size: 0, Type: None, Undefined: true} +- {Name: __errno_location, Size: 0, Type: None, Undefined: true} +- {Name: __gcov_dump, Type: Function} +- {Name: __gcov_fork, Type: Function} +- {Name: __gcov_reset, Type: Function} +- {Name: __llvm_get_function_addr, Type: Function} +- {Name: __llvm_orderfile_dump, Type: Function} +- {Name: __llvm_orderfile_write_file, Type: Function} +- {Name: __llvm_profile_begin_counters, Type: Function} +- {Name: __llvm_profile_begin_data, Type: Function} +- {Name: __llvm_profile_begin_names, Type: Function} +- {Name: __llvm_profile_begin_orderfile, Type: Function} +- {Name: __llvm_profile_begin_vnodes, Type: Function} +- {Name: __llvm_profile_check_compatibility, Type: Function} +- {Name: __llvm_profile_counter_bias, Size: 8, Type: Object, Weak: true} +- {Name: __llvm_profile_counter_bias_default, Size: 8, Type: Object} +- {Name: __llvm_profile_counter_entry_size, Type: Function} +- {Name: __llvm_profile_dump, Type: Function} +- {Name: __llvm_profile_enable_continuous_mode, Type: Function} +- {Name: __llvm_profile_end_counters, Type: Function} +- {Name: __llvm_profile_end_data, Type: Function} +- {Name: __llvm_profile_end_names, Type: Function} +- {Name: __llvm_profile_end_vnodes, Type: Function} +- {Name: __llvm_profile_filename, Size: 1, Type: Object, Weak: true} +- {Name: __llvm_profile_get_counters_size, Type: Function} +- {Name: __llvm_profile_get_data_size, Type: Function} +- {Name: __llvm_profile_get_dir_mode, Type: Function} +- {Name: __llvm_profile_get_filename, Type: Function} +- {Name: __llvm_profile_get_magic, Type: Function} +- {Name: __llvm_profile_get_num_counters, Type: Function} +- {Name: __llvm_profile_get_num_data, Type: Function} +- {Name: __llvm_profile_get_num_padding_bytes, Type: Function} +- {Name: __llvm_profile_get_padding_sizes_for_counters, Type: Function} +- {Name: __llvm_profile_get_path_prefix, Type: Function} +- {Name: __llvm_profile_get_size_for_buffer, Type: Function} +- {Name: __llvm_profile_get_size_for_buffer_internal, Type: Function} +- {Name: __llvm_profile_get_version, Type: Function} +- {Name: __llvm_profile_initialize, Type: Function} +- {Name: __llvm_profile_initialize_file, Type: Function} +- {Name: __llvm_profile_instrument_memop, Type: Function} +- {Name: __llvm_profile_instrument_target, Type: Function} +- {Name: __llvm_profile_instrument_target_value, Type: Function} +- {Name: __llvm_profile_is_continuous_mode_enabled, Type: Function} +- {Name: __llvm_profile_iterate_data, Type: Function} +- {Name: __llvm_profile_merge_from_buffer, Type: Function} +- {Name: __llvm_profile_raw_version, Size: 8, Type: Object, Weak: true} +- {Name: __llvm_profile_recursive_mkdir, Type: Function} +- {Name: __llvm_profile_register_write_file_atexit, Type: Function} +- {Name: __llvm_profile_reset_counters, Type: Function} +- {Name: __llvm_profile_runtime, Size: 4, Type: Object} +- {Name: __llvm_profile_set_dir_mode, Type: Function} +- {Name: __llvm_profile_set_dumped, Type: Function} +- {Name: __llvm_profile_set_file_object, Type: Function} +- {Name: __llvm_profile_set_filename, Type: Function} +- {Name: __llvm_profile_set_num_value_sites, Type: Function} +- {Name: __llvm_profile_set_page_size, Type: Function} +- {Name: __llvm_profile_set_timestamp, Type: Function} +- {Name: __llvm_profile_write_buffer, Type: Function} +- {Name: __llvm_profile_write_buffer_internal, Type: Function} +- {Name: __llvm_profile_write_file, Type: Function} +- {Name: __llvm_write_binary_ids, Type: Function} +- {Name: __start___llvm_orderfile, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __start___llvm_prf_cnts, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __start___llvm_prf_data, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __start___llvm_prf_names, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __start___llvm_prf_vnds, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __stop___llvm_prf_cnts, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __stop___llvm_prf_data, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __stop___llvm_prf_names, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __stop___llvm_prf_vnds, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __strdup, Size: 0, Type: None, Undefined: true} +- {Name: atexit, Size: 0, Type: None, Undefined: true} +- {Name: calloc, Size: 0, Type: None, Undefined: true} +- {Name: fclose, Size: 0, Type: None, Undefined: true} +- {Name: fcntl, Size: 0, Type: None, Undefined: true} +- {Name: fdopen, Size: 0, Type: None, Undefined: true} +- {Name: fflush, Size: 0, Type: None, Undefined: true} +- {Name: fileno, Size: 0, Type: None, Undefined: true} +- {Name: fopen, Size: 0, Type: None, Undefined: true} +- {Name: fork, Size: 0, Type: None, Undefined: true} +- {Name: fprintf, Size: 0, Type: None, Undefined: true} +- {Name: free, Size: 0, Type: None, Undefined: true} +- {Name: fseek, Size: 0, Type: None, Undefined: true} +- {Name: ftell, Size: 0, Type: None, Undefined: true} +- {Name: ftruncate, Size: 0, Type: None, Undefined: true} +- {Name: fwrite, Size: 0, Type: None, Undefined: true} +- {Name: getFirstValueProfRecord, Type: Function} +- {Name: getValueProfDataSize, Type: Function} +- {Name: getValueProfRecordHeaderSize, Type: Function} +- {Name: getValueProfRecordNext, Type: Function} +- {Name: getValueProfRecordNumValueData, Type: Function} +- {Name: getValueProfRecordSize, Type: Function} +- {Name: getValueProfRecordValueData, Type: Function} +- {Name: getenv, Size: 0, Type: None, Undefined: true} +- {Name: getpagesize, Size: 0, Type: None, Undefined: true} +- {Name: getpid, Size: 0, Type: None, Undefined: true} +- {Name: initBufferWriter, Type: Function} +- {Name: llvm_delete_reset_function_list, Type: Function} +- {Name: llvm_gcda_emit_arcs, Type: Function} +- {Name: llvm_gcda_emit_function, Type: Function} +- {Name: llvm_gcda_end_file, Type: Function} +- {Name: llvm_gcda_start_file, Type: Function} +- {Name: llvm_gcda_summary_info, Type: Function} +- {Name: llvm_gcov_init, Type: Function} +- {Name: llvm_register_reset_function, Type: Function} +- {Name: llvm_register_writeout_function, Type: Function} +- {Name: llvm_reset_counters, Type: Function} +- {Name: llvm_writeout_files, Type: Function} +- {Name: lprofApplyPathPrefix, Type: Function} +- {Name: lprofBoolCmpXchg, Type: Function} +- {Name: lprofBufferIOFlush, Type: Function} +- {Name: lprofBufferIOWrite, Type: Function} +- {Name: lprofBufferWriter, Type: Function} +- {Name: lprofCreateBufferIO, Type: Function} +- {Name: lprofCreateBufferIOInternal, Type: Function} +- {Name: lprofDeleteBufferIO, Type: Function} +- {Name: lprofDirMode, Size: 4, Type: Object} +- {Name: lprofFindFirstDirSeparator, Type: Function} +- {Name: lprofFindLastDirSeparator, Type: Function} +- {Name: lprofGetHostName, Type: Function} +- {Name: lprofGetLoadModuleSignature, Type: Function} +- {Name: lprofGetPathPrefix, Type: Function} +- {Name: lprofGetVPDataReader, Type: Function} +- {Name: lprofLockFd, Type: Function} +- {Name: lprofLockFileHandle, Type: Function} +- {Name: lprofMergeValueProfData, Type: Function} +- {Name: lprofOpenFileEx, Type: Function} +- {Name: lprofProfileDumped, Type: Function} +- {Name: lprofPtrFetchAdd, Type: Function} +- {Name: lprofReleaseMemoryPagesToOS, Type: Function} +- {Name: lprofRestoreSigKill, Type: Function} +- {Name: lprofSetMaxValsPerSite, Type: Function} +- {Name: lprofSetProfileDumped, Type: Function} +- {Name: lprofSetupValueProfiler, Type: Function} +- {Name: lprofSuspendSigKill, Type: Function} +- {Name: lprofUnlockFd, Type: Function} +- {Name: lprofUnlockFileHandle, Type: Function} +- {Name: lprofValueProfNodes, Size: 24576, Type: Object} +- {Name: lprofWriteData, Type: Function} +- {Name: lprofWriteDataImpl, Type: Function} +- {Name: lprofWriteOneBinaryId, Type: Function} +- {Name: madvise, Size: 0, Type: None, Undefined: true} +- {Name: malloc, Size: 0, Type: None, Undefined: true} +- {Name: memcpy, Size: 0, Type: None, Undefined: true} +- {Name: memset, Size: 0, Type: None, Undefined: true} +- {Name: mkdir, Size: 0, Type: None, Undefined: true} +- {Name: mmap, Size: 0, Type: None, Undefined: true} +- {Name: munmap, Size: 0, Type: None, Undefined: true} +- {Name: open, Size: 0, Type: None, Undefined: true} +- {Name: prctl, Size: 0, Type: None, Undefined: true} +- {Name: realloc, Size: 0, Type: None, Undefined: true} +- {Name: reset_fn_list, Size: 16, Type: Object} +- {Name: serializeValueProfDataFrom, Type: Function} +- {Name: serializeValueProfRecordFrom, Type: Function} +- {Name: setenv, Size: 0, Type: None, Undefined: true} +- {Name: snprintf, Size: 0, Type: None, Undefined: true} +- {Name: stderr, Size: 0, Type: None, Undefined: true} +- {Name: strchr, Size: 0, Type: None, Undefined: true} +- {Name: strcmp, Size: 0, Type: None, Undefined: true} +- {Name: strerror, Size: 0, Type: None, Undefined: true} +- {Name: strlen, Size: 0, Type: None, Undefined: true} +- {Name: strncpy, Size: 0, Type: None, Undefined: true} +- {Name: strrchr, Size: 0, Type: None, Undefined: true} +- {Name: strtol, Size: 0, Type: None, Undefined: true} +- {Name: uname, Size: 0, Type: None, Undefined: true} +- {Name: writeout_fn_list, Size: 16, Type: Object} diff --git a/compiler-rt/lib/profile/abi/x86_64-unknown-fuchsia.abilist b/compiler-rt/lib/profile/abi/x86_64-unknown-fuchsia.abilist new file mode 100644 --- /dev/null +++ b/compiler-rt/lib/profile/abi/x86_64-unknown-fuchsia.abilist @@ -0,0 +1,141 @@ +- {Name: CurrentVNode, Size: 8, Type: Object} +- {Name: DynamicBufferIOBuffer, Size: 8, Type: Object} +- {Name: EndVNode, Size: 8, Type: Object} +- {Name: FreeHook, Size: 8, Type: Object} +- {Name: InstProfClzll, Type: Function} +- {Name: InstProfPopcountll, Type: Function} +- {Name: InstrProfGetRangeRepValue, Type: Function} +- {Name: InstrProfIsSingleValRange, Type: Function} +- {Name: VPBufferSize, Size: 4, Type: Object} +- {Name: VPMaxNumValsPerSite, Size: 4, Type: Object} +- {Name: VPMergeHook, Size: 8, Type: Object} +- {Name: __ehdr_start, Size: 0, Type: None, Undefined: true} +- {Name: __errno_location, Size: 0, Type: None, Undefined: true} +- {Name: __llvm_get_function_addr, Type: Function} +- {Name: __llvm_profile_begin_counters, Type: Function} +- {Name: __llvm_profile_begin_data, Type: Function} +- {Name: __llvm_profile_begin_names, Type: Function} +- {Name: __llvm_profile_begin_orderfile, Type: Function} +- {Name: __llvm_profile_begin_vnodes, Type: Function} +- {Name: __llvm_profile_check_compatibility, Type: Function} +- {Name: __llvm_profile_counter_bias, Size: 0, Type: None, Undefined: true} +- {Name: __llvm_profile_counter_entry_size, Type: Function} +- {Name: __llvm_profile_enable_continuous_mode, Type: Function} +- {Name: __llvm_profile_end_counters, Type: Function} +- {Name: __llvm_profile_end_data, Type: Function} +- {Name: __llvm_profile_end_names, Type: Function} +- {Name: __llvm_profile_end_vnodes, Type: Function} +- {Name: __llvm_profile_filename, Size: 1, Type: Object, Weak: true} +- {Name: __llvm_profile_get_counters_size, Type: Function} +- {Name: __llvm_profile_get_data_size, Type: Function} +- {Name: __llvm_profile_get_dir_mode, Type: Function} +- {Name: __llvm_profile_get_magic, Type: Function} +- {Name: __llvm_profile_get_num_counters, Type: Function} +- {Name: __llvm_profile_get_num_data, Type: Function} +- {Name: __llvm_profile_get_num_padding_bytes, Type: Function} +- {Name: __llvm_profile_get_padding_sizes_for_counters, Type: Function} +- {Name: __llvm_profile_get_size_for_buffer, Type: Function} +- {Name: __llvm_profile_get_size_for_buffer_internal, Type: Function} +- {Name: __llvm_profile_get_version, Type: Function} +- {Name: __llvm_profile_initialize, Type: Function} +- {Name: __llvm_profile_instrument_memop, Type: Function} +- {Name: __llvm_profile_instrument_target, Type: Function} +- {Name: __llvm_profile_instrument_target_value, Type: Function} +- {Name: __llvm_profile_is_continuous_mode_enabled, Type: Function} +- {Name: __llvm_profile_iterate_data, Type: Function} +- {Name: __llvm_profile_merge_from_buffer, Type: Function} +- {Name: __llvm_profile_raw_version, Size: 8, Type: Object, Weak: true} +- {Name: __llvm_profile_recursive_mkdir, Type: Function} +- {Name: __llvm_profile_reset_counters, Type: Function} +- {Name: __llvm_profile_runtime, Size: 4, Type: Object} +- {Name: __llvm_profile_set_dir_mode, Type: Function} +- {Name: __llvm_profile_set_dumped, Type: Function} +- {Name: __llvm_profile_set_num_value_sites, Type: Function} +- {Name: __llvm_profile_set_page_size, Type: Function} +- {Name: __llvm_profile_set_timestamp, Type: Function} +- {Name: __llvm_profile_write_buffer, Type: Function} +- {Name: __llvm_profile_write_buffer_internal, Type: Function} +- {Name: __llvm_write_binary_ids, Type: Function} +- {Name: __sanitizer_log_write, Size: 0, Type: None, Undefined: true} +- {Name: __sanitizer_publish_data, Size: 0, Type: None, Undefined: true} +- {Name: __stack_chk_fail, Size: 0, Type: None, Undefined: true} +- {Name: __start___llvm_orderfile, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __start___llvm_prf_cnts, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __start___llvm_prf_data, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __start___llvm_prf_names, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __start___llvm_prf_vnds, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __stop___llvm_prf_cnts, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __stop___llvm_prf_data, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __stop___llvm_prf_names, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __stop___llvm_prf_vnds, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: _zx_handle_close, Size: 0, Type: None, Undefined: true} +- {Name: _zx_object_set_property, Size: 0, Type: None, Undefined: true} +- {Name: _zx_status_get_string, Size: 0, Type: None, Undefined: true} +- {Name: _zx_vmar_map, Size: 0, Type: None, Undefined: true} +- {Name: _zx_vmar_op_range, Size: 0, Type: None, Undefined: true} +- {Name: _zx_vmar_root_self, Size: 0, Type: None, Undefined: true} +- {Name: _zx_vmo_create, Size: 0, Type: None, Undefined: true} +- {Name: _zx_vmo_get_size, Size: 0, Type: None, Undefined: true} +- {Name: _zx_vmo_set_size, Size: 0, Type: None, Undefined: true} +- {Name: _zx_vmo_write, Size: 0, Type: None, Undefined: true} +- {Name: atoi, Size: 0, Type: None, Undefined: true} +- {Name: calloc, Size: 0, Type: None, Undefined: true} +- {Name: fcntl, Size: 0, Type: None, Undefined: true} +- {Name: fdopen, Size: 0, Type: None, Undefined: true} +- {Name: fileno, Size: 0, Type: None, Undefined: true} +- {Name: fprintf, Size: 0, Type: None, Undefined: true} +- {Name: free, Size: 0, Type: None, Undefined: true} +- {Name: getFirstValueProfRecord, Type: Function} +- {Name: getValueProfDataSize, Type: Function} +- {Name: getValueProfRecordHeaderSize, Type: Function} +- {Name: getValueProfRecordNext, Type: Function} +- {Name: getValueProfRecordNumValueData, Type: Function} +- {Name: getValueProfRecordSize, Type: Function} +- {Name: getValueProfRecordValueData, Type: Function} +- {Name: getenv, Size: 0, Type: None, Undefined: true} +- {Name: getpagesize, Size: 0, Type: None, Undefined: true} +- {Name: getpid, Size: 0, Type: None, Undefined: true} +- {Name: initBufferWriter, Type: Function} +- {Name: lprofApplyPathPrefix, Type: Function} +- {Name: lprofBufferIOFlush, Type: Function} +- {Name: lprofBufferIOWrite, Type: Function} +- {Name: lprofBufferWriter, Type: Function} +- {Name: lprofCreateBufferIO, Type: Function} +- {Name: lprofDeleteBufferIO, Type: Function} +- {Name: lprofDirMode, Size: 4, Type: Object} +- {Name: lprofFindFirstDirSeparator, Type: Function} +- {Name: lprofFindLastDirSeparator, Type: Function} +- {Name: lprofGetHostName, Type: Function} +- {Name: lprofGetLoadModuleSignature, Type: Function} +- {Name: lprofGetPathPrefix, Type: Function} +- {Name: lprofGetVPDataReader, Type: Function} +- {Name: lprofLockFd, Type: Function} +- {Name: lprofLockFileHandle, Type: Function} +- {Name: lprofOpenFileEx, Type: Function} +- {Name: lprofProfileDumped, Type: Function} +- {Name: lprofReleaseMemoryPagesToOS, Type: Function} +- {Name: lprofRestoreSigKill, Type: Function} +- {Name: lprofSetMaxValsPerSite, Type: Function} +- {Name: lprofSetProfileDumped, Type: Function} +- {Name: lprofSetupValueProfiler, Type: Function} +- {Name: lprofSuspendSigKill, Type: Function} +- {Name: lprofUnlockFd, Type: Function} +- {Name: lprofUnlockFileHandle, Type: Function} +- {Name: lprofValueProfNodes, Size: 24576, Type: Object} +- {Name: lprofWriteData, Type: Function} +- {Name: lprofWriteDataImpl, Type: Function} +- {Name: lprofWriteOneBinaryId, Type: Function} +- {Name: memcpy, Size: 0, Type: None, Undefined: true} +- {Name: memset, Size: 0, Type: None, Undefined: true} +- {Name: mkdir, Size: 0, Type: None, Undefined: true} +- {Name: open, Size: 0, Type: None, Undefined: true} +- {Name: serializeValueProfDataFrom, Type: Function} +- {Name: serializeValueProfRecordFrom, Type: Function} +- {Name: snprintf, Size: 0, Type: None, Undefined: true} +- {Name: stderr, Size: 0, Type: None, Undefined: true} +- {Name: strchr, Size: 0, Type: None, Undefined: true} +- {Name: strlen, Size: 0, Type: None, Undefined: true} +- {Name: strncpy, Size: 0, Type: None, Undefined: true} +- {Name: strrchr, Size: 0, Type: None, Undefined: true} +- {Name: uname, Size: 0, Type: None, Undefined: true} +- {Name: vsnprintf, Size: 0, Type: None, Undefined: true} diff --git a/compiler-rt/lib/profile/abi/x86_64-unknown-linux-gnu.abilist b/compiler-rt/lib/profile/abi/x86_64-unknown-linux-gnu.abilist new file mode 100644 --- /dev/null +++ b/compiler-rt/lib/profile/abi/x86_64-unknown-linux-gnu.abilist @@ -0,0 +1,175 @@ +- {Name: CurrentVNode, Size: 8, Type: Object} +- {Name: DynamicBufferIOBuffer, Size: 8, Type: Object} +- {Name: EndVNode, Size: 8, Type: Object} +- {Name: FreeHook, Size: 8, Type: Object} +- {Name: InstProfClzll, Type: Function} +- {Name: InstProfPopcountll, Type: Function} +- {Name: InstrProfGetRangeRepValue, Type: Function} +- {Name: InstrProfIsSingleValRange, Type: Function} +- {Name: VPBufferSize, Size: 4, Type: Object} +- {Name: VPMaxNumValsPerSite, Size: 4, Type: Object} +- {Name: VPMergeHook, Size: 8, Type: Object} +- {Name: __ehdr_start, Size: 0, Type: None, Undefined: true} +- {Name: __errno_location, Size: 0, Type: None, Undefined: true} +- {Name: __gcov_dump, Type: Function} +- {Name: __gcov_fork, Type: Function} +- {Name: __gcov_reset, Type: Function} +- {Name: __llvm_get_function_addr, Type: Function} +- {Name: __llvm_orderfile_dump, Type: Function} +- {Name: __llvm_orderfile_write_file, Type: Function} +- {Name: __llvm_profile_begin_counters, Type: Function} +- {Name: __llvm_profile_begin_data, Type: Function} +- {Name: __llvm_profile_begin_names, Type: Function} +- {Name: __llvm_profile_begin_orderfile, Type: Function} +- {Name: __llvm_profile_begin_vnodes, Type: Function} +- {Name: __llvm_profile_check_compatibility, Type: Function} +- {Name: __llvm_profile_counter_bias, Size: 8, Type: Object, Weak: true} +- {Name: __llvm_profile_counter_bias_default, Size: 8, Type: Object} +- {Name: __llvm_profile_counter_entry_size, Type: Function} +- {Name: __llvm_profile_dump, Type: Function} +- {Name: __llvm_profile_enable_continuous_mode, Type: Function} +- {Name: __llvm_profile_end_counters, Type: Function} +- {Name: __llvm_profile_end_data, Type: Function} +- {Name: __llvm_profile_end_names, Type: Function} +- {Name: __llvm_profile_end_vnodes, Type: Function} +- {Name: __llvm_profile_filename, Size: 1, Type: Object, Weak: true} +- {Name: __llvm_profile_get_counters_size, Type: Function} +- {Name: __llvm_profile_get_data_size, Type: Function} +- {Name: __llvm_profile_get_dir_mode, Type: Function} +- {Name: __llvm_profile_get_filename, Type: Function} +- {Name: __llvm_profile_get_magic, Type: Function} +- {Name: __llvm_profile_get_num_counters, Type: Function} +- {Name: __llvm_profile_get_num_data, Type: Function} +- {Name: __llvm_profile_get_num_padding_bytes, Type: Function} +- {Name: __llvm_profile_get_padding_sizes_for_counters, Type: Function} +- {Name: __llvm_profile_get_path_prefix, Type: Function} +- {Name: __llvm_profile_get_size_for_buffer, Type: Function} +- {Name: __llvm_profile_get_size_for_buffer_internal, Type: Function} +- {Name: __llvm_profile_get_version, Type: Function} +- {Name: __llvm_profile_initialize, Type: Function} +- {Name: __llvm_profile_initialize_file, Type: Function} +- {Name: __llvm_profile_instrument_memop, Type: Function} +- {Name: __llvm_profile_instrument_target, Type: Function} +- {Name: __llvm_profile_instrument_target_value, Type: Function} +- {Name: __llvm_profile_is_continuous_mode_enabled, Type: Function} +- {Name: __llvm_profile_iterate_data, Type: Function} +- {Name: __llvm_profile_merge_from_buffer, Type: Function} +- {Name: __llvm_profile_raw_version, Size: 8, Type: Object, Weak: true} +- {Name: __llvm_profile_recursive_mkdir, Type: Function} +- {Name: __llvm_profile_register_write_file_atexit, Type: Function} +- {Name: __llvm_profile_reset_counters, Type: Function} +- {Name: __llvm_profile_runtime, Size: 4, Type: Object} +- {Name: __llvm_profile_set_dir_mode, Type: Function} +- {Name: __llvm_profile_set_dumped, Type: Function} +- {Name: __llvm_profile_set_file_object, Type: Function} +- {Name: __llvm_profile_set_filename, Type: Function} +- {Name: __llvm_profile_set_num_value_sites, Type: Function} +- {Name: __llvm_profile_set_page_size, Type: Function} +- {Name: __llvm_profile_set_timestamp, Type: Function} +- {Name: __llvm_profile_write_buffer, Type: Function} +- {Name: __llvm_profile_write_buffer_internal, Type: Function} +- {Name: __llvm_profile_write_file, Type: Function} +- {Name: __llvm_write_binary_ids, Type: Function} +- {Name: __start___llvm_orderfile, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __start___llvm_prf_cnts, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __start___llvm_prf_data, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __start___llvm_prf_names, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __start___llvm_prf_vnds, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __stop___llvm_prf_cnts, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __stop___llvm_prf_data, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __stop___llvm_prf_names, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __stop___llvm_prf_vnds, Size: 0, Type: None, Undefined: true, Weak: true} +- {Name: __strdup, Size: 0, Type: None, Undefined: true} +- {Name: atexit, Size: 0, Type: None, Undefined: true} +- {Name: calloc, Size: 0, Type: None, Undefined: true} +- {Name: fclose, Size: 0, Type: None, Undefined: true} +- {Name: fcntl, Size: 0, Type: None, Undefined: true} +- {Name: fdopen, Size: 0, Type: None, Undefined: true} +- {Name: fflush, Size: 0, Type: None, Undefined: true} +- {Name: fileno, Size: 0, Type: None, Undefined: true} +- {Name: fopen, Size: 0, Type: None, Undefined: true} +- {Name: fork, Size: 0, Type: None, Undefined: true} +- {Name: fprintf, Size: 0, Type: None, Undefined: true} +- {Name: free, Size: 0, Type: None, Undefined: true} +- {Name: fseek, Size: 0, Type: None, Undefined: true} +- {Name: ftell, Size: 0, Type: None, Undefined: true} +- {Name: ftruncate, Size: 0, Type: None, Undefined: true} +- {Name: fwrite, Size: 0, Type: None, Undefined: true} +- {Name: getFirstValueProfRecord, Type: Function} +- {Name: getValueProfDataSize, Type: Function} +- {Name: getValueProfRecordHeaderSize, Type: Function} +- {Name: getValueProfRecordNext, Type: Function} +- {Name: getValueProfRecordNumValueData, Type: Function} +- {Name: getValueProfRecordSize, Type: Function} +- {Name: getValueProfRecordValueData, Type: Function} +- {Name: getenv, Size: 0, Type: None, Undefined: true} +- {Name: getpagesize, Size: 0, Type: None, Undefined: true} +- {Name: getpid, Size: 0, Type: None, Undefined: true} +- {Name: initBufferWriter, Type: Function} +- {Name: llvm_delete_reset_function_list, Type: Function} +- {Name: llvm_gcda_emit_arcs, Type: Function} +- {Name: llvm_gcda_emit_function, Type: Function} +- {Name: llvm_gcda_end_file, Type: Function} +- {Name: llvm_gcda_start_file, Type: Function} +- {Name: llvm_gcda_summary_info, Type: Function} +- {Name: llvm_gcov_init, Type: Function} +- {Name: llvm_register_reset_function, Type: Function} +- {Name: llvm_register_writeout_function, Type: Function} +- {Name: llvm_reset_counters, Type: Function} +- {Name: llvm_writeout_files, Type: Function} +- {Name: lprofApplyPathPrefix, Type: Function} +- {Name: lprofBufferIOFlush, Type: Function} +- {Name: lprofBufferIOWrite, Type: Function} +- {Name: lprofBufferWriter, Type: Function} +- {Name: lprofCreateBufferIO, Type: Function} +- {Name: lprofCreateBufferIOInternal, Type: Function} +- {Name: lprofDeleteBufferIO, Type: Function} +- {Name: lprofDirMode, Size: 4, Type: Object} +- {Name: lprofFindFirstDirSeparator, Type: Function} +- {Name: lprofFindLastDirSeparator, Type: Function} +- {Name: lprofGetHostName, Type: Function} +- {Name: lprofGetLoadModuleSignature, Type: Function} +- {Name: lprofGetPathPrefix, Type: Function} +- {Name: lprofGetVPDataReader, Type: Function} +- {Name: lprofLockFd, Type: Function} +- {Name: lprofLockFileHandle, Type: Function} +- {Name: lprofMergeValueProfData, Type: Function} +- {Name: lprofOpenFileEx, Type: Function} +- {Name: lprofProfileDumped, Type: Function} +- {Name: lprofReleaseMemoryPagesToOS, Type: Function} +- {Name: lprofRestoreSigKill, Type: Function} +- {Name: lprofSetMaxValsPerSite, Type: Function} +- {Name: lprofSetProfileDumped, Type: Function} +- {Name: lprofSetupValueProfiler, Type: Function} +- {Name: lprofSuspendSigKill, Type: Function} +- {Name: lprofUnlockFd, Type: Function} +- {Name: lprofUnlockFileHandle, Type: Function} +- {Name: lprofValueProfNodes, Size: 24576, Type: Object} +- {Name: lprofWriteData, Type: Function} +- {Name: lprofWriteDataImpl, Type: Function} +- {Name: lprofWriteOneBinaryId, Type: Function} +- {Name: madvise, Size: 0, Type: None, Undefined: true} +- {Name: malloc, Size: 0, Type: None, Undefined: true} +- {Name: memcpy, Size: 0, Type: None, Undefined: true} +- {Name: memset, Size: 0, Type: None, Undefined: true} +- {Name: mkdir, Size: 0, Type: None, Undefined: true} +- {Name: mmap, Size: 0, Type: None, Undefined: true} +- {Name: munmap, Size: 0, Type: None, Undefined: true} +- {Name: open, Size: 0, Type: None, Undefined: true} +- {Name: prctl, Size: 0, Type: None, Undefined: true} +- {Name: realloc, Size: 0, Type: None, Undefined: true} +- {Name: reset_fn_list, Size: 16, Type: Object} +- {Name: serializeValueProfDataFrom, Type: Function} +- {Name: serializeValueProfRecordFrom, Type: Function} +- {Name: setenv, Size: 0, Type: None, Undefined: true} +- {Name: snprintf, Size: 0, Type: None, Undefined: true} +- {Name: stderr, Size: 0, Type: None, Undefined: true} +- {Name: strchr, Size: 0, Type: None, Undefined: true} +- {Name: strcmp, Size: 0, Type: None, Undefined: true} +- {Name: strerror, Size: 0, Type: None, Undefined: true} +- {Name: strlen, Size: 0, Type: None, Undefined: true} +- {Name: strncpy, Size: 0, Type: None, Undefined: true} +- {Name: strrchr, Size: 0, Type: None, Undefined: true} +- {Name: strtol, Size: 0, Type: None, Undefined: true} +- {Name: uname, Size: 0, Type: None, Undefined: true} +- {Name: writeout_fn_list, Size: 16, Type: Object} diff --git a/compiler-rt/utils/generate_abi_list.py b/compiler-rt/utils/generate_abi_list.py new file mode 100755 --- /dev/null +++ b/compiler-rt/utils/generate_abi_list.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python3 +#===----------------------------------------------------------------------===## +# +# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +# See https://llvm.org/LICENSE.txt for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# +#===----------------------------------------------------------------------===## + +# Generates a textual summary of the library ABI which is useful when +# detecting ABI breaking changes in compiler-rt runtimes. +# +# The output format is intentionally similar to the output of llvm-ifs. +# While llvm-ifs doesn't (yet) support static archives, such support might +# be implemented in the future at which point this script could be +# replaced with llvm-ifs. +# +# TODO: This script currently only supports ELF since it relies on the +# --elf-output-style=JSON option. + +import argparse +import io +import sys +import subprocess +import json +import yaml + +from operator import itemgetter +from pathlib import Path +from shutil import which + +IGNORE_NAMES = ['_init', '_fini'] + + +def OutputFile(file): + if isinstance(file, io.IOBase): + return file + assert isinstance(file, Path), '{} is not a str'.format(file) + return open(file, 'w', newline='\n') + + +def main(argv): + parser = argparse.ArgumentParser( + description='Extract a list of symbols from a shared library.') + parser.add_argument('library', + metavar='LIB', + type=str, + help='The library to extract symbols from') + parser.add_argument('-o', + '--output', + dest='output', + type=OutputFile, + default=sys.stdout, + help='The output file (default: stdout)') + parser.add_argument('--tool', + dest='tool', + type=Path, + default=which('llvm-readobj'), + help='Path to llvm-readobj tool (default: %(default)s)') + args = parser.parse_args(argv) + + cmd = [args.tool, '--elf-output-style=JSON', '--symbols', args.library] + out = subprocess.check_output(cmd) + files = json.loads(out) + + symbols = {} + for content in files: + for content in content['Symbols']: + symbol = content['Symbol'] + name = symbol['Name']['Name'] + type = symbol['Type']['Name'] + section = symbol['Section']['Name'] + size = symbol['Size'] + binding = symbol['Binding']['Name'] + + if name in IGNORE_NAMES: + continue + if type == 'Section': + continue + if binding == 'Local': + continue + + if name in symbols: + symbol = symbols[name] + if not symbol.get('Undefined', False): + continue + + symbol = { + 'Name': name, + 'Type': type, + } + assert symbol['Type'] in ['Function', 'None', 'Object', 'TLS'] + if symbol['Type'] != 'Function': + symbol['Size'] = int(size) + if section == 'Undefined': + symbol['Undefined'] = True + if binding == 'Weak': + symbol['Weak'] = True + symbols[name] = symbol + + yaml.safe_dump(sorted(symbols.values(), key=itemgetter('Name')), + args.output, default_flow_style=None, width=sys.maxsize) + + return 0 + + +if __name__ == '__main__': + main(sys.argv[1:])