kbuild: Avoid inconsistent kallsyms data
Several reports on inconsistent kallsyms data has been caused by the aliased symbols __sched_text_start and __down to shift places in the output of nm. The root cause was that on second pass ld aligned __sched_text_start to a 4 byte boundary which is the function alignment on i386. sched.text and spinlock.text is now aligned to an 8 byte boundary to make sure they are aligned to a function alignemnt on most (all?) archs. Tested by: Paulo Marques <pmarques@grupopie.com> Tested by: Alexander Stohr <Alexander.Stohr@gmx.de> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
This commit is contained in:
parent
53e88e03e6
commit
6d30e3a899
|
@ -6,6 +6,9 @@
|
|||
#define VMLINUX_SYMBOL(_sym_) _sym_
|
||||
#endif
|
||||
|
||||
/* Align . to a 8 byte boundary equals to maximum function alignment. */
|
||||
#define ALIGN_FUNCTION() . = ALIGN(8)
|
||||
|
||||
#define RODATA \
|
||||
.rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \
|
||||
*(.rodata) *(.rodata.*) \
|
||||
|
@ -79,12 +82,18 @@
|
|||
VMLINUX_SYMBOL(__security_initcall_end) = .; \
|
||||
}
|
||||
|
||||
/* sched.text is aling to function alignment to secure we have same
|
||||
* address even at second ld pass when generating System.map */
|
||||
#define SCHED_TEXT \
|
||||
ALIGN_FUNCTION(); \
|
||||
VMLINUX_SYMBOL(__sched_text_start) = .; \
|
||||
*(.sched.text) \
|
||||
VMLINUX_SYMBOL(__sched_text_end) = .;
|
||||
|
||||
/* spinlock.text is aling to function alignment to secure we have same
|
||||
* address even at second ld pass when generating System.map */
|
||||
#define LOCK_TEXT \
|
||||
ALIGN_FUNCTION(); \
|
||||
VMLINUX_SYMBOL(__lock_text_start) = .; \
|
||||
*(.spinlock.text) \
|
||||
VMLINUX_SYMBOL(__lock_text_end) = .;
|
||||
|
|
Loading…
Reference in New Issue
Block a user