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