Index: bsps/powerpc/ss555/start/linkcmds
===================================================================
--- bsps/powerpc/ss555/start/linkcmds	(revision 99de42c62eda02c1942380fcfed8ade899bdfe7c)
+++ bsps/powerpc/ss555/start/linkcmds	(revision ec1dd51aae0cbce0560b3d72a6f86c938340f2fc)
@@ -16,5 +16,5 @@
 
 OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc")
-OUTPUT_ARCH(powerpc) 
+OUTPUT_ARCH(powerpc)
 STARTUP(start.o)
 ENTRY(start)
@@ -36,5 +36,5 @@
      * For the MPC555, we use the compressed vector table format which puts
      * all of the exception vectors before 0x100.
-     */ 
+     */
     *(.vectors)
   }
@@ -43,5 +43,5 @@
   {
     /* Read-only sections, merged into text segment: */
-    
+
     text.start = .;
 
@@ -55,5 +55,5 @@
     /* C++ constructors/destructors */
     *(.gnu.linkonce.t*)
-	     
+
     /*  Initialization and finalization code.
      *
@@ -66,5 +66,5 @@
      *  ecrtn.o; the linker won't look for a file to match a wildcard.  The
      *  wildcard also means that it doesn't matter which directory ecrti.o
-     *  and ecrtn.o are in. 
+     *  and ecrtn.o are in.
      */
     PROVIDE (_init = .);
@@ -72,5 +72,5 @@
     *(.init)
     *ecrtn.o(.init)
-    
+
     PROVIDE (_fini = .);
     *ecrti.o(.fini)
@@ -78,5 +78,5 @@
     *ecrtn.o(.init)
 
-    /* 
+    /*
      *  C++ constructors and destructors for static objects.
      *  PowerPC EABI does not use crtstuff yet, so we build "old-style"
@@ -84,5 +84,5 @@
      *  end terminate with a NULL entry.
      */
-    PROVIDE (__CTOR_LIST__ = .);	     
+    PROVIDE (__CTOR_LIST__ = .);
     /* LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) */
     *crtbegin.o(.ctors)
@@ -91,5 +91,5 @@
     LONG(0)
     PROVIDE (__CTOR_END__ = .);
-	
+
     PROVIDE (__DTOR_LIST__ = .);
     /* LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) */
@@ -99,5 +99,5 @@
     LONG(0)
     PROVIDE (__DTOR_END__ = .);
-	
+
     /*
      * Special FreeBSD sysctl sections.
@@ -140,6 +140,6 @@
     _TLS_Data_end = .;
 
-    /* 
-     * .data section contents, copied to RAM at system startup. 
+    /*
+     * .data section contents, copied to RAM at system startup.
      */
     . = ALIGN(0x20);
@@ -164,29 +164,29 @@
    */
   . = DEFINED(RTEMS_DEBUG) ? . : int_ram_org;
- 
+
   .data : AT (data.contents.start)
   {
     data.start = .;
-    
+
     *(.data)
     *(.data.*)
     KEEP (*(SORT(.rtemsrwset.*)))
     *(.data1)
-    
+
     PROVIDE (__SDATA_START__ = .);
     *(.sdata .sdata.* .gnu.linkonce.s.*)
     PROVIDE (__SDATA_END__ = .);
-    
+
     PROVIDE (__EXCEPT_START__ = .);
     *(.gcc_except_table*)
     PROVIDE (__EXCEPT_END__ = .);
-    
+
     PROVIDE(__GOT_START__ = .);
-    *(.got.plt) 
+    *(.got.plt)
     *(.got)
     PROVIDE(__GOT_END__ = .);
-	
+
     *(.got1)
-    
+
     PROVIDE (__GOT2_START__ = .);
     PROVIDE (_GOT2_START_ = .);
@@ -194,5 +194,5 @@
     PROVIDE (__GOT2_END__ = .);
     PROVIDE (_GOT2_END_ = .);
-	
+
     PROVIDE (__FIXUP_START__ = .);
     PROVIDE (_FIXUP_START_ = .);
@@ -205,7 +205,9 @@
      */
     PROVIDE (__SDATA2_START__ = .);
+    bsp_section_sdata_begin = .;
     *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
     *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
     PROVIDE (__SDATA2_END__ = .);
+    bsp_section_sdata_end = .;
 
     data.end = .;
@@ -217,12 +219,18 @@
   {
     PROVIDE (__sbss_start = .); PROVIDE (___sbss_start = .);
+    bsp_section_sbss_begin = .;
     *(.dynsbss)
     *(.sbss .sbss.* .gnu.linkonce.sb.*)
     *(.scommon)
     PROVIDE (__sbss_end = .); PROVIDE (___sbss_end = .);
+    bsp_section_sbss_end = .;
+    bsp_section_sdata_libdl_begin = .;
+    . = DEFINED(bsp_section_small_data_area_size) ?
+          bsp_section_sdata_begin + bsp_section_small_data_area_size : .;
+    bsp_section_sdata_libdl_end = .;
   }
   .bss :
   {
-    *(.dynbss)	
+    *(.dynbss)
     *(.bss .bss* .gnu.linkonce.b*)
     *(COMMON)
@@ -248,7 +256,7 @@
   WorkAreaBase = .;
 
- 
-  /* 
-   * Internal I/O devices 
+
+  /*
+   * Internal I/O devices
    */
   .usiu 0x002FC000:		/* unified system interface unit */
@@ -284,5 +292,5 @@
   .stab.indexstr 0 : { *(.stab.indexstr) }
   .comment 0 : { *(.comment) }
-  
+
   /* DWARF debug sections.
      Symbols in the DWARF debugging sections are relative to the beginning
@@ -291,13 +299,13 @@
   .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) }
@@ -308,5 +316,5 @@
   .debug_loc      0 : { *(.debug_loc) }
   .debug_macinfo  0 : { *(.debug_macinfo) }
-  
+
   /* SGI/MIPS DWARF 2 extensions */
   .debug_weaknames 0 : { *(.debug_weaknames) }
