问题标签 [llvm-clang]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
225 浏览

llvm - LLVM:获取函数参数位置 (ABI)

我想写一个 LLVM 插件来告诉我:对于每个函数声明,函数将有多少个通用寄存器、XMM 寄存器和堆栈参数。这只需要适用于 x86 SYSV 调用约定。这目前可能吗?如果是这样,任何方向将不胜感激。

0 投票
0 回答
595 浏览

c++ - 使用clang ++和g ++编译时出现c ++错误

我正在研究一个修改用户程序控制流的项目。我为此使用llvm。最后,我使用 clang++ 生成了一组 .s 文件。然后我使用 g++ 将它们全部合并。我不能使用 clang++(而不是 g++),因为它在这个阶段给出了很多错误(这不是当前的问题)

对于 c 程序(gcc 和 clang),一切正常。但是对于 c++ 用户代码(g++,clang++),我在执行时收到以下错误

g++ -O3 -rdynamic *.s -o main.exe -Wa,-Iressource -lstdc++ -lm -ldl

根据我在互联网上的搜索,对于大多数人来说,发生此错误是因为他们使用 clang(而不是 clang++)。

clang --version clang 版本 3.1 (branches/release_31)

目标:x86_64-unknown-linux-gnu

线程模型:posix

克++

g++ --版本

g++ (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3

我不知道实际问题出在哪里。但我知道,如果我简单地使用 clang++ 生成 *.s 文件,然后使用 g++(没有我的 llvm 通行证)它工作正常。因为它 llvm 直到最后都不会抱怨,所以 g++ 会这样做,我不知道实际错误发生在哪里。正如我之前所说,如果原始代码是“C”(通过使用 clang 和 gcc),它可以正常工作。

任何有关如何继续或解决问题的解决方案的帮助表示赞赏。

特别是可能导致(在这种情况下)

  1. 对 __cxx_global_var_init 的未定义引用
  2. 以 a 为键的全局构造函数
0 投票
0 回答
379 浏览

flush - 如何使用 __gcov_flush 刷新所有缓冲区?

我如何使用 __gcov_flush?在我的应用程序中,我捕获了 uncaughtException 并在我的处理程序中调用了 __gcov_flush 函数。我想刷新所有 .gcda 文件(覆盖文件),但只有我调用 __gcov_flush 的文件被刷新了?有人说这是一个错误(http://llvm.org/bugs/show_bug.cgi?id=15191),但我应该怎么做才能刷新所有缓冲区?

0 投票
1 回答
358 浏览

c++ - 如何编译在启用 C++11 的 xcode 4.6.2 中

我们有一个 .mm 文件包含 <functional> (一个标准头),它报告以下错误:

命令行是

有什么解决方法吗?

0 投票
1 回答
2188 浏览

llvm - 如何获取表达式上所有操作数的内存地址

我有一些表达式a=b+c-d*e,在 LLVM pass 的帮助下,我想制作一个这样的字符串

“['b'的十六进制地址] [+的操作码] ['c'的十六进制地址] [-的操作码] ['d'的十六进制地址] [*的操作码] ['e'的十六进制地址]”。

比我该怎么做。

0 投票
1 回答
229 浏览

llvm - 使用 llvm-clang 编写完整的分析


作为研究思路的一部分,我需要完成以下任务:
1. 解析手头的 C 文件以获取 llvm-IR。
2. 对 IR 进行分析。可能添加和删除一些指令或 BB
3. 发出 x86 可执行文件或 C(需要稍后决定)

我认为这对于任何一个编写 C 分析的人来说都是很常见的任务,我想用 C/C++ 完成所有这些任务(因为我们的大部分研究代码都是用 C/C++ 编写的)。我用谷歌搜索了很多,虽然任务 2 和 3 有很多文档可用,但任务 1 可用的文档较少,任何关于此的想法都会非常有帮助。

我想将这些任务作为管道挂钩,也欢迎对此提出任何建议。

-谢谢

0 投票
1 回答
2073 浏览

ios - 使用 Clang Analyzer 生成报告 - scan-build

我是 Clang 分析器的新手,我正在尝试使用 scan-build 生成报告。使用如下扫描构建时:

我总是收到以下错误:

请帮我解决这个问题。

0 投票
1 回答
1046 浏览

libgdx - RoboVM:运行 robovm 项目时出错

我的目标是将 libgdx 游戏移植到 iOS。我已按照http://www.robovm.org/docs.html的安装说明进行操作

按照说明安装 clang 和 robovm。

从安装了 robovm 插件的 Eclipse 中,如果我为 iOS 模拟器应用程序运行,则会显示以下错误消息。从终端转换单个 java 类文件也是如此。

0 投票
1 回答
349 浏览

clang - 无法为 if 语句的一部分打印正确的行号,Clang

在以下代码中,我正在使用 clang API 解析 C 代码,然后尝试

1)在代码中添加HTML页眉和页脚,以便在浏览器中查看

2)获取 IF 语句的 THEN 部分的行号并打印。

