- System.map
-
System.map — файл, внутри которого находится символьная таблица адресов функций и процедур, используемых ядром операционной системы Linux. В этой таблице перечислены имена переменных и функций и их адреса в памяти компьютера. Эта таблица весьма полезна при отладке ядра в случае Kernel panic или Linux oops.
System.map
генерируется при компиляции ядра.Символьная таблица адресов для загруженного ядра также находится в файле
/proc/kallsyms
.Содержание
Создание файла
Файл
System.map
можно создать командойnm -n vmlinux > System.map
. При компиляции ядра используется следующая команда (скрипт/usr/src/linux/scripts/mksysmap
, версия ядра 2.6.35):$NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2
, где$1
— файлvmlinux
,$2
— файлSystem.map
.Содержимое файла
Пример содержимого файла
System.map
:c040f4ec b local_apic_timer_verify_ok c040f4f0 b calibration_result c040f4f4 b enabled_via_apicbase c040f4f8 b apic_phys c040f500 b apic_pm_state c040f538 B nmi_active c040f53c B nmi_watchdog_enabled c040f540 B unknown_nmi_panic c040f544 b backtrace_mask c040f548 b lock.19318 c040f54c b nmi_pm_active c040f550 b last_irq_sums c040f560 b alert_counter
Вторая колонка обозначает тип символа (заглавные буквы означают глобальный или экспортируемый символ, строчные — локальный):
- A — абсолютное значение.
- B — символ в секции неинициализированных данных.
- D — символ в секции инициализированных данных.
- N — отладочный символ.
- R — символ в секции инициализированных данных
ReadOnly
. - T — символ в секции кода.
System.map
создается при каждой сборке ядра ввиду того, что в разных версиях могут быть разные адреса процедур[1].Расположение
Данный раздел имеет чрезмерный объём или содержит маловажные подробности. Если вы не согласны с этим, пожалуйста, покажите в тексте существенность излагаемого материала. В противном случае раздел может быть удалён. Подробности могут быть на странице обсуждения.После сборки Linux
System.map
находится в директории/usr/src/linux/
. Однако некоторые программы требуют его в других местах и иногда с другим именем, например,/boot/System.map-$(uname -r)
. Для сборки SVGAlib необходимо наличие файла/lib/modules/$(uname -r)/build/System.map
[значимость факта?].См. также
Примечания
Ссылки
- Alavoor Vasudevan The Linux Kernel HOWTO, System.map (англ.) (4 мая 2003). — Описание файла System.map. Проверено 20 сентября 2011.
- System.map file (англ.). — Информация о символах, символьных таблицах и файле System.map. Архивировано из первоисточника 19 мая 2012. Проверено 20 сентября 2011.
Категории:- Ядра операционных систем
- Ядро Linux
Wikimedia Foundation. 2010.