This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RFA: Update MN10300 simulator linker script


Hi Jeff,

  The attached patch updates the simulator linker script for the
  MN10300 to add explicit placement for derived sections (eg .text.*
  or .bss.*).

  Tested with no regressions on a mn10300-elf toolchain.

  OK to apply ?

Cheers
  Nick

libgloss/ChangeLog
2009-05-07  Nick Clifton  <nickc@redhat.com>

	* mn10300/sim.ld: Add missing section names such as .bss.*
	.text.*, etc.  General tidy up.

Index: libgloss/mn10300/sim.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mn10300/sim.ld,v
retrieving revision 1.3
diff -c -3 -p -r1.3 sim.ld
*** libgloss/mn10300/sim.ld	20 May 2005 15:45:43 -0000	1.3
--- libgloss/mn10300/sim.ld	7 May 2009 13:27:28 -0000
***************
*** 1,41 ****
! /* Linker script for the MN10300 simulator.
! */
  
! OUTPUT_FORMAT("elf32-mn10300", "elf32-mn10300",
! 	      "elf32-mn10300")
  OUTPUT_ARCH(mn10300)
  ENTRY(_start)
  GROUP(-lc -leval -lgcc)
!  SEARCH_DIR(.);
! /* Do we need any of these for elf?
!    __DYNAMIC = 0;    */
  SECTIONS
  {
    /* Read-only sections, merged into text segment: */
    /* Start of RAM (leaving room for Cygmon data) */
    . = 4;
  
!   .interp     : { *(.interp) 	}
    .hash          : { *(.hash)		}
    .dynsym        : { *(.dynsym)		}
    .dynstr        : { *(.dynstr)		}
    .gnu.version   : { *(.gnu.version)	}
!   .gnu.version_d   : { *(.gnu.version_d)	}
!   .gnu.version_r   : { *(.gnu.version_r)	}
!   .rel.text      :
!     { *(.rel.text) *(.rel.gnu.linkonce.t*) }
!   .rela.text     :
!     { *(.rela.text) *(.rela.gnu.linkonce.t*) }
!   .rel.data      :
!     { *(.rel.data) *(.rel.gnu.linkonce.d*) }
!   .rela.data     :
!     { *(.rela.data) *(.rela.gnu.linkonce.d*) }
!   .rel.rodata    :
!     { *(.rel.rodata) *(.rel.gnu.linkonce.r*) }
!   .rela.rodata   :
!     { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
!   .rel.got       : { *(.rel.got)		}
!   .rela.got      : { *(.rela.got)		}
    .rel.ctors     : { *(.rel.ctors)	}
    .rela.ctors    : { *(.rela.ctors)	}
    .rel.dtors     : { *(.rel.dtors)	}
--- 1,32 ----
! /* Linker script for the MN10300 simulator.  */
  
! OUTPUT_FORMAT("elf32-mn10300", "elf32-mn10300", "elf32-mn10300")
  OUTPUT_ARCH(mn10300)
  ENTRY(_start)
  GROUP(-lc -leval -lgcc)
! SEARCH_DIR(.);
! 
  SECTIONS
  {
    /* Read-only sections, merged into text segment: */
    /* Start of RAM (leaving room for Cygmon data) */
    . = 4;
  
!   .interp	 : { *(.interp) 	}
    .hash          : { *(.hash)		}
    .dynsym        : { *(.dynsym)		}
    .dynstr        : { *(.dynstr)		}
    .gnu.version   : { *(.gnu.version)	}
!   .gnu.version_d : { *(.gnu.version_d)	}
!   .gnu.version_r : { *(.gnu.version_r)	}
!   .rel.text      : { *(.rel.text    .rel.text.*    .rel.gnu.linkonce.t*)  }
!   .rela.text     : { *(.rela.text   .rela.text.*   .rela.gnu.linkonce.t*) }
!   .rel.data      : { *(.rel.data    .rel.data.*    .rel.gnu.linkonce.d*)  }
!   .rela.data     : { *(.rela.data   .rela.data.*   .rela.gnu.linkonce.d*) }
!   .rel.rodata    : { *(.rel.rodata  .rel.rodata.*  .rel.gnu.linkonce.r*)  }
!   .rela.rodata   : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r*) }
!   .rel.got       : { *(.rel.got)	}
!   .rela.got      : { *(.rela.got)	}
    .rel.ctors     : { *(.rel.ctors)	}
    .rela.ctors    : { *(.rela.ctors)	}
    .rel.dtors     : { *(.rel.dtors)	}
*************** SECTIONS
*** 44,58 ****
    .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*)
