Make __{e,g}p correctly start relative to the beginning of the section; Cleanup
authorMichael Meissner <gnu@the-meissners.org>
Fri, 13 Dec 1996 20:37:35 +0000 (20:37 +0000)
committerMichael Meissner <gnu@the-meissners.org>
Fri, 13 Dec 1996 20:37:35 +0000 (20:37 +0000)
ld/ChangeLog
ld/scripttempl/v850.sc

index 66c41e4e825b4c42fef011f0ac2d7144c5b101e7..17729b8103dddb02608297abdf164142e85113fb 100644 (file)
@@ -1,3 +1,15 @@
+start-sanitize-v850
+Fri Dec 13 14:08:50 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
+
+       * scripttempl/v850.sc: Make sure __{e,g}p start relative to the
+       {s,t}data sections.  Do not emit any linker generated symbols if
+       -r.  Use {TEXT,{Z,S,T}DATA}_START_ADDR variables to initialize
+       where the different sections go.  Change some whitespace.
+
+       * emulparams/v850.sh ({TEXT,{Z,S,T}DATA}_START_ADDR): Define
+       appropriately.  Remove crud not used anymore.   
+
+end-sanitize-v850
 Fri Dec 13 10:19:57 1996  Jeffrey A Law  (law@cygnus.com)
 
        * Makefile.in (emn10200.c): Add dependencies.
@@ -31,8 +43,14 @@ Mon Dec  2 11:43:50 1996  Ian Lance Taylor  <ian@cygnus.com>
 
 Wed Nov 27 03:22:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
 
-       * scripttempl/elf.sc: Add the remaining DWARF sections.
-       * scripttempl/{elfd10v.sc,elfmips.sc,elfppc.sc,v850.sc}: Likewise.
+       * scripttempl/elf{,mips,ppc}.sc: Add the remaining DWARF sections.
+
+start-sanitize-d10v
+       * scripttempl/elfd10v.sc: Likewise.
+end-sanitize-d10v
+start-sanitize-v850
+       * scripttempl/v850.sc: Likewise.
+end-sanitize-v850
 
 Tue Nov 26 16:58:33 1996  Ian Lance Taylor  <ian@cygnus.com>
 
