 a5912f6b3e
			
		
	
	
	a5912f6b3e
	
	
	
		
			
			Older binutils breaks if ASSERT() is used without a sink
for the output.
For example 2.14.90.0.6 is known to be broken, the link
fails with:
  LD      .tmp_vmlinux1
  ld:arch/x86/kernel/vmlinux.lds:678: parse error
Document this quirk in all three files that use it.
  See:    http://marc.info/?l=linux-kbuild&m=124930110427870&w=2
  See[2]: d2ba8b2 ("x86: Fix assert syntax in vmlinux.lds.S")
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Roland McGrath <roland@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Sam Ravnborg <sam@ravnborg.org>
LKML-Reference: <4AD6523D.5030909@zytor.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
		
	
			
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| /*
 | |
|  * setup.ld
 | |
|  *
 | |
|  * Linker script for the i386 setup code
 | |
|  */
 | |
| OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
 | |
| OUTPUT_ARCH(i386)
 | |
| ENTRY(_start)
 | |
| 
 | |
| SECTIONS
 | |
| {
 | |
| 	. = 0;
 | |
| 	.bstext		: { *(.bstext) }
 | |
| 	.bsdata		: { *(.bsdata) }
 | |
| 
 | |
| 	. = 497;
 | |
| 	.header		: { *(.header) }
 | |
| 	.entrytext	: { *(.entrytext) }
 | |
| 	.inittext	: { *(.inittext) }
 | |
| 	.initdata	: { *(.initdata) }
 | |
| 	__end_init = .;
 | |
| 
 | |
| 	.text		: { *(.text) }
 | |
| 	.text32		: { *(.text32) }
 | |
| 
 | |
| 	. = ALIGN(16);
 | |
| 	.rodata		: { *(.rodata*) }
 | |
| 
 | |
| 	.videocards	: {
 | |
| 		video_cards = .;
 | |
| 		*(.videocards)
 | |
| 		video_cards_end = .;
 | |
| 	}
 | |
| 
 | |
| 	. = ALIGN(16);
 | |
| 	.data		: { *(.data*) }
 | |
| 
 | |
| 	.signature	: {
 | |
| 		setup_sig = .;
 | |
| 		LONG(0x5a5aaa55)
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 	. = ALIGN(16);
 | |
| 	.bss		:
 | |
| 	{
 | |
| 		__bss_start = .;
 | |
| 		*(.bss)
 | |
| 		__bss_end = .;
 | |
| 	}
 | |
| 	. = ALIGN(16);
 | |
| 	_end = .;
 | |
| 
 | |
| 	/DISCARD/ : { *(.note*) }
 | |
| 
 | |
| 	/*
 | |
| 	 * The ASSERT() sink to . is intentional, for binutils 2.14 compatibility:
 | |
| 	 */
 | |
| 	. = ASSERT(_end <= 0x8000, "Setup too big!");
 | |
| 	. = ASSERT(hdr == 0x1f1, "The setup header has the wrong offset!");
 | |
| 	/* Necessary for the very-old-loader check to work... */
 | |
| 	. = ASSERT(__end_init <= 5*512, "init sections too big!");
 | |
| 
 | |
| }
 |