--- 35,50 ----
    .rela.init     : { *(.rela.init)	}
    .rel.fini      : { *(.rel.fini)	}
    .rela.fini     : { *(.rela.fini)	}
!   .rel.bss       : { *(.rel.bss  .rel.bss.*  .rel.gnu.linkonce.b.*)	}
!   .rela.bss      : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)	}
!   .rel.plt       : { *(.rel.plt)	}
!   .rela.plt      : { *(.rela.plt)	}
!   .init          : { KEEP (*(.init))	} =0
!   .plt      	 : { *(.plt)		}
    .text      :
    {
!     *(.text .stub .text.*)
!     KEEP (*(.text.*personality*))
      /* .gnu.warning sections are handled specially by elf32.em.  */
      *(.gnu.warning)
      *(.gnu.linkonce.t*)
*************** SECTIONS
*** 60,75 ****
    } =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.  */
    . = ALIGN(1) + (. & (1 - 1));
    .data    :
    {
!     *(.data)
!     *(.gnu.linkonce.d*)
      CONSTRUCTORS
    }
    .data1   : { *(.data1) }
--- 52,67 ----
    } =0
    _etext = .;
    PROVIDE (etext = .);
!   .fini      : { KEEP (*(.fini))    } =0
!   .rodata    : { *(.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.  */
    . = ALIGN(1) + (. & (1 - 1));
    .data    :
    {
!     *(.data .data.* .gnu.linkonce.d.*)
!     KEEP (*(.gnu.linkonce.d.*personality*))
      CONSTRUCTORS
    }
    .data1   : { *(.data1) }
*************** SECTIONS
*** 94,108 ****
    /* 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.  */
!   .sdata     : { *(.sdata) }
    _edata  =  .;
    PROVIDE (edata = .);
    __bss_start = .;
!   .sbss      : { *(.sbss) *(.scommon) }
    .bss       :
    {
     *(.dynbss)
!    *(.bss)
     *(COMMON)
    }
    _end = . ;
--- 86,100 ----
    /* 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.  */
!   .sdata     : { *(.sdata .sdata.* .gnu.linkonce.s.*) }
    _edata  =  .;
    PROVIDE (edata = .);
    __bss_start = .;
!   .sbss      : { *(.dynsbss) *(.sbss .sbss.* .gnu.linkonce.sb.*) *(.scommon) }
    .bss       :
    {
     *(.dynbss)
!    *(.bss .bss.* .gnu.linkonce.b.*)
     *(COMMON)
    }
    _end = . ;
*************** SECTIONS
*** 128,134 ****
    .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) }
--- 120,126 ----
    .debug_aranges  0 : { *(.debug_aranges) }
    .debug_pubnames 0 : { *(.debug_pubnames) }
    /* DWARF 2 */
!   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
    .debug_abbrev   0 : { *(.debug_abbrev) }
    .debug_line     0 : { *(.debug_line) }
    .debug_frame    0 : { *(.debug_frame) }
*************** SECTIONS
*** 143,148 ****
    .debug_varnames  0 : { *(.debug_varnames) }
  
    .stack 0x80000 : { _stack = .; *(.stack) *(._stack) }
- 
-   /* These must appear regardless of  .  */
  }
--- 135,138 ----



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]