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