aboutsummaryrefslogtreecommitdiff
path: root/arch/riscv/lib/elf_riscv64_efi.lds
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2018-04-23 07:59:45 +0200
committerAndes <uboot@andestech.com>2018-05-29 14:43:12 +0800
commit493d1e88b676675e0c2a8614abcba0dcbb9befa4 (patch)
tree44d9269532c66ff2db4eb46cda276d6415a59219 /arch/riscv/lib/elf_riscv64_efi.lds
parent6cc1a2af46c448e7d822fa4976a8d6e10fc5273b (diff)
downloadu-boot-493d1e88b676675e0c2a8614abcba0dcbb9befa4.zip
u-boot-493d1e88b676675e0c2a8614abcba0dcbb9befa4.tar.gz
u-boot-493d1e88b676675e0c2a8614abcba0dcbb9befa4.tar.bz2
riscv: Add EFI application infrastructure
The hello world binary and a few selftests require to build EFI target binaries, not just the EFI host environment. This patch adds all required files to generate an EFI binary for RISC-V. Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'arch/riscv/lib/elf_riscv64_efi.lds')
-rw-r--r--arch/riscv/lib/elf_riscv64_efi.lds70
1 files changed, 70 insertions, 0 deletions
diff --git a/arch/riscv/lib/elf_riscv64_efi.lds b/arch/riscv/lib/elf_riscv64_efi.lds
new file mode 100644
index 0000000..25c863d
--- /dev/null
+++ b/arch/riscv/lib/elf_riscv64_efi.lds
@@ -0,0 +1,70 @@
+/*
+ * U-Boot riscv64 EFI linker script
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Modified from arch/arm/lib/elf_aarch64_efi.lds
+ */
+
+OUTPUT_FORMAT("elf64-littleriscv", "elf64-littleriscv", "elf64-littleriscv")
+OUTPUT_ARCH(riscv)
+ENTRY(_start)
+SECTIONS
+{
+ .text 0x0 : {
+ _text = .;
+ *(.text.head)
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ *(.srodata)
+ *(.rodata*)
+ . = ALIGN(16);
+ }
+ _etext = .;
+ _text_size = . - _text;
+ .dynamic : { *(.dynamic) }
+ .data : {
+ _data = .;
+ *(.sdata)
+ *(.data)
+ *(.data1)
+ *(.data.*)
+ *(.got.plt)
+ *(.got)
+
+ /*
+ * The EFI loader doesn't seem to like a .bss section, so we
+ * stick it all into .data:
+ */
+ . = ALIGN(16);
+ _bss = .;
+ *(.sbss)
+ *(.scommon)
+ *(.dynbss)
+ *(.bss)
+ *(.bss.*)
+ *(COMMON)
+ . = ALIGN(16);
+ _bss_end = .;
+ _edata = .;
+ }
+ .rela.dyn : { *(.rela.dyn) }
+ .rela.plt : { *(.rela.plt) }
+ .rela.got : { *(.rela.got) }
+ .rela.data : { *(.rela.data) *(.rela.data*) }
+ _data_size = . - _etext;
+
+ . = ALIGN(4096);
+ .dynsym : { *(.dynsym) }
+ . = ALIGN(4096);
+ .dynstr : { *(.dynstr) }
+ . = ALIGN(4096);
+ .note.gnu.build-id : { *(.note.gnu.build-id) }
+ /DISCARD/ : {
+ *(.rel.reloc)
+ *(.eh_frame)
+ *(.note.GNU-stack)
+ }
+ .comment 0 : { *(.comment) }
+}