Track symbols exposed by built so's

We really ought to know when we're adding or removing symbols.

Change-Id: I4e2fc6c2d9f685dbf852b65716657bd2374bc092
This commit is contained in:
Tim Burke
2024-09-18 15:32:13 -07:00
parent 419f09691f
commit 9deacfd124
6 changed files with 331 additions and 0 deletions

51
check-symbols.sh Executable file
View File

@@ -0,0 +1,51 @@
#!/bin/bash
#/ Usage: check-symbols.sh {check,build}
#/ Commands:
#/
#/ build - Update the *.sym files at the root of this repository
#/ based on the *.so files that have been built.
#/ check - Compare the *.sym files against the symbols exposed in
#/ the *.so files that have been built.
#/
#/ By checking in the *.sym files and running `check-symbols.sh check`
#/ in the gate, we establish an auditable record of when symbols are
#/ added or removed from the various *.so files we produce.
set -e
get() {
nm --dynamic --defined-only $1 | cut -c18- | LC_COLLATE=C sort
}
check() {
if [ ! -e $2 ]; then
touch $2
fi
diff -u $2 <( get $1 )
}
build() {
get $1 > $2
}
case $1 in
check | build)
func=$1
;;
*)
grep '^#/' "$0" |cut -c4-
exit 1
esac
rc=0
for lib in $(find . -name '*.so') ; do
echo "${func}ing $( basename $lib )"
if ! $func $lib $( basename ${lib/%.so/.sym} ) ; then
rc=1
echo
fi
done
if [ $rc == 1 ]; then
echo "Symbols don't match! Try running '$0 build' before committing."
fi
exit $rc

110
libXorcode.sym Normal file
View File

