4

我正在寻找链接描述文件的正式语法。类似于给予 lex 和 yacc 但与其他 yacc 包袱不同的东西。如果我直接查看ld. 但我现在不想这样做。

我看过这个问题及其答案,但它指的是ld. 联机帮助页在很大程度上很好,但它们确实以某种模棱两可的方式指定了一些东西。例如,从作业中获取这个片段:定义符号它说:

例如,要创建一个绝对符号,其地址是名为 .data 的输出节的最后一个字节:

 SECTIONS{ ...
   .data :
     {
       *(.data)
       _edata = ABSOLUTE(.) ;
     }
 ... }

怎么解释...

这是一个例子。经过一番挣扎,我也许能够足够准确地解释这一件事;但是这样的例子很多;所以我的问题是:链接器脚本是否有更好的正式规范?The C Language类似于您在Ritchie 和 Kernighan的书的附录中看到的 C 语法?

4

1 回答 1

1

在 GNU LD 源代码中,有ldgram.y A YACC grammar to parse a superset of the AT&T linker scripting language. Copyright (C) 1991-2015 Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support (steve@cygnus.com).

另请参阅ld/Makefile.am以获取组成 LD 的源文件: ld_new_SOURCES = ldgram.y ldlex-wrapper.c lexsup.c ldlang.c \ mri.c ldctor.c ldmain.c \ ldwrite.c ldexp.c ldemul.c ldver.c ldmisc.c ldfile.c ldcref.c $(PLUGIN_C) \ ldbuildid.c

于 2015-02-13T11:06:11.543 回答