linker-script.ld 863 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*
  2. Linker Script For QEMU RV32 Virtual Machine Type `virt`
  3. */
  4. OUTPUT_ARCH( "riscv" )
  5. ENTRY( _start )
  6. MEMORY
  7. {
  8. ram (wxa!ri) : ORIGIN = 0x80000000, LENGTH = 128M
  9. }
  10. PHDRS
  11. {
  12. text PT_LOAD;
  13. data PT_LOAD;
  14. bss PT_LOAD;
  15. }
  16. SECTIONS
  17. {
  18. .text : {
  19. PROVIDE(_text_start = .);
  20. *(.text.init) *(.text .text.*)
  21. PROVIDE(_text_end = .);
  22. } >ram AT>ram :text
  23. .rodata : {
  24. PROVIDE(_rodata_start = .);
  25. *(.rodata .rodata.*)
  26. PROVIDE(_rodata_end = .);
  27. } >ram AT>ram :text
  28. .data : {
  29. . = ALIGN(4096);
  30. PROVIDE(_data_start = .);
  31. *(.sdata .sdata.*) *(.data .data.*)
  32. PROVIDE(_data_end = .);
  33. } >ram AT>ram :data
  34. .bss :{
  35. PROVIDE(_bss_start = .);
  36. *(.sbss .sbss.*) *(.bss .bss.*)
  37. PROVIDE(_bss_end = .);
  38. } >ram AT>ram :bss
  39. PROVIDE(_memory_start = ORIGIN(ram));
  40. PROVIDE(_memory_end = ORIGIN(ram) + LENGTH(ram));
  41. }