Llvm 如何从MachO二进制文件中提取_比特码/_束段

Llvm 如何从MachO二进制文件中提取_比特码/_束段,llvm,llvm-ir,objdump,bitcode,objcopy,Llvm,Llvm Ir,Objdump,Bitcode,Objcopy,对于嵌入位代码的二进制文件(即,使用-fembed位代码编译)。如何提取该部分,以便像任何其他位代码文件一样使用该位代码文件,例如,运行opt或llvm dis 作为一个测试案例,我有一个hello world程序: // hello.cpp #include<iostream> int main() { std::cout << "hello world"; return 0; } 现在,根据,我正试图通过以下方式提取_位代码部分: # Take1 ./bi

对于嵌入位代码的二进制文件(即,使用
-fembed位代码编译)。如何提取该部分,以便像任何其他位代码文件一样使用该位代码文件,例如,运行
opt
llvm dis

作为一个测试案例,我有一个hello world程序:

// hello.cpp
#include<iostream>

int main() {
  std::cout << "hello world";
  return 0;
}
现在,根据,我正试图通过以下方式提取_位代码部分:

# Take1
./bin/llvm-objcopy --dump-section=DATA,__bitcode=a.bc test.o 
./bin/llvm-objcopy: error: 'test.o': section 'DATA,__bitcode' not found

# Take2
./bin/llvm-objcopy --dump-section=__bitcode=a.bc test.o 
./bin/llvm-objcopy: error: 'test.o': section '__bitcode' not found

# Take3
./bin/llvm-objcopy --dump-section __DATA,__bitcode=a.bc test.o 
./bin/llvm-objcopy: error: 'test.o': section '__DATA,__bitcode' not found

# Take4
./bin/llvm-objcopy --dump-section=__DATA,__bitcode=a.bc test.o 
./bin/llvm-objcopy: error: 'test.o': section '__DATA,__bitcode' not found

我在这里遗漏了什么?

实际上,
\u位码
LLVM
部分。所以下面的命令起作用了

llvm-objcopy --dump-section=__LLVM,__bitcode=a.bc test.o
segedit test.o -extract __LLVM __bitcode a.bc

看起来像是
objdump
中的一个bug,它无法识别LLVM部分。

实际上
\u位代码
位于
LLVM
部分。所以下面的命令起作用了

llvm-objcopy --dump-section=__LLVM,__bitcode=a.bc test.o
segedit test.o -extract __LLVM __bitcode a.bc
似乎是
objdump
中的一个bug,它无法识别LLVM部分