全局偏移表(GOT)指针是否可从C/C++;?

全局偏移表(GOT)指针是否可从C/C++;?,c,pointers,gcc,assembly,C,Pointers,Gcc,Assembly,我正试图追踪一些用户报告的问题。我现在无法复制它,但我怀疑这个问题与PIC和内联汇编的使用有关 PIC使用全局偏移表(GOT),内联程序集必须根据ABI保留EBX和RBX。我已经审核了代码,它似乎根据需要保留了EBX和RBX。但这并不意味着生成的代码与预期一致,因为GCC将在其认为合适的时候交错指令。所有GCC担保均为连续性(即,我的ASM不会重新排序) 我希望使用类似于以下代码的代码对调试生成进行指令插入: volatile void* got1 = GlobalOffsetTablePoin

我正试图追踪一些用户报告的问题。我现在无法复制它,但我怀疑这个问题与PIC和内联汇编的使用有关

PIC使用全局偏移表(GOT),内联程序集必须根据ABI保留
EBX
RBX
。我已经审核了代码,它似乎根据需要保留了
EBX
RBX
。但这并不意味着生成的代码与预期一致,因为GCC将在其认为合适的时候交错指令。所有GCC担保均为连续性(即,我的ASM不会重新排序)

我希望使用类似于以下代码的代码对调试生成进行指令插入:

volatile void* got1 = GlobalOffsetTablePointer();

// Call a routine that uses inline assembly

volatile void* got2 = GlobalOffsetTablePointer();

assert(got1 = got2);
我遇到的问题是找不到函数
GlobalOffsetTablePointer
。我已经怀疑与内联程序集的交互不好,所以我试图避免更多的内联程序集来获取get指针


全局偏移表(GOT)指针是否可从C/C++获得?如果是,我如何访问它?

您能分享您的asm吗?也许这是显而易见的。你知道,当你指的是
==
@David时,你就用了
=
——很好。我要把它留在那里。您可以在找到项目(请确保通过修改
GNUmakefile
中的
cxflags
来启用PIC)。或者使用
curlhttps://www.cryptopp.com/cryptopp563rc5.zip -o cryptopp563rc5.zip
。5.6.3在amd64上启用PIC。cryptopp有几十条asm语句。你能确定给你带来问题的特定asm语句吗?如果它使用了一些AS1 ASJ宏,你能发布扩展的代码吗?可能使用
-S
?@David-“Crypto++有几十条asm语句…”-告诉我:)“你能识别出给你带来问题的特定asm语句吗?”-我现在正试图找到:)