Создать предупреждение на несвязанном разделе - PullRequest
0 голосов
/ 20 октября 2018

Я пишу свой собственный скрипт компоновщика и код запуска (для встроенного процессора) и использую компоновщик gnu.

Сначала я начал поддерживать только код C и получил код запускаработает нормально ..... тогда я попытался связать программу C++.Он связался и все было хорошо, но это не сработало.

После некоторой отладки я обнаружил, что скрипт компоновщика нигде не помещал раздел .sbss (я где-то помещал раздел .bss,но не .sbss).Итак, вот мой вопрос:

Можно ли сгенерировать предупреждение, когда раздел не связан с программой? .... Поиск в Google ничего не находит, и я просмотрел руководство для компоновщика, но безрезультатно

1 Ответ

0 голосов
/ 20 октября 2018

Можно ли генерировать предупреждение, когда раздел не связан с программой?

Я не верю, что это возможно в компоновщике, но вы можете легко реализовать его вшаг после ссылки:

readelf -WS a.out | grep -q ' \.sbss' || { echo "Did not find .sbss!" >&2; false; }

Я хочу, чтобы это работало для произвольных разделов (о которых я, возможно, пока не знаю)

Такое предупреждение будетбесполезно, потому что он будет запускать все время .

Учтите:

  • main.o определяет main и не ссылается ни на что другое.
  • foo.o определяет foo и имеет секции .x, .y и .z.foo.o является частью libfoo.a

Теперь, когда вы связываетесь с gcc main.o -lfoo, foo.o будет не втягиваться в ссылку (потому что нет ссылокк нему), и ваше предупреждение теперь сообщит вам, что .x, .y и .z не связаны с программой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...