如何更改Clang/llvm的对象文件格式

如何更改Clang/llvm的对象文件格式,clang,llvm,windows-ce,coff,Clang,Llvm,Windows Ce,Coff,我目前正在LLVM/Clang中添加Windows CE作为目标操作系统。我在Windows上编译了LLVM/Clang,当我使用它为自己的本机Windows目标编译代码时,或者当我交叉编译到新的Windows CE目标时,它会生成ELF对象文件。问题是我需要它来生成COFF对象文件。我找不到任何方法将Clang配置为在运行时发出COFF,因此我一直在向代码中添加debug,试图找出如何通过修改源代码本身使其产生COFF。我已经做了一段时间了,我想问问是否有人能帮我弄清楚如何让它产生咖啡 在构造

我目前正在LLVM/Clang中添加Windows CE作为目标操作系统。我在Windows上编译了LLVM/Clang,当我使用它为自己的本机Windows目标编译代码时,或者当我交叉编译到新的Windows CE目标时,它会生成ELF对象文件。问题是我需要它来生成COFF对象文件。我找不到任何方法将Clang配置为在运行时发出COFF,因此我一直在向代码中添加debug,试图找出如何通过修改源代码本身使其产生COFF。我已经做了一段时间了,我想问问是否有人能帮我弄清楚如何让它产生咖啡


在构造TargetInfo类(lib/Basic/Targets.cpp)时,我看到Triple.getObjectFormat返回COFF的枚举值,因此我不确定它为什么会生成ELF。我认为罪魁祸首将在lib/CodeGen项目中,但我很难弄清楚最终的对象文件格式是在哪里计算的。如果有任何帮助,我们将不胜感激。

无法为您提供具体帮助,但obj文件与Win32使用的文件相同,因此将您的文件与可以创建桌面Windows二进制文件的版本进行比较可能会有所帮助。我意识到,在我的更改之后,它终于开始生成COFF。还有更多问题,COFF机器类型为0x01C4,但windows CE需要它为0x01C0。我相信我已经在LLVM库中找到了设置位置。希望在此之后,我可以在WindowsCE上链接/执行这些文件。听起来进展不错。那已经是开源了吗?如果您需要支持在不同的CE版本上测试基于ARM的设备,我可能会提供帮助。