将.rdata和.data节合并到文本节中 我有一个程序,在运行时执行C++代码,就像JIT一样。运行时,程序立即创建C++代码,使用LLVM转换为LLVM IR和Obj.然后加载文本部分并运行它。当只有一个文本部分时,程序运行正常。我想知道当存在.data/.rdata节时如何运行它。Visual Studio链接器具有/MERGE,何时可以将.rdata合并到.text。如何实现这一点?这样我就可以将obj中的节合并到一个文本节中?

将.rdata和.data节合并到文本节中 我有一个程序,在运行时执行C++代码,就像JIT一样。运行时,程序立即创建C++代码,使用LLVM转换为LLVM IR和Obj.然后加载文本部分并运行它。当只有一个文本部分时,程序运行正常。我想知道当存在.data/.rdata节时如何运行它。Visual Studio链接器具有/MERGE,何时可以将.rdata合并到.text。如何实现这一点?这样我就可以将obj中的节合并到一个文本节中?,c++,visual-studio,llvm,C++,Visual Studio,Llvm,您可能可以在Visual Studio中使用/merge选项 /MERGE选项将第一节(from)与第二节(to)组合在一起,将生成的节命名为。例如,/merge:.rdata=.text。 如果第二节不存在,LINK将该节从重命名为。 /MERGE选项对于创建VXD和重写编译器生成的节名非常有用 我不明白您的意思:您还有其他的rdata/数据部分未被obj文件引用?obj代码有.rdata.data和.text部分。我想将.rdata/.data合并到.text中,以便在内存中加载.text并

您可能可以在Visual Studio中使用
/merge
选项

/MERGE选项将第一节(from)与第二节(to)组合在一起,将生成的节命名为。例如,/merge:.rdata=.text。 如果第二节不存在,LINK将该节从重命名为。 /MERGE选项对于创建VXD和重写编译器生成的节名非常有用


我不明白您的意思:您还有其他的rdata/数据部分未被obj文件引用?obj代码有.rdata.data和.text部分。我想将.rdata/.data合并到.text中,以便在内存中加载.text并执行它们。这几乎需要从头开始重新编译代码:您无法控制全局或只读数据的放置位置,编译器可以。在Windows环境中,您可能会使用自己的“类似加载程序”的节映射,尽管这需要一些PE内部构件。但不确定这是否可以完成..在运行时编译为本机代码?听起来像是一个巨大的弱点。你想解释一下你将如何使用这个吗?