Hi,
I have a gcc plugin (for afl++,
https://github.com/AFLplusplus/AFLplusplus) that works fine when
compiled on Linux but when compiled on MacOS (brew install gcc) it fails:
~/afl++ $ g++-11 -g -fPIC -std=c++11
-I/usr/local/Cellar/gcc/11.1.0_1/lib/gcc/11/gcc/x86_64-apple-darwin20/11.1.0/plugin/include
-I/usr/local/Cellar/gcc/11.1.0_1/lib/gcc/11/gcc/x86_64-apple-darwin20/11.1.0/plugin
-I/usr/local//Cellar/gmp/6.2.1/include -shared
instrumentation/afl-gcc-pass.so.cc -o afl-gcc-pass.so
Undefined symbols for architecture x86_64:
"__Z10build_declj9tree_codeP9tree_nodeS1_", referenced from:
__ZN12_GLOBAL__N_18afl_pass21get_afl_prev_loc_declEv in ccHhkWiv.o
__ZN12_GLOBAL__N_18afl_pass21get_afl_area_ptr_declEv in ccHhkWiv.o
"__Z12unshare_exprP9tree_node", referenced from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"__Z13build_fn_declPKcP9tree_node", referenced from:
__ZN12_GLOBAL__N_18afl_pass18get_afl_trace_declEv in ccHhkWiv.o
"__Z13build_int_cstP9tree_node8poly_intILj1ExE", referenced from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"__Z13build_one_cstP9tree_node", referenced from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"__Z14build_zero_cstP9tree_node", referenced from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"__Z14create_tmp_varP9tree_nodePKc", referenced from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"__Z15expand_locationj", referenced from:
__ZN12_GLOBAL__N_18afl_pass13getSourceNameEP8function in ccHhkWiv.o
"__Z15get_random_seedb", referenced from:
_plugin_init in ccHhkWiv.o
"__Z16fold_convert_locjP9tree_nodeS0_", referenced from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"__Z17gimple_build_callP9tree_nodejz", referenced from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"__Z18build_complex_typeP9tree_nodeb", referenced from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"__Z18build_pointer_typeP9tree_node", referenced from:
__ZN12_GLOBAL__N_18afl_pass21get_afl_area_ptr_declEv in ccHhkWiv.o
"__Z18set_decl_tls_modelP9tree_node9tls_model", referenced from:
__ZN12_GLOBAL__N_18afl_pass21get_afl_prev_loc_declEv in ccHhkWiv.o
"__Z19gimple_build_assignP9tree_node9tree_codeS0_S0_", referenced from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"__Z19gimple_build_assignP9tree_nodeS0_", referenced from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"__Z19gimple_seq_add_stmtPP6gimpleS0_", referenced from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"__Z21gsi_insert_seq_beforeP20gimple_stmt_iteratorP6gimple19gsi_iterator_update",
referenced from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"__Z24build_function_type_listP9tree_nodez", referenced from:
__ZN12_GLOBAL__N_18afl_pass18get_afl_trace_declEv in ccHhkWiv.o
"__Z26get_identifier_with_lengthPKcm", referenced from:
__ZN12_GLOBAL__N_18afl_pass21get_afl_prev_loc_declEv in ccHhkWiv.o
__ZN12_GLOBAL__N_18afl_pass21get_afl_area_ptr_declEv in ccHhkWiv.o
"__Z30gimple_build_call_internal_vec11internal_fn3vecIP9tree_node7va_heap6vl_ptrE",
referenced from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"__Z32gsi_insert_seq_on_edge_immediateP8edge_defP6gimple", referenced
from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"__Z6build19tree_codeP9tree_nodeS1_", referenced from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"__Z6build29tree_codeP9tree_nodeS1_S1_", referenced from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"__ZN10vec_prefix22calculate_allocation_1Ejj", referenced from:
__ZN10vec_prefix20calculate_allocationEPS_jb in ccHhkWiv.o
"__ZN8opt_pass14set_pass_paramEjb", referenced from:
__ZTVN12_GLOBAL__N_18afl_passE in ccHhkWiv.o
__ZTV15gimple_opt_pass in ccHhkWiv.o
"__ZN8opt_pass4gateEP8function", referenced from:
__ZTVN12_GLOBAL__N_18afl_passE in ccHhkWiv.o
__ZTV15gimple_opt_pass in ccHhkWiv.o
"__ZN8opt_pass5cloneEv", referenced from:
__ZTVN12_GLOBAL__N_18afl_passE in ccHhkWiv.o
__ZTV15gimple_opt_pass in ccHhkWiv.o
"__ZN8opt_pass7executeEP8function", referenced from:
__ZTV15gimple_opt_pass in ccHhkWiv.o
"__ZN8opt_passC2ERK9pass_dataPN3gcc7contextE", referenced from:
__ZN15gimple_opt_passC2ERK9pass_dataPN3gcc7contextE in ccHhkWiv.o
"__ZTI8opt_pass", referenced from:
__ZTI15gimple_opt_pass in ccHhkWiv.o
"__ZTV8opt_pass", referenced from:
__ZN8opt_passD2Ev in ccHhkWiv.o
NOTE: a missing vtable usually means the first non-inline virtual
member function has no definition.
"_g", referenced from:
__ZN12_GLOBAL__N_18afl_passC1Ebj in ccHhkWiv.o
(maybe you meant:
__ZN9__gnu_cxx13new_allocatorISt10_List_nodeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE8allocateEmPKv,
__ZN9__gnu_cxx13new_allocatorISt10_List_nodeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS7_JRKS7_EEEvPT_DpOT0_
,
__ZN9__gnu_cxx13new_allocatorISt10_List_nodeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE10deallocateEPS8_m
, __ZN9__gnu_cxx17__is_null_pointerIKcEEbPT_ ,
__ZNSt7__cxx1110_List_baseINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_get_nodeEv
,
__ZN9__gnu_cxx16__aligned_membufINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE6_M_ptrEv
,
__ZSt19__iterator_categoryIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEENSt15iterator_traitsIT_E17iterator_categoryERKSB_
,
__ZNKSt7__cxx1110_List_baseINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_get_sizeEv
,
__ZNSt7__cxx1110_List_baseINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE21_M_get_Node_allocatorEv
,
__ZN9__gnu_cxx13new_allocatorISt10_List_nodeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEC2Ev
, __ZN9__gnu_cxx14__alloc_traitsISaIcEcE17_S_select_on_copyERKS1_ ,
__ZNK9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE4baseEv
,
__ZSt11__remove_ifIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS0_5__ops10_Iter_predIPFiiEEEET_SF_SF_T0_
, __ZNK3vecIP8edge_def5va_gc8vl_embedE6lengthEv ,
__ZN9__gnu_cxx11char_traitsIcE2eqERKcS3_ ,
__ZN9__gnu_cxx16__aligned_membufINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE7_M_addrEv
,
__ZN9__gnu_cxxneIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESD_
,
__ZN9__gnu_cxx5__ops10_Iter_predIPFiiEEclINS_17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbT_
, __Z15vec_safe_lengthIP8edge_def5va_gcEjPK3vecIT_T0_8vl_embedE ,
__ZSt9remove_ifIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPFiiEET_SC_SC_T0_
, __ZN9__gnu_cxx5__ops11__pred_iterIPFiiEEENS0_10_Iter_predIT_EES5_ ,
__ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC1IPcEERKNS0_IT_NS_11__enable_ifIXsrSt10__are_sameISC_SB_E7__valueES8_E6__typeEEE
,
__ZN9__gnu_cxx13new_allocatorISt10_List_nodeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE7destroyIS7_EEvPT_
, __ZN3vecIP8edge_def5va_gc8vl_embedEixEj ,
__ZNK9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEdeEv
,
__ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS0_5__ops10_Iter_predIPFiiEEEET_SF_SF_T0_
, __ZN9__gnu_cxx11char_traitsIcE6lengthEPKc ,
__ZN9__gnu_cxxmiIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSB_SE_
,
__ZN9__gnu_cxx13new_allocatorISt10_List_nodeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEED2Ev
,
__ZN9__gnu_cxxeqIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESD_
,
__ZN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEppEv
, __ZN9__gnu_cxx5__ops10_Iter_predIPFiiEEC1ES3_ ,
__ZNK9__gnu_cxx13new_allocatorISt10_List_nodeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE11_M_max_sizeEv
,
__ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS0_5__ops10_Iter_predIPFiiEEEET_SF_SF_T0_St26random_access_iterator_tag
)
"_global_options", referenced from:
__ZN12_GLOBAL__N_18afl_pass21get_afl_prev_loc_declEv in ccHhkWiv.o
"_global_trees", referenced from:
__ZN12_GLOBAL__N_18afl_pass18get_afl_trace_declEv in ccHhkWiv.o
__ZN12_GLOBAL__N_18afl_pass21get_afl_prev_loc_declEv in ccHhkWiv.o
"_integer_types", referenced from:
__ZN12_GLOBAL__N_18afl_pass21get_afl_area_ptr_declEv in ccHhkWiv.o
"_plugin_default_version_check", referenced from:
_plugin_init in ccHhkWiv.o
"_register_callback", referenced from:
_plugin_init in ccHhkWiv.o
"_sizetype_tab", referenced from:
__ZN12_GLOBAL__N_18afl_pass7executeEP8function in ccHhkWiv.o
"_xrealloc", referenced from:
__ZN7va_heap7reserveIP9tree_nodeEEvRP3vecIT_S_8vl_embedEjb in
ccHhkWiv.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
When I then look who might be supplying "_plugin_default_version_check"
I only find
/usr/local/opt/gcc@11/libexec/gcc/x86_64-apple-darwin20/11.1.0/f951
which is a program and no lib.
Anyone knows how this can be fixed?
Thank you!
Regards,
Marc
--
Marc Heuse
PGP: AF3D 1D4C D810 F0BB 977D 3807 C7EE D0A0 6BE9 F573