4

リンカースクリプトの正式な文法を探しています。lex と yacc に与えられたものに似たものですが、他の yacc バゲージにはありません。のソース コードを直接見れば、yacc のような文法を見つけることができるかもしれませんld。でも今はやりたくない。

この質問とその回答を見たことがありますが、のマンページを参照していますld。マンページは大部分は問題ありませんが、ややあいまいな方法で指定されています。たとえば、割り当てからこのスニペットを取得します: シンボルの定義:

たとえば、アドレスが .data という名前の出力セクションの最後のバイトである絶対シンボルを作成するには、次のようにします。

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

をどのように解釈し...ますか?

これは一例です。苦労の末、この 1 つのことを十分に正確に解釈できるかもしれません。しかし、そのような例はたくさんあります。私の質問は次のとおりです。リンカ スクリプトに利用できる、より適切で正式な仕様はありますか? The C LanguageRitchie and 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 を構成するソース ファイルについては、 ld/Makefile.amも参照してください。 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 に答える