#              (e.g., .PARISC.global)
 #      EXECUTABLE_SYMBOLS - symbols that must be defined for an
 #              executable (e.g., _DYNAMIC_LINK)
+#      OTHER_BSS_SYMBOLS - symbols that appear at the start of the
+#              .bss section besides __bss_start.
 #
 # When adding sections, do note that the names of some sections are used
 # when specifying the start address of the next.
     CREATE_OBJECT_SYMBOLS
     ${RELOCATING+_etext = .;}
   }
-  .init    ${RELOCATING+.} ${RELOCATING-0} : { *(.init)    } =${NOP-0}
-  .fini    ${RELOCATING+.} ${RELOCATING-0} : { *(.fini)    } =${NOP-0}
-  .ctors   ${RELOCATING+.} ${RELOCATING-0} : { *(.ctors)   }
-  .dtors   ${RELOCATING+.} ${RELOCATING-0} : { *(.dtors)   }
-  .rodata  ${RELOCATING+.} ${RELOCATING-0} : { *(.rodata)  }
-  .rodata1 ${RELOCATING+.} ${RELOCATING-0} : { *(.rodata1) }
+  .init    ${RELOCATING+ALIGN(8)} ${RELOCATING-0} : { *(.init)    } =${NOP-0}
+  .fini    ${RELOCATING+ALIGN(8)} ${RELOCATING-0} : { *(.fini)    } =${NOP-0}
+  .ctors   ${RELOCATING+ALIGN(8)} ${RELOCATING-0} : { *(.ctors)   }
+  .dtors   ${RELOCATING+ALIGN(8)} ${RELOCATING-0} : { *(.dtors)   }
+  .rodata  ${RELOCATING+ALIGN(8)} ${RELOCATING-0} : { *(.rodata)  }
+  .rodata1 ${RELOCATING+ALIGN(8)} ${RELOCATING-0} :
+    {
+      *(.rodata1)
+      ${RELOCATING+. = ALIGN(8);}
+    }
   ${RELOCATING+${OTHER_READONLY_SECTIONS}}
   /* also: .hash .dynsym .dynstr .plt(if r/o) .rel.got */
 
   {
     *(.data)
     ${CONSTRUCTING+CONSTRUCTORS}
-    ${RELOCATING+_edata  =  .;}
   }
-  .data1 ${RELOCATING+.} ${RELOCATING-0} : { *(.data1) }
+  .data1 ${RELOCATING+ALIGN(8)} ${RELOCATING-0} : { *(.data1) }
   ${RELOCATING+${OTHER_READWRITE_SECTIONS}}
   /* also (before uninitialized portion): .dynamic .got .plt(if r/w)
      (or does .dynamic go into its own segment?) */
   /* 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   ${RELOCATING+.} ${RELOCATING-0} : { *(.sdata) }
-  ${RELOCATING+__bss_start = .};
-  .sbss    ${RELOCATING+.} ${RELOCATING-0} : { *(.sbss) *(.scommon) }
-  .bss     ${RELOCATING+.} ${RELOCATING-0} :
+  .sdata   ${RELOCATING+ALIGN(8)} ${RELOCATING-0} : { *(.sdata) }
+  ${RELOCATING+_edata  =  .;}
+  ${RELOCATING+__bss_start = ALIGN(8);}
+  ${RELOCATING+${OTHER_BSS_SYMBOLS}}
+  .sbss    ${RELOCATING+ALIGN(8)} ${RELOCATING-0} : { *(.sbss) *(.scommon) }
+  .bss     ${RELOCATING+ALIGN(8)} ${RELOCATING-0} :
   {
    *(.bss)
    *(COMMON)