小编Mat*_*yer的帖子

GCC 链接器:在指定部分移动一个符号

是否可以将代码中的某些功能移动到可执行文件的特定部分中?如果是这样,如何?

对于使用 gcc 编译的应用程序,我们有更多的源文件,包括 Xc 每个对象都是从关联的源(Xo 是从 Xc 获得的)编译的,并且链接器生成一个大的可执行文件。

我需要来自 Xc 的两个函数位于可执行文件的特定部分,例如 .magic_section。我想要这个的原因是该部分将被加载到另一个内存区域而不是其余部分。

我的问题是我不能更改源 Xc,否则我会使用特定的标志,例如__attribute__ ((section ("magic_section")))函数。

我在链接器的文档中阅读了一些内容并为链接器编写了一个自定义脚本,但是我没有指定必须将特定符号放置在哪个部分。我只设法移动了整个部分。

c linker gcc symbols relocation

6
推荐指数
1
解决办法
4451
查看次数

在早期启动过程中加载OS X kext

我有一个工作的OSX内核扩展,我希望尽早在启动时自动加载.kext使用KAUTH来监视特定路径上的访问,所以在我看来,没有任何东西可以请求将它加载到内核中.在这种情况下,复制它/Library/Extensions(至少从Yosemite这是第三方扩展的推荐路径)将无法解决我的问题.

是否有可能通过修改代码或通过某些辅助配置来实现此目的?

我已经阅读过使用launchd守护进程来使用kextload来加载扩展,如本问题所述,但在我的情况下,我希望尽早加载它.

更新:
我正在使用"通用"内核扩展(链接到BSD库)而不是基于I/O Kit的内核扩展.
我想在launchd开始之前加载我的扩展程序.

macos boot kernel kernel-extension

6
推荐指数
1
解决办法
3122
查看次数

标签 统计

boot ×1

c ×1

gcc ×1

kernel ×1

kernel-extension ×1

linker ×1

macos ×1

relocation ×1

symbols ×1