【问题标题】:Building and using pnacl-compiler-rt with coverage functionality included构建和使用包含覆盖功能的 pnacl-compiler-rt
【发布时间】:2023-03-19 07:30:01
【问题描述】:

我目前在使用 pnacl-compiler-rt 时遇到了一些严重的问题,因为我没有成功找到任何关于构建它的信息(在 Mac 上,这可能与NaCl 的情况下)与仪表材料(例如,包括 GCDAProfiling)。我最近的尝试是修改make/options.mk

#Added this
FUNCTIONS := GCDAProfiling

我使用ar -t libcompiler_rt.a检查了库以查看它是否在其中:

__.SYMDEF SORTED
GCDAProfiling.o  ------------- Here it is
clzti2.o
compilerrt_fmax.o
compilerrt_fmaxf.o
compilerrt_logb.o
compilerrt_logbf.o
ctzti2.o
divdc3.o
divdi3.o
divmoddi4.o
divmodsi4.o
divsc3.o
divsi3.o
divti3.o
fixdfdi.o
fixdfsi.o
fixdfti.o
fixsfdi.o
fixsfsi.o
fixsfti.o
fixunsdfdi.o
fixunsdfsi.o
fixunsdfti.o
fixunssfdi.o
fixunssfsi.o
fixunssfti.o
floatdidf.o
floatdisf.o
floatsidf.o
floatsisf.o
floattidf.o
floattisf.o
floatundidf.o
floatundisf.o
floatunsidf.o
floatunsisf.o
floatuntidf.o
floatuntisf.o
int_util.o
moddi3.o
modsi3.o
modti3.o
muldc3.o
muloti4.o
mulsc3.o
multi3.o
popcountdi2.o
popcountsi2.o
popcountti2.o
powidf2.o
powisf2.o
udivdi3.o
udivmoddi4.o
udivmodsi4.o
udivmodti4.o
udivsi3.o
udivti3.o
umoddi3.o
umodsi3.o
umodti3.o

我已将此库复制到 pepper_49/lib/clang-newlib_x86_64/[Debug|Release] 文件夹中。

我还更新了 pepper_49 earth 示例的 Makefile 以尝试获取一些代码覆盖率数据,仅更改以下几行:

VALID_TOOLCHAINS := clang-newlib
...
LIBS = ppapi_simple_cpp nacl_io sdk_util ppapi_cpp ppapi pthread compiler_rt
...
CFLAGS = --coverage -Wall

当我尝试构建时,我得到以下信息(请注意,我也尝试了 64 位链接,但附加了错误的输出,目前没有办法用正确的输出替换它...):

  CXX  clang-newlib/Release/earth_x86_32.o
  LINK clang-newlib/Release/earth_unstripped_x86_32.nexe
clang-newlib/Release/earth_x86_32.o: In function `__llvm_gcov_writeout':
earth.cc:(.text+0xb53c): undefined reference to `llvm_gcda_start_file'
earth.cc:(.text+0xb57c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xb59c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xb5dc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xb5fc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xb63c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xb65c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xb69c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xb6bc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xb6fc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xb71c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xb75c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xb77c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xb7bc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xb7dc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xb81c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xb83c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xb87c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xb89c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xb8dc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xb8fc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xb93c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xb95c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xb99c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xb9bc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xb9fc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xba1c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xba5c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xba7c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xbabc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xbadc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xbb1c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xbb3c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xbb7c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xbb9c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xbbdc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xbbfc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xbc3c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xbc5c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xbc9c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xbcbc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xbcfc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xbd1c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xbd5c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xbd7c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xbdbc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xbddc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xbe1c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xbe3c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xbe7c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xbe9c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xbedc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xbefc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xbf3c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xbf5c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xbf9c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xbfbc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xbffc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc01c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc05c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc07c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc0bc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc0dc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc11c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc13c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc17c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc19c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc1dc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc1fc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc23c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc25c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc29c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc2bc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc2fc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc31c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc35c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc37c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc3bc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc3dc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc41c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc43c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc47c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc49c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc4dc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc4fc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc53c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc55c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc59c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc5bc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc5fc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc61c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc65c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc67c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc6bc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc6dc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc71c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc73c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc77c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc79c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc7dc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc7fc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc83c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc85c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc89c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc8bc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc8fc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc91c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc95c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc97c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xc9bc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xc9dc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xca1c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xca3c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xca7c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xca9c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xcadc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xcafc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xcb3c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xcb5c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xcb9c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xcbbc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xcbfc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xcc1c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xcc5c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xcc7c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xccbc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xccdc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xcd1c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xcd3c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xcd7c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xcd9c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xcddc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xcdfc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xce3c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xce5c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xce9c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xcebc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xcefc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xcf1c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xcf5c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xcf7c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xcfbc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xcfdc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd01c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xd03c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd07c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xd09c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd0dc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xd0fc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd13c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xd15c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd19c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xd1bc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd1fc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xd21c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd25c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xd27c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd2bc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xd2dc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd31c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xd33c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd37c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xd39c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd3dc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xd3fc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd43c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xd45c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd49c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xd4bc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd4fc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xd51c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd55c): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xd57c): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd5bc): undefined reference to `llvm_gcda_emit_function'
earth.cc:(.text+0xd5dc): undefined reference to `llvm_gcda_emit_arcs'
earth.cc:(.text+0xd5fc): undefined reference to `llvm_gcda_summary_info'
clang-newlib/Release/earth_x86_32.o: In function `__llvm_gcov_init':
earth.cc:(.text+0x1127c): undefined reference to `llvm_gcov_init'
clang-newlib/Release/earth_x86_32.o: In function `__llvm_gcov_writeout':
earth.cc:(.text+0xd605): undefined reference to `llvm_gcda_end_file'
i686-nacl-clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [clang-newlib/Release/earth_unstripped_x86_32.nexe] Error 1

我在这里做了一些(可能是几个)令人难以置信的基本错误,但没有任何文档,我不知道如何:

  1. 正确构建 pnacl-compiler-rt
  2. 获取链接,以便我可以检测我的 .nexe 文件并获取一些覆盖率数据。

非常感谢任何帮助。

【问题讨论】:

    标签: c++ linker-errors google-nativeclient


    【解决方案1】:
    1. 要正确构建,您需要使用 NaCl 工具链编译器进行构建(假设您仅使用宿主编译器(即 Mac)构建)
    2. 要链接,一旦使用 NaCl 工具链构建,链接应该可以正常工作。尽管在您的示例中请注意,您已将库放在 64 位文件夹中,并且您正在尝试构建一个 32 位示例。

    【讨论】:

    • 谢谢。我会仔细检查使用的编译器,我很可能是错误的,因为我没有接触过大部分的 make 文件。关于第 2 点:这不是什么大问题,我还尝试了 64 位链接(使 NACL_ARCH=x86_64),但附加了错误的输出:-/ 我会纠正它,但一周内不会靠近那台 PC。跨度>
    猜你喜欢
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 2016-10-19
    • 2016-08-02
    • 1970-01-01
    • 2016-10-20
    相关资源
    最近更新 更多