diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2007-05-29 15:29:00 -0400 |
---|---|---|
committer | Sam Ravnborg <sam@ravnborg.org> | 2007-05-29 15:29:00 -0400 |
commit | 4096b46f01a362fe2cc83f6be25cc7be6bce2ab7 (patch) | |
tree | 7738ca7a7962dc88cc5b9e6dc3b789e73504a7c8 /include/asm-generic/vmlinux.lds.h | |
parent | c420bc9f09a0926b708c3edb27eacba434a4f4ba (diff) |
sparc64: fix alignment bug in linker definition script
The RO_DATA section were hardcoded to a specific
alignment in include/asm-generic/vmlinux.h.
But for sparc64 this did not match the PAGE_SIZE.
Introduce a new section definition named:
RO_DATA that takes actual alignment as parameter.
RODATA are provided for backward compatibility.
On top of this avoid hardcoding alignment for
sparc64 in reset of the script
Fix is build-tested on sparc64 + x86_64.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Diffstat (limited to 'include/asm-generic/vmlinux.lds.h')
-rw-r--r-- | include/asm-generic/vmlinux.lds.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 8307b1bb337a..84155eb67f1d 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
@@ -14,8 +14,8 @@ | |||
14 | *(.data) \ | 14 | *(.data) \ |
15 | *(.data.init.refok) | 15 | *(.data.init.refok) |
16 | 16 | ||
17 | #define RODATA \ | 17 | #define RO_DATA(align) \ |
18 | . = ALIGN(4096); \ | 18 | . = ALIGN((align)); \ |
19 | .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \ | 19 | .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \ |
20 | VMLINUX_SYMBOL(__start_rodata) = .; \ | 20 | VMLINUX_SYMBOL(__start_rodata) = .; \ |
21 | *(.rodata) *(.rodata.*) \ | 21 | *(.rodata) *(.rodata.*) \ |
@@ -135,7 +135,11 @@ | |||
135 | VMLINUX_SYMBOL(__end_rodata) = .; \ | 135 | VMLINUX_SYMBOL(__end_rodata) = .; \ |
136 | } \ | 136 | } \ |
137 | \ | 137 | \ |
138 | . = ALIGN(4096); | 138 | . = ALIGN((align)); |
139 | |||
140 | /* RODATA provided for backward compatibility. | ||
141 | * All archs are supposed to use RO_DATA() */ | ||
142 | #define RODATA RO_DATA(4096) | ||
139 | 143 | ||
140 | #define SECURITY_INIT \ | 144 | #define SECURITY_INIT \ |
141 | .security_initcall.init : AT(ADDR(.security_initcall.init) - LOAD_OFFSET) { \ | 145 | .security_initcall.init : AT(ADDR(.security_initcall.init) - LOAD_OFFSET) { \ |