【问题标题】:Stripping libc.so.6 of FS register剥离 FS 寄存器的 libc.so.6
【发布时间】:2014-01-27 22:57:46
【问题描述】:

我想编译 glibc 并去掉寄存器 FS 的二进制文件(用于索引)。 我正在使用以下内容进行编译: 使 CFLAGS='-O1 -U_FORTIFY_SOURCE -fno-stack-protector -mno-tls-direct-seg-refs' 但是生成的二进制文件仍然使用寄存器 FS。

【问题讨论】:

  • 您是否尝试选择没有具有 FS的 CPU?
  • 这实际上是一个很好的建议。不幸的是,我必须在 64 位机器上编译它,据我所知,这些寄存器 (FS/GS) 是存在的。
  • 为什么不能使用-mcpu 和/或-march
  • 是的,我可以,但它必须为 64 位机器编译(它必须使用 64 位寄存器)

标签: linux gcc compiler-construction glibc libc


【解决方案1】:

我想编译glibc并去掉寄存器FS的二进制

为了什么?

你不能以x86_64为目标并让GLIBC 使用%FS注册——因为所有 x86_64机器都有它,这样的配置根本就不会实现.

嗯,理论上你可以移植 GLIBC 到这样一个假装它存在的机器架构,但这是很多的工作。

【讨论】:

  • 长话短说:我必须使用一个不处理 FS 寄存器的框架。问题是,为了执行您的建议,我需要一台没有 FS 寄存器的 64 位机器,但正如您所说,这是不可能的。
猜你喜欢
  • 1970-01-01
  • 2011-06-19
  • 2019-08-10
  • 2014-11-21
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 2021-12-05
相关资源
最近更新 更多