aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/vmlinux.lds.S
diff options
context:
space:
mode:
authorCatalin Marinas <catalin.marinas@arm.com>2009-02-16 05:41:36 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2009-02-19 06:26:24 -0500
commitbff595c15c92b9c5c8f3d32edefcef6c3cbdd59f (patch)
tree182cc7840fbd09630d273f18d5b7720655bb4a37 /arch/arm/kernel/vmlinux.lds.S
parent2d7c11bfc91637e5f9bc5f8c9a82aaffcc0e97aa (diff)
[ARM] 5383/2: unwind: Add core support for ARM stack unwinding
This patch adds the main functionality for parsing the stack unwinding information generated by the ARM EABI toolchains. The unwinding information consists of an index with a pair of words per function and a table with unwinding instructions. For more information, see "Exception Handling ABI for the ARM Architecture" at: http://infocenter.arm.com/help/topic/com.arm.doc.subset.swdev.abi/index.html Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel/vmlinux.lds.S')
-rw-r--r--arch/arm/kernel/vmlinux.lds.S19
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
index 00216071eaf7..5f664599c945 100644
--- a/arch/arm/kernel/vmlinux.lds.S
+++ b/arch/arm/kernel/vmlinux.lds.S
@@ -80,6 +80,8 @@ SECTIONS
80 EXIT_TEXT 80 EXIT_TEXT
81 EXIT_DATA 81 EXIT_DATA
82 *(.exitcall.exit) 82 *(.exitcall.exit)
83 *(.ARM.exidx.exit.text)
84 *(.ARM.extab.exit.text)
83#ifndef CONFIG_MMU 85#ifndef CONFIG_MMU
84 *(.fixup) 86 *(.fixup)
85 *(__ex_table) 87 *(__ex_table)
@@ -110,6 +112,23 @@ SECTIONS
110 112
111 _etext = .; /* End of text and rodata section */ 113 _etext = .; /* End of text and rodata section */
112 114
115#ifdef CONFIG_ARM_UNWIND
116 /*
117 * Stack unwinding tables
118 */
119 . = ALIGN(8);
120 .ARM.unwind_idx : {
121 __start_unwind_idx = .;
122 *(.ARM.exidx*)
123 __stop_unwind_idx = .;
124 }
125 .ARM.unwind_tab : {
126 __start_unwind_tab = .;
127 *(.ARM.extab*)
128 __stop_unwind_tab = .;
129 }
130#endif
131
113#ifdef CONFIG_XIP_KERNEL 132#ifdef CONFIG_XIP_KERNEL
114 __data_loc = ALIGN(4); /* location in binary */ 133 __data_loc = ALIGN(4); /* location in binary */
115 . = PAGE_OFFSET + TEXT_OFFSET; 134 . = PAGE_OFFSET + TEXT_OFFSET;