018-mcfv4e_linker_script_update.patch 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. From 3aa2c28ff4271e9232b6c98ba000804de3ed3f33 Mon Sep 17 00:00:00 2001
  2. From: Kurt Mahan <[email protected]>
  3. Date: Mon, 26 Nov 2007 23:41:23 -0700
  4. Subject: [PATCH] Rewrite coldfire linker script.
  5. LTIBName: mcfv4e-linker-script-update
  6. Signed-off-by: Kurt Mahan <[email protected]>
  7. ---
  8. arch/m68k/coldfire/vmlinux-cf.lds | 107 ++++++++++++++++++++++++-------------
  9. arch/m68k/kernel/vmlinux.lds.S | 3 +-
  10. 2 files changed, 72 insertions(+), 38 deletions(-)
  11. --- a/arch/m68k/coldfire/vmlinux-cf.lds
  12. +++ b/arch/m68k/coldfire/vmlinux-cf.lds
  13. @@ -1,76 +1,115 @@
  14. -/* ld script to make m68k Coldfire Linux kernel */
  15. +/* ld script to make m68k Coldfire Linux kernel
  16. + *
  17. + * Derived from arch/m68k/kernel/vmlinux-std.lds
  18. + *
  19. + * Updated 11/26/2007 for new CodeSourcery toolset
  20. + * by Kurt Mahan <[email protected]>
  21. + */
  22. +
  23. +#define LOAD_OFFSET 0x00000000
  24. #include <asm-generic/vmlinux.lds.h>
  25. +#include <asm/page_offset.h>
  26. +
  27. +#define START_OFFSET 0x00020000
  28. +#define IMAGE_START PAGE_OFFSET_RAW + START_OFFSET
  29. OUTPUT_FORMAT("elf32-m68k", "elf32-m68k", "elf32-m68k")
  30. OUTPUT_ARCH(m68k)
  31. ENTRY(_stext)
  32. jiffies = jiffies_64 + 4;
  33. +
  34. SECTIONS
  35. {
  36. - . = 0xC0020000;
  37. - _text = .; /* Text and read-only data */
  38. - .text : {
  39. + . = IMAGE_START;
  40. + .text.head : AT(ADDR(.text.head) - LOAD_OFFSET) {
  41. + _text = .; /* Text and read-only data */
  42. *(.text.head)
  43. + } :text = 0x4e75
  44. +
  45. + .text : AT(ADDR(.text) - LOAD_OFFSET) {
  46. TEXT_TEXT
  47. SCHED_TEXT
  48. LOCK_TEXT
  49. *(.fixup)
  50. *(.gnu.warning)
  51. - } :text = 0x4e75
  52. -
  53. + } :text = 0x4e75
  54. _etext = .; /* End of text section */
  55. . = ALIGN(16);
  56. - __start___ex_table = .;
  57. - __ex_table : { *(__ex_table) }
  58. - __stop___ex_table = .;
  59. + __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
  60. + __start___ex_table = .;
  61. + *(__ex_table)
  62. + __stop___ex_table = .;
  63. + }
  64. RODATA
  65. - .data : { /* Data */
  66. + . = ALIGN(8192);
  67. + .data : AT(ADDR(.data) - LOAD_OFFSET) { /* Data */
  68. DATA_DATA
  69. CONSTRUCTORS
  70. - }
  71. + } :data
  72. - .bss : { *(.bss) } /* BSS */
  73. + .bss : AT(ADDR(.bss) - LOAD_OFFSET) { /* BSS */
  74. + *(.bss)
  75. + }
  76. . = ALIGN(16);
  77. - .data.cacheline_aligned : { *(.data.cacheline_aligned) } :data
  78. + .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET ) {
  79. + *(.data.cacheline_aligned)
  80. + } :data
  81. _edata = .; /* End of data section */
  82. . = ALIGN(8192); /* Initrd */
  83. - __init_begin = .;
  84. - .init.text : {
  85. + .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) {
  86. + __init_begin = .;
  87. _sinittext = .;
  88. *(.init.text)
  89. _einittext = .;
  90. }
  91. - .init.data : { *(.init.data) }
  92. +
  93. + .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) {
  94. + *(.init.data)
  95. + }
  96. +
  97. . = ALIGN(16);
  98. - __setup_start = .;
  99. - .init.setup : { *(.init.setup) }
  100. - __setup_end = .;
  101. - __initcall_start = .;
  102. - .initcall.init : {
  103. + .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) {
  104. + __setup_start = .;
  105. + *(.init.setup)
  106. + __setup_end = .;
  107. + }
  108. +
  109. + .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) {
  110. + __initcall_start = .;
  111. INITCALLS
  112. + __initcall_end = .;
  113. }
  114. - __initcall_end = .;
  115. - __con_initcall_start = .;
  116. - .con_initcall.init : { *(.con_initcall.init) }
  117. - __con_initcall_end = .;
  118. +
  119. + .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) {
  120. + __con_initcall_start = .;
  121. + *(.con_initcall.init)
  122. + __con_initcall_end = .;
  123. + }
  124. +
  125. SECURITY_INIT
  126. +
  127. #ifdef CONFIG_BLK_DEV_INITRD
  128. . = ALIGN(8192);
  129. - __initramfs_start = .;
  130. - .init.ramfs : { *(.init.ramfs) }
  131. - __initramfs_end = .;
  132. + .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) {
  133. + __initramfs_start = .;
  134. + *(.init.ramfs)
  135. + __initramfs_end = .;
  136. + }
  137. #endif
  138. +
  139. . = ALIGN(8192);
  140. __init_end = .;
  141. - .data.init_task : { *(.data.init_task) } /* The initial task and kernel stack */
  142. + .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
  143. + *(.data.init_task) /* The initial task and kernel stack */
  144. + }
  145. _end = . ;
  146. @@ -79,14 +118,8 @@ SECTIONS
  147. *(.exit.text)
  148. *(.exit.data)
  149. *(.exitcall.exit)
  150. - }
  151. + }
  152. /* Stabs debugging sections. */
  153. - .stab 0 : { *(.stab) }
  154. - .stabstr 0 : { *(.stabstr) }
  155. - .stab.excl 0 : { *(.stab.excl) }
  156. - .stab.exclstr 0 : { *(.stab.exclstr) }
  157. - .stab.index 0 : { *(.stab.index) }
  158. - .stab.indexstr 0 : { *(.stab.indexstr) }
  159. - .comment 0 : { *(.comment) }
  160. + STABS_DEBUG
  161. }
  162. --- a/arch/m68k/kernel/vmlinux.lds.S
  163. +++ b/arch/m68k/kernel/vmlinux.lds.S
  164. @@ -1,6 +1,7 @@
  165. PHDRS
  166. {
  167. - text PT_LOAD FILEHDR PHDRS FLAGS (7);
  168. + headers PT_PHDR PHDRS ;
  169. + text PT_LOAD FILEHDR PHDRS FLAGS (5);
  170. data PT_LOAD FLAGS (7);
  171. }
  172. #ifdef CONFIG_SUN3