forked from mirrors/linux
		
	modpost: remove symbol prefix support
CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX was selected by BLACKFIN, METAG. They were removed by commit4ba66a9760("arch: remove blackfin port"), commitbb6fb6dfcc("metag: Remove arch/metag/"), respectively. No more architecture enables CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX, hence VMLINUX_SYMBOL_STR(foo) can be simplify replaced with "foo". Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
This commit is contained in:
		
							parent
							
								
									d5940c60e0
								
							
						
					
					
						commit
						b2c5cdcfd4
					
				
					 1 changed files with 10 additions and 20 deletions
				
			
		|  | @ -19,9 +19,7 @@ | |||
| #include <stdbool.h> | ||||
| #include <errno.h> | ||||
| #include "modpost.h" | ||||
| #include "../../include/generated/autoconf.h" | ||||
| #include "../../include/linux/license.h" | ||||
| #include "../../include/linux/export.h" | ||||
| 
 | ||||
| /* Are we using CONFIG_MODVERSIONS? */ | ||||
| static int modversions = 0; | ||||
|  | @ -591,7 +589,7 @@ static void parse_elf_finish(struct elf_info *info) | |||
| static int ignore_undef_symbol(struct elf_info *info, const char *symname) | ||||
| { | ||||
| 	/* ignore __this_module, it will be resolved shortly */ | ||||
| 	if (strcmp(symname, VMLINUX_SYMBOL_STR(__this_module)) == 0) | ||||
| 	if (strcmp(symname, "__this_module") == 0) | ||||
| 		return 1; | ||||
| 	/* ignore global offset table */ | ||||
| 	if (strcmp(symname, "_GLOBAL_OFFSET_TABLE_") == 0) | ||||
|  | @ -617,9 +615,6 @@ static int ignore_undef_symbol(struct elf_info *info, const char *symname) | |||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| #define CRC_PFX     VMLINUX_SYMBOL_STR(__crc_) | ||||
| #define KSYMTAB_PFX VMLINUX_SYMBOL_STR(__ksymtab_) | ||||
| 
 | ||||
| static void handle_modversions(struct module *mod, struct elf_info *info, | ||||
| 			       Elf_Sym *sym, const char *symname) | ||||
| { | ||||
|  | @ -634,7 +629,7 @@ static void handle_modversions(struct module *mod, struct elf_info *info, | |||
| 		export = export_from_sec(info, get_secindex(info, sym)); | ||||
| 
 | ||||
| 	/* CRC'd symbol */ | ||||
| 	if (strncmp(symname, CRC_PFX, strlen(CRC_PFX)) == 0) { | ||||
| 	if (strncmp(symname, "__crc_", strlen("__crc_")) == 0) { | ||||
| 		is_crc = true; | ||||
| 		crc = (unsigned int) sym->st_value; | ||||
| 		if (sym->st_shndx != SHN_UNDEF && sym->st_shndx != SHN_ABS) { | ||||
|  | @ -647,7 +642,7 @@ static void handle_modversions(struct module *mod, struct elf_info *info, | |||
| 				info->sechdrs[sym->st_shndx].sh_addr : 0); | ||||
| 			crc = *crcp; | ||||
| 		} | ||||
| 		sym_update_crc(symname + strlen(CRC_PFX), mod, crc, | ||||
| 		sym_update_crc(symname + strlen("__crc_"), mod, crc, | ||||
| 				export); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -685,15 +680,10 @@ static void handle_modversions(struct module *mod, struct elf_info *info, | |||
| 		} | ||||
| #endif | ||||
| 
 | ||||
| #ifdef CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX | ||||
| 		if (symname[0] != '_') | ||||
| 			break; | ||||
| 		else | ||||
| 			symname++; | ||||
| #endif | ||||
| 		if (is_crc) { | ||||
| 			const char *e = is_vmlinux(mod->name) ?"":".ko"; | ||||
| 			warn("EXPORT symbol \"%s\" [%s%s] version generation failed, symbol will not be versioned.\n", symname + strlen(CRC_PFX), mod->name, e); | ||||
| 			warn("EXPORT symbol \"%s\" [%s%s] version generation failed, symbol will not be versioned.\n", | ||||
| 			     symname + strlen("__crc_"), mod->name, e); | ||||
| 		} | ||||
| 		mod->unres = alloc_symbol(symname, | ||||
| 					  ELF_ST_BIND(sym->st_info) == STB_WEAK, | ||||
|  | @ -701,13 +691,13 @@ static void handle_modversions(struct module *mod, struct elf_info *info, | |||
| 		break; | ||||
| 	default: | ||||
| 		/* All exported symbols */ | ||||
| 		if (strncmp(symname, KSYMTAB_PFX, strlen(KSYMTAB_PFX)) == 0) { | ||||
| 			sym_add_exported(symname + strlen(KSYMTAB_PFX), mod, | ||||
| 		if (strncmp(symname, "__ksymtab_", strlen("__ksymtab_")) == 0) { | ||||
| 			sym_add_exported(symname + strlen("__ksymtab_"), mod, | ||||
| 					export); | ||||
| 		} | ||||
| 		if (strcmp(symname, VMLINUX_SYMBOL_STR(init_module)) == 0) | ||||
| 		if (strcmp(symname, "init_module") == 0) | ||||
| 			mod->has_init = 1; | ||||
| 		if (strcmp(symname, VMLINUX_SYMBOL_STR(cleanup_module)) == 0) | ||||
| 		if (strcmp(symname, "cleanup_module") == 0) | ||||
| 			mod->has_cleanup = 1; | ||||
| 		break; | ||||
| 	} | ||||
|  | @ -2230,7 +2220,7 @@ static int add_versions(struct buffer *b, struct module *mod) | |||
| 			err = 1; | ||||
| 			break; | ||||
| 		} | ||||
| 		buf_printf(b, "\t{ %#8x, __VMLINUX_SYMBOL_STR(%s) },\n", | ||||
| 		buf_printf(b, "\t{ %#8x, \"%s\" },\n", | ||||
| 			   s->crc, s->name); | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Masahiro Yamada
						Masahiro Yamada