polytracker icon indicating copy to clipboard operation
polytracker copied to clipboard

Link failed.

Open bat-serjo opened this issue 3 years ago • 1 comments

`root@4a76e0836a28:/workdir# cat main.c #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/stat.h> #include <sys/types.h>

int main(int argc, char**argv) { char bug[128];

int fd = open(argv[1], O_CREAT);
int bla = 0;
read(fd, &bla, sizeof(bla));
    
void* d = malloc(bla);
read(fd, d, bla);

memcpy(bug, d, bla);
printf("bug: %s", bug);

} root@4a76e0836a28:/workdir# polybuild --instrument-target -g -o main_target main.c Bitcode file extracted to: main_target.bc. Instrumenting: 89% |██████████████████ | 9/9 [00:00, inf functions/s]
root@4a76e0836a28:/workdir# get-bc -b .main.c.o .main_instrumented.o.bc .main_target_instrumented.o.bc main.c main_target.bc main_target_instrumented.o
.main.c.o.bc .main_poly.bc.o.bc bla main_target main_target_instrumented.bc nbproject/
root@4a76e0836a28:/workdir# get-bc -b main main.c main_target main_target.bc main_target_instrumented.bc main_target_instrumented.o
root@4a76e0836a28:/workdir# less main main: No such file or directory root@4a76e0836a28:/workdir# less main_target "main_target" may be a binary file. See it anyway? root@4a76e0836a28:/workdir# file main_target main_target: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, with debug_info, not stripped root@4a76e0836a28:/workdir# get-bc -b main_target Bitcode file extracted to: main_target.bc. root@4a76e0836a28:/workdir# polybuild --lower-bitcode -i main_target.bc -o main_poly --libs c Instrumenting: 100% |████████████████████| 1402/1402 [00:00, inf functions/s]
/usr/bin/ld: internal error ../../ld/ldlang.c 7101 clang-13: error: linker command failed with exit code 1 (use -v to see invocation) ERROR:Failed to compile using given arguments: clang [-pie -L/cxx_libs/clean_build/lib -o main_poly main_poly.o -Wl,--allow-multiple-definition -Wl,--start-group -lc++abi /cxx_libs/poly_build/lib/libc++.a /cxx_libs/poly_build/lib/libc++abi.a /polytracker/build/share/polytracker/lib/libPolytracker.a -lm -ltinfo -lstdc++ -lLLVMWindowsManifest -lLLVMXRay -lLLVMLibDriver -lLLVMDlltoolDriver -lLLVMCoverage -lLLVMLineEditor -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMOrcJIT -lLLVMMCJIT -lLLVMJITLink -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoGSYM -lLLVMOption -lLLVMObjectYAML -lLLVMMCA -lLLVMMCDisassembler -lLLVMLTO -lLLVMPasses -lLLVMCFGuard -lLLVMCoroutines -lLLVMObjCARCOpts -lLLVMipo -lLLVMVectorize -lLLVMLinker -lLLVMInstrumentation -lLLVMFrontendOpenMP -lLLVMFrontendOpenACC -lLLVMExtensions -lLLVMDWARFLinker -lLLVMGlobalISel -lLLVMMIRParser -lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMIRReader -lLLVMAsmParser -lLLVMInterfaceStub -lLLVMFileCheck -lLLVMFuzzMutate -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTableGen -lLLVMSupport -lLLVMDemangle -lc /polytracker_clang/lib/clang/13.0.0/lib/linux/libclang_rt.dfsan-x86_64.a -lpthread -ldl -Wl,--end-group] exit status: exit status 1 Traceback (most recent call last): File "/polytracker/build/bin/polybuild_script", line 554, in main() File "/polytracker/build/bin/polybuild_script", line 527, in main lower_bc(bc_file, args.output_file, args.libs) File "/polytracker/build/bin/polybuild_script", line 435, in lower_bc assert ret == 0 AssertionError root@4a76e0836a28:/workdir# `

bat-serjo avatar Feb 19 '22 22:02 bat-serjo

Hi, Thanks for your interest in PolyTracker! After running the command

root@4a76e0836a28:/workdir# polybuild --instrument-target -g -o main_target main.c

you get the fully instrumented binary as main_target. There shouldn't be a need to run

root@4a76e0836a28:/workdir# polybuild --lower-bitcode -i main_target.bc -o main_poly --libs c

If you would like to use --lower-bitcode you could have a look at how the build integration is done in the examples dir, e.g. the Dockerfile-file.demo.

At this point I'm not sure about what the root cause for the error you are seeing is. Feel free to provide any additional information that might help us troubleshoot (e.g. version of docker image used).

hbrodin avatar Feb 21 '22 13:02 hbrodin