mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +00:00
Blackfin arch: fix bugs in linker script when using upstream binutils
Fix a few problems I discovered when building a kernel with upstream CVS binutils. We have to add the NOTES macro to our linker script, since a kernel built with --build-id is otherwise unable to boot. Last time NOTES was added, it broke things, but the definition of the macro has changed not to rely on parts of the linker script that aren't present on Blackfin. I also noticed that _l2_lma_start does not point into the kernel image, but rather somewhere in L1/L2 space, which seems unintended. Also, when the L2 section was added to the linker script, the part following it which computes then length of the init section was not updated. Signed-off-by: Bernd Schmidt <bernds_cb1@t-online.de> Signed-off-by: Bryan Wu <cooloney@kernel.org>
This commit is contained in:
parent
5e6d9f511e
commit
6f985294f7
1 changed files with 6 additions and 2 deletions
|
@ -68,6 +68,8 @@ SECTIONS
|
|||
__etext = .;
|
||||
}
|
||||
|
||||
NOTES
|
||||
|
||||
/* Just in case the first read only is a 32-bit access */
|
||||
RO_DATA(4)
|
||||
|
||||
|
@ -167,6 +169,7 @@ SECTIONS
|
|||
. = ALIGN(4);
|
||||
___initramfs_start = .;
|
||||
*(.init.ramfs)
|
||||
. = ALIGN(4);
|
||||
___initramfs_end = .;
|
||||
}
|
||||
|
||||
|
@ -212,7 +215,7 @@ SECTIONS
|
|||
__ebss_b_l1 = .;
|
||||
}
|
||||
|
||||
__l2_lma_start = .;
|
||||
__l2_lma_start = LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1);
|
||||
|
||||
.text_data_l2 L2_START : AT(LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1))
|
||||
{
|
||||
|
@ -236,10 +239,11 @@ SECTIONS
|
|||
. = ALIGN(4);
|
||||
__ebss_l2 = .;
|
||||
}
|
||||
|
||||
/* Force trailing alignment of our init section so that when we
|
||||
* free our init memory, we don't leave behind a partial page.
|
||||
*/
|
||||
. = LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1);
|
||||
. = LOADADDR(.text_data_l2) + SIZEOF(.text_data_l2);
|
||||
. = ALIGN(PAGE_SIZE);
|
||||
___init_end = .;
|
||||
|
||||
|
|
Loading…
Reference in a new issue