1

我希望你们能在这里帮我一把。

我有一个正确编译的 Ada 项目。由于我是一个好奇的人,我决定 obj 转储我的目标文件。令我惊讶的是,我所有的 Ada 对象在 .data 段中都有一个单词。都具有相同的名称,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

我试图用谷歌搜索,但没有找到任何东西。

4

1 回答 1

1

这是一面精致的旗帜。

在您生成的主程序中,gnatbind您会找到一个adainit包含例如的过程

procedure adainit is
   ...
   E021 : Boolean; pragma Import (Ada, E021, "system__exception_table_E");
   ...
begin
   ...
   System.Exception_Table'Elab_Body;
   E021 := True;
   ...

显然,这可以在翻译后的包中使用,以判断包是否已详细说明,如果没有,则报告 access-before-elaboration 错误(我说“可能”,因为我无法立即看到详细说明标志实际存在的任何示例访问)。

于 2011-06-25T16:41:21.163 回答