gdb/
[binutils-gdb.git] / ld / scripttempl / elfm68hc11.sc
index 50183b5ee6e3e893fd47560383f1706b4a0fa423..a6f2cce853a41c89bc42ca6e14a2b9d67a033c43 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Unusual variables checked by this code:
-#      NOP - two byte opcode for no-op (defaults to 0)
+#      NOP - four byte opcode for no-op (defaults to 0)
 #      DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
 #      OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
 #              (e.g., .PARISC.global)
@@ -28,31 +28,18 @@ CTOR=".ctors ${CONSTRUCTING-0} :
   {
     ${CONSTRUCTING+ PROVIDE (__CTOR_LIST__ = .); }
     ${CONSTRUCTING+${CTOR_START}}
-    *(.ctors)
-    /* We don't want to include the .ctor section from
-       from the crtend.o file until after the sorted ctors.
-       The .ctor section from the crtend file contains the
-       end of ctors marker and it must be last
-
-    KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
-    KEEP (*(SORT(.ctors.*)))
-    KEEP (*(.ctors)) */
+    KEEP (*(.ctors))
 
     ${CONSTRUCTING+${CTOR_END}}
     ${CONSTRUCTING+ PROVIDE(__CTOR_END__ = .); }
-  } ${RELOCATING+ > ${DATA_MEMORY}}"
+  } ${RELOCATING+ > ${TEXT_MEMORY}}"
 
 DTOR="  .dtors ${CONSTRUCTING-0} :
   {
     ${CONSTRUCTING+ PROVIDE(__DTOR_LIST__ = .); }
-    *(.dtors)
-    /*
-    KEEP (*crtbegin.o(.dtors))
-    KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
-    KEEP (*(SORT(.dtors.*)))
-    KEEP (*(.dtors)) */
+    KEEP (*(.dtors))
     ${CONSTRUCTING+ PROVIDE(__DTOR_END__ = .); }
-  } ${RELOCATING+ > ${DATA_MEMORY}}"
+  } ${RELOCATING+ > ${TEXT_MEMORY}}"
 
 
 VECTORS="
@@ -75,7 +62,7 @@ VECTORS="
   PROVIDE (_vectors_addr = DEFINED (vectors_addr) ? vectors_addr : 0xffc0);
   .vectors DEFINED (vectors_addr) ? vectors_addr : 0xffc0 :
   {
-    *(.vectors)
+    KEEP (*(.vectors))
   }"
 
 #
@@ -100,6 +87,7 @@ MEMORY
   page0 (rwx) : ORIGIN = 0x0, LENGTH = 256
   text  (rx)  : ORIGIN = ${ROM_START_ADDR}, LENGTH = ${ROM_SIZE}
   data        : ORIGIN = ${RAM_START_ADDR}, LENGTH = ${RAM_SIZE}
+  eeprom      : ORIGIN = ${EEPROM_START_ADDR}, LENGTH = ${EEPROM_SIZE}
 }
 
 /* Setup the stack on the top of the data memory bank.  */
@@ -110,20 +98,20 @@ esac
 
 STARTUP_CODE="
     /* Startup code.  */
-    *(.install0)       /* Section should setup the stack pointer.  */
-    *(.install1)       /* Place holder for applications.  */
-    *(.install2)       /* Optional installation of data sections in RAM.  */
-    *(.install3)       /* Place holder for applications.  */
-    *(.install4)       /* Section that calls the main.  */
+    KEEP (*(.install0))        /* Section should setup the stack pointer.  */
+    KEEP (*(.install1))        /* Place holder for applications.  */
+    KEEP (*(.install2))        /* Optional installation of data sections in RAM.  */
+    KEEP (*(.install3))        /* Place holder for applications.  */
+    KEEP (*(.install4))        /* Section that calls the main.  */
 "
 
 FINISH_CODE="
     /* Finish code.  */
