Как сохранить вывод asm от сборки модуля ядра Linux

Я работаю над модулем ядра Linux для 2.6.x ядро, и я должен просмотреть вывод блока, хотя это в настоящее время делается как временный файл удаленные послесловия. Я хотел бы иметь вывод блока, смешанный с моим исходным файлом C, таким образом, я могу легко проследить, где моя проблема заключается. Это для ядра ARMv6, и по-видимому objdump не поддерживает эту архитектуру. Я включал свой make-файл ниже.

ETREP=/xxSourceTreexx/
GNU_BIN=$(ETREP)/arm-none-linux-gnueabi/bin
CROSS_COMPILE := $(GNU_BIN)/arm-none-linux-gnueabi-
ARCH := arm
KDIR=$(ETREP)/linux-2.6.31/
MAKE= CROSS_COMPILE=$(CROSS_COMPILE) ARCH=$(ARCH) make
obj-m += xxfile1xx.o

all:
 $(MAKE) -C $(KDIR) M=$(PWD) modules

clean:
 $(MAKE) -C $(KDIR) M=$(PWD) clean
7
задан Ken Farr 24 May 2010 в 22:59
поделиться

2 ответа

Objdump поддерживает эту архитектуру. Ваш исполняемый файл будет называться arm-none-linux-gnueabi-objdump

7
ответ дан 6 December 2019 в 14:01
поделиться

Предполагая, что gcc и ассемблер gnu могут иметь более читаемый вывод, чем objdump . Скажите ассемблеру, чтобы он сохранил свой промежуточный код, используя флаги для gcc:

 -Wa,-alh=basename.s

. И чтобы получить basename как фактическое имя исходного файла, вам нужно сообщить make:

 -Wa,-alh=$<.s

, что оставит груды файлов foo.cs лежащий вокруг вашего исходного каталога. Большая проблема здесь в том, что gcc использует временные файлы между генерацией кода и сборкой. Я не могу найти способ заставить gcc сохранять свои промежуточные звенья, но ассемблер рад спрятать для вас листинг.

Внесение этого аргумента в файл Makefile CFLAGS оставлено как упражнение для читателя (потому что я ненавижу make и еще больше ненавижу gnu info.

6
ответ дан 6 December 2019 в 14:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: