Sin respuesta a mis preguntas anteriores, aquí hay algunas conjeturas que también podrían ser algunas pistas, y un paso para una respuesta:
De lo que recuerdo, un .ko no es más que un archivo .o resultante de la fusión de todos los archivos .o generados por su módulo fuente, y la adición de una sección .modinfo. Al final de cualquier .ko build Makefile, hay una llamada LD: por lo que recuerdo, ld se llama con la opción -r, y esto es lo que crea ese archivo .o que el archivo Makefile llama un .ko. Este archivo resultante no se debe confundir con un archivo o biblioteca de objetos (archivo .a), que es solo un formato que archiva/empaqueta múltiples archivos .o como uno: un objeto fusionado es el resultado de un enlace que produce otro .o módulo: Pero en el módulo resultante, todas las secciones que se pudieron fusionar han sido, y todos los pares públicos/externos que se pudieron resolver han estado dentro de esas secciones. así que supongo que usted termina con su archivo .ko que contiene todas las definiciones extern "locales":
aquellos que son extern porque se utilizan para llamar a través de la .o módulos en su .ko (pero no se necesitan más ya que no son supone que se llama desde fuera la .ko), y
los que el módulo .ko es necesario que comunicarse correctamente con el cargador y el núcleo .
Los primeros han muy probable que ya han resuelto por LD durante la fusión, pero ld no tiene manera de saber si tiene la intención de hacer que también se puede llamar desde fuera del .ko.
Así que los símbolos extraños que ve son los que son externos para cada uno de sus archivos .o, pero no son necesarios como externos para el .ko resultante. Y lo que estás buscando es una forma de despojar solo a aquellos.
¿Este último párrafo describe correctamente los símbolos que desea eliminar?
Si realmente quieres evitar una guerra de llama, sugiero no generalizar a la gente como fanáticos :) –
Buen punto, Tim :) ¿Mejor ahora? : D – Kimvais
Si el "público en general" nunca verá su código, ¿por qué le preocupa la ingeniería inversa? –