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:
Mike Frysinger 2008-10-24 17:48:54 -04:00
parent 509fc553bc
commit b9eecc342f
4 changed files with 48 additions and 36 deletions

View File

@ -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.*)

View File

@ -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.*)

View File

@ -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.*)

View File

@ -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.*)