问题标签 [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.

0 投票
1 回答
226 浏览

c - 将数据写入 .cof 文件

我对编码非常陌生,并且(今天第二次)完全被谷歌无法修复的东西弄糊涂了。我正在 Windows 上使用 Code Composer 4 编写代码。我的代码没有错误,但 fopen("coffic.cof", "w") 根本不会更改文件中的数据(如果文件被删除,也不会创建文件)而且我不能看看为什么。有任何想法吗?

0 投票
2 回答
2961 浏览

delphi - OMF 格式转 COFF 格式

有没有像 Borland "coff2omf.exe" 这样的工具用于将 Borland OMF LIB 格式转换为 MS VC++ COFF LIB 格式?

实际上我想在 delphi 中创建 .obj 文件并在 MSVC++ 中使用它。

0 投票
1 回答
15675 浏览

linker - 之间的用法差异。a.out、.ELF、.EXE 和 .COFF

不要通过查看问题标题来误解我的意思 - 我知道它们是什么(可移植可执行文件的格式)。但我的兴趣范围略有不同

我的困惑

我参与重新托管/重新定位最初来自第三方的应用程序。问题是有时目标代码的格式也是 .elf、.COFF 格式,并且仍然显示“可执行和可链接”。

我主要是 Windows 用户,并且知道当您编译和组装 C/C++ 代码时,您会得到类似于 .o 或 .obj 的内容。是不可执行的(好吧,我从来没有尝试过执行它们)。但是当您完成链接静态库和动态库并完成构建时,会出现可执行文件。我的理解是,如果需要,您可以使用某种形式的脚本链接该可执行文件或“bash”对其进行测试。

但是,在 Linux(或类 UNIX 系统)中,在编译和汇编 C/C++ 代码后会有 .o 文件。一旦链接完成,可执行文件就是 a.out 格式(至少在 Linux 的 Ubuntu 发行版中)。它很可能是其他发行版中的 .elf。在我的快速网络搜索中,没有任何来源提到任何关于 .o 文件作为可执行文件的内容。

问题

因此我的问题变成了以下几点:

  1. 可移植可执行文件和目标代码的真正定义是什么?

  2. Windows 和 UNIX 平台如何涵盖相同文件格式(.COFF、.elf)下的可执行文件和目标代码。

  3. 我是否误解了“可链接”?我对“可链接”的解释是编译后的目标代码,然后可以“链接”到其他静态/动态链接库。这是一个愚蠢的想法吗?

  4. 基于问题 1.(也许是 2)我是否需要将符号表(例如 .LUM 或 .MAP 文件)与目标代码一起使用?调试符号中的符号,并在不同机器上重新托管可执行文件/目标文件时使用它们。

在此先感谢您的正确推动。同时,如有必要,我将继续挖掘和更新问题。

更新

我已经设法从某个地方挖出了:(对我来说似乎有很多东西要吞下去。

0 投票
1 回答
11254 浏览

c++builder - 链接器错误“包含无效的 OMF 记录”

在我编译时在 C++ Builder 中我得到

当我用实用程序转换 .lib 时coff2omf,新的 lib 失去了重要的功能。

0 投票
1 回答
1818 浏览

relocation - 重定位如何在 COFF 对象(不是图像)文件中工作

在创建最终图像之前解决目标文件中的重定位时,链接器究竟采取了哪些步骤?更具体地说,链接器如何处理已经存储在重定位站点的值?它是否总是将其添加到最终的 VA/RVA 中,还是有时会被忽略(例如某些重定位类型)?

我在MS PE/COFF Specfication中找不到明确的解释,经过一段时间的谷歌搜索和实验,我能找到的只是:

  1. 在 MS COFF 规范的第 5.6.2 章“基本重定位类型”中,据说“基本重定位将所有 32 位差异应用于偏移处的 32 位字段”,我猜这意味着重定位应该采取考虑到任何地址已经存储在指定的偏移量。但是,第 5.6 章(.reloc 部分)仅与图像文件相关,与目标文件无关。
  2. 在打印重定位表时,dumpbin 实用程序添加了一个名为“Applied To”的列,它似乎总是(无论重定位类型)包含存储在重定位站点的值。
  3. DJGPP COFF 规范中的重定位指令一章明确指出,当前存储在该位置的值应添加到重定位表条目所指向的符号地址。

您能否指出任何(相关)文档来解释链接器如何处理重定位?

0 投票
1 回答
238 浏览

c - ECOFF 和 MIPS PECOFF 相同

我试图了解不同的对象文件格式,并能够获得 COFF、XCOFF 和其他文件格式所需的信息。但是我在网上找不到太多关于 ECOFF 的信息。

我认为,ECOFF 是 PECOFF 的 MIPS 版本。不过不确定。需要澄清这一点。有人请澄清一下吗?试过谷歌,但没有太多/清楚的信息。

我在哪里可以获得与源、其文件头结构、数据部分信息、重定位信息等相关的其他信息。

0 投票
1 回答
799 浏览

windows - Windows obj 文件中调试信息的格式是什么?

我在搞乱编译器、.obj 文件、程序集等。.obj 文件包含最终在 PDB 中结束的信息,但我找不到任何对 . .obj 文件。(但是,我找到了对 COFF 文件格式的引用——所以我已经知道了)。

那么:当源 C 文件使用 /Zi 标志编译时,.debug$S 和 .debug$T 部分的格式是什么?

0 投票
3 回答
1206 浏览

windows - PE/COFF 文件扩展名

在 Windows 上,一些二进制文件例如.obj是 COFF 格式,而其他.exe二进制文件例如.dll是 PE,它是带有额外标头的 COFF。看来您需要查看文件扩展名才能知道会发生什么。

有哪些文件扩展名使用 COFF 和哪些使用 PE 的完整列表?

0 投票
0 回答
281 浏览

linux - 如何将 .obj 转换为 .coff(在 cygwin 平台上)

使用 objcopy 命令将 .obj 转换为 .coff 文件时遇到问题。目前我正在尝试通过使用 OBJCOPY 命令来解决这个问题。我试过命令objcopy -I input.O -O 输出。 输出将被转换为COFF 格式,输入为.O 对象格式。但它不起作用。

0 投票
1 回答
273 浏览

windows - PE/COFF 符号类型字段

微软的 PE/COFF 文档提到了符号表中的类型字段:

“最高有效字节指定符号是指向、函数返回还是 LSB 中指定的基本类型的数组。Microsoft 工具仅使用此字段来指示符号是否为函数,因此只有两个类型字段的结果值为 0x0 和 0x20。”

但是,文档和 winnt.h 都指定 IMAGE_SYM_DTYPE_FUNCTION = 2,而不是 0x20。即使这被视为 MSB 的值,它也会为整个字段提供 0x200 的值,而不是 0x20。

我错过了什么?