From 7e2dcde9c19c067c37c98891df60cc9d274845fc Mon Sep 17 00:00:00 2001 From: Till Straumann Date: Thu, 3 Nov 2005 21:38:36 +0000 Subject: 2005-11-03 straumanatslacdotstanforddotedu * startup/linkcmds: Removed. * Makefile.am, start/preload.S, startup/bspstart.c: use linkcmds from shared area - this version seemed broken anyways. Let the preloader use the generic 'entry_point_section' rather than its own 'mvme5500_preloader_section'. Also, let zero_bss use (implicit?) __SBSSxxx__ symbols. --- c/src/lib/libbsp/powerpc/mvme5500/ChangeLog | 9 + c/src/lib/libbsp/powerpc/mvme5500/Makefile.am | 4 +- c/src/lib/libbsp/powerpc/mvme5500/start/preload.S | 2 +- .../lib/libbsp/powerpc/mvme5500/startup/bspstart.c | 8 +- c/src/lib/libbsp/powerpc/mvme5500/startup/linkcmds | 301 --------------------- 5 files changed, 16 insertions(+), 308 deletions(-) delete mode 100644 c/src/lib/libbsp/powerpc/mvme5500/startup/linkcmds diff --git a/c/src/lib/libbsp/powerpc/mvme5500/ChangeLog b/c/src/lib/libbsp/powerpc/mvme5500/ChangeLog index bdcc5ddb5c..30fcfe8372 100644 --- a/c/src/lib/libbsp/powerpc/mvme5500/ChangeLog +++ b/c/src/lib/libbsp/powerpc/mvme5500/ChangeLog @@ -1,3 +1,12 @@ +2005-11-03 straumanatslacdotstanforddotedu + + * startup/linkcmds: Removed. + * Makefile.am, start/preload.S, startup/bspstart.c: use linkcmds + from shared area - this version seemed broken anyways. Let the + preloader use the generic 'entry_point_section' rather than its own + 'mvme5500_preloader_section'. Also, let zero_bss use (implicit?) + __SBSSxxx__ symbols. + 2005-11-03 Ralf Corsepius PR 844/bsps diff --git a/c/src/lib/libbsp/powerpc/mvme5500/Makefile.am b/c/src/lib/libbsp/powerpc/mvme5500/Makefile.am index 04383df66b..fe3640377f 100644 --- a/c/src/lib/libbsp/powerpc/mvme5500/Makefile.am +++ b/c/src/lib/libbsp/powerpc/mvme5500/Makefile.am @@ -21,7 +21,7 @@ noinst_PROGRAMS = include_bspdir = $(includedir)/bsp ### -dist_project_lib_DATA += startup/linkcmds +dist_project_lib_DATA += ../shared/startup/linkcmds # UNUSED EXTRA_DIST = startup/bootpstuff.c @@ -187,7 +187,7 @@ $(PROJECT_INCLUDE)/bsp/$(dirstamp): @: > $(PROJECT_INCLUDE)/bsp/$(dirstamp) PREINSTALL_DIRS += $(PROJECT_INCLUDE)/bsp/$(dirstamp) -$(PROJECT_LIB)/linkcmds: startup/linkcmds $(PROJECT_LIB)/$(dirstamp) +$(PROJECT_LIB)/linkcmds: ../shared/startup/linkcmds $(PROJECT_LIB)/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds diff --git a/c/src/lib/libbsp/powerpc/mvme5500/start/preload.S b/c/src/lib/libbsp/powerpc/mvme5500/start/preload.S index b5e607f72e..8262f41d7c 100644 --- a/c/src/lib/libbsp/powerpc/mvme5500/start/preload.S +++ b/c/src/lib/libbsp/powerpc/mvme5500/start/preload.S @@ -103,7 +103,7 @@ PUBLIC_VAR(__rtems_start) PUBLIC_VAR(__rtems_entry_point) PUBLIC_VAR(__rtems_end) - .section .mvme5500_preloader_section,"awx",@progbits + .section .entry_point_section,"awx",@progbits preload: /* find out where we are */ bl here diff --git a/c/src/lib/libbsp/powerpc/mvme5500/startup/bspstart.c b/c/src/lib/libbsp/powerpc/mvme5500/startup/bspstart.c index 3c4ade067e..c7b8b68b3b 100644 --- a/c/src/lib/libbsp/powerpc/mvme5500/startup/bspstart.c +++ b/c/src/lib/libbsp/powerpc/mvme5500/startup/bspstart.c @@ -211,10 +211,10 @@ void bsp_pretasking_hook(void) void zero_bss() { /* prevent these from being accessed in the short data areas */ - extern unsigned long __bss_start[], __sbss_start[], __sbss_end[]; - extern unsigned long __sbss2_start[], __sbss2_end[]; - memset(__sbss_start, 0, ((unsigned) __sbss_end) - ((unsigned)__sbss_start)); - memset(__sbss2_start, 0, ((unsigned) __sbss2_end) - ((unsigned)__sbss2_start)); + extern unsigned long __bss_start[], __SBSS_START__[], __SBSS_END__[]; + extern unsigned long __SBSS2_START__[], __SBSS2_END__[]; + memset(__SBSS_START__, 0, ((unsigned) __SBSS_END__) - ((unsigned)__SBSS_START__)); + memset(__SBSS2_START__, 0, ((unsigned) __SBSS2_END__) - ((unsigned)__SBSS2_START__)); memset(__bss_start, 0, ((unsigned) __rtems_end) - ((unsigned)__bss_start)); } diff --git a/c/src/lib/libbsp/powerpc/mvme5500/startup/linkcmds b/c/src/lib/libbsp/powerpc/mvme5500/startup/linkcmds deleted file mode 100644 index b8e8492414..0000000000 --- a/c/src/lib/libbsp/powerpc/mvme5500/startup/linkcmds +++ /dev/null @@ -1,301 +0,0 @@ -OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", - "elf32-powerpc") -OUTPUT_ARCH(powerpc) -ENTRY(_start) -/* Do we need any of these for elf? - __DYNAMIC = 0; */ -PROVIDE (__stack = 0); - - -MEMORY { - BOTTOM : ORIGIN = 0, LENGTH = 0x100 - VECTORS : ORIGIN = 0x100 , LENGTH = 0x3000-0x100 - CODE : ORIGIN = 0x3000 , LENGTH = 0x400000 -} -SECTIONS -{ - /* discard the 'shared/vector.S' entry point section */ - /DISCARD/ : - { - *(.entry_point_section) - } - - - .vectors : - { - /* should be the first thing... */ - *(.mvme5500_preloader_section) - - /* - * This section is used only if NO_DYNAMIC_EXCEPTION_VECTOR_INSTALL - * is defined in vectors/vectors.S - * *(.vectors) - * We actually RELY on dynamic vector installation since we need - * this space for the preloader... - */ - } > VECTORS - - - /* START OF THE LOADED IMAGE (parts moved by the preloader) */ - .image_start : - { - __rtems_start = ABSOLUTE(.); - } > CODE - - /* Read-only sections, merged into text segment: */ - .interp : { *(.interp) } > CODE - .hash : { *(.hash) } > CODE - .dynsym : { *(.dynsym) } > CODE - .dynstr : { *(.dynstr) } > CODE - .gnu.version : { *(.gnu.version) } > CODE - .gnu.version_d : { *(.gnu.version_d) } > CODE - .gnu.version_r : { *(.gnu.version_r) } > CODE - .rela.text : - { *(.rela.text) *(.rela.gnu.linkonce.t*) } > CODE - .rela.data : - { *(.rela.data) *(.rela.gnu.linkonce.d*) } > CODE - .rela.rodata : - { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } > CODE - .rela.got : { *(.rela.got) } > CODE - .rela.got1 : { *(.rela.got1) } > CODE - .rela.got2 : { *(.rela.got2) } > CODE - .rela.ctors : { *(.rela.ctors) } > CODE - .rela.dtors : { *(.rela.dtors) } > CODE - .rela.init : { *(.rela.init) } > CODE - .rela.fini : { *(.rela.fini) } > CODE - .rela.bss : { *(.rela.bss) *(.gnu.linkonce.b.*) } > CODE - .rela.plt : { *(.rela.plt) } > CODE - .rela.sdata : { *(.rela.sdata) } > CODE - .rela.sbss : { *(.rela.sbss) *(.gnu.linkonce.sb.*) } > CODE - .rela.sdata2 : { *(.rela.sdata2) } > CODE - .rela.sbss2 : { *(.rela.sbss2) } > CODE - - .init : { *(.init) } >CODE - - .text : - { - *(.text) - - /* - * Special FreeBSD sysctl sections. - */ - . = ALIGN (16); - __start_set_sysctl_set = .; - *(set_sysctl_*); - __stop_set_sysctl_set = ABSOLUTE(.); - *(set_domain_*); - *(set_pseudo_*); - - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - *(.gnu.linkonce.t*) - } > CODE - - .fini : { _fini = .; *(.fini) } >CODE - .rodata : { *(.rodata*) *(.gnu.linkonce.r*) } > CODE - .rodata1 : { *(.rodata1) } > CODE -_SDA2_BASE_ = __SDATA2_START__ + 0x8000; - .sdata2 : { *(.sdata2) *(.gnu.linkonce.s2.*) } > CODE - .sbss2 : { - PROVIDE (__sbss2_start = .); - *(.sbss2) *(.gnu.linkonce.sb2.*) - PROVIDE (__sbss2_end = .); - } > CODE - .eh_frame : { *.(eh_frame) } >CODE - _etext = .; - PROVIDE (etext = .); - /* Adjust the address for the data segment. We want to adjust up to - the same address within the page on the next page up. It would - be more correct to do this: - . = ALIGN(0x40000) + (ALIGN(8) & (0x40000 - 1)); - The current expression does not correctly handle the case of a - text segment ending precisely at the end of a page; it causes the - data segment to skip a page. The above expression does not have - this problem, but it will currently (2/95) cause BFD to allocate - a single segment, combining both text and data, for this case. - This will prevent the text segment from being shared among - multiple executions of the program; I think that is more - important than losing a page of the virtual address space (note - that no actual memory is lost; the page which is skipped can not - be referenced). */ - .data ALIGN(0x1000) : - { - PROVIDE(__DATA_START__ = ABSOLUTE(.) ); - *(.data .data.* .gnu.linkonce.d*) - CONSTRUCTORS - } > CODE - .data1 : { *(.data1) } > CODE - PROVIDE (__EXCEPT_START__ = .); - .gcc_except_table : { *(.gcc_except_table) } > CODE - PROVIDE (__EXCEPT_END__ = .); - .got1 : { *(.got1) } > CODE - .dynamic : { *(.dynamic) } > CODE - /* Put .ctors and .dtors next to the .got2 section, so that the pointers - get relocated with -mrelocatable. Also put in the .fixup pointers. - The current compiler no longer needs this, but keep it around for 2.7.2 */ - PROVIDE (_GOT2_START_ = .); - .got2 : { *(.got2) } > CODE -/* - PROVIDE (__CTOR_LIST__ = .); - .ctors : { *(.ctors) } > CODE - PROVIDE (__CTOR_END__ = .); -*/ - .ctors : - { - KEEP(*crtbegin.o(.ctors)) - KEEP(*(EXCLUDE_FILE(*crtend.o) .ctors)) - KEEP(*(SORT(.ctors.*))) - KEEP(*(.ctors)) - } > CODE - .dtors : - { - KEEP(*crtbegin.o(.dtors)) - KEEP(*(EXCLUDE_FILE(*crtend.o) .dtors)) - KEEP(*(SORT(.dtors.*))) - KEEP(*(.dtors)) - } > CODE -/* - PROVIDE (__DTOR_LIST__ = .); - .dtors : { *(.dtors) } > CODE - PROVIDE (__DTOR_END__ = .); -*/ - PROVIDE (_FIXUP_START_ = .); - .fixup : { *(.fixup) } > CODE - PROVIDE (_FIXUP_END_ = .); - PROVIDE (_GOT2_END_ = .); - PROVIDE (_GOT_START_ = .); - .got : { *(.got) } > CODE - .got.plt : { *(.got.plt) } > CODE - PROVIDE (_GOT_END_ = .); - - .jcr : { KEEP (*(.jcr)) } > CODE - - /* 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. */ -_SDA_BASE_ = __SDATA_START__ + 0x8000; - .sdata : { *(.sdata) *(.gnu.linkonce.s.*) } > CODE - _edata = .; - PROVIDE (edata = .); -/* END OF THE LOADED IMAGE (parts moved by the preloader) */ -/* BELOW THIS POINT, NO LOADABLE ITEMS MUST APPEAR */ - .sbss : - { - PROVIDE (__sbss_start = ABSOLUTE(.)); - *(.sbss) - *(.scommon) - *(.dynsbss) - PROVIDE (__sbss_end = ABSOLUTE(.)); - } > CODE - .plt : { *(.plt) } > CODE - .bss : - { - PROVIDE (__bss_start = ABSOLUTE(.)); - *(.dynbss) - *(.bss) - *(COMMON) - . = ALIGN(16); - } > CODE - /* proper alignment for SYSV stack - * (init stack is allocated just after __rtems_end - */ - . = ALIGN(16); - _end = . ; - __rtems_end = . ; - PROVIDE (end = .); - /DISCARD/ : - { - *(.comment) - } - - - /* 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) } - - /* DWARF debug sections. - 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) } - /* These must appear regardless of . */ -} - -/* "Conditional linking" is not supported, unfortunately. - * This BSP supports getting a network configuration - * from NVRAM settings. Hence, the startup code must - * access the 'rtems_bsdnet_config' structure. - * However, that symbol (and a couple of other networking - * related symbols) should only be referenced if the application - * actually does networking - otherwise a lot of - * code would pulled in from the libnetworking.a under - * all circumstances. - * - * bspstart.c uses these alias names and determines - * at runtime if they are void or valid (by comparing - * against the NULL address). - * - * Unfortunately, it is not possible to conditionally - * declare a symbol 'EXTERN' - hence we must rely on - * other code (probably cross-references within - * libnetworking itself) causing a reference to the - * 'real' symbols... - */ - -__BSP_wrap_rtems_bsdnet_bootp_boot_file_name = - DEFINED(rtems_bsdnet_bootp_boot_file_name) ? - rtems_bsdnet_bootp_boot_file_name - : 0 ; -__BSP_wrap_rtems_bsdnet_bootp_cmdline = - DEFINED(rtems_bsdnet_bootp_cmdline) ? - rtems_bsdnet_bootp_cmdline - : 0 ; -__BSP_wrap_rtems_bsdnet_bootp_server_address = - DEFINED(rtems_bsdnet_bootp_server_address) ? - rtems_bsdnet_bootp_server_address - : 0 ; -__BSP_wrap_rtems_bsdnet_config = - DEFINED(rtems_bsdnet_config) ? - rtems_bsdnet_config - : 0 ; -__BSP_wrap_rtems_bsdnet_do_bootp = - DEFINED(rtems_bsdnet_do_bootp) ? - rtems_bsdnet_do_bootp - : 0 ; -__BSP_wrap_inet_pton = - DEFINED(inet_pton) ? - inet_pton - : 0 ; -__BSP_wrap_rtems_bsdnet_loopattach = - DEFINED(rtems_bsdnet_loopattach) ? - rtems_bsdnet_loopattach - : 0 ; -- cgit v1.2.3