我在(2)中遇到了麻烦。我无法理解输出。对于以下输入(添加了行号),我得到(相关)输出为

行号为 6

行号为 6

行号为 6

行号为 6


行号为 12

行号为 12

行号为 12

行号为 12


我希望它分别是 4 和 8。有人可以解释我错在哪里吗?

我的输入如下(请删除行号或转到http://pastebin.com/hF5yMMAz

%nl 我的输入.c

10 }

11

12返回0;

13 }

我的代码位于以下位置(只有一个文件) http://pastebin.com/txF9Bwa4

要编译代码,请运行以下命令:

CLANG_INSTALL=/usr/installdir/

g++ -I$CLANG_INSTALL/include/ -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -g -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -fno-common -Woverloaded-virtual -Wcast-qual -fno-rtti -c -o rewritersample.o rewritersample.cpp

g++ -g -I$CLANG_INSTALL/include/ -o rewritersample rewritersample。o -lclangTooling -lclangFrontendTool -lclangFrontend -lclangDriver -lclangSerialization -lclangCodeGen -lclangParse -lclangSema -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangAnalysis -lclangARCMigrate -lclangRewriteFrontend -lclangRewriteCore -lclangEdit -lclangAST -lclangLex -lclangBasic -lLLVMIRReader -lLLVMBitReader -lLLVMAsmParser -lLLVMHexagonCodeGen -lLLVMHexagonAsmPrinter - lLLVMHexagonDesc -lLLVMHexagonInfo -lLLVMNVPTXCodeGen -lLLVMNVPTXDesc -lLLVMNVPTXInfo -lLLVMNVPTXAsmPrinter -lLLVMMBlazeDisassembler -lLLVMMBlazeCodeGen -lLLVMMBlazeDesc -lLLVMMBlazeAsmPrinter -lLLVMMBlazeAsmParser -lLLVMMBlazeInfo -lLLVMCppBackendCodeGen -lLLVMCppBackendInfo -lLLVMMSP430CodeGen -lLLVMMSP430Desc -lLLVMMSP430Info -lLLVMMSP430AsmPrinter -lLLVMXCoreDisassembler -lLLVMXCoreCodeGen -lLLVMXCoreDesc -lLLVMXCoreInfo-lLLVMXCoreAsmPrinter -lLLVMMipsDisassembler -lLLVMMipsCodeGen -lLLVMMipsAsmParser -lLLVMMipsDesc -lLLVMMipsInfo -lLLVMMipsAsmPrinter -lLLVMARMDisassembler -lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo -lLLVMARMAsmPrinter -lLLVMAArch64Disassembler -lLLVMAArch64CodeGen -lLLVMAArch64AsmParser -lLLVMAArch64Desc -lLLVMAArch64Info -lLLVMAArch64AsmPrinter -lLLVMAArch64Utils -lLLVMSparcCodeGen -lLLVMSparcDesc -lLLVMSparcInfo -lLLVMTableGen -lLLVMDebugInfo -lLLVMOption -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCDisassembler -lLLVMMCParser -lLLVMInstrumentation -lLLVMInterpreter -lLLVMipo -lLLVMVectorize -lLLVMLinker -lLLVMBitWriter -lLLVMMCJIT -lLLVMJIT -lLLVMCodeGen -lLLVMObjCARCOpts -lLLVMScalarOpts-lLLVMInstCombine -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMRuntimeDyld -lLLVMExecutionEngine -lLLVMTarget -lLLVMMC -lLLVMObject -lLLVMCore -lLLVMSupport -L$CLANG_INSTALL/lib/ -lz -lpthread -lm -lLLVMCppBackendCodeGen -lLLVMCppBackendInfo -lLLVMTarget -lLLVMlLLVMl -LLVMTarget -lLLVMlLLVMl低密度脂蛋白

要运行代码,命令是

$./rewritersample ./myinput.c

0 投票
0 回答
501 浏览

ubuntu-12.04 - 用clang在ubuntu下编译objective-c 2.0

我得到了什么:Ubuntu 12.04、clang、gnustep-devel、gnustep、libobjc2

所以我正在尝试编译一个简单的程序

像这样编译:clang prog.m -I /usr/include/GNUstep/ -D_NATIVE_OBJC_EXCEPTIONS -lgnustep-base -fconstant-string-class=NSConstantString 没问题,一切都很完美并且工作正常

但是如果我想使用自动释放池:

并以我遇到错误的方式编译它:

google了很久也没找到解决办法,也许有人解决了同样的问题?