]> git.neil.brown.name Git - history.git/commitdiff
[MODULE]: On sparc, ignore undefined symbols of type STT_REGISTER.
authorDavid S. Miller <davem@nuts.ninka.net>
Thu, 3 Apr 2003 07:44:43 +0000 (23:44 -0800)
committerDavid S. Miller <davem@nuts.ninka.net>
Thu, 3 Apr 2003 07:44:43 +0000 (23:44 -0800)
kernel/module.c
scripts/modpost.c
scripts/modpost.h

index 366bfd04621fd71d77293cadb2247242b8d7acb2..67b80a06fdb488b459c1870682eb1aeeaaecbf95 100644 (file)
@@ -973,6 +973,11 @@ static int simplify_symbols(Elf_Shdr *sechdrs,
                        /* Ok if weak.  */
                        if (ELF_ST_BIND(sym[i].st_info) == STB_WEAK)
                                break;
+#if defined(CONFIG_SPARC32) || defined(CONFIG_SPARC64)
+                       /* Ok if Sparc register directive. */
+                       if (ELF_ST_TYPE(sym[i].st_info) == STT_REGISTER)
+                               break;
+#endif
 
                        printk(KERN_WARNING "%s: Unknown symbol %s\n",
                               mod->name, strtab + sym[i].st_name);
index 2d19dcdafd608fc23e90b7bd9fe483c100adf3a9..1b94b2c73b28c77d182b39b26ca2609f2de7232d 100644 (file)
@@ -296,6 +296,12 @@ handle_modversions(struct module *mod, struct elf_info *info,
                /* ignore global offset table */
                if (strcmp(symname, "_GLOBAL_OFFSET_TABLE_") == 0)
                        break;
+               if (info->hdr->e_machine == EM_SPARC ||
+                   info->hdr->e_machine == EM_SPARCV9) {
+                       /* Ignore register directives. */
+                       if (ELF_ST_TYPE(sym->st_info) == STT_REGISTER)
+                               break;
+               }
                
                if (memcmp(symname, MODULE_SYMBOL_PREFIX,
                           strlen(MODULE_SYMBOL_PREFIX)) == 0) {
index 1a5c8e829cc8e1df1c825410351fd6130127d0f6..58610817978099d4a6d3eb5c701804eb40510b24 100644 (file)
@@ -17,6 +17,7 @@
 #define Elf_Shdr    Elf32_Shdr 
 #define Elf_Sym     Elf32_Sym
 #define ELF_ST_BIND ELF32_ST_BIND
+#define ELF_ST_TYPE ELF32_ST_TYPE
 
 #else
 
@@ -24,6 +25,7 @@
 #define Elf_Shdr    Elf64_Shdr 
 #define Elf_Sym     Elf64_Sym
 #define ELF_ST_BIND ELF64_ST_BIND
+#define ELF_ST_TYPE ELF64_ST_TYPE
 
 #endif