boards/mips Linker Scripts: The PIC32M* start-up code initializes .bss by writing 16 bytes at a time in a loop. The start (_sbss) alignment is only required to be 4 bytes since the write is done with 4 store instructions. In a previous change, the end address, _ebss, was aligned to 16 byte to prevent initializing past the end off the .bss region. However, that does not work unless the start address, _sbss, is also aligned to 16 bytes.

This commit is contained in:
Gregory Nutt 2019-09-16 08:14:32 -06:00
parent ec4a7be5c2
commit 5995714cfd
22 changed files with 22 additions and 0 deletions

View File

@ -253,6 +253,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -255,6 +255,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -253,6 +253,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -255,6 +255,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -253,6 +253,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -255,6 +255,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -257,6 +257,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -257,6 +257,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -257,6 +257,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -257,6 +257,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -257,6 +257,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -257,6 +257,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -257,6 +257,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -257,6 +257,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -276,6 +276,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -276,6 +276,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -276,6 +276,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -276,6 +276,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -276,6 +276,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -276,6 +276,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -276,6 +276,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)

View File

@ -276,6 +276,7 @@ SECTIONS
.sbss : .sbss :
{ {
. = ALIGN(16);
_sbss = ABSOLUTE(.); _sbss = ABSOLUTE(.);
*(.dynsbss) *(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)