Скрипт компоновщика для добавления таблиц в сегмент родата - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь перенести некоторый код, который создает таблицы во время компиляции. Я не хочу поддерживать для этого отдельный скрипт связывания. Я просто хочу добавить несколько вещей ко всем магам c, которые компилятор уже делает для компоновки.

Во время компиляции записи для таблицы помечаются специальным названием секции. Затем некоторые команды компоновщика (см. Ниже) собирают все с этим именем в таблицу с символами для начала и конца. Это похоже на то, как C ++ выполняет инициализаторы stati c, но на уровне пользователя.

Я использую clang в данный момент, но я понимаю, что для этого он аналогичен g cc.

Этот мини-скрипт связывания почти правильный, но как мне сказать компоновщику, что этот раздел должен быть включен в родаты?

SECTIONS {
    _bt_channels_area : SUBALIGN(4)
    {
            _bt_l2cap_fixed_chan_list_start = .;
            KEEP(*(SORT("._bt_l2cap_fixed_chan.static.*")))
            _bt_l2cap_fixed_chan_list_end = .;
    }
}
...