Ada Language - у меня есть одно слово в моем сегменте .data - PullRequest
1 голос
/ 23 июня 2011

Я надеюсь, что вы, ребята, можете помочь мне здесь.

У меня есть проект Ada, который правильно компилируется.Так как я любопытный человек, я решил сделать дамп своих объектных файлов.К моему удивлению, все мои объекты 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

Я пытался гуглить, но ничего не нашел.

1 Ответ

1 голос
/ 25 июня 2011

Это флаг разработки.

В основной программе, сгенерированной gnatbind, вы найдете процедуру adainit, содержащую, например,

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

Очевидно, что это может быть использовано в переведенном пакете, чтобы сказать, был ли пакет разработан и, если нет, сообщить об ошибках доступа до разработки (я говорю «может», потому что не могу сразу увидеть какие-либо примеры, где разработка флаг фактически доступен).

...