Je travaille sur un module de noyau Linux pour un noyau 2.6.x et je dois afficher la sortie de montage, bien qu'elle soit actuellement en cours de fichier temporaire. J'aimerais avoir la sortie de montage mélangée à mon fichier source C afin que je puisse facilement suivre où mon problème réside. Ceci est pour un noyau armv6 et apparemment Objdump ne supporte pas cette architecture. J'ai inclus mon maquillage ci-dessous.
5 Réponses :
objdump soutient cette architecture. Votre exécutable sera appelé arracher-nul-linux-gnueabi-objdump code> p>
Donc, ça fait, j'utilisais le mauvais. Une fois que j'ai utilisé celui de ma boîte à outils, cela fonctionne parfaitement et produit les résultats que je voulais.
Assumant GCC et l'assembleur GNU une sortie plus lisible que et pour obtenir objdump code> peut être. Dites à l'assembleur de conserver son code intermédiaire à l'aide d'indicateurs sur GCC:
basename code> Pour être le nom de fichier source réel que vous devez dire: p >
-Wa,-alh=$<.s
Cela fonctionne très presque. J'ai fini par un fichier xxfile1xx.mod.c.s qui ressemble à ce que je veux. J'ai besoin cependant le fichier xxfile1xx.c.s.
Pour obtenir une liste de langues de montage de mes modules de noyau Linux, j'ai ajouté les commutateurs de l'assembleur sur les scripts de noyau / makefile.build.
#cmd_cc_o_c = $(CC) $(c_flags) -c -o $(@D)/.tmp_$(@F) $< cmd_cc_o_c = $(CC) $(c_flags) -c -Wa,-alh=$<.lst -o $(@D)/.tmp_$(@F) $<
J'ai essayé d'inclure les drapeaux avec extra_cflags, c'est trop trachant. Modification des scripts / makefile.build fonctionne bien.
Vous pouvez essayer le drapeau "-Save-Temps" à GCC. Cela fonctionne pour moi dans mon projet intégré, je ne l'ai pas essayé sur les bâtiments du noyau. P>
La manière appropriée est susceptible d'ajouter des dépendances cibles dans votre module Makefile / Kbuild File:
MOD_NAME := some_module_name myunits := file1 file2 file3 ... and many more... without .c extension obj-m := $(MOD_NAME).o $(MOD_NAME)-y := $(addsuffix .o,$(myunits)) # Comment/uncomment to generate assembly / preprocessor output always-m += $(addsuffix .s,$(myunits)) $(MOD_NAME).mod.s always-m += $(addsuffix .i,$(myunits)) $(MOD_NAME).mod.i