facebookarchive / BOLT

Binary Optimization and Layout Tool - A linux command-line utility used for optimizing performance of binaries
2.52k stars 179 forks source link

Bolt-Error: in aarch64 target #205

Open ccx1225 opened 3 years ago

ccx1225 commented 3 years ago

which temp.c, using aarch64le toolchains instrument, will segmfault.

image

the process of compiler:

image

The preocess of bolt:

BOLT-INFO: shared object or position-independent executable detected BOLT-INFO: Target architecture: aarch64 BOLT-INFO: BOLT version: 37e51a3d450f371b811bf4ee5c0575d5e7c97e9c BOLT-INFO: first alloc address is 0x0 BOLT-INFO: creating new program header table at address 0x200000, offset 0x200000 BOLT-WARNING: debug info will be stripped from the binary. Use -update-debug-sections to keep it. BOLT-INFO: enabling relocation mode BOLT-INFO: forcing -jump-tables=move for instrumentation BOLT-INFO: disabling -align-macro-fusion on non-x86 platform BOLT-INFO: 0 out of 12 functions in the binary (0.0%) have non-empty execution profile BOLT-INFO: UCE removed 0 blocks and 0 bytes of code. BOLT-INFO: Starting stub-insertion pass BOLT-INFO: Inserted 0 stubs in the hot area and 0 stubs in the cold area. Shared 0 times, iterated 1 times.

0 0x0000561ad9f2ca9e llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/ccx/02-BOLT/llvm-bolt/llvm/lib/Support/Unix/Signals.inc:565:0

1 0x0000561ad9f2cb55 PrintStackTraceSignalHandler(void*) /home/ccx/02-BOLT/llvm-bolt/llvm/lib/Support/Unix/Signals.inc:632:0

2 0x0000561ad9f2a809 llvm::sys::RunSignalHandlers() /home/ccx/02-BOLT/llvm-bolt/llvm/lib/Support/Signals.cpp:76:0

3 0x0000561ad9f2c41f SignalHandler(int) /home/ccx/02-BOLT/llvm-bolt/llvm/lib/Support/Unix/Signals.inc:407:0

4 0x00007f17c3068980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)

5 0x0000561ad8485384 gnu_cxx::__normal_iterator<llvm::MCSymbol*, std::vector<llvm::MCSymbol, std::allocator<llvm::MCSymbol*> > >::normal_iterator(llvm::MCSymbol** const&) /usr/include/c++/7/bits/stl_iterator.h:783:0

6 0x0000561ad8479e1a std::vector<llvm::MCSymbol, std::allocator<llvm::MCSymbol> >::begin() /usr/include/c++/7/bits/stl_vector.h:564:0

7 0x0000561ad910d3fc llvm::bolt::InstrumentationRuntimeLibrary::emitBinary(llvm::bolt::BinaryContext&, llvm::MCStreamer&) /home/ccx/02-BOLT/llvm-bolt/bolt/src/RuntimeLibs/InstrumentationRuntimeLibrary.cpp:165:0

8 0x0000561ad84ae04c (anonymous namespace)::BinaryEmitter::emitAll(llvm::StringRef) /home/ccx/02-BOLT/llvm-bolt/bolt/src/BinaryEmitter.cpp:206:0

9 0x0000561ad84b2ce6 llvm::bolt::emitBinaryContext(llvm::MCStreamer&, llvm::bolt::BinaryContext&, llvm::StringRef) /home/ccx/02-BOLT/llvm-bolt/bolt/src/BinaryEmitter.cpp:1017:0

10 0x0000561ad863f418 llvm::bolt::RewriteInstance::emitAndLink() /home/ccx/02-BOLT/llvm-bolt/bolt/src/RewriteInstance.cpp:3091:0

11 0x0000561ad8631c8c llvm::bolt::RewriteInstance::run() /home/ccx/02-BOLT/llvm-bolt/bolt/src/RewriteInstance.cpp:889:0

12 0x0000561ad843558a main /home/ccx/02-BOLT/llvm-bolt/bolt/src/llvm-bolt.cpp:304:0

13 0x00007f17c2143bf7 __libc_start_main /build/glibc-S9d2JN/glibc-2.27/csu/../csu/libc-start.c:344:0

14 0x0000561ad8433faa _start (./../../../install/bin/llvm-bolt+0x45cfaa)

PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace. Stack dump:

  1. Program arguments: ./../../../install/bin/llvm-bolt ./app -instrument -instrumentation-file=./app.fdata -instrumentation-sleep-time=30 -o ./app.inst Segmentation fault

can anyone know was wrong, is current bolt not support aarch64le?

yota9 commented 3 years ago

Hello @ccx1225. Instrumentation for aarch64 is currently unsupported

CcWeapon commented 2 years ago

aarch64不支持,需要自己搞一套,推荐先用x86验证,后续等官方更新或者去找民间实现