Создать предупреждение на несвязанном разделе

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

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

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

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

2

Решение

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

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

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 не связаны в программе.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]