-    *(.fini0)          /* Beginning of finish code (_exit symbol).  */
-    *(.fini1)          /* Place holder for applications.  */
-    *(.fini2)          /* C++ destructors.  */
-    *(.fini3)          /* Place holder for applications.  */
-    *(.fini4)          /* Runtime exit.  */
+    KEEP (*(.fini0))   /* Beginning of finish code (_exit symbol).  */
+    KEEP (*(.fini1))   /* Place holder for applications.  */
+    KEEP (*(.fini2))   /* C++ destructors.  */
+    KEEP (*(.fini3))   /* Place holder for applications.  */
+    KEEP (*(.fini4))   /* Runtime exit.  */
 "
 
 PRE_COMPUTE_DATA_SIZE="
@@ -165,6 +153,10 @@ BSS_DATA_RELOC="
   .scommon 0 : { *(.scommon) }
 "
 
+SOFT_REGS_RELOC="
+  .softregs 0 : { *(.softregs) }
+"
+
 cat <<EOF
 ${RELOCATING+/* Linker script for 68HC11 executable (PROM).  */}
 ${RELOCATING-/* Linker script for 68HC11 object file (ld -r).  */}
@@ -172,7 +164,7 @@ ${RELOCATING-/* Linker script for 68HC11 object file (ld -r).  */}
 OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
              "${LITTLE_OUTPUT_FORMAT}")
 OUTPUT_ARCH(${OUTPUT_ARCH})
-ENTRY(${ENTRY})
+${RELOCATING+ENTRY(${ENTRY})}
 
 ${RELOCATING+${LIB_SEARCH_DIRS}}
 ${RELOCATING+${EXECUTABLE_SYMBOLS}}
@@ -259,41 +251,41 @@ SECTIONS
       ${RELOCATING+*(.rela.bss.*)}
       ${RELOCATING+*(.rela.gnu.linkonce.b.*)}
     }
+  .rel.stext           ${RELOCATING-0} : { *(.rel.stest) }
   .rela.stext          ${RELOCATING-0} : { *(.rela.stest) }
+  .rel.etext           ${RELOCATING-0} : { *(.rel.etest) }
   .rela.etext          ${RELOCATING-0} : { *(.rela.etest) }
+  .rel.sdata           ${RELOCATING-0} : { *(.rel.sdata) }
   .rela.sdata          ${RELOCATING-0} : { *(.rela.sdata) }
+  .rel.edata           ${RELOCATING-0} : { *(.rel.edata) }
   .rela.edata          ${RELOCATING-0} : { *(.rela.edata) }
+  .rel.eit_v           ${RELOCATING-0} : { *(.rel.eit_v) }
   .rela.eit_v          ${RELOCATING-0} : { *(.rela.eit_v) }
-  .rela.ebss           ${RELOCATING-0} : { *(.rela.ebss) }
-  .rela.srodata                ${RELOCATING-0} : { *(.rela.srodata) }
-  .rela.erodata                ${RELOCATING-0} : { *(.rela.erodata) }
-  .rela.got            ${RELOCATING-0} : { *(.rela.got) }
-  .rela.ctors          ${RELOCATING-0} : { *(.rela.ctors) }
-  .rela.dtors          ${RELOCATING-0} : { *(.rela.dtors) }
-  .rela.init           ${RELOCATING-0} : { *(.rela.init) }
-  .rela.fini           ${RELOCATING-0} : { *(.rela.fini) }
-  .rela.plt            ${RELOCATING-0} : { *(.rela.plt) }
-
-  .rel.stext           ${RELOCATING-0} : { *(.rel.stest) }
-  .rel.etext           ${RELOCATING-0} : { *(.rel.etest) }
-  .rel.sdata           ${RELOCATING-0} : { *(.rel.sdata) }
-  .rel.edata           ${RELOCATING-0} : { *(.rel.edata) }
   .rel.ebss            ${RELOCATING-0} : { *(.rel.ebss) }
