pal.lds 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
  2. OUTPUT_ARCH(i386:x86-64)
  3. ENTRY(pal_start);
  4. SECTIONS
  5. {
  6. /* Read-only sections, merged into text segment; */
  7. text_start = .;
  8. . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
  9. .hash : { *(.hash) }
  10. .note.gnu.build-id : { *(.note.gnu.build-id) }
  11. .dynsym : { *(.dynsym) }
  12. .dynstr : { *(.dynstr) }
  13. .gnu.version : { *(.gnu.version) }
  14. .gnu.version_d : { *(.gnu.version_d) }
  15. .gnu.version_r : { *(.gnu.version_r) }
  16. .rela.dyn : { *(.rela.dyn) }
  17. .rela.plt : { *(.rela.plt) }
  18. .init : { *(.init) }
  19. .plt : { *(.plt) *(.iplt) }
  20. .text :
  21. {
  22. /* the rest of text segments */
  23. *(.text .stub .text.*);
  24. }
  25. .fini : { *(.fini) }
  26. .rodata :
  27. {
  28. /* the rest of rodata */
  29. *(.rodata .rodata.*)
  30. }
  31. .eh_frame_hdr : { *(.eh_frame_hdr) }
  32. .eh_frame : ONLY_IF_RO { KEEP(*(.eh_frame)) }
  33. text_end = .;
  34. /* now adjust the address for the data segment */
  35. . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
  36. data_start = .;
  37. .data.rel.ro : { KEEP(*(.data.rel.ro)) }
  38. .ctors : { KEEP(*(.ctors)) }
  39. .dtors : { KEEP(*(.dtors)) }
  40. .jcr : { KEEP(*(.jcr)) }
  41. .dynamic : { *(.dynamic) }
  42. .got : { *(.got) *(.igot) }
  43. .got.plt : { *(.got.plt) *(.igot.plt) }
  44. .data :
  45. {
  46. /* the rest of data segment */
  47. *(.data .data.*);
  48. }
  49. .bss :
  50. {
  51. *(.bss .bss.*)
  52. *(COMMON)
  53. }
  54. . = DATA_SEGMENT_END(.);
  55. data_end = .;
  56. }