Quel est le noyau de la section d'incompatibilité?
Lors de la compilation d'un module du noyau, j'ai reçu un AVERTISSEMENT avec une note pour ajouter une option de compilation, CONFIG_DEBUG_SECTION_MISMATCH=y. - Il me donner plus d'informations détaillées sur la question:
WARNING: \**\*path to module\***(.text+0x8d2): Section mismatch in reference from the function Pch_Spi_Enable_Bios_Wr() to the variable .devinit.data:ich9_pci_tbl.22939
The function Pch_Spi_Enable_Bios_Wr() references
the variable __devinitdata ich9_pci_tbl.22939.
This is often because Pch_Spi_Enable_Bios_Wr lacks a __devinitdata
annotation or the annotation of ich9_pci_tbl.22939 is wrong.
Je ne pouvais pas trouver quoi exactement noyau section incompatibilité est, pour ne pas mentionner la façon d'aller sur la fixant.
Vous devez vous connecter pour publier un commentaire.
Cela signifie qu'une fonction qui est dans une section avec une durée de vie de références de quelque chose qui est dans une section à une autre vie.
Lorsque le noyau binaire est lié, les différentes parties du code et les données sont divisées en différentes sections. Certaines de ces sections sont chargés de tous les temps, mais certains autres sont supprimés une fois qu'ils ne sont plus nécessaires (des choses qui ne sont nécessaires que lors du boot, par exemple, peut être libéré une fois de démarrage se fait - ce qui économise de la mémoire).
Si une fonction est dans un long article se réfère aux données de l'une des sections pouvant être éliminée, il y a un problème - il peut-être essayer d'accéder à ses données, lorsqu'il a déjà été libéré, conduisant à toutes sortes d'exécution questions.
Ce n'est pas un avertissement, vous aurez corrigé de vous-même, sauf si vous avez écrit que le code ou la connaissent très bien. Il est résolu correctement par l'annotation de la fonction (ou les données qu'il désigne), de sorte qu'il va dans la bonne section. Le droit fixe ne peut être déterminé avec une connaissance détaillée de la partie du noyau.
Pour une liste de ces sections et les annotations, reportez-vous à la
include/linux/init.h
d'en-tête dans votre arborescence des sources du noyau:Les autres suivent, avec plus de commentaires et d'explications.
Voir aussi le texte d'aide pour l'
CONFIG_DEBUG_SECTION_MISMATCH
Kconfig symbole: