aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUwe Hermann2010-12-17 05:28:02 +0100
committerUwe Hermann2010-12-17 05:50:00 +0100
commitaf61aaef21e85769e969e0760e4706eebc18eb5a (patch)
tree62af2e1d1172e5a2b5ba680d0231b2513651ed85
parent4ef35380e8340c0103494ad86afef7788dc6aa4f (diff)
Minor ld script changes.
Add wildcards to the input section names. This fixes the script for use with the "-ffunction-sections -fdata-sections -Wl,--gc-sections" options when compiling/linking. Also, discard the .eh_frame section. This section is emitted by GCC 4.4, but not 4.5. Discarding it doesn't appear to break anything. I suspect this is used for C++ exception implementation. I found this to be a problem when building with GCC 4.4 (arm-elf), because the USB DFU demo exceeded the 8k I allowed for it. Thanks to Gareth McMullin <gareth@blacksphere.co.nz> for the patch.
-rw-r--r--lib/libopenstm32.ld14
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/libopenstm32.ld b/lib/libopenstm32.ld
index 13efe44..75b7103 100644
--- a/lib/libopenstm32.ld
+++ b/lib/libopenstm32.ld
@@ -31,8 +31,8 @@ SECTIONS
.text : {
*(.vectors) /* Vector table */
- *(.text) /* Program code */
- *(.rodata) /* Read-only data */
+ *(.text*) /* Program code */
+ *(.rodata*) /* Read-only data */
_etext = .;
} >rom
@@ -40,16 +40,22 @@ SECTIONS
.data : {
_data = .;
- *(.data) /* Read-write initialized data */
+ *(.data*) /* Read-write initialized data */
_edata = .;
} >ram AT >rom
.bss : {
- *(.bss) /* Read-write zero initialized data */
+ *(.bss*) /* Read-write zero initialized data */
*(COMMON)
_ebss = .;
} >ram AT >rom
+ /*
+ * The .eh_frame section appears to be used for C++ exception handling.
+ * You may need to fix this if you're using C++.
+ */
+ /DISCARD/ : { *(.eh_frame) }
+
end = .;
}