@@ -830,6 +830,12 @@
#define PERCPU_DECRYPTED_SECTION
#endif
+#define BUILD_SALT \
+ . = ALIGN(32); \
+ .salt : AT(ADDR(.salt) - LOAD_OFFSET) { \
+ LONG(0xffaa5500); \
+ . = ALIGN(32); \
+ } = CONFIG_BUILD_ID_SALT \
/*
* Default discarded sections.
@@ -1967,3 +1967,12 @@ config ARCH_HAS_SYNC_CORE_BEFORE_USERMODE
# <asm/syscall_wrapper.h>.
config ARCH_HAS_SYSCALL_WRAPPER
def_bool n
+
+config BUILD_ID_SALT
+ hex "Build ID Salt"
+ default 0x12345678
+ help
+ The build ID is used to link binaries and their debug info. Setting
+ this option will use the value in the calculation of the build id.
+ This is mostly useful for distributions which want to ensure the
+ build is unique between builds. It's safe to leave the default.
@@ -3,6 +3,9 @@
* Archs are free to supply their own linker scripts. ld will
* combine them automatically.
*/
+
+#include <asm-generic/vmlinux.lds.h>
+
SECTIONS {
/DISCARD/ : {
*(.discard)
@@ -23,4 +26,5 @@ SECTIONS {
.init_array 0 : ALIGN(8) { *(SORT(.init_array.*)) *(.init_array) }
__jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) }
+ BUILD_SALT
}
The build id generated from --build-id can be generated in several different ways, with the default being the sha1 on the output of the linked file. For distributions, it can be useful to make sure this ID is unique, even if the actual file contents don't change. The easiest way to do this is to insert a section with some data. Introduce a macro to insert a linker section which will be filled with a hex value. This will ensure the build id can be changed just via a config option. Users who don't care about this can leave the default value and strip the section. Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Laura Abbott <labbott@redhat.com> --- include/asm-generic/vmlinux.lds.h | 6 ++++++ init/Kconfig | 9 +++++++++ scripts/module-common.lds.S | 4 ++++ 3 files changed, 19 insertions(+)