问题标签 [coff]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gcc - 如何让 GCC 生成 ELF 目标文件?
我需要使用 TCC 编译器来链接 GCC 生成的目标文件。但是MinGW中的GCC以COFF格式输出目标文件,而TCC只支持ELF格式。如何让 GCC 生成 ELF 目标文件?
windows - COFF 数据目录的名称是否固定?
我有一个 PE 文件(记事本),NumberOfRvaAndSize
COFF 标头中的值为,并且按预期0x10
有 16个条目。DataDirectory
文档说这个值可以改变(尽管我从未见过),这意味着有大于或小于 16 个条目。
紧随其后的是一个包含 16 个数据目录的列表,其中包含名称。
- 这些名称是否总是相同的,按照确切的顺序?
- 如果数量较少,是否总是会丢失最后的目录?
- 如果超过 16 个,它们被分配了哪些名称?
c - Visual Studio LNK1107:无效或损坏的文件 - 来自 Flat Assembler 的 .obj (COFF)
我正在尝试编译某人的程序,该程序部分是用汇编程序编写的,部分是用 C 语言编写的。该程序在编译版本中可用,但是我需要对其进行一些更改。该程序的源代码由一个.c 文件和一个.asm 文件组成。在没有更改任何内容的情况下,我尝试在 Visual Studio 2017 和 Flat Assembler(版本 1.73)中编译该程序。我编译了 .asm 文件,Flat Assembler 给了我 .obj 文件(unlzws4.obj)。然后我在 VS 中创建了一个新的空项目,并从 FASM 导入了 .c 文件和 .obj 文件。
这里问题出现了。在编译期间,Visual Studio 给了我这个链接错误:
我试图找出为什么会出现这个错误,但是没有结果。代码应该是正确的。
unlibs4.c 文件:
unlzws4.asm 文件的开头:
我对汇编程序不太了解,我只需要更改程序的C部分并将其编译为.dll库。我想知道是否只是因为 Visual Studio 项目中的某些设置而出现错误。一切都设置为默认选项。
arm - 如何将程序集文件编译为 AARCH64 的 COFF 文件
我有一个用于架构 AARCH64(ARM64)的简单汇编程序。我可以使用交叉编译器工具链 aarch64-none-elf 将其编译为 ELF 文件。如何将其编译为 COFF 文件?我需要什么样的工具链?
compilation - 如何为 Windows 7 创建 COFF 可执行文件(不是库)
我正在尝试为 Windows 创建 helloworld C 程序。我需要目标可执行文件是一些与安全相关的项目的 COFF 文件。我使用 cl.exe 吗?我使用 fasm 吗?
编辑:不必在 Windows 上编译,只要我可以在 Windows 上运行二进制文件,任何事情都会发生。
Edit2:只要我可以在 Windows 上运行二进制文件或作为动态库加载,任何事情都会发生。
c++ - 检测 COFF 目标文件中的 C++ 内联符号
我想生成一个 .def 文件,用于使用 MSVC 编译器构建 DLL。我使用 LLVM 搜索已编译的 .obj 文件以查找 C++ 函数或变量的所有定义。我想区分普通定义和内联定义,只导出DLL中的普通定义。我以这个简单的 .cpp 文件为例:
测试.cpp:
编译器生成test.cpp.obj
包含标准库定义的几个函数的目标文件。这些函数之一是内联构造函数public: __cdecl std::exception::exception(char const *const, int)
。COFF 符号类IMAGE_SYM_CLASS_EXTERNAL
适用于std::string test()
和std::exception::exception(char const*, int)
。有没有办法区分这些功能?
c++ - 在 COFF 目标文件中查找代码和数据部分的最佳方法?
我想在COFF 对象文件中找到CODE和Initialized DATA部分。
我要查找的部分在从两个版本的 Microsoft“c”编译器生成的输出中称为.text$mn和.data。
我不知道这在不同的编译器供应商、一个供应商的编译器版本或同一编译器供应商的不同编译语言之间有多一致。
assembly - 了解 MASM 汇编器生成的可执行代码
我一直在尝试理解 MASM 汇编器生成的目标代码和 exe 文件,但有些部分对我来说仍然模糊,希望有人能真正帮助我理解。
所以我有一个非常简单的 MASM 程序
Q1.ASM
我在dosbox上运行它MASM Q1.ASM
并生成Q1.OBJ
$ xxd Q1.OBJ
然后我跑$ link Q1.OBJ
然后它生成了Q1.EXE
。
$ xxd Q1.EXE
现在我有两个问题,
生成的目标代码应该有修改记录和重定位位,但都是二进制的,有什么方法可以正确分析从.OBJ文件生成的修改记录。
如您所见,生成的
Q1.EXE
文件有许多由 0000 给出的空白,它们的具体用途是什么以及行中的“L”的含义是什么00000200:
。
c++ - 使用带有 /GL 选项的 cl.exe 时,msvc .obj (COFF?) 文件格式是什么?
使用 /GL 生成的 .obj 文件将不可用于 EDITBIN 和 DUMPBIN 等链接器实用程序。
使用 /GL 时生成的 .obj 文件是否有任何公开可用的规范(例如,如果有人想编写自定义的 link.exe 替换)?
c++ - 如何将 COFF 转换为 OMF?
我有一个第三方程序,它有一个运行时接口,我可以添加到我的程序中。运行时接口的目录中有一个 .lib 文件和一个 .hpp 文件。我有一个 Borland 编译器,所以我需要转换文件,但我不确定是哪些文件或如何转换文件。以前我在一个项目中转换了文件(20 多年前),我有一个 .hpp、.lib 和一个 .def。
我假设第三方程序使用的是 MS 编译器。现在我需要让它与 Borland 一起工作。Borland (5.0) C++ 的旧版本。
任何帮助或指导表示赞赏!