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].

Примітки

  1. What Is The System.map File?. Архів оригіналу за 10 травня 2017. Процитовано 25 березня 2017.
На цю статтю не посилаються інші статті Вікіпедії.
Будь ласка розставте посилання відповідно до прийнятих рекомендацій.