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

Reply via email to