index 6e83dc7955914fca46d570f1afb36ad7dd41aff7..1f6ddf0f34bbe058ec82abbc8d858c76b4f0a706 100644 (file)
@@ -7,110 +7,158 @@ SEARCH_DIR(.);
 /*/critters/slug/grossman/install/sun4/v850-elf/lib*/
 SECTIONS
 {
+  /* This saves a little space in the ELF file, since the zda starts
+     at a higher location that the ELF headers take up.  */
+
+  .zdata ${ZDATA_START_ADDR} : {
+       *(.zdata)
+       *(.rozdata)
+       *(.zbss)
+       *(reszdata)
+       *(romzdata)
+       *(romzbss)
+  }
+
   /* Read-only sections, merged into text segment: */
-  . = 0x160;
-  .interp     : { *(.interp)   }
-  .hash          : { *(.hash)          }
-  .dynsym        : { *(.dynsym)                }
-  .dynstr        : { *(.dynstr)                }
-  .rel.text      : { *(.rel.text)              }
-  .rela.text     : { *(.rela.text)     }
-  .rel.data      : { *(.rel.data)              }
-  .rela.data     : { *(.rela.data)     }
-  .rel.rodata    : { *(.rel.rodata)    }
-  .rela.rodata   : { *(.rela.rodata)   }
-  .rel.got       : { *(.rel.got)               }
-  .rela.got      : { *(.rela.got)              }
-  .rel.ctors     : { *(.rel.ctors)     }
-  .rela.ctors    : { *(.rela.ctors)    }
-  .rel.dtors     : { *(.rel.dtors)     }
-  .rela.dtors    : { *(.rela.dtors)    }
-  .rel.init      : { *(.rel.init)      }
-  .rela.init     : { *(.rela.init)     }
-  .rel.fini      : { *(.rel.fini)      }
-  .rela.fini     : { *(.rela.fini)     }
-  .rel.bss       : { *(.rel.bss)               }
-  .rela.bss      : { *(.rela.bss)              }
-  .rel.plt       : { *(.rel.plt)               }
-  .rela.plt      : { *(.rela.plt)              }
-  .init          : { *(.init)  } =0
-  .plt      : { *(.plt)        }
-  .zdata    : { *(.zdata) *(.zrodata) *(.zbss*) }
-  . = 0x100000;
-  .text      :
-  {
+  . = ${TEXT_START_ADDR};
+  .interp      : { *(.interp) }
+  .hash                : { *(.hash) }
+  .dynsym      : { *(.dynsym) }
+  .dynstr      : { *(.dynstr) }
+  .rel.text    : { *(.rel.text) }
+  .rela.text   : { *(.rela.text) }
+  .rel.data    : { *(.rel.data) }
+  .rela.data   : { *(.rela.data) }
+  .rel.rodata  : { *(.rel.rodata) }
+  .rela.rodata : { *(.rela.rodata) }
+  .rel.got     : { *(.rel.got) }
+  .rela.got    : { *(.rela.got) }
+  .rel.ctors   : { *(.rel.ctors) }
+  .rela.ctors  : { *(.rela.ctors) }
+  .rel.dtors   : { *(.rel.dtors) }
+  .rela.dtors  : { *(.rela.dtors) }
+  .rel.init    : { *(.rel.init) }
+  .rela.init   : { *(.rela.init) }
+  .rel.fini    : { *(.rel.fini) }
+  .rela.fini   : { *(.rela.fini) }
+  .rel.bss     : { *(.rel.bss) }
+  .rela.bss    : { *(.rela.bss) }
+  .rel.plt     : { *(.rel.plt) }
+  .rela.plt    : { *(.rela.plt) }
+  .init                : { *(.init) } =0
+  .plt         : { *(.plt) }
+
+  .text                : {
     *(.text)
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.gnu.linkonce.t*)
   } =0
-  _etext = .;
-  PROVIDE (etext = .);
-  .fini      : { *(.fini)    } =0
-  .rodata    : { *(.rodata) *(.gnu.linkonce.r*) }
-  .rodata1   : { *(.rodata1) }
-  /* Adjust the address for the data segment.  We want to adjust up to
-     the same address within the page on the next page up.  */
-  .data    :
-  {
+
+  ${RELOCATING+_etext = .;}
+  ${RELOCATING+PROVIDE (etext = .);}
+
+  .fini                : { *(.fini)    } =0
+  .rodata      : { *(.rodata) *(.gnu.linkonce.r*) }
+  .rodata1     : { *(.rodata1) }
+
+  .data                : {
     *(.data)
     *(.gnu.linkonce.d*)
     CONSTRUCTORS
   }
-  .data1   : { *(.data1) }
-  .ctors         :
-  {
-    ___ctors = .;
+  .data1       : { *(.data1) }
+  .ctors       : {
+    ${RELOCATING+___ctors = .;}
     *(.ctors)
-    ___ctors_end = .;
+    ${RELOCATING+___ctors_end = .;}
   }
-  .dtors         :
-  {
-    ___dtors = .;
+
+  .dtors       : {
+    ${RELOCATING+___dtors = .;}
     *(.dtors)
-    ___dtors_end = .;
+    ${RELOCATING+___dtors_end = .;}
+  }
+
+  .got         : { *(.got.plt) *(.got) }
+  .dynamic     : { *(.dynamic) }
+
+  .tdata ${TDATA_START_ADDR} : {
+       ${RELOCATING+PROVIDE (__ep = .);}
+       *(.tdata)
   }
-  .got           : { *(.got.plt) *(.got) }
-  .dynamic       : { *(.dynamic) }
-  ${RELOCATING+ __ep = ALIGN (4);}
-  .tdata     : { *(.tdata) }
+
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
      we can shorten the on-disk segment size.  */
-  ${RELOCATING+ __gp = ALIGN(4) + 0x8000;}
-  .sdata     : { *(.rosdata) *(.sdata) }
-  _edata  =  .;
-  PROVIDE (edata = .);
-  __bss_start = .;
-  .sbss      : { *(.sbss) *(.scommon) }
+  .sdata ${SDATA_START_ADDR} : {
+       ${RELOCATING+PROVIDE (__gp = . + 0x8000);}
+       *(.rosdata)
+       *(.sdata)
+       ${RELOCATING+__sbss_start = .;}
+       *(.sbss)
+       *(.scommon)
+  }
+
+  ${RELOCATING+_edata  = DEFINED (__sbss_start) ? __sbss_start : . ;}
+  ${RELOCATING+PROVIDE (edata = _edata);}
+
   .bss       :
   {
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
+       ${RELOCATING+__bss_start = DEFINED (__sbss_start) ? __sbss_start : . ;}
+       *(.dynbss)
+       *(.bss)
+       *(COMMON)
   }
-  _end = . ;
-  PROVIDE (end = .);
+
+  ${RELOCATING+_end = . ;}
+  ${RELOCATING+PROVIDE (end = .);}
+
   /* Stabs debugging sections.  */
-  .stab 0 : { *(.stab) }
-  .stabstr 0 : { *(.stabstr) }
-  .stab.excl 0 : { *(.stab.excl) }
-  .stab.exclstr 0 : { *(.stab.exclstr) }
-  .stab.index 0 : { *(.stab.index) }
-  .stab.indexstr 0 : { *(.stab.indexstr) }
-  .comment 0 : { *(.comment) }
+  .stab 0              : { *(.stab) }
+  .stabstr 0           : { *(.stabstr) }
+  .stab.excl 0         : { *(.stab.excl) }
+  .stab.exclstr 0      : { *(.stab.exclstr) }
+  .stab.index 0                : { *(.stab.index) }
+  .stab.indexstr 0     : { *(.stab.indexstr) }
+  .comment 0           : { *(.comment) }
+
   /* DWARF debug sections.
-     Symbols in the .debug DWARF section are relative to the beginning of the
-     section so we begin .debug at 0.  It's not clear yet what needs to happen
-     for the others.   */
-  .debug          0 : { *(.debug) }
-  .debug_srcinfo  0 : { *(.debug_srcinfo) }
-  .debug_aranges  0 : { *(.debug_aranges) }
-  .debug_pubnames 0 : { *(.debug_pubnames) }
-  .debug_sfnames  0 : { *(.debug_sfnames) }
-  .line           0 : { *(.line) }
-/*  .stack 0xffffec00 : { _stack = .; *(.stack) }*/
-  .stack 0x200000 : { _stack = .; *(.stack) }
+     Symbols in the DWARF debugging sections are relative to the beginning
+     of the section so we begin them at 0.  */
+
+  /* DWARF 1 */
+  .debug          0    : { *(.debug) }
+  .line           0    : { *(.line) }
+
+  /* GNU DWARF 1 extensions */
+  .debug_srcinfo  0    : { *(.debug_srcinfo) }
+  .debug_sfnames  0    : { *(.debug_sfnames) }
+
+  /* DWARF 1.1 and DWARF 2 */
+  .debug_aranges  0    : { *(.debug_aranges) }
+  .debug_pubnames 0    : { *(.debug_pubnames) }
+
+  /* DWARF 2 */
+  .debug_info     0    : { *(.debug_info) }
+  .debug_abbrev   0    : { *(.debug_abbrev) }
+  .debug_line     0    : { *(.debug_line) }
+  .debug_frame    0    : { *(.debug_frame) }
+  .debug_str      0    : { *(.debug_str) }
+  .debug_loc      0    : { *(.debug_loc) }
+  .debug_macinfo  0    : { *(.debug_macinfo) }
+
+  /* SGI/MIPS DWARF 2 extensions */
+  .debug_weaknames 0   : { *(.debug_weaknames) }
+  .debug_funcnames 0   : { *(.debug_funcnames) }
+  .debug_typenames 0   : { *(.debug_typenames) }
+  .debug_varnames  0   : { *(.debug_varnames) }
+
+/*  .stack 0xffffec00  : { _stack = .; *(.stack) }*/
+  .stack 0x200000      : {
+       ${RELOCATING+_stack = .;}
+       *(.stack)
+  }
   /* These must appear regardless of  .  */
 }
 EOF