From: Andrew Morton The `struct likely' will be in .data because we initialised it, so it won't get unloaded by free_initmem() anyway. If we hadn't initialised it, it would be in .bss which also isn't unloaded. The only reason I can see for this section is if gcc magically started putting .data-declared-in-__init-code into .init.data, but it won't do that. So I think it's best to remove this - there's a risk that the various cross-section-reference-checking tools will get upset otherwise. Cc: Daniel Walker CC: Hua Zhong Signed-off-by: Andrew Morton --- include/linux/compiler.h | 12 +++++------- 1 files changed, 5 insertions(+), 7 deletions(-) diff -puN include/linux/compiler.h~profile-likely-unlikely-macros-fix include/linux/compiler.h --- 25/include/linux/compiler.h~profile-likely-unlikely-macros-fix Wed Apr 26 16:24:50 2006 +++ 25-akpm/include/linux/compiler.h Wed Apr 26 16:24:50 2006 @@ -69,13 +69,11 @@ extern int do_check_likely(struct likeli #define __check_likely(exp, is_likely) \ ({ \ - static __attribute__((__section__(".likely.data"))) \ - struct likeliness likeliness = { \ - .func = __func__, \ - .file = __FILE__, \ - .line = __LINE__, \ - .type = is_likely | LP_UNSEEN, \ - }; \ + static struct likeliness likeliness = { \ + .func = __func__, \ + .file = __FILE__, \ + .line = __LINE__, \ + .type = is_likely | LP_UNSEEN, \ }; \ do_check_likely(&likeliness, !!(exp)); \ }) _