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 <stdbool.h> | ||||||
| #include <errno.h> | #include <errno.h> | ||||||
| #include "modpost.h" | #include "modpost.h" | ||||||
| #include "../../include/generated/autoconf.h" |  | ||||||
| #include "../../include/linux/license.h" | #include "../../include/linux/license.h" | ||||||
| #include "../../include/linux/export.h" |  | ||||||
| 
 | 
 | ||||||
| /* Are we using CONFIG_MODVERSIONS? */ | /* Are we using CONFIG_MODVERSIONS? */ | ||||||
| static int modversions = 0; | 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) | static int ignore_undef_symbol(struct elf_info *info, const char *symname) | ||||||
| { | { | ||||||
| 	/* ignore __this_module, it will be resolved shortly */ | 	/* 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; | 		return 1; | ||||||
| 	/* ignore global offset table */ | 	/* ignore global offset table */ | ||||||
| 	if (strcmp(symname, "_GLOBAL_OFFSET_TABLE_") == 0) | 	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; | 	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, | static void handle_modversions(struct module *mod, struct elf_info *info, | ||||||
| 			       Elf_Sym *sym, const char *symname) | 			       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)); | 		export = export_from_sec(info, get_secindex(info, sym)); | ||||||
| 
 | 
 | ||||||
| 	/* CRC'd symbol */ | 	/* CRC'd symbol */ | ||||||
| 	if (strncmp(symname, CRC_PFX, strlen(CRC_PFX)) == 0) { | 	if (strncmp(symname, "__crc_", strlen("__crc_")) == 0) { | ||||||
| 		is_crc = true; | 		is_crc = true; | ||||||
| 		crc = (unsigned int) sym->st_value; | 		crc = (unsigned int) sym->st_value; | ||||||
| 		if (sym->st_shndx != SHN_UNDEF && sym->st_shndx != SHN_ABS) { | 		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); | 				info->sechdrs[sym->st_shndx].sh_addr : 0); | ||||||
| 			crc = *crcp; | 			crc = *crcp; | ||||||
| 		} | 		} | ||||||
| 		sym_update_crc(symname + strlen(CRC_PFX), mod, crc, | 		sym_update_crc(symname + strlen("__crc_"), mod, crc, | ||||||
| 				export); | 				export); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -685,15 +680,10 @@ static void handle_modversions(struct module *mod, struct elf_info *info, | ||||||
| 		} | 		} | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX |  | ||||||
| 		if (symname[0] != '_') |  | ||||||
| 			break; |  | ||||||
| 		else |  | ||||||
| 			symname++; |  | ||||||
| #endif |  | ||||||
| 		if (is_crc) { | 		if (is_crc) { | ||||||
| 			const char *e = is_vmlinux(mod->name) ?"":".ko"; | 			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, | 		mod->unres = alloc_symbol(symname, | ||||||
| 					  ELF_ST_BIND(sym->st_info) == STB_WEAK, | 					  ELF_ST_BIND(sym->st_info) == STB_WEAK, | ||||||
|  | @ -701,13 +691,13 @@ static void handle_modversions(struct module *mod, struct elf_info *info, | ||||||
| 		break; | 		break; | ||||||
| 	default: | 	default: | ||||||
| 		/* All exported symbols */ | 		/* All exported symbols */ | ||||||
| 		if (strncmp(symname, KSYMTAB_PFX, strlen(KSYMTAB_PFX)) == 0) { | 		if (strncmp(symname, "__ksymtab_", strlen("__ksymtab_")) == 0) { | ||||||
| 			sym_add_exported(symname + strlen(KSYMTAB_PFX), mod, | 			sym_add_exported(symname + strlen("__ksymtab_"), mod, | ||||||
| 					export); | 					export); | ||||||
| 		} | 		} | ||||||
| 		if (strcmp(symname, VMLINUX_SYMBOL_STR(init_module)) == 0) | 		if (strcmp(symname, "init_module") == 0) | ||||||
| 			mod->has_init = 1; | 			mod->has_init = 1; | ||||||
| 		if (strcmp(symname, VMLINUX_SYMBOL_STR(cleanup_module)) == 0) | 		if (strcmp(symname, "cleanup_module") == 0) | ||||||
| 			mod->has_cleanup = 1; | 			mod->has_cleanup = 1; | ||||||
| 		break; | 		break; | ||||||
| 	} | 	} | ||||||
|  | @ -2230,7 +2220,7 @@ static int add_versions(struct buffer *b, struct module *mod) | ||||||
| 			err = 1; | 			err = 1; | ||||||
| 			break; | 			break; | ||||||
| 		} | 		} | ||||||
| 		buf_printf(b, "\t{ %#8x, __VMLINUX_SYMBOL_STR(%s) },\n", | 		buf_printf(b, "\t{ %#8x, \"%s\" },\n", | ||||||
| 			   s->crc, s->name); | 			   s->crc, s->name); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Masahiro Yamada
						Masahiro Yamada