| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | /* | 
					
						
							|  |  |  |  * arch/xtensa/kernel/vmlinux.lds.S | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Xtensa linker script | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This file is subject to the terms and conditions of the GNU General Public | 
					
						
							|  |  |  |  * License.  See the file "COPYING" in the main directory of this archive | 
					
						
							|  |  |  |  * for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Copyright (C) 2001 - 2005 Tensilica Inc. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Chris Zankel <chris@zankel.net>
 | 
					
						
							|  |  |  |  * Marc Gauthier <marc@tensilica.com, marc@alumni.uwaterloo.ca>
 | 
					
						
							|  |  |  |  * Joe Taylor <joe@tensilica.com, joetylr@yahoo.com>
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <asm-generic/vmlinux.lds.h> | 
					
						
							| 
									
										
										
										
											2009-09-24 10:36:19 -04:00
										 |  |  | #include <asm/page.h> | 
					
						
							|  |  |  | #include <asm/thread_info.h> | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-06 06:40:46 -08:00
										 |  |  | #include <variant/core.h> | 
					
						
							| 
									
										
										
										
											2009-03-04 16:21:32 +01:00
										 |  |  | #include <platform/hardware.h> | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | OUTPUT_ARCH(xtensa) | 
					
						
							|  |  |  | ENTRY(_start) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-12-10 02:18:48 -08:00
										 |  |  | #ifdef __XTENSA_EB__ | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | jiffies = jiffies_64 + 4;
 | 
					
						
							|  |  |  | #else | 
					
						
							|  |  |  | jiffies = jiffies_64;
 | 
					
						
							|  |  |  | #endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-04 16:21:32 +01:00
										 |  |  | #ifndef KERNELOFFSET | 
					
						
							| 
									
										
										
										
											2006-12-10 02:18:48 -08:00
										 |  |  | #define KERNELOFFSET 0xd0001000 | 
					
						
							| 
									
										
										
										
											2009-03-04 16:21:32 +01:00
										 |  |  | #endif | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* Note: In the following macros, it would be nice to specify only the | 
					
						
							|  |  |  |    vector name and section kind and construct "sym" and "section" using | 
					
						
							|  |  |  |    CPP concatenation, but that does not work reliably.  Concatenating a | 
					
						
							|  |  |  |    string with "." produces an invalid token.  CPP will not print a | 
					
						
							|  |  |  |    warning because it thinks this is an assembly file, but it leaves | 
					
						
							|  |  |  |    them as multiple tokens and there may or may not be whitespace | 
					
						
							|  |  |  |    between them.  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Macro for a relocation entry */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define RELOCATE_ENTRY(sym, section)		\ | 
					
						
							|  |  |  | 	LONG(sym ## _start);			\ | 
					
						
							|  |  |  | 	LONG(sym ## _end);			\ | 
					
						
							|  |  |  | 	LONG(LOADADDR(section)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Macro to define a section for a vector. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Use of the MIN function catches the types of errors illustrated in | 
					
						
							|  |  |  |  * the following example: | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Assume the section .DoubleExceptionVector.literal is completely | 
					
						
							|  |  |  |  * full.  Then a programmer adds code to .DoubleExceptionVector.text | 
					
						
							|  |  |  |  * that produces another literal.  The final literal position will | 
					
						
							|  |  |  |  * overlay onto the first word of the adjacent code section | 
					
						
							|  |  |  |  * .DoubleExceptionVector.text.  (In practice, the literals will | 
					
						
							|  |  |  |  * overwrite the code, and the first few instructions will be | 
					
						
							|  |  |  |  * garbage.) | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define SECTION_VECTOR(sym, section, addr, max_prevsec_size, prevsec)       \ | 
					
						
							|  |  |  |   section addr : AT((MIN(LOADADDR(prevsec) + max_prevsec_size,		    \ | 
					
						
							|  |  |  | 		         LOADADDR(prevsec) + SIZEOF(prevsec)) + 3) & ~ 3)   \ | 
					
						
							|  |  |  |   {									    \ | 
					
						
							|  |  |  |     . = ALIGN(4);							    \
 | 
					
						
							|  |  |  |     sym ## _start = ABSOLUTE(.);		 			    \ | 
					
						
							|  |  |  |     *(section)								    \ | 
					
						
							|  |  |  |     sym ## _end = ABSOLUTE(.);						    \ | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* | 
					
						
							|  |  |  |  *  Mapping of input sections to output sections when linking. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SECTIONS | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2006-12-10 02:18:48 -08:00
										 |  |  |   . = KERNELOFFSET;
 | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  |   /* .text section */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   _text = .;
 | 
					
						
							|  |  |  |   _stext = .;
 | 
					
						
							|  |  |  |   _ftext = .;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .text : | 
					
						
							|  |  |  |   { | 
					
						
							| 
									
										
										
										
											2009-04-25 22:10:57 -04:00
										 |  |  |     /* The HEAD_TEXT section must be the first section! */ | 
					
						
							|  |  |  |     HEAD_TEXT | 
					
						
							| 
									
										
										
										
											2009-04-21 00:34:15 -07:00
										 |  |  |     TEXT_TEXT | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  |     VMLINUX_SYMBOL(__sched_text_start) = .;
 | 
					
						
							| 
									
										
										
										
											2005-07-12 13:58:25 -07:00
										 |  |  |     *(.sched.literal .sched.text) | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  |     VMLINUX_SYMBOL(__sched_text_end) = .;
 | 
					
						
							|  |  |  |     VMLINUX_SYMBOL(__lock_text_start) = .;
 | 
					
						
							| 
									
										
										
										
											2005-07-12 13:58:25 -07:00
										 |  |  |     *(.spinlock.literal .spinlock.text) | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  |     VMLINUX_SYMBOL(__lock_text_end) = .;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   _etext = .;
 | 
					
						
							| 
									
										
										
										
											2007-05-31 17:47:01 -07:00
										 |  |  |   PROVIDE (etext = .);
 | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   . = ALIGN(16);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   RODATA | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /*  Relocation table */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .fixup   : { *(.fixup) } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-24 10:36:19 -04:00
										 |  |  |   EXCEPTION_TABLE(16) | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  |   /* Data section */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   _fdata = .;
 | 
					
						
							| 
									
										
										
										
											2009-09-24 10:36:19 -04:00
										 |  |  |   RW_DATA_SECTION(XCHAL_ICACHE_LINESIZE, PAGE_SIZE, THREAD_SIZE) | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  |   _edata = .;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* Initialization code and data: */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-24 10:36:19 -04:00
										 |  |  |   . = ALIGN(PAGE_SIZE);
 | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  |   __init_begin = .;
 | 
					
						
							| 
									
										
										
										
											2009-09-24 10:36:19 -04:00
										 |  |  |   INIT_TEXT_SECTION(PAGE_SIZE) | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   .init.data : | 
					
						
							|  |  |  |   { | 
					
						
							| 
									
										
										
										
											2008-01-20 14:15:03 +01:00
										 |  |  |     INIT_DATA | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  |     . = ALIGN(0x4);
 | 
					
						
							|  |  |  |     __tagtable_begin = .;
 | 
					
						
							|  |  |  |     *(.taglist) | 
					
						
							|  |  |  |     __tagtable_end = .;
 | 
					
						
							| 
									
										
										
										
											2007-05-31 17:47:01 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     . = ALIGN(16);
 | 
					
						
							|  |  |  |     __boot_reloc_table_start = ABSOLUTE(.);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     RELOCATE_ENTRY(_WindowVectors_text, | 
					
						
							|  |  |  | 		   .WindowVectors.text);
 | 
					
						
							|  |  |  |     RELOCATE_ENTRY(_KernelExceptionVector_text, | 
					
						
							|  |  |  | 		   .KernelExceptionVector.text);
 | 
					
						
							|  |  |  |     RELOCATE_ENTRY(_UserExceptionVector_text, | 
					
						
							|  |  |  | 		   .UserExceptionVector.text);
 | 
					
						
							|  |  |  |     RELOCATE_ENTRY(_DoubleExceptionVector_literal, | 
					
						
							|  |  |  | 		   .DoubleExceptionVector.literal);
 | 
					
						
							|  |  |  |     RELOCATE_ENTRY(_DoubleExceptionVector_text, | 
					
						
							|  |  |  | 		   .DoubleExceptionVector.text);
 | 
					
						
							| 
									
										
										
										
											2007-12-30 22:00:54 -08:00
										 |  |  |     RELOCATE_ENTRY(_DebugInterruptVector_text, | 
					
						
							|  |  |  | 		   .DebugInterruptVector.text);
 | 
					
						
							| 
									
										
										
										
											2007-05-31 17:47:01 -07:00
										 |  |  |    | 
					
						
							|  |  |  |     __boot_reloc_table_end = ABSOLUTE(.) ;
 | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-24 10:36:19 -04:00
										 |  |  |     INIT_SETUP(XCHAL_ICACHE_LINESIZE) | 
					
						
							|  |  |  |     INIT_CALLS | 
					
						
							|  |  |  |     CON_INITCALL | 
					
						
							|  |  |  |     SECURITY_INITCALL | 
					
						
							|  |  |  |     INIT_RAM_FS | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2007-05-31 17:47:01 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-24 10:36:19 -04:00
										 |  |  |   PERCPU(PAGE_SIZE) | 
					
						
							| 
									
										
										
										
											2007-05-31 17:47:01 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  |   /* We need this dummy segment here */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   . = ALIGN(4);
 | 
					
						
							|  |  |  |   .dummy : { LONG(0) } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* The vectors are relocated to the real position at startup time */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SECTION_VECTOR (_WindowVectors_text, | 
					
						
							|  |  |  | 		  .WindowVectors.text, | 
					
						
							|  |  |  | 		  XCHAL_WINDOW_VECTORS_VADDR, 4, | 
					
						
							|  |  |  | 		  .dummy) | 
					
						
							|  |  |  |   SECTION_VECTOR (_DebugInterruptVector_literal, | 
					
						
							|  |  |  | 		  .DebugInterruptVector.literal, | 
					
						
							| 
									
										
										
										
											2006-12-10 02:18:48 -08:00
										 |  |  | 		  XCHAL_DEBUG_VECTOR_VADDR - 4, | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | 		  SIZEOF(.WindowVectors.text), | 
					
						
							|  |  |  | 		  .WindowVectors.text) | 
					
						
							|  |  |  |   SECTION_VECTOR (_DebugInterruptVector_text, | 
					
						
							|  |  |  | 		  .DebugInterruptVector.text, | 
					
						
							| 
									
										
										
										
											2006-12-10 02:18:48 -08:00
										 |  |  | 		  XCHAL_DEBUG_VECTOR_VADDR, | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | 		  4, | 
					
						
							|  |  |  | 		  .DebugInterruptVector.literal) | 
					
						
							|  |  |  |   SECTION_VECTOR (_KernelExceptionVector_literal, | 
					
						
							|  |  |  | 		  .KernelExceptionVector.literal, | 
					
						
							| 
									
										
										
										
											2006-12-10 02:18:48 -08:00
										 |  |  | 		  XCHAL_KERNEL_VECTOR_VADDR - 4, | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | 		  SIZEOF(.DebugInterruptVector.text), | 
					
						
							|  |  |  | 		  .DebugInterruptVector.text) | 
					
						
							|  |  |  |   SECTION_VECTOR (_KernelExceptionVector_text, | 
					
						
							|  |  |  | 		  .KernelExceptionVector.text, | 
					
						
							| 
									
										
										
										
											2006-12-10 02:18:48 -08:00
										 |  |  | 		  XCHAL_KERNEL_VECTOR_VADDR, | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | 		  4, | 
					
						
							|  |  |  | 		  .KernelExceptionVector.literal) | 
					
						
							|  |  |  |   SECTION_VECTOR (_UserExceptionVector_literal, | 
					
						
							|  |  |  | 		  .UserExceptionVector.literal, | 
					
						
							| 
									
										
										
										
											2006-12-10 02:18:48 -08:00
										 |  |  | 		  XCHAL_USER_VECTOR_VADDR - 4, | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | 		  SIZEOF(.KernelExceptionVector.text), | 
					
						
							|  |  |  | 		  .KernelExceptionVector.text) | 
					
						
							|  |  |  |   SECTION_VECTOR (_UserExceptionVector_text, | 
					
						
							|  |  |  | 		  .UserExceptionVector.text, | 
					
						
							| 
									
										
										
										
											2006-12-10 02:18:48 -08:00
										 |  |  | 		  XCHAL_USER_VECTOR_VADDR, | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | 		  4, | 
					
						
							|  |  |  | 		  .UserExceptionVector.literal) | 
					
						
							|  |  |  |   SECTION_VECTOR (_DoubleExceptionVector_literal, | 
					
						
							|  |  |  | 		  .DoubleExceptionVector.literal, | 
					
						
							|  |  |  | 		  XCHAL_DOUBLEEXC_VECTOR_VADDR - 16, | 
					
						
							|  |  |  | 		  SIZEOF(.UserExceptionVector.text), | 
					
						
							|  |  |  | 		  .UserExceptionVector.text) | 
					
						
							|  |  |  |   SECTION_VECTOR (_DoubleExceptionVector_text, | 
					
						
							|  |  |  | 		  .DoubleExceptionVector.text, | 
					
						
							|  |  |  | 		  XCHAL_DOUBLEEXC_VECTOR_VADDR, | 
					
						
							|  |  |  | 		  32, | 
					
						
							|  |  |  | 		  .DoubleExceptionVector.literal) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   . = (LOADADDR( .DoubleExceptionVector.text ) + SIZEOF( .DoubleExceptionVector.text ) + 3) & ~ 3;
 | 
					
						
							| 
									
										
										
										
											2009-09-24 10:36:19 -04:00
										 |  |  |   . = ALIGN(PAGE_SIZE);
 | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   __init_end = .;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-24 10:36:19 -04:00
										 |  |  |   BSS_SECTION(0, 8192, 0) | 
					
						
							| 
									
										
										
										
											2007-05-31 17:47:01 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  |   _end = .;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* only used by the boot loader  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   . = ALIGN(0x10);
 | 
					
						
							|  |  |  |   .bootstrap : { *(.bootstrap.literal .bootstrap.text .bootstrap.data) } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   . = ALIGN(0x1000);
 | 
					
						
							|  |  |  |   __initrd_start = .;
 | 
					
						
							|  |  |  |   .initrd : { *(.initrd) } | 
					
						
							|  |  |  |   __initrd_end = .;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .ResetVector.text XCHAL_RESET_VECTOR_VADDR : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     *(.ResetVector.text) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-31 17:47:01 -07:00
										 |  |  |   .xt.lit : { *(.xt.lit) } | 
					
						
							|  |  |  |   .xt.prop : { *(.xt.prop) } | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   .debug  0 :  { *(.debug) } | 
					
						
							|  |  |  |   .line  0 :  { *(.line) } | 
					
						
							|  |  |  |   .debug_srcinfo  0 :  { *(.debug_srcinfo) } | 
					
						
							|  |  |  |   .debug_sfnames  0 :  { *(.debug_sfnames) } | 
					
						
							|  |  |  |   .debug_aranges  0 :  { *(.debug_aranges) } | 
					
						
							|  |  |  |   .debug_pubnames  0 :  { *(.debug_pubnames) } | 
					
						
							|  |  |  |   .debug_info  0 :  { *(.debug_info) } | 
					
						
							|  |  |  |   .debug_abbrev  0 :  { *(.debug_abbrev) } | 
					
						
							|  |  |  |   .debug_line  0 :  { *(.debug_line) } | 
					
						
							|  |  |  |   .debug_frame  0 :  { *(.debug_frame) } | 
					
						
							|  |  |  |   .debug_str  0 :  { *(.debug_str) } | 
					
						
							|  |  |  |   .debug_loc  0 :  { *(.debug_loc) } | 
					
						
							|  |  |  |   .debug_macinfo  0 :  { *(.debug_macinfo) } | 
					
						
							|  |  |  |   .debug_weaknames  0 :  { *(.debug_weaknames) } | 
					
						
							|  |  |  |   .debug_funcnames  0 :  { *(.debug_funcnames) } | 
					
						
							|  |  |  |   .debug_typenames  0 :  { *(.debug_typenames) } | 
					
						
							|  |  |  |   .debug_varnames  0 :  { *(.debug_varnames) } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .xt.insn 0 : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     *(.xt.insn) | 
					
						
							|  |  |  |     *(.gnu.linkonce.x*) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .xt.lit 0 : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     *(.xt.lit) | 
					
						
							|  |  |  |     *(.gnu.linkonce.p*) | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
											  
											
												linker script: unify usage of discard definition
Discarded sections in different archs share some commonality but have
considerable differences.  This led to linker script for each arch
implementing its own /DISCARD/ definition, which makes maintaining
tedious and adding new entries error-prone.
This patch makes all linker scripts to move discard definitions to the
end of the linker script and use the common DISCARDS macro.  As ld
uses the first matching section definition, archs can include default
discarded sections by including them earlier in the linker script.
ia64 is notable because it first throws away some ia64 specific
subsections and then include the rest of the sections into the final
image, so those sections must be discarded before the inclusion.
defconfig compile tested for x86, x86-64, powerpc, powerpc64, ia64,
alpha, sparc, sparc64 and s390.  Michal Simek tested microblaze.
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Paul Mundt <lethal@linux-sh.org>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Tested-by: Michal Simek <monstr@monstr.eu>
Cc: linux-arch@vger.kernel.org
Cc: Michal Simek <monstr@monstr.eu>
Cc: microblaze-uclinux@itee.uq.edu.au
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Tony Luck <tony.luck@intel.com>
											
										 
											2009-07-09 11:27:40 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  |   /* Sections to be discarded */ | 
					
						
							|  |  |  |   DISCARDS | 
					
						
							|  |  |  |   /DISCARD/ : { *(.exit.literal) } | 
					
						
							| 
									
										
										
										
											2005-06-23 22:01:16 -07:00
										 |  |  | } |