-  .rel.eit_v           ${RELOCATING-0} : { *(.rel.eit_v) }
+  .rela.ebss           ${RELOCATING-0} : { *(.rela.ebss) }
   .rel.srodata         ${RELOCATING-0} : { *(.rel.srodata) }
+  .rela.srodata                ${RELOCATING-0} : { *(.rela.srodata) }
   .rel.erodata         ${RELOCATING-0} : { *(.rel.erodata) }
+  .rela.erodata                ${RELOCATING-0} : { *(.rela.erodata) }
   .rel.got             ${RELOCATING-0} : { *(.rel.got) }
+  .rela.got            ${RELOCATING-0} : { *(.rela.got) }
   .rel.ctors           ${RELOCATING-0} : { *(.rel.ctors) }
+  .rela.ctors          ${RELOCATING-0} : { *(.rela.ctors) }
   .rel.dtors           ${RELOCATING-0} : { *(.rel.dtors) }
+  .rela.dtors          ${RELOCATING-0} : { *(.rela.dtors) }
   .rel.init            ${RELOCATING-0} : { *(.rel.init) }
+  .rela.init           ${RELOCATING-0} : { *(.rela.init) }
   .rel.fini            ${RELOCATING-0} : { *(.rel.fini) }
+  .rela.fini           ${RELOCATING-0} : { *(.rela.fini) }
   .rel.plt             ${RELOCATING-0} : { *(.rel.plt) }
+  .rela.plt            ${RELOCATING-0} : { *(.rela.plt) }
 
   /* Concatenate .page0 sections.  Put them in the page0 memory bank
      unless we are creating a relocatable file.  */
   .page0 :
   {
     *(.page0)
+    ${RELOCATING+*(.softregs)}
   } ${RELOCATING+ > page0}
 
   /* Start of text section.  */
@@ -321,6 +313,8 @@ SECTIONS
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     ${RELOCATING+*(.gnu.linkonce.t.*)}
+    ${RELOCATING+*(.tramp)}
+    ${RELOCATING+*(.tramp.*)}
 
     ${RELOCATING+${FINISH_CODE}}
 
@@ -331,7 +325,12 @@ SECTIONS
 
   .eh_frame ${RELOCATING-0} :
   {
-    *(.eh_frame)
+    KEEP (*(.eh_frame))
+  } ${RELOCATING+ > ${TEXT_MEMORY}}
+
+  .gcc_except_table ${RELOCATING-0} :
+  {
+    *(.gcc_except_table)
   } ${RELOCATING+ > ${TEXT_MEMORY}}
 
   .rodata  ${RELOCATING-0} :
@@ -350,6 +349,11 @@ SECTIONS
   ${RELOCATING+${CTOR}}
   ${RELOCATING+${DTOR}}
 
+  .jcr ${RELOCATING-0} :
+  {
+    KEEP (*(.jcr))
+  } ${RELOCATING+ > ${TEXT_MEMORY}}
+
   /* Start of the data section image in ROM.  */
   ${RELOCATING+__data_image = .;}
   ${RELOCATING+PROVIDE (__data_image = .);}
@@ -388,6 +392,7 @@ SECTIONS
 
   /* Relocation for some bss and data sections.  */
   ${RELOCATING-${BSS_DATA_RELOC}}
+  ${RELOCATING-${SOFT_REGS_RELOC}}
 
   .bss ${RELOCATING-0} :
   {
@@ -405,6 +410,12 @@ SECTIONS
   ${RELOCATING+__bss_size = SIZEOF(.bss);}
   ${RELOCATING+PROVIDE (__bss_size = SIZEOF(.bss));}
 
+  .eeprom ${RELOCATING-0} :
+  {
+    *(.eeprom)
+    *(.eeprom.*)
+  } ${RELOCATING+ > ${EEPROM_MEMORY}}
+
   ${RELOCATING+${VECTORS}}
 
   /* Stabs debugging sections.  */