Linux 剥离FS寄存器的libc.so.6

Linux 剥离FS寄存器的libc.so.6,linux,gcc,compiler-construction,glibc,libc,Linux,Gcc,Compiler Construction,Glibc,Libc,我想编译glibc并去掉寄存器FS(用于索引)中的二进制文件。 我使用以下方法进行编译: 使CFLAGS='-O1-U_加固_源-fno堆栈保护器-mno tls直接seg参考' 但是生成的二进制文件仍然使用寄存器FS 我想编译glibc并去掉寄存器FS中的二进制文件 为什么 您不能以x86\u 64为目标,让GLIBC不使用%FS寄存器——因为所有x86\u 64机器都有它,这样的配置根本就没有实现过 好的,理论上你可以把GLIBC移植到这样一个假设它存在的机器架构中,但这是一个很大的工作。你

我想编译glibc并去掉寄存器FS(用于索引)中的二进制文件。 我使用以下方法进行编译: 使CFLAGS='-O1-U_加固_源-fno堆栈保护器-mno tls直接seg参考' 但是生成的二进制文件仍然使用寄存器FS

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

为什么

您不能以
x86\u 64
为目标,让GLIBC不使用
%FS
寄存器——因为所有x86\u 64机器都有它,这样的配置根本就没有实现过


好的,理论上你可以把GLIBC移植到这样一个假设它存在的机器架构中,但这是一个很大的工作。

你有没有试着选择一个没有FS的CPU?实际上这是一个很好的建议。不幸的是,我必须在64位机器上编译它,据我所知,这些寄存器(FS/GS)是存在的。为什么不能使用
-mcpu
和/或
-march
?是的,我可以,但它必须为64位机器编译(它必须使用64位寄存器)长话短说:我有一个我必须使用的框架,它不处理FS寄存器。问题是为了实现你的建议,我需要一台没有FS寄存器的64位机器,但正如你所说,这是不可能的。