2 * Helper macros to support writing architecture specific
5 * A minimal linker scripts has following content:
6 * [This is a sample, architectures may have special requiriements]
21 * OVERLAY : NOCROSSREFS {
22 * PIE_OVERLAY_SECTION(am33xx)
23 * PIE_OVERLAY_SECTION(am347x)
28 * PIE_DISCARDS // must be the last
32 #include <asm-generic/vmlinux.lds.h>
34 #define PIE_COMMON_START \
35 __pie_common_start : { \
36 VMLINUX_SYMBOL(__pie_common_start) = .; \
39 #define PIE_COMMON_END \
40 __pie_common_end : { \
41 VMLINUX_SYMBOL(__pie_common_end) = .; \
44 #define PIE_OVERLAY_START \
45 __pie_overlay_start : { \
46 VMLINUX_SYMBOL(__pie_overlay_start) = .; \
49 #define PIE_OVERLAY_END \
50 __pie_overlay_end : { \
51 VMLINUX_SYMBOL(__pie_overlay_end) = .; \
54 #define PIE_TEXT_TEXT \
57 #define PIE_OVERLAY_SECTION(name) \
59 KEEP(*(.pie.##name##.*)) \
60 VMLINUX_SYMBOL(__pie_##name##_start) = \
61 LOADADDR(.pie.##name##); \
62 VMLINUX_SYMBOL(__pie_##name##_end) = \
63 LOADADDR(.pie.##name##) + \
64 SIZEOF(.pie.##name##); \
67 KEEP(*(.rel.pie.##name##.*)) \
68 VMLINUX_SYMBOL(__pie_rel_##name##_start) = \
69 LOADADDR(.rel.##name##); \
70 VMLINUX_SYMBOL(__pie_rel_##name##_end) = \
71 LOADADDR(.rel.##name##) + \
72 SIZEOF(.rel.##name##); \
75 #define PIE_DISCARDS \