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
System.map создается при каждой сборке ядра ввиду того, что в разных версиях могут быть разные адреса процедур[1].
Типы символов
Вторая колонка обозначает тип символа (заглавные буквы означают глобальный или экспортируемый символ, строчные — локальный):
- A — абсолютное значение.
- B или b — символ в секции неинициализированных данных (обычно обозначается как BSS).
- D или d — символ в секции инициализированных данных.
- G или g — символ в секции инициализированных данных для глобальных малых объектов.
- i — секция, специфичная для DLL.
- N — отладочный символ.
- p — секция раскрутки стека.
- R или r — символ в секции с доступом только на чтение.
- S или s — символ в секции неинициализированных данных для малых объектов.
- T или t — символ в секции кода.
- U — неопределённый символ.
- V или v — слабый объект.
- W или w — слабый объект, который не был так помечен
- — означает символ заглушки в объектном файле a.out
- ? означает неопределённый тип символа
Расположение на файловой системе
После сборки ядра Linux файл System.map находится в каталоге /usr/src/linux/. Однако некоторые программы требуют его в других местах и, иногда, с другим именем, например, /boot/System.map-$(uname -r).
Так, например, для сборки SVGAlib необходимо наличие файла System.map в каталоге /lib/modules/$(uname -r)/build/[значимость факта?].
Примечания
- ↑ What Is The System.map File?. Дата обращения: 20 сентября 2011. Архивировано из оригинала 10 мая 2017 года.
Ссылки
- Alavoor Vasudevan. The Linux Kernel HOWTO, System.map (англ.) (4 мая 2003). — Описание файла System.map. Дата обращения: 20 сентября 2011.
- System.map file (англ.). — Информация о символах, символьных таблицах и файле System.map. Дата обращения: 20 сентября 2011. Архивировано из оригинала 19 мая 2012 года.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.