2011-12-20 2 views
2

Я взял ядро ​​андроида Linux, разделив его с заголовком gzip и распаковал. Однако, когда я пытаюсь сделать objdump из андроида ndk, чтобы выгрузить файл, я получаю не распознанную ошибку формата файла.objdump на ядре android

Кто-нибудь знает, как получить таблицу символов из двоичного изображения.

На моем устройстве Android я могу сделать следующее, чтобы получить таблицу символов: кошки/Proc/kallsyms

ответ

3

Это не уникально для Android - это происходит на большинстве (всех?) Систем Linux. Загрузочным образом ядра Linux (на котором основан Android) не является собственной ELF двоичный:

# file /boot/vmlinuz-2.6.38.7-desktop-1mnb2 
/boot/vmlinuz-2.6.38.7-desktop-1mnb2: Linux kernel x86 boot executable bzImage, version 2.6.38.7-desktop-1mnb2 ([email protected]) #1 SMP Sun, RO-rootFS, root_dev 0x902, swap_dev 0x3, Normal VGA 
# nm /boot/vmlinuz-2.6.38.7-desktop-1mnb2 
nm: /boot/vmlinuz-2.6.38.7-desktop-1mnb2: File format not recognized 

Загрузочным образом создаются обертывание vmlinux kernel ELF binary в сжатом контейнере и добавив набор загрузочных и декомпрессионных утилит , Если вам требуется образ ядра для отладки. файл vmlinux - это то, что вам нужно - я не знаю, есть ли/там, где он существует в Android NDK.

1

Попробуйте использовать nm.

$ nm path/to/someobj 
+0

'nm' и' objcopy' оба используют 'libbfd' из' binutils' в качестве своего бэкэнд. Результаты будут одинаковыми ... – thkala