Что такое атрибут памяти " p " в моем файле компоновщика?
в GCC команда MEMORY описывает расположение и размер блоков памяти в целевом объекте. Команда должна использоваться this путь.
MEMORY
{
name [(attr)] : ORIGIN = origin, LENGTH = len
...
}
теперь у меня есть файл компоновщика, используемый компоновщиком (компоновщик на основе GCC для микроконтроллеров tricore, tricore-ld), определяющий раздел памяти RAM следующим образом:
MEMORY
{
ram (w!xp): org = 0x70000000, len = 32k
...
}
не могли бы вы объяснить, что означает " p " в (w!xp)? Что означает' p ' в целом?
1 ответов
не стандартный сценарий компоновщика, не необычный для пользовательской цели микроконтроллера, конечно. Возможно, раздвоение давным-давно. Однако он может быть легко реверсивно спроектирован, GCC всегда использовал формат ELF для объектных файлов. Google "атрибуты раздела elf", out pops ударил, очень полезно здесь.
Итак, у вас есть alloc, exec, write, progbits. АХА, п == progbits. Итак (w!xp), безусловно, следует интерпретировать как " раздел доступен для записи, а не исполняемый, исходные данные хранится в исполняемом образе".
ничего особенного, это традиция .раздел данных в программу на Си. Сравнивать. bss, не p.
информация добавлена OP:
отсюда презентация в формате Unix ELF:
PROGBITS: содержит содержимое программы, включая код, данные и информацию отладчика.
NOBITS: как PROGBITS. Однако он не занимает места.
SYMTAB и DYNSYM: они содержат таблицу символов.
STRTAB: это строка таблицы, как тот, который используется в a.наружу.
REL и RELA: они содержат информацию о перемещении.
DYNAMIC и HASH: это содержит информацию, связанную с динамической связью.