@@ -0,0 +1,110 @@
D data_bm_hd3
D data_bm_hd4
D g_10_5_3_hd_code_data_bms
D g_10_5_3_hd_code_parity_bms
D g_10_5_4_hd_code_data_bms
D g_10_5_4_hd_code_parity_bms
D g_10_6_3_hd_code_data_bms
D g_10_6_3_hd_code_parity_bms
D g_10_6_4_hd_code_data_bms
D g_10_6_4_hd_code_parity_bms
D g_11_6_3_hd_code_data_bms
D g_11_6_3_hd_code_parity_bms
D g_11_6_4_hd_code_data_bms
D g_11_6_4_hd_code_parity_bms
D g_12_6_3_hd_code_data_bms
D g_12_6_3_hd_code_parity_bms
D g_12_6_4_hd_code_data_bms
D g_12_6_4_hd_code_parity_bms
D g_13_6_3_hd_code_data_bms
D g_13_6_3_hd_code_parity_bms
D g_13_6_4_hd_code_data_bms
D g_13_6_4_hd_code_parity_bms
D g_14_6_3_hd_code_data_bms
D g_14_6_3_hd_code_parity_bms
D g_14_6_4_hd_code_data_bms
D g_14_6_4_hd_code_parity_bms
D g_15_6_3_hd_code_data_bms
D g_15_6_3_hd_code_parity_bms
D g_15_6_4_hd_code_data_bms
D g_15_6_4_hd_code_parity_bms
D g_16_6_4_hd_code_data_bms
D g_16_6_4_hd_code_parity_bms
D g_17_6_4_hd_code_data_bms
D g_17_6_4_hd_code_parity_bms
D g_18_6_4_hd_code_data_bms
D g_18_6_4_hd_code_parity_bms
D g_19_6_4_hd_code_data_bms
D g_19_6_4_hd_code_parity_bms
D g_20_6_4_hd_code_data_bms
D g_20_6_4_hd_code_parity_bms
D g_3_3_3_hd_code_data_bms
D g_3_3_3_hd_code_parity_bms
D g_5_5_3_hd_code_data_bms
D g_5_5_3_hd_code_parity_bms
D g_5_5_4_hd_code_data_bms
D g_5_5_4_hd_code_parity_bms
D g_6_5_3_hd_code_data_bms
D g_6_5_3_hd_code_parity_bms
D g_6_5_4_hd_code_data_bms
D g_6_5_4_hd_code_parity_bms
D g_6_6_3_hd_code_data_bms
D g_6_6_3_hd_code_parity_bms
D g_6_6_4_hd_code_data_bms
D g_6_6_4_hd_code_parity_bms
D g_7_5_3_hd_code_data_bms
D g_7_5_3_hd_code_parity_bms
D g_7_5_4_hd_code_data_bms
D g_7_5_4_hd_code_parity_bms
D g_7_6_3_hd_code_data_bms
D g_7_6_3_hd_code_parity_bms
D g_7_6_4_hd_code_data_bms
D g_7_6_4_hd_code_parity_bms
D g_8_5_3_hd_code_data_bms
D g_8_5_3_hd_code_parity_bms
D g_8_5_4_hd_code_data_bms
D g_8_5_4_hd_code_parity_bms
D g_8_6_3_hd_code_data_bms
D g_8_6_3_hd_code_parity_bms
D g_8_6_4_hd_code_data_bms
D g_8_6_4_hd_code_parity_bms
D g_9_5_3_hd_code_data_bms
D g_9_5_3_hd_code_parity_bms
D g_9_5_4_hd_code_data_bms
D g_9_5_4_hd_code_parity_bms
D g_9_6_3_hd_code_data_bms
D g_9_6_3_hd_code_parity_bms
D g_9_6_4_hd_code_data_bms
D g_9_6_4_hd_code_parity_bms
D hd3_m3_data
D hd3_m3_parity
D hd3_m5_data
D hd3_m5_parity
D hd3_m6_data
D hd3_m6_parity
D hd4_m5_data
D hd4_m5_parity
D hd4_m6_data
D hd4_m6_parity
D parity_bm_hd3
D parity_bm_hd4
R g_bit_lookup
T data_bit_lookup
T does_parity_have_data
T fast_memcpy
T get_failure_pattern
T get_missing_data
T get_missing_parity
T index_of_connected_parity
T init_xor_hd_code
T is_data_in_parity
T missing_elements_bm
T num_missing_data_in_parity
T parity_bit_lookup
T remove_from_missing_list
T selective_encode
T xor_bufs_and_store
T xor_code_encode
T xor_hd_decode
T xor_hd_fragments_needed
T xor_reconstruct_one

130
liberasurecode.sym Normal file
View File

