mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-11 15:04:49 -04:00
Merge branch 'x86/build' into x86/asm, to pick up completed topic branch
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@@ -23,12 +23,11 @@
|
||||
* _etext = .;
|
||||
*
|
||||
* _sdata = .;
|
||||
* RO_DATA_SECTION(PAGE_SIZE)
|
||||
* RW_DATA_SECTION(...)
|
||||
* RO_DATA(PAGE_SIZE)
|
||||
* RW_DATA(...)
|
||||
* _edata = .;
|
||||
*
|
||||
* EXCEPTION_TABLE(...)
|
||||
* NOTES
|
||||
*
|
||||
* BSS_SECTION(0, 0, 0)
|
||||
* _end = .;
|
||||
@@ -54,6 +53,33 @@
|
||||
#define LOAD_OFFSET 0
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Only some architectures want to have the .notes segment visible in
|
||||
* a separate PT_NOTE ELF Program Header. When this happens, it needs
|
||||
* to be visible in both the kernel text's PT_LOAD and the PT_NOTE
|
||||
* Program Headers. In this case, though, the PT_LOAD needs to be made
|
||||
* the default again so that all the following sections don't also end
|
||||
* up in the PT_NOTE Program Header.
|
||||
*/
|
||||
#ifdef EMITS_PT_NOTE
|
||||
#define NOTES_HEADERS :text :note
|
||||
#define NOTES_HEADERS_RESTORE __restore_ph : { *(.__restore_ph) } :text
|
||||
#else
|
||||
#define NOTES_HEADERS
|
||||
#define NOTES_HEADERS_RESTORE
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Some architectures have non-executable read-only exception tables.
|
||||
* They can be added to the RO_DATA segment by specifying their desired
|
||||
* alignment.
|
||||
*/
|
||||
#ifdef RO_EXCEPTION_TABLE_ALIGN
|
||||
#define RO_EXCEPTION_TABLE EXCEPTION_TABLE(RO_EXCEPTION_TABLE_ALIGN)
|
||||
#else
|
||||
#define RO_EXCEPTION_TABLE
|
||||
#endif
|
||||
|
||||
/* Align . to a 8 byte boundary equals to maximum function alignment. */
|
||||
#define ALIGN_FUNCTION() . = ALIGN(8)
|
||||
|
||||
@@ -348,7 +374,7 @@
|
||||
/*
|
||||
* Read only Data
|
||||
*/
|
||||
#define RO_DATA_SECTION(align) \
|
||||
#define RO_DATA(align) \
|
||||
. = ALIGN((align)); \
|
||||
.rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \
|
||||
__start_rodata = .; \
|
||||
@@ -496,15 +522,13 @@
|
||||
__start___modver = .; \
|
||||
KEEP(*(__modver)) \
|
||||
__stop___modver = .; \
|
||||
. = ALIGN((align)); \
|
||||
__end_rodata = .; \
|
||||
} \
|
||||
. = ALIGN((align));
|
||||
|
||||
/* RODATA & RO_DATA provided for backward compatibility.
|
||||
* All archs are supposed to use RO_DATA() */
|
||||
#define RODATA RO_DATA_SECTION(4096)
|
||||
#define RO_DATA(align) RO_DATA_SECTION(align)
|
||||
\
|
||||
RO_EXCEPTION_TABLE \
|
||||
NOTES \
|
||||
\
|
||||
. = ALIGN((align)); \
|
||||
__end_rodata = .;
|
||||
|
||||
/*
|
||||
* .text section. Map to function alignment to avoid address changes
|
||||
@@ -790,7 +814,8 @@
|
||||
__start_notes = .; \
|
||||
KEEP(*(.note.*)) \
|
||||
__stop_notes = .; \
|
||||
}
|
||||
} NOTES_HEADERS \
|
||||
NOTES_HEADERS_RESTORE
|
||||
|
||||
#define INIT_SETUP(initsetup_align) \
|
||||
. = ALIGN(initsetup_align); \
|
||||
@@ -962,7 +987,7 @@
|
||||
* matches the requirement of PAGE_ALIGNED_DATA.
|
||||
*
|
||||
* use 0 as page_align if page_aligned data is not used */
|
||||
#define RW_DATA_SECTION(cacheline, pagealigned, inittask) \
|
||||
#define RW_DATA(cacheline, pagealigned, inittask) \
|
||||
. = ALIGN(PAGE_SIZE); \
|
||||
.data : AT(ADDR(.data) - LOAD_OFFSET) { \
|
||||
INIT_TASK_DATA(inittask) \
|
||||
|
||||
Reference in New Issue
Block a user