使用 gcc 错误编译程序集(.s 文件) C++ 标准库

Compiling assembly (.s file) using gcc error c++ standard library

提问人:kevl 提问时间:9/17/2023 最后编辑:fcdtkevl 更新时间:9/19/2023 访问量:46

问:

我正在尝试将我使用 llvm (llc) 生成的文件编译回文件。.s.exe

尝试使用 g++ 编译文件时,出现多个错误.sg++ output.s -o test.exe

output.s:344:错误:操作数 1 中的字符“?”无效

该错误发生在以下调用中:

callq “?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z

因此,这些 c++ 标准库调用存在一些问题。 如何让 gcc/g++ 识别这些?

程序集 G++ LLVM 64 位

评论

0赞 Peter Cordes 9/18/2023
你给了什么意见来得到这个?符号名称是文字 ASCII / UTF-8(0x3f 字节),还是您的终端将其转换为其他名称?这似乎不是一个最小的可重现示例。组装这个不喜欢吗?哦,我也假设你在 Windows 上,因为你提到了一个?所以我想你正在运行的汇编程序是GNU Binutils的某个版本。llc.s??clang.sg++.exeg++as
0赞 kevl 9/18/2023
我给了 llc 由 llvm 生成的 .ll 文件。我使用“retdec”将 Windows PE .exe 提升到 llvm IR,关于 ?,我不知道,它似乎只是名称修改“语法”。我在 linux 内部工作,所以 g++ 在 ubuntu 上运行
0赞 Peter Cordes 9/18/2023
hexdump 会告诉你由哪些字节组成 .例如?hexdump -C output.s | less
0赞 arrowd 9/18/2023
用于编译此程序集。clang

答: 暂无答案