diff options
| author | Joakim Tjernlund <Joakim.Tjernlund@transmode.se> | 2010-12-03 17:30:37 +0100 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2010-12-17 20:25:10 +0100 | 
| commit | 337f5f50f539cc1ea1e0533c096e237228f12cae (patch) | |
| tree | 2bb63f5cf53a831fbaab8c9446374b280e457a97 /arch/powerpc/cpu | |
| parent | 09344530abe6e391db6aec27b2117d6d5fbd03fa (diff) | |
| download | olio-uboot-2014.01-337f5f50f539cc1ea1e0533c096e237228f12cae.tar.xz olio-uboot-2014.01-337f5f50f539cc1ea1e0533c096e237228f12cae.zip | |
PowerPC: Add relocation support for -fpic
By rearranging the linker script we get support for
relocation of -fpic for free.
Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
Acked-by: Scott Wood <scottwood@freescale.com>
Acked-by: Kim Phillips <kim.phillips@freescale.com>
Diffstat (limited to 'arch/powerpc/cpu')
| -rw-r--r-- | arch/powerpc/cpu/74xx_7xx/u-boot.lds | 5 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc512x/u-boot.lds | 5 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc5xx/u-boot.lds | 5 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc5xxx/u-boot.lds | 5 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc8220/u-boot.lds | 5 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc824x/u-boot.lds | 5 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc8260/u-boot.lds | 5 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc83xx/u-boot.lds | 5 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/u-boot.lds | 5 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc86xx/u-boot.lds | 5 | ||||
| -rw-r--r-- | arch/powerpc/cpu/ppc4xx/u-boot.lds | 5 | 
11 files changed, 33 insertions, 22 deletions
| diff --git a/arch/powerpc/cpu/74xx_7xx/u-boot.lds b/arch/powerpc/cpu/74xx_7xx/u-boot.lds index 771a8456f..8429f3319 100644 --- a/arch/powerpc/cpu/74xx_7xx/u-boot.lds +++ b/arch/powerpc/cpu/74xx_7xx/u-boot.lds @@ -43,13 +43,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/mpc512x/u-boot.lds b/arch/powerpc/cpu/mpc512x/u-boot.lds index 361e71489..ab9303f92 100644 --- a/arch/powerpc/cpu/mpc512x/u-boot.lds +++ b/arch/powerpc/cpu/mpc512x/u-boot.lds @@ -37,14 +37,15 @@ SECTIONS    PROVIDE (erotext = .);    .reloc   :    { -    KEEP(*(.got))      _GOT2_TABLE_ = .;      KEEP(*(.got2)) +    KEEP(*(.got)) +    PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);      _FIXUP_TABLE_ = .;      KEEP(*(.fixup))      *(.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/mpc5xx/u-boot.lds b/arch/powerpc/cpu/mpc5xx/u-boot.lds index b7fd4bc3a..69bd7aa8e 100644 --- a/arch/powerpc/cpu/mpc5xx/u-boot.lds +++ b/arch/powerpc/cpu/mpc5xx/u-boot.lds @@ -46,13 +46,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/mpc5xxx/u-boot.lds b/arch/powerpc/cpu/mpc5xxx/u-boot.lds index eeeff6c85..7e3b70aed 100644 --- a/arch/powerpc/cpu/mpc5xxx/u-boot.lds +++ b/arch/powerpc/cpu/mpc5xxx/u-boot.lds @@ -41,13 +41,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/mpc8220/u-boot.lds b/arch/powerpc/cpu/mpc8220/u-boot.lds index 63cbbd7f4..72ff671a4 100644 --- a/arch/powerpc/cpu/mpc8220/u-boot.lds +++ b/arch/powerpc/cpu/mpc8220/u-boot.lds @@ -40,13 +40,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/mpc824x/u-boot.lds b/arch/powerpc/cpu/mpc824x/u-boot.lds index e7f283787..3b9299c0d 100644 --- a/arch/powerpc/cpu/mpc824x/u-boot.lds +++ b/arch/powerpc/cpu/mpc824x/u-boot.lds @@ -41,13 +41,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/mpc8260/u-boot.lds b/arch/powerpc/cpu/mpc8260/u-boot.lds index ad2ce37f1..c76555ef8 100644 --- a/arch/powerpc/cpu/mpc8260/u-boot.lds +++ b/arch/powerpc/cpu/mpc8260/u-boot.lds @@ -40,13 +40,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/mpc83xx/u-boot.lds b/arch/powerpc/cpu/mpc83xx/u-boot.lds index 81a7ace64..752a175b1 100644 --- a/arch/powerpc/cpu/mpc83xx/u-boot.lds +++ b/arch/powerpc/cpu/mpc83xx/u-boot.lds @@ -39,13 +39,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.lds b/arch/powerpc/cpu/mpc85xx/u-boot.lds index 85042c525..67d7763ea 100644 --- a/arch/powerpc/cpu/mpc85xx/u-boot.lds +++ b/arch/powerpc/cpu/mpc85xx/u-boot.lds @@ -54,13 +54,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/mpc86xx/u-boot.lds b/arch/powerpc/cpu/mpc86xx/u-boot.lds index 49a4c782d..c550ef500 100644 --- a/arch/powerpc/cpu/mpc86xx/u-boot.lds +++ b/arch/powerpc/cpu/mpc86xx/u-boot.lds @@ -45,13 +45,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/ppc4xx/u-boot.lds b/arch/powerpc/cpu/ppc4xx/u-boot.lds index 842ff5f5c..656f59a58 100644 --- a/arch/powerpc/cpu/ppc4xx/u-boot.lds +++ b/arch/powerpc/cpu/ppc4xx/u-boot.lds @@ -59,13 +59,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    : |