RFA: Update MN10300 simulator linker script

Jeff Johnston jjohnstn@redhat.com
Thu May 7 19:09:00 GMT 2009


Yes, by all means go ahead.

-- Jeff J.

Nick Clifton wrote:
> 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 ----
>
>
>   



More information about the Newlib mailing list