我希望你们能帮助我。
我有一个正确编译的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
我试图谷歌这个,但没有找到任何东西。
答案 0 :(得分:1)
这是一个精心制作的旗帜。
在gnatbind
生成的主程序中,您会找到一个包含例如
adainit
procedure adainit is
...
E021 : Boolean; pragma Import (Ada, E021, "system__exception_table_E");
...
begin
...
System.Exception_Table'Elab_Body;
E021 := True;
...
显然,这可以在已翻译的包中使用,以告知包是否已经详细说明,如果没有,则报告访问前详细错误(我说'可能'因为我不能立即看到任何详细说明的例子实际访问了标志。)