Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

um: remove uml initcalls

__uml_initcall() is not used and .uml.initcall.init section is empty:

$ grep -r '__uml_initcall('
arch/um/include/shared/init.h:#define __uml_initcall(fn) \
$ readelf -s ../umobj/linux | grep __uml_initcall
23214: 00000000603b75d8 0 NOTYPE GLOBAL DEFAULT 32 __uml_initcall_start
25337: 00000000603b75d8 0 NOTYPE GLOBAL DEFAULT 32 __uml_initcall_end

So it is unnecessary.

Signed-off-by: Alexander Pateenok <pateenoc@gmail.com>
Signed-off-by: Richard Weinberger <richard@nod.at>

authored by

Alexander Pateenok and committed by
Richard Weinberger
cca76c1a 8e0ab914

-23
-6
arch/um/include/asm/common.lds.S
··· 53 53 CON_INITCALL 54 54 } 55 55 56 - .uml.initcall.init : { 57 - __uml_initcall_start = .; 58 - *(.uml.initcall.init) 59 - __uml_initcall_end = .; 60 - } 61 - 62 56 SECURITY_INIT 63 57 64 58 .exitcall : {
-5
arch/um/include/shared/init.h
··· 64 64 int (*setup_func)(char *, int *); 65 65 }; 66 66 67 - extern initcall_t __uml_initcall_start, __uml_initcall_end; 68 67 extern initcall_t __uml_postsetup_start, __uml_postsetup_end; 69 68 extern const char *__uml_help_start, *__uml_help_end; 70 69 #endif 71 - 72 - #define __uml_initcall(fn) \ 73 - static initcall_t __uml_initcall_##fn __uml_init_call = fn 74 70 75 71 #define __uml_exitcall(fn) \ 76 72 static exitcall_t __uml_exitcall_##fn __uml_exit_call = fn ··· 104 108 */ 105 109 #define __uml_init_setup __used __section(.uml.setup.init) 106 110 #define __uml_setup_help __used __section(.uml.help.init) 107 - #define __uml_init_call __used __section(.uml.initcall.init) 108 111 #define __uml_postsetup_call __used __section(.uml.postsetup.init) 109 112 #define __uml_exit_call __used __section(.uml.exitcall.exit) 110 113
-12
arch/um/os-Linux/main.c
··· 40 40 } 41 41 } 42 42 43 - static __init void do_uml_initcalls(void) 44 - { 45 - initcall_t *call; 46 - 47 - call = &__uml_initcall_start; 48 - while (call < &__uml_initcall_end) { 49 - (*call)(); 50 - call++; 51 - } 52 - } 53 - 54 43 static void last_ditch_exit(int sig) 55 44 { 56 45 uml_cleanup(); ··· 140 151 scan_elf_aux(envp); 141 152 #endif 142 153 143 - do_uml_initcalls(); 144 154 change_sig(SIGPIPE, 0); 145 155 ret = linux_main(argc, argv); 146 156