2011-06-23 14 views
1

私はここで私に手を差し伸べてくれることを願っています。Ada言語 - 私の.dataセグメントに1つの単語があります

正しくコンパイルされたAdaプロジェクトがあります。私は好奇心が強い人なので、オブジェクトファイルをダンプすることにしました。私の驚いたことに、すべてのAdaオブジェクトは.dataセグメントに1つの単語しかありません。すべて同じ名前、objectname_Eを持ちます。誰かが、これが精巧な旗であることを示唆しましたか?あれは正しいですか?

例。

0 .text   00000078 00000000 00000000 00000034 2**2 
       CONTENTS, ALLOC, LOAD, READONLY, CODE 
1 .data   00000001 00000000 00000000 000000ac 2**0 
       CONTENTS, ALLOC, LOAD, DATA 
2 .bss   00000000 00000000 00000000 000000ad 2**0 
       ALLOC 

00000000 g  O .data 00000001 watchdog_driver_E 

私はこれをグーグルしようとしましたが、何も見つかりませんでした。

+0

どのコンパイラを使用していますか?そして、どうやってobjdumpを呼びますか? – oenone

+0

私はGNATPRO 6.4.0w-20100323-43を使用しています。ターゲット(LEON2)固有のバイナリを使用しています。 objdumpするにはleon-elf-objdump.exeを使用しました – Leo

+0

GNAT Proを使用している場合は、おそらくAdaCoreとのサポート契約が結ばれています。彼らはこれに答えるだろう、私はかなり確信している。 –

答えて

1

エラボレーションフラグです。

gnatbindによって生成されたメインプログラムでは、あなたは、たとえば

明らかにこれがない場合、パッケージは、詳述されているかどうかを伝えるために翻訳されたパッケージ内で使用される可能性があります
procedure adainit is 
    ... 
    E021 : Boolean; pragma Import (Ada, E021, "system__exception_table_E"); 
    ... 
begin 
    ... 
    System.Exception_Table'Elab_Body; 
    E021 := True; 
    ... 

のために含む手順adainitを見つけることができますエラボレーション・エラーの前にアクセス・レポートを出してください(私は「可能かもしれません」と言うのは、エラボレーション・フラグが実際にアクセスされている例はすぐには見えないからです)。

+0

ありがとうございましたあなたの答えはあなたのために:) – Leo

関連する問題