return export_unknown;
 }
 
-static const char *namespace_from_kstrtabns(struct elf_info *info,
-                                           Elf_Sym *kstrtabns)
+static const char *namespace_from_kstrtabns(const struct elf_info *info,
+                                           const Elf_Sym *sym)
 {
-       char *value = info->ksymtab_strings + kstrtabns->st_value;
+       const char *value = sym_get_data(info, sym);
        return value[0] ? value : NULL;
 }
 
                        info->export_unused_gpl_sec = i;
                else if (strcmp(secname, "__ksymtab_gpl_future") == 0)
                        info->export_gpl_future_sec = i;
-               else if (strcmp(secname, "__ksymtab_strings") == 0)
-                       info->ksymtab_strings = (void *)hdr +
-                                               sechdrs[i].sh_offset -
-                                               sechdrs[i].sh_addr;
 
                if (sechdrs[i].sh_type == SHT_SYMTAB) {
                        unsigned int sh_link_idx;
 
        Elf_Section  export_gpl_sec;
        Elf_Section  export_unused_gpl_sec;
        Elf_Section  export_gpl_future_sec;
-       char         *ksymtab_strings;
        char         *strtab;
        char         *modinfo;
        unsigned int modinfo_len;