Blackfin: fix linker scripts to work with --gc-sections
Make sure all .text sections get pulled in and the entry point is properly referenced so they don't get discarded when linking with --gc-sections. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
509fc553bc
commit
b9eecc342f
|
@ -28,6 +28,8 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <asm/blackfin.h>
|
#include <asm/blackfin.h>
|
||||||
#undef ALIGN
|
#undef ALIGN
|
||||||
|
#undef ENTRY
|
||||||
|
#undef bfin
|
||||||
|
|
||||||
/* If we don't actually load anything into L1 data, this will avoid
|
/* If we don't actually load anything into L1 data, this will avoid
|
||||||
* a syntax error. If we do actually load something into L1 data,
|
* a syntax error. If we do actually load something into L1 data,
|
||||||
|
@ -50,11 +52,12 @@ MEMORY
|
||||||
l1_data : ORIGIN = L1_DATA_B_SRAM, LENGTH = L1_DATA_B_SRAM_SIZE
|
l1_data : ORIGIN = L1_DATA_B_SRAM, LENGTH = L1_DATA_B_SRAM_SIZE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ENTRY(_start)
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text :
|
.text :
|
||||||
{
|
{
|
||||||
cpu/blackfin/start.o (.text)
|
cpu/blackfin/start.o (.text .text.*)
|
||||||
|
|
||||||
#ifdef ENV_IS_EMBEDDED
|
#ifdef ENV_IS_EMBEDDED
|
||||||
/* WARNING - the following is hand-optimized to fit within
|
/* WARNING - the following is hand-optimized to fit within
|
||||||
|
@ -63,20 +66,20 @@ SECTIONS
|
||||||
* it linked after the configuration sector.
|
* it linked after the configuration sector.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
cpu/blackfin/traps.o (.text)
|
cpu/blackfin/traps.o (.text .text.*)
|
||||||
cpu/blackfin/interrupt.o (.text)
|
cpu/blackfin/interrupt.o (.text .text.*)
|
||||||
cpu/blackfin/serial.o (.text)
|
cpu/blackfin/serial.o (.text .text.*)
|
||||||
common/dlmalloc.o (.text)
|
common/dlmalloc.o (.text .text.*)
|
||||||
lib_generic/crc32.o (.text)
|
lib_generic/crc32.o (.text .text.*)
|
||||||
lib_generic/zlib.o (.text)
|
lib_generic/zlib.o (.text .text.*)
|
||||||
board/bf533-ezkit/bf533-ezkit.o (.text)
|
board/bf533-ezkit/bf533-ezkit.o (.text .text.*)
|
||||||
|
|
||||||
. = DEFINED(env_offset) ? env_offset : .;
|
. = DEFINED(env_offset) ? env_offset : .;
|
||||||
common/env_embedded.o (.text)
|
common/env_embedded.o (.text .text.*)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__initcode_start = .;
|
__initcode_start = .;
|
||||||
cpu/blackfin/initcode.o (.text)
|
cpu/blackfin/initcode.o (.text .text.*)
|
||||||
__initcode_end = .;
|
__initcode_end = .;
|
||||||
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
|
|
|
@ -28,6 +28,8 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <asm/blackfin.h>
|
#include <asm/blackfin.h>
|
||||||
#undef ALIGN
|
#undef ALIGN
|
||||||
|
#undef ENTRY
|
||||||
|
#undef bfin
|
||||||
|
|
||||||
/* If we don't actually load anything into L1 data, this will avoid
|
/* If we don't actually load anything into L1 data, this will avoid
|
||||||
* a syntax error. If we do actually load something into L1 data,
|
* a syntax error. If we do actually load something into L1 data,
|
||||||
|
@ -50,11 +52,12 @@ MEMORY
|
||||||
l1_data : ORIGIN = L1_DATA_B_SRAM, LENGTH = L1_DATA_B_SRAM_SIZE
|
l1_data : ORIGIN = L1_DATA_B_SRAM, LENGTH = L1_DATA_B_SRAM_SIZE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ENTRY(_start)
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text :
|
.text :
|
||||||
{
|
{
|
||||||
cpu/blackfin/start.o (.text)
|
cpu/blackfin/start.o (.text .text.*)
|
||||||
|
|
||||||
#ifdef ENV_IS_EMBEDDED
|
#ifdef ENV_IS_EMBEDDED
|
||||||
/* WARNING - the following is hand-optimized to fit within
|
/* WARNING - the following is hand-optimized to fit within
|
||||||
|
@ -63,18 +66,18 @@ SECTIONS
|
||||||
* it linked after the configuration sector.
|
* it linked after the configuration sector.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
cpu/blackfin/traps.o (.text)
|
cpu/blackfin/traps.o (.text .text.*)
|
||||||
cpu/blackfin/interrupt.o (.text)
|
cpu/blackfin/interrupt.o (.text .text.*)
|
||||||
cpu/blackfin/serial.o (.text)
|
cpu/blackfin/serial.o (.text .text.*)
|
||||||
common/dlmalloc.o (.text)
|
common/dlmalloc.o (.text .text.*)
|
||||||
lib_generic/crc32.o (.text)
|
lib_generic/crc32.o (.text .text.*)
|
||||||
|
|
||||||
. = DEFINED(env_offset) ? env_offset : .;
|
. = DEFINED(env_offset) ? env_offset : .;
|
||||||
common/env_embedded.o (.text)
|
common/env_embedded.o (.text .text.*)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__initcode_start = .;
|
__initcode_start = .;
|
||||||
cpu/blackfin/initcode.o (.text)
|
cpu/blackfin/initcode.o (.text .text.*)
|
||||||
__initcode_end = .;
|
__initcode_end = .;
|
||||||
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
|
|
|
@ -28,6 +28,8 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <asm/blackfin.h>
|
#include <asm/blackfin.h>
|
||||||
#undef ALIGN
|
#undef ALIGN
|
||||||
|
#undef ENTRY
|
||||||
|
#undef bfin
|
||||||
|
|
||||||
/* If we don't actually load anything into L1 data, this will avoid
|
/* If we don't actually load anything into L1 data, this will avoid
|
||||||
* a syntax error. If we do actually load something into L1 data,
|
* a syntax error. If we do actually load something into L1 data,
|
||||||
|
@ -50,11 +52,12 @@ MEMORY
|
||||||
l1_data : ORIGIN = L1_DATA_B_SRAM, LENGTH = L1_DATA_B_SRAM_SIZE
|
l1_data : ORIGIN = L1_DATA_B_SRAM, LENGTH = L1_DATA_B_SRAM_SIZE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ENTRY(_start)
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text :
|
.text :
|
||||||
{
|
{
|
||||||
cpu/blackfin/start.o (.text)
|
cpu/blackfin/start.o (.text .text.*)
|
||||||
|
|
||||||
#ifdef ENV_IS_EMBEDDED
|
#ifdef ENV_IS_EMBEDDED
|
||||||
/* WARNING - the following is hand-optimized to fit within
|
/* WARNING - the following is hand-optimized to fit within
|
||||||
|
@ -63,18 +66,18 @@ SECTIONS
|
||||||
* it linked after the configuration sector.
|
* it linked after the configuration sector.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
cpu/blackfin/traps.o (.text)
|
cpu/blackfin/traps.o (.text .text.*)
|
||||||
cpu/blackfin/interrupt.o (.text)
|
cpu/blackfin/interrupt.o (.text .text.*)
|
||||||
cpu/blackfin/serial.o (.text)
|
cpu/blackfin/serial.o (.text .text.*)
|
||||||
common/dlmalloc.o (.text)
|
common/dlmalloc.o (.text .text.*)
|
||||||
lib_generic/crc32.o (.text)
|
lib_generic/crc32.o (.text .text.*)
|
||||||
|
|
||||||
. = DEFINED(env_offset) ? env_offset : .;
|
. = DEFINED(env_offset) ? env_offset : .;
|
||||||
common/env_embedded.o (.text)
|
common/env_embedded.o (.text .text.*)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__initcode_start = .;
|
__initcode_start = .;
|
||||||
cpu/blackfin/initcode.o (.text)
|
cpu/blackfin/initcode.o (.text .text.*)
|
||||||
__initcode_end = .;
|
__initcode_end = .;
|
||||||
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
|
|
|
@ -28,6 +28,8 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <asm/blackfin.h>
|
#include <asm/blackfin.h>
|
||||||
#undef ALIGN
|
#undef ALIGN
|
||||||
|
#undef ENTRY
|
||||||
|
#undef bfin
|
||||||
|
|
||||||
/* If we don't actually load anything into L1 data, this will avoid
|
/* If we don't actually load anything into L1 data, this will avoid
|
||||||
* a syntax error. If we do actually load something into L1 data,
|
* a syntax error. If we do actually load something into L1 data,
|
||||||
|
@ -50,11 +52,12 @@ MEMORY
|
||||||
l1_data : ORIGIN = L1_DATA_B_SRAM, LENGTH = L1_DATA_B_SRAM_SIZE
|
l1_data : ORIGIN = L1_DATA_B_SRAM, LENGTH = L1_DATA_B_SRAM_SIZE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ENTRY(_start)
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text :
|
.text :
|
||||||
{
|
{
|
||||||
cpu/blackfin/start.o (.text)
|
cpu/blackfin/start.o (.text .text.*)
|
||||||
|
|
||||||
#ifdef ENV_IS_EMBEDDED
|
#ifdef ENV_IS_EMBEDDED
|
||||||
/* WARNING - the following is hand-optimized to fit within
|
/* WARNING - the following is hand-optimized to fit within
|
||||||
|
@ -63,20 +66,20 @@ SECTIONS
|
||||||
* it linked after the configuration sector.
|
* it linked after the configuration sector.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
cpu/blackfin/traps.o (.text)
|
cpu/blackfin/traps.o (.text .text.*)
|
||||||
cpu/blackfin/interrupt.o (.text)
|
cpu/blackfin/interrupt.o (.text .text.*)
|
||||||
cpu/blackfin/serial.o (.text)
|
cpu/blackfin/serial.o (.text .text.*)
|
||||||
common/dlmalloc.o (.text)
|
common/dlmalloc.o (.text .text.*)
|
||||||
lib_generic/crc32.o (.text)
|
lib_generic/crc32.o (.text .text.*)
|
||||||
lib_generic/zlib.o (.text)
|
lib_generic/zlib.o (.text .text.*)
|
||||||
board/bf561-ezkit/bf561-ezkit.o (.text)
|
board/bf561-ezkit/bf561-ezkit.o (.text .text.*)
|
||||||
|
|
||||||
. = DEFINED(env_offset) ? env_offset : .;
|
. = DEFINED(env_offset) ? env_offset : .;
|
||||||
common/env_embedded.o (.text)
|
common/env_embedded.o (.text .text.*)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__initcode_start = .;
|
__initcode_start = .;
|
||||||
cpu/blackfin/initcode.o (.text)
|
cpu/blackfin/initcode.o (.text .text.*)
|
||||||
__initcode_end = .;
|
__initcode_end = .;
|
||||||
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
|
|
Loading…
Reference in New Issue