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