summaryrefslogtreecommitdiff
path: root/ucoo/arch/ld/common.ld
diff options
context:
space:
mode:
Diffstat (limited to 'ucoo/arch/ld/common.ld')
-rw-r--r--ucoo/arch/ld/common.ld67
1 files changed, 67 insertions, 0 deletions
diff --git a/ucoo/arch/ld/common.ld b/ucoo/arch/ld/common.ld
new file mode 100644
index 0000000..8b5efb2
--- /dev/null
+++ b/ucoo/arch/ld/common.ld
@@ -0,0 +1,67 @@
+ENTRY(entry)
+
+SECTIONS
+{
+ .text : {
+ KEEP(*(.vectors))
+ *(.text*)
+ . = ALIGN(4);
+ *(.rodata*)
+ . = ALIGN(4);
+ } >rom
+
+ .preinit_array : {
+ . = ALIGN(4);
+ __preinit_array_start = .;
+ KEEP (*(.preinit_array))
+ __preinit_array_end = .;
+ } >rom
+ .init_array : {
+ . = ALIGN(4);
+ __init_array_start = .;
+ KEEP (*(SORT(.init_array.*)))
+ KEEP (*(.init_array))
+ __init_array_end = .;
+ } >rom
+ .fini_array : {
+ . = ALIGN(4);
+ __fini_array_start = .;
+ KEEP (*(.fini_array))
+ KEEP (*(SORT(.fini_array.*)))
+ __fini_array_end = .;
+ } >rom
+
+ .ARM.extab : {
+ *(.ARM.extab*)
+ } >rom
+ .ARM.exidx : {
+ __exidx_start = .;
+ *(.ARM.exidx*)
+ __exidx_end = .;
+ } >rom
+
+ . = ALIGN(4);
+ _etext = .;
+
+ .data : {
+ _data = .;
+ *(.data*)
+ . = ALIGN(4);
+ _edata = .;
+ } >ram AT >rom
+ _data_loadaddr = LOADADDR(.data);
+
+ .bss : {
+ *(.bss*)
+ *(COMMON)
+ . = ALIGN(4);
+ _ebss = .;
+ } >ram
+
+ /DISCARD/ : { *(.eh_frame) }
+
+ . = ALIGN(4);
+ end = .;
+}
+
+PROVIDE(_stack = ORIGIN(ram) + LENGTH(ram));