Что такое атрибут памяти " 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: это содержит информацию, связанную с динамической связью. 
