制作 PIE 对象时,不能使用针对符号“G8”的重定位 R_X86_64_32;使用-fPIE重新编译

2024-01-18

我正在尝试将 lambda 表达式从 schema 编译为 llvm-ir,但在处理与位置无关的代码时遇到了问题。

source:

(lambda (x) (display x)) 

target:

bunch of declares...
define %SObj* @G7() {
entry:
  %calltmp = call %SObj* @closure_create(i64 ptrtoint (%SObj* (%SObj*)* @G8 to i64), %SObj* null)
  ret %SObj* %calltmp
}

define %SObj* @G8(%SObj* %G6) {
entry:
  %calltmp = call %SObj* @display(%SObj* %G6)
  ret %SObj* %calltmp
}

define i32 @main(i32 %0, i8** %1) {
entry:
  %calltmp = call %SObj* @G7()
  %calltmp1 = call %SObj* @display(%SObj* %calltmp)
  ret i32 0
}

编译这个:

llc code.ll && clang code.s -L/usr/lib -lgc -lSRuntime -o code -v

其中 code.ll 是打印的 ll-ir 模块,它给了我错误消息:

/usr/bin/ld: /tmp/code-1c0b5f.o: relocation R_X86_64_32 against symbol `G8' can not be used when making a PIE object; recompile with -fPIE

阅读 PIE 并不能完全帮助我解决我的问题。有人可以解释一下,为什么 G7 中的 ptrtoint 转换会导致代码成为非 PIC 以及如何实现这种行为?

编辑:通过将 --relocation-model=pic 添加到 llc 调用(编译模块)解决了问题


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

制作 PIE 对象时,不能使用针对符号“G8”的重定位 R_X86_64_32;使用-fPIE重新编译 的相关文章

随机推荐

  • 反编译的Jar文件的类路径

    所以我不是计算机科学专业或任何其他专业 我只是在研究一些东西来练习我从视频中观看的一些 Java 技能 我知道这不是主要的方法 但请让我这样做 所以我提取了一个 jar 文件 http www zenlunatics com quizcar
  • C# Linq 与柯里化

    我正在玩一点函数式编程及其各种概念 所有这些东西都很有趣 我曾多次阅读过有关柯里化的内容以及它的优势 但我不明白这一点 以下源代码演示了柯里化概念的使用以及 linq 的解决方案 实际上 我没有看到使用柯里化概念的任何优点 那么 使用柯里化
  • 在 C# 中将结构体指针作为参数传递

    我有一个 C 函数 已导出到 DLL I 包含一个结构体指针作为参数之一 我需要在 C 中使用此函数 因此我使用 DLLImport 作为该函数 并使用 StructLayout 在 C 中重新创建了该结构 我尝试使用 ref 传入参数 并
  • Prisma2:如何用 Paljs 解决 n+1 问题

    感谢您的帮助 我在前端使用阿波罗客户端 在后端使用graphql nexus https nexusjs org docs prisma2 和 graphql yoga 服务器 我想用 paljs plugins 解决n 1 问题 在前端我
  • 自动映射器 - 将对象与集合映射

    使用自动映射器 我需要映射以下类的对象 public class RemoteClass public IEnumerable
  • 如何处理“有符号/无符号不匹配”警告 (C4018)?

    我使用大量编写的计算代码c questions tagged c 2b 2b考虑到高性能和低内存开销 它使用STL容器 主要是std vector 很多 并且几乎在每个函数中迭代该容器 迭代代码如下所示 for int i 0 i lt t
  • 这是使用 thenFetch() 加载多个集合的正确方法吗?

    我正在尝试使用急切地加载所有集合NHibernate 3 阿尔法 1 http nhforge org media p 690 aspx 我想知道这是否是使用 thenFetch 的正确方法 具有复数名称的属性是集合 其他的只是一个单一的对
  • Django 如何使用 django.contrib.auth 添加注销成功消息?

    我没有使用all auth 我正在使用标准身份验证系统和 url 提供的django contrib auth 我还确保注销时用户会自动重定向到登录页面 LOGOUT REDIRECT URL login 我想添加一条消息 以便用户知道他们
  • IntelliJ 检查给出“无法解析符号”,但仍编译代码

    平台 IntelliJ社区版10 0 3SDK jdk1 6 0 21操作系统 Windows 7 所以我在使用 IntelliJ 时遇到了一个奇怪的情况 这让我完全陷入困境 我设置了一个 Maven 项目 并将 log4j 添加为 pom
  • 尝试使用selenium截屏时出现空指针异常[重复]

    这个问题在这里已经有答案了 我编写了一个Java类 它使用selenium webdriver来快速浏览网站并测试各种功能 我还编写了一个单独的类 它将用于执行 takeScreenshot 方法 一旦测试命中执行截图方法的代码 浏览器就会
  • 无法创建推力装置矢量

    所以我尝试开始 GPU 编程并使用 Thrust 库来简化事情 我创建了一个测试程序来使用它并查看它是如何工作的 但是每当我尝试创建具有非零大小的推力 device vector时 程序就会崩溃并显示 运行时检查失败 3 变量 结果 正在使
  • 汇编vim语法高亮

    默认的程序集语法文件不能很好地工作 在网上搜索有关 Gas 程序集的信息时 我没有找到任何有关 vim 的 Gas AT T 语法文件的信息 有人发现这个吗 我无法编写自己的语法文件 http img168 imageshack us im
  • 如何在R中将时间格式转换为数字

    示例如下所示 A tibble 10 x 3 trip id start time end time
  • SonarQube 在代码分析中忽略 getter/setter

    SonarQube 仪表板中是否有允许忽略 getter 和 setter 的设置 这听起来是一个比在代码库中的每个方法上编码 nopmd 更好的选择 我的代码库有很多这样的东西 它们极大地降低了 Sonarqube 仪表板中报告的单元测试
  • 更改 Electron 中可拖动区域上的光标

    我正在 Electron 中制作一个应用程序 我有一个无框窗口 我有一些顶部区域 webkit app region drag但当我这样做时 不会改变 显然它在这个片段中是不可拖动的 因为它不是一个电子应用程序 但基本上光标在可拖动的元素上
  • 使用matlab配色方案将float转换为RGB

    例如 如果我有一个浮动0 568 浮动保证是0 gt 1 有没有办法将其转换为 RGB 值 双精度 1 0 1 0 1 0 or int 255 255 255 在当前的 matlab 配色方案 即正常 热 HSV 等 下 你可以试试这个
  • Intel x86 - 中断服务例程责任

    我没有真正意义上的问题 但我会尽力澄清内容问题 假设我们有一个微内核 PC Intel x86 32 位保护模式 中断描述符表 IDT and 中断服务程序 ISR 对于每个CPU异常 ISR 被成功调用 例如Division by Zer
  • 从 C 矩阵到现代 OpenGL 中的纹理?

    Problem 我正在尝试使用 OpenGL 用 C 编写一个简单的程序 这将允许 绘制 2D C 数组 int 32 位整数 根据调色板 目前 我还没有做到这一点 还很远 我正在学习如何将 32 位有符号整数数组发送到 GPU 并以某种方
  • {{ }} 和 {!! 之间有什么区别? !!} 在 Laravel Blade 文件中?

    在laravel框架中我们可以使用blade在html文件中添加PHP代码 我们正在使用两者 and Laravel 的 Blade 文件中的语法 它们之间有什么区别 Blade 语句通过PHP的htmlentities函数自动发送 以防止
  • 制作 PIE 对象时,不能使用针对符号“G8”的重定位 R_X86_64_32;使用-fPIE重新编译

    我正在尝试将 lambda 表达式从 schema 编译为 llvm ir 但在处理与位置无关的代码时遇到了问题 source lambda x display x target bunch of declares define SObj