mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-31 19:41:46 +00:00
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>
This commit is contained in:
parent
09344530ab
commit
337f5f50f5
11 changed files with 33 additions and 22 deletions
|
@ -43,13 +43,14 @@ SECTIONS
|
||||||
PROVIDE (erotext = .);
|
PROVIDE (erotext = .);
|
||||||
.reloc :
|
.reloc :
|
||||||
{
|
{
|
||||||
KEEP(*(.got))
|
|
||||||
_GOT2_TABLE_ = .;
|
_GOT2_TABLE_ = .;
|
||||||
KEEP(*(.got2))
|
KEEP(*(.got2))
|
||||||
|
KEEP(*(.got))
|
||||||
|
PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
|
||||||
_FIXUP_TABLE_ = .;
|
_FIXUP_TABLE_ = .;
|
||||||
KEEP(*(.fixup))
|
KEEP(*(.fixup))
|
||||||
}
|
}
|
||||||
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
|
__got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
|
||||||
__fixup_entries = (. - _FIXUP_TABLE_)>>2;
|
__fixup_entries = (. - _FIXUP_TABLE_)>>2;
|
||||||
|
|
||||||
.data :
|
.data :
|
||||||
|
|
|
@ -37,14 +37,15 @@ SECTIONS
|
||||||
PROVIDE (erotext = .);
|
PROVIDE (erotext = .);
|
||||||
.reloc :
|
.reloc :
|
||||||
{
|
{
|
||||||
KEEP(*(.got))
|
|
||||||
_GOT2_TABLE_ = .;
|
_GOT2_TABLE_ = .;
|
||||||
KEEP(*(.got2))
|
KEEP(*(.got2))
|
||||||
|
KEEP(*(.got))
|
||||||
|
PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
|
||||||
_FIXUP_TABLE_ = .;
|
_FIXUP_TABLE_ = .;
|
||||||
KEEP(*(.fixup))
|
KEEP(*(.fixup))
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
}
|
}
|
||||||
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
|
__got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
|
||||||
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
||||||
|
|
||||||
.data :
|
.data :
|
||||||
|
|
|
@ -46,13 +46,14 @@ SECTIONS
|
||||||
PROVIDE (erotext = .);
|
PROVIDE (erotext = .);
|
||||||
.reloc :
|
.reloc :
|
||||||
{
|
{
|
||||||
KEEP(*(.got))
|
|
||||||
_GOT2_TABLE_ = .;
|
_GOT2_TABLE_ = .;
|
||||||
KEEP(*(.got2))
|
KEEP(*(.got2))
|
||||||
|
KEEP(*(.got))
|
||||||
|
PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
|
||||||
_FIXUP_TABLE_ = .;
|
_FIXUP_TABLE_ = .;
|
||||||
KEEP(*(.fixup))
|
KEEP(*(.fixup))
|
||||||
}
|
}
|
||||||
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
|
__got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
|
||||||
__fixup_entries = (. - _FIXUP_TABLE_)>>2;
|
__fixup_entries = (. - _FIXUP_TABLE_)>>2;
|
||||||
|
|
||||||
.data :
|
.data :
|
||||||
|
|
|
@ -41,13 +41,14 @@ SECTIONS
|
||||||
PROVIDE (erotext = .);
|
PROVIDE (erotext = .);
|
||||||
.reloc :
|
.reloc :
|
||||||
{
|
{
|
||||||
KEEP(*(.got))
|
|
||||||
_GOT2_TABLE_ = .;
|
_GOT2_TABLE_ = .;
|
||||||
KEEP(*(.got2))
|
KEEP(*(.got2))
|
||||||
|
KEEP(*(.got))
|
||||||
|
PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
|
||||||
_FIXUP_TABLE_ = .;
|
_FIXUP_TABLE_ = .;
|
||||||
KEEP(*(.fixup))
|
KEEP(*(.fixup))
|
||||||
}
|
}
|
||||||
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
|
__got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
|
||||||
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
||||||
|
|
||||||
.data :
|
.data :
|
||||||
|
|
|
@ -40,13 +40,14 @@ SECTIONS
|
||||||
PROVIDE (erotext = .);
|
PROVIDE (erotext = .);
|
||||||
.reloc :
|
.reloc :
|
||||||
{
|
{
|
||||||
KEEP(*(.got))
|
|
||||||
_GOT2_TABLE_ = .;
|
_GOT2_TABLE_ = .;
|
||||||
KEEP(*(.got2))
|
KEEP(*(.got2))
|
||||||
|
KEEP(*(.got))
|
||||||
|
PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
|
||||||
_FIXUP_TABLE_ = .;
|
_FIXUP_TABLE_ = .;
|
||||||
KEEP(*(.fixup))
|
KEEP(*(.fixup))
|
||||||
}
|
}
|
||||||
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
|
__got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
|
||||||
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
||||||
|
|
||||||
.data :
|
.data :
|
||||||
|
|
|
@ -41,13 +41,14 @@ SECTIONS
|
||||||
PROVIDE (erotext = .);
|
PROVIDE (erotext = .);
|
||||||
.reloc :
|
.reloc :
|
||||||
{
|
{
|
||||||
KEEP(*(.got))
|
|
||||||
_GOT2_TABLE_ = .;
|
_GOT2_TABLE_ = .;
|
||||||
KEEP(*(.got2))
|
KEEP(*(.got2))
|
||||||
|
KEEP(*(.got))
|
||||||
|
PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
|
||||||
_FIXUP_TABLE_ = .;
|
_FIXUP_TABLE_ = .;
|
||||||
KEEP(*(.fixup))
|
KEEP(*(.fixup))
|
||||||
}
|
}
|
||||||
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
|
__got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
|
||||||
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
||||||
|
|
||||||
.data :
|
.data :
|
||||||
|
|
|
@ -40,13 +40,14 @@ SECTIONS
|
||||||
PROVIDE (erotext = .);
|
PROVIDE (erotext = .);
|
||||||
.reloc :
|
.reloc :
|
||||||
{
|
{
|
||||||
KEEP(*(.got))
|
|
||||||
_GOT2_TABLE_ = .;
|
_GOT2_TABLE_ = .;
|
||||||
KEEP(*(.got2))
|
KEEP(*(.got2))
|
||||||
|
KEEP(*(.got))
|
||||||
|
PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
|
||||||
_FIXUP_TABLE_ = .;
|
_FIXUP_TABLE_ = .;
|
||||||
KEEP(*(.fixup))
|
KEEP(*(.fixup))
|
||||||
}
|
}
|
||||||
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
|
__got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
|
||||||
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
||||||
|
|
||||||
.data :
|
.data :
|
||||||
|
|
|
@ -39,13 +39,14 @@ SECTIONS
|
||||||
PROVIDE (erotext = .);
|
PROVIDE (erotext = .);
|
||||||
.reloc :
|
.reloc :
|
||||||
{
|
{
|
||||||
KEEP(*(.got))
|
|
||||||
_GOT2_TABLE_ = .;
|
_GOT2_TABLE_ = .;
|
||||||
KEEP(*(.got2))
|
KEEP(*(.got2))
|
||||||
|
KEEP(*(.got))
|
||||||
|
PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
|
||||||
_FIXUP_TABLE_ = .;
|
_FIXUP_TABLE_ = .;
|
||||||
KEEP(*(.fixup))
|
KEEP(*(.fixup))
|
||||||
}
|
}
|
||||||
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
|
__got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
|
||||||
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
||||||
|
|
||||||
.data :
|
.data :
|
||||||
|
|
|
@ -54,13 +54,14 @@ SECTIONS
|
||||||
PROVIDE (erotext = .);
|
PROVIDE (erotext = .);
|
||||||
.reloc :
|
.reloc :
|
||||||
{
|
{
|
||||||
KEEP(*(.got))
|
|
||||||
_GOT2_TABLE_ = .;
|
_GOT2_TABLE_ = .;
|
||||||
KEEP(*(.got2))
|
KEEP(*(.got2))
|
||||||
|
KEEP(*(.got))
|
||||||
|
PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
|
||||||
_FIXUP_TABLE_ = .;
|
_FIXUP_TABLE_ = .;
|
||||||
KEEP(*(.fixup))
|
KEEP(*(.fixup))
|
||||||
}
|
}
|
||||||
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
|
__got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
|
||||||
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
||||||
|
|
||||||
.data :
|
.data :
|
||||||
|
|
|
@ -45,13 +45,14 @@ SECTIONS
|
||||||
PROVIDE (erotext = .);
|
PROVIDE (erotext = .);
|
||||||
.reloc :
|
.reloc :
|
||||||
{
|
{
|
||||||
KEEP(*(.got))
|
|
||||||
_GOT2_TABLE_ = .;
|
_GOT2_TABLE_ = .;
|
||||||
KEEP(*(.got2))
|
KEEP(*(.got2))
|
||||||
|
KEEP(*(.got))
|
||||||
|
PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
|
||||||
_FIXUP_TABLE_ = .;
|
_FIXUP_TABLE_ = .;
|
||||||
KEEP(*(.fixup))
|
KEEP(*(.fixup))
|
||||||
}
|
}
|
||||||
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
|
__got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
|
||||||
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
||||||
|
|
||||||
.data :
|
.data :
|
||||||
|
|
|
@ -59,13 +59,14 @@ SECTIONS
|
||||||
PROVIDE (erotext = .);
|
PROVIDE (erotext = .);
|
||||||
.reloc :
|
.reloc :
|
||||||
{
|
{
|
||||||
KEEP(*(.got))
|
|
||||||
_GOT2_TABLE_ = .;
|
_GOT2_TABLE_ = .;
|
||||||
KEEP(*(.got2))
|
KEEP(*(.got2))
|
||||||
|
KEEP(*(.got))
|
||||||
|
PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
|
||||||
_FIXUP_TABLE_ = .;
|
_FIXUP_TABLE_ = .;
|
||||||
KEEP(*(.fixup))
|
KEEP(*(.fixup))
|
||||||
}
|
}
|
||||||
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
|
__got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
|
||||||
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
|
||||||
|
|
||||||
.data :
|
.data :
|
||||||
|
|
Loading…
Add table
Reference in a new issue