Перейти к содержанию

    

сортировка в файле скриптов линкера

вопрос по скриптам линкера gcc.

Есть ли какой нибудь смысл в сортировке содержимого секции ключевым словом sort, какое преимущество можно получить отсортировав содержимое секции по имени?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

только с точки зрения удобства отладки - искать нужную функцию/переменную быстрее будет, когда по памяти лазеете. С точки зрения функциональности, код лучше не станет - ссылки потенциально более длинные станут, где-то вместо коротных прыжков придётся делать длинные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Теоретически, если в секции собирается некая таблица (набор структур из разных файлов), то используя SORT можно рулить порядком, давая соотв. имена переменным.

 

struct TableEntry {
  int a;  
};

// a.cpp
__attribute__((section(".TABLE"))) TableEntry e_00 = {1};

// b.cpp
__attribute__((section(".TABLE")))  TableEntry e_10 = {2};

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Непомнящий Евгений

спасибо, есть вопросик, можно ли из кода обратится к функции находящейся в таблице,

так что если функции упорядочены, то можно быстрее найти нужную функцию.

Изменено пользователем IgorKossak
бездумное цитирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это вам надо указатели на функции собрать в таблицу. Если нужно еще и имя - то и его. А дальше по этой таблице можете ходить и делать что вам нужно.

 

Получается как-бы "массив", только собранный из элементов в разных файлах

Изменено пользователем IgorKossak
бездумное цитирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо Евгений.

Изменено пользователем IgorKossak
бездумное цитирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация