1
0

link_arm.x 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
  2. "elf32-littlearm")
  3. OUTPUT_ARCH(arm)
  4. ENTRY(_start)
  5. SECTIONS
  6. {
  7. PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400)); . = SEGMENT_START("text-segment", 0x400);
  8. .rel.dyn :
  9. {
  10. *(.rel.init)
  11. *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
  12. *(.rel.fini)
  13. *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
  14. *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
  15. *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
  16. *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
  17. *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
  18. *(.rel.ctors)
  19. *(.rel.dtors)
  20. *(.rel.got)
  21. *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
  22. PROVIDE_HIDDEN (__rel_iplt_start = .);
  23. *(.rel.iplt)
  24. PROVIDE_HIDDEN (__rel_iplt_end = .);
  25. PROVIDE_HIDDEN (__rela_iplt_start = .);
  26. PROVIDE_HIDDEN (__rela_iplt_end = .);
  27. }
  28. .rela.dyn :
  29. {
  30. *(.rela.init)
  31. *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
  32. *(.rela.fini)
  33. *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
  34. *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
  35. *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
  36. *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
  37. *(.rela.ctors)
  38. *(.rela.dtors)
  39. *(.rela.got)
  40. *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
  41. PROVIDE_HIDDEN (__rel_iplt_start = .);
  42. PROVIDE_HIDDEN (__rel_iplt_end = .);
  43. PROVIDE_HIDDEN (__rela_iplt_start = .);
  44. *(.rela.iplt)
  45. PROVIDE_HIDDEN (__rela_iplt_end = .);
  46. }
  47. .text :
  48. {
  49. *(.text.unlikely .text.*_unlikely)
  50. *(.text.exit .text.exit.*)
  51. *(.text.startup .text.startup.*)
  52. *(.text.hot .text.hot.*)
  53. *(.text .stub .text.* .gnu.linkonce.t.*)
  54. *(.gnu.warning)
  55. *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
  56. *(.rodata .rodata.* .gnu.linkonce.r.*)
  57. }
  58. _edata = .; PROVIDE (edata = .);
  59. .data :
  60. {
  61. __data_start = . ;
  62. *(.interp)
  63. *(.got.plt) *(.igot.plt) *(.got) *(.igot)
  64. *(.data .data.* .gnu.linkonce.d.*)
  65. *(.dynbss)
  66. __bss_start = .;
  67. __bss_start__ = .;
  68. *(.bss .bss.* .gnu.linkonce.b.*)
  69. *(COMMON)
  70. . = ALIGN(. != 0 ? 32 / 8 : 1);
  71. _bss_end__ = . ; __bss_end__ = . ;
  72. }
  73. .eh_frame :
  74. {
  75. *(.eh_frame)
  76. }
  77. .rel.plt :
  78. {
  79. *(.rel.plt)
  80. }
  81. .rela.plt :
  82. {
  83. *(.rela.plt)
  84. }
  85. . = ALIGN(32 / 8);
  86. . = ALIGN(32 / 8);
  87. .hash : { *(.hash) }
  88. .gnu.hash : { *(.gnu.hash) }
  89. .dynsym : { *(.dynsym) }
  90. .dynstr : { *(.dynstr) }
  91. __end__ = . ;
  92. _end = .; PROVIDE (end = .);
  93. /* Stabs debugging sections. */
  94. .stab 0 : { *(.stab) }
  95. .stabstr 0 : { *(.stabstr) }
  96. /* DWARF debug sections. */
  97. .debug_aranges 0 : { *(.debug_aranges) }
  98. .debug_info 0 : { *(.debug_info) }
  99. .debug_abbrev 0 : { *(.debug_abbrev) }
  100. .debug_frame 0 : { *(.debug_frame) }
  101. .debug_line 0 : { *(.debug_line) }
  102. .debug_str 0 : { *(.debug_str) }
  103. .debug_loc 0 : { *(.debug_loc) }
  104. .debug_ranges 0 : { *(.debug_ranges) }
  105. .debug_macinfo 0 : { *(.debug_macinfo) }
  106. .debug_pubtypes 0 : { *(.debug_pubtypes) }
  107. }