@@ -0,0 +1,130 @@
B active_instances
B active_instances_rwlock
B ec_backends_supported_str
B flat_xor_hd
B flat_xor_hd_ops
B ilog_table
B ilog_table_begin
B isa_l_rs_cauchy
B isa_l_rs_cauchy_ops
B isa_l_rs_vand
B isa_l_rs_vand_ops
B jerasure_rs_cauchy
B jerasure_rs_cauchy_ops
B jerasure_rs_vand
B jerasure_rs_vand_ops
B liberasurecode_rs_vand
B liberasurecode_rs_vand_ops
B libphazr
B libphazr_ops
B log_table
B next_backend_desc
B null
B null_ops
B num_supported_backends
B shss
B shss_ops
D backend_flat_xor_hd
D backend_isa_l_rs_cauchy
D backend_isa_l_rs_vand
D backend_jerasure_rs_cauchy
D backend_jerasure_rs_vand
D backend_liberasurecode_rs_vand
D backend_libphazr
D backend_null
D backend_shss
D ec_backends_supported
D flat_xor_hd_op_stubs
D isa_l_rs_cauchy_op_stubs
D isa_l_rs_vand_op_stubs
D jerasure_rs_cauchy_op_stubs
D jerasure_rs_vand_op_stubs
D liberasurecode_rs_vand_op_stubs
D libphazr_op_stubs
D null_op_stubs
D shss_op_stubs
D valid_gf_w
D valid_pairs
T add_fragment_metadata
T alloc_and_set_buffer
T alloc_fragment_buffer
T alloc_zeroed_buffer
T check_and_free_buffer
T compute_alg_sig
T destroy_alg_sig
T finalize_fragments_after_encode
T fragments_to_string
T free_fragment_buffer
T get_aligned_buffer16
T get_aligned_data_size
T get_backend_id
T get_backend_version
T get_data_ptr_array_from_fragments
T get_data_ptr_from_fragment
T get_fragment_backend_metadata_size
T get_fragment_buffer_size
T get_fragment_idx
T get_fragment_partition
T get_fragment_payload_size
T get_fragment_ptr_array_from_data
T get_fragment_ptr_from_data
T get_fragment_ptr_from_data_novalidate
T get_fragment_size
T get_galois_multi_func
T get_galois_uninit_func
T get_jerasure_sohandle
T get_libec_version
T get_orig_data_size
T init_alg_sig
T is_invalid_fragment
T is_invalid_fragment_header
T is_invalid_fragment_metadata
T isa_l_common_init
T isa_l_decode
T isa_l_element_size
T isa_l_encode
T isa_l_exit
T isa_l_min_fragments
T isa_l_reconstruct
T liberasurecode_backend_alloc_desc
T liberasurecode_backend_available
T liberasurecode_backend_close
T liberasurecode_backend_instance_get_by_desc
T liberasurecode_backend_instance_register
T liberasurecode_backend_instance_unregister
T liberasurecode_backend_open
T liberasurecode_crc32_alt
T liberasurecode_decode
T liberasurecode_decode_cleanup
T liberasurecode_encode
T liberasurecode_encode_cleanup
T liberasurecode_exit
T liberasurecode_fragments_needed
T liberasurecode_get_aligned_data_size
T liberasurecode_get_fragment_metadata
T liberasurecode_get_fragment_size
T liberasurecode_get_minimum_encode_size
T liberasurecode_get_version
T liberasurecode_init
T liberasurecode_instance_create
T liberasurecode_instance_destroy
T liberasurecode_reconstruct_fragment
T liberasurecode_verify_fragment_metadata
T liberasurecode_verify_stripe_metadata
T load_gf_functions
T prepare_fragments_for_decode
T prepare_fragments_for_encode
T rs_galois_deinit_tables
T rs_galois_div
T rs_galois_init_tables
T rs_galois_inverse
T rs_galois_mult
T set_backend_id
T set_backend_version
T set_checksum
T set_fragment_backend_metadata_size
T set_fragment_idx
T set_fragment_payload_size
T set_libec_version
T set_orig_data_size
T stub_galois_uninit_field

View File

@@ -0,0 +1,34 @@
B ilog_table
B ilog_table_begin
B log_table
T col_mult
T col_mult_and_add
T copy_row
T create_decoding_matrix
T create_non_systematic_vand_matrix
T deinit_liberasurecode_rs_vand
T free_systematic_matrix
T gaussj_inversion
T get_first_k_available
T get_matrix_row
T get_non_zero_diagonal
T init_liberasurecode_rs_vand
T is_identity_matrix
T is_missing
T liberasurecode_rs_vand_decode
T liberasurecode_rs_vand_encode
T liberasurecode_rs_vand_reconstruct
T make_systematic_matrix
T print_matrix
T region_dot_product
T region_multiply
T region_xor
T row_mult
T row_mult_and_add
T rs_galois_deinit_tables
T rs_galois_div
T rs_galois_init_tables
T rs_galois_inverse
T rs_galois_mult
T square_matrix_multiply
T swap_matrix_rows

5
libnullcode.sym Normal file
View File

@@ -0,0 +1,5 @@
T null_code_decode
T null_code_encode
T null_code_fragments_needed
T null_code_init
T null_reconstruct

View File

@@ -10,5 +10,6 @@
make
make test
make valgrind-test
./check-symbols.sh check
executable: /bin/bash
chdir: '{{ zuul.project.src_dir }}'