diff options
| author | Scott Wood <scottwood@freescale.com> | 2012-05-01 16:37:57 -0500 | 
|---|---|---|
| committer | Scott Wood <scott@tyr.buserror.net> | 2012-05-18 17:34:39 -0500 | 
| commit | d2a97daf629a49a416ed405b8c7c2a1e77b99148 (patch) | |
| tree | c28fd96888c62db5b50aa05b6f2a5e1f6eda211c | |
| parent | 418396e212b59bf907dbccad997ff50f7eb61b16 (diff) | |
| download | olio-uboot-2014.01-d2a97daf629a49a416ed405b8c7c2a1e77b99148.tar.xz olio-uboot-2014.01-d2a97daf629a49a416ed405b8c7c2a1e77b99148.zip | |
powerpc/85xx: fix NAND boot linker scripts for -fpic
GOT is now handled the way the main u-boot.lds does it.  Without this,
the boot hangs when built with newer GCC (since 4.6).  Older toolchains
hid the issue by converting -fpic to -fPIC.
Signed-off-by: Scott Wood <scottwood@freescale.com>
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/u-boot-nand.lds | 5 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds | 4 | 
2 files changed, 6 insertions, 3 deletions
| diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds b/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds index b1a1dac16..8ba939916 100644 --- a/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds +++ b/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds @@ -51,13 +51,14 @@ SECTIONS    PROVIDE (erotext = .);    .reloc   :    { -    KEEP(*(.got))      _GOT2_TABLE_ = .;      KEEP(*(.got2)) +    KEEP(*(.got)) +    PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);      _FIXUP_TABLE_ = .;      KEEP(*(.fixup))    } -  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2; +  __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;    __fixup_entries = (. - _FIXUP_TABLE_) >> 2;    .data    : diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds b/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds index 852f9aa4a..668158f70 100644 --- a/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds +++ b/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds @@ -37,10 +37,12 @@ SECTIONS  	.reloc : {  		_GOT2_TABLE_ = .;  		KEEP(*(.got2)) +		KEEP(*(.got)) +		PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);  		_FIXUP_TABLE_ = .;  		KEEP(*(.fixup))  	} -	__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2; +	__got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;  	__fixup_entries = (. - _FIXUP_TABLE_) >> 2;  	. = ALIGN(8); |