vmlinux.lds.h: Add markers for text_unlikely and text_hot sections
authorRong Xu <xur@google.com>
Sat, 2 Nov 2024 17:51:11 +0000 (10:51 -0700)
committerMasahiro Yamada <masahiroy@kernel.org>
Wed, 27 Nov 2024 00:38:27 +0000 (09:38 +0900)
Add markers like __hot_text_start, __hot_text_end, __unlikely_text_start,
and __unlikely_text_end which will be included in System.map. These markers
indicate how the compiler groups functions, providing valuable information
to developers about the layout and optimization of the code.

Co-developed-by: Han Shen <shenhan@google.com>
Signed-off-by: Han Shen <shenhan@google.com>
Signed-off-by: Rong Xu <xur@google.com>
Suggested-by: Sriraman Tallam <tmsriram@google.com>
Tested-by: Yonghong Song <yonghong.song@linux.dev>
Tested-by: Yabin Cui <yabinc@google.com>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Kees Cook <kees@kernel.org>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
include/asm-generic/vmlinux.lds.h

index fd90195..e02973f 100644 (file)
                __cpuidle_text_end = .;                                 \
                __noinstr_text_end = .;
 
+#define TEXT_UNLIKELY                                                  \
+               __unlikely_text_start = .;                              \
+               *(.text.unlikely .text.unlikely.*)                      \
+               __unlikely_text_end = .;
+
+#define TEXT_HOT                                                       \
+               __hot_text_start = .;                                   \
+               *(.text.hot .text.hot.*)                                \
+               __hot_text_end = .;
+
 /*
  * .text section. Map to function alignment to avoid address changes
  * during second ld run in second ld pass when generating System.map
                ALIGN_FUNCTION();                                       \
                *(.text.asan.* .text.tsan.*)                            \
                *(.text.unknown .text.unknown.*)                        \
-               *(.text.unlikely .text.unlikely.*)                      \
+               TEXT_UNLIKELY                                           \
                . = ALIGN(PAGE_SIZE);                                   \
-               *(.text.hot .text.hot.*)                                \
+               TEXT_HOT                                                \
                *(TEXT_MAIN .text.fixup)                                \
                NOINSTR_TEXT                                            \
                *(.ref.text)