mirror of
				https://gitlab.com/qemu-project/ipxe.git
				synced 2025-11-03 07:59:06 +08:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 31d6eac302 | 
@ -4,6 +4,10 @@
 | 
			
		||||
#
 | 
			
		||||
LDSCRIPT = arch/i386/scripts/linux.lds
 | 
			
		||||
 | 
			
		||||
# Starting virtual address
 | 
			
		||||
#
 | 
			
		||||
LDFLAGS += -Ttext=0x08048000
 | 
			
		||||
 | 
			
		||||
# Compiler flags for building host API wrapper
 | 
			
		||||
#
 | 
			
		||||
LINUX_CFLAGS	+= -m32
 | 
			
		||||
 | 
			
		||||
@ -8,99 +8,4 @@
 | 
			
		||||
OUTPUT_FORMAT ( "elf32-i386", "elf32-i386", "elf32-i386" )
 | 
			
		||||
OUTPUT_ARCH ( i386 )
 | 
			
		||||
 | 
			
		||||
SECTIONS {
 | 
			
		||||
	_max_align = 32;
 | 
			
		||||
 | 
			
		||||
	. = 0x08048000;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * The text section
 | 
			
		||||
	 *
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	. = ALIGN ( _max_align );
 | 
			
		||||
	.text : {
 | 
			
		||||
		_text = .;
 | 
			
		||||
		*(.text)
 | 
			
		||||
		*(.text.*)
 | 
			
		||||
		_etext = .;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * The rodata section
 | 
			
		||||
	 *
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	. = ALIGN ( _max_align );
 | 
			
		||||
	.rodata : {
 | 
			
		||||
		_rodata = .;
 | 
			
		||||
		*(.rodata)
 | 
			
		||||
		*(.rodata.*)
 | 
			
		||||
		_erodata = .;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * The data section
 | 
			
		||||
	 *
 | 
			
		||||
	 * Adjust the address for the data segment.  We want to adjust up to
 | 
			
		||||
	 * the same address within the page on the next page up.
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	. = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1));
 | 
			
		||||
	. = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
 | 
			
		||||
	.data : {
 | 
			
		||||
		_data = .;
 | 
			
		||||
		*(.data)
 | 
			
		||||
		*(.data.*)
 | 
			
		||||
		KEEP(*(SORT(.tbl.*)))
 | 
			
		||||
		KEEP(*(.provided))
 | 
			
		||||
		KEEP(*(.provided.*))
 | 
			
		||||
		_edata = .;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * The bss section
 | 
			
		||||
	 *
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	. = ALIGN ( _max_align );
 | 
			
		||||
	.bss : {
 | 
			
		||||
		_bss = .;
 | 
			
		||||
		*(.bss)
 | 
			
		||||
		*(.bss.*)
 | 
			
		||||
		*(COMMON)
 | 
			
		||||
		_ebss = .;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Weak symbols that need zero values if not otherwise defined
 | 
			
		||||
	 *
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	.weak 0x0 : {
 | 
			
		||||
		_weak = .;
 | 
			
		||||
		*(.weak)
 | 
			
		||||
		*(.weak.*)
 | 
			
		||||
		_eweak = .;
 | 
			
		||||
	}
 | 
			
		||||
	_assert = ASSERT ( ( _weak == _eweak ), ".weak is non-zero length" );
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Dispose of the comment and note sections to make the link map
 | 
			
		||||
	 * easier to read
 | 
			
		||||
	 *
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	/DISCARD/ : {
 | 
			
		||||
		*(.comment)
 | 
			
		||||
		*(.comment.*)
 | 
			
		||||
		*(.note)
 | 
			
		||||
		*(.note.*)
 | 
			
		||||
		*(.rel)
 | 
			
		||||
		*(.rel.*)
 | 
			
		||||
		*(.discard)
 | 
			
		||||
		*(.discard.*)
 | 
			
		||||
		*(.sbat)
 | 
			
		||||
		*(.sbat.*)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
INCLUDE scripts/linux.lds
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,10 @@
 | 
			
		||||
#
 | 
			
		||||
LDSCRIPT = arch/x86_64/scripts/linux.lds
 | 
			
		||||
 | 
			
		||||
# Starting virtual address
 | 
			
		||||
#
 | 
			
		||||
LDFLAGS += -Ttext=0x400000
 | 
			
		||||
 | 
			
		||||
# Include generic Linux Makefile
 | 
			
		||||
#
 | 
			
		||||
MAKEDEPS += arch/x86/Makefile.linux
 | 
			
		||||
 | 
			
		||||
@ -8,99 +8,4 @@
 | 
			
		||||
OUTPUT_FORMAT ( "elf64-x86-64", "elf64-x86-64", "elf64-x86-64" )
 | 
			
		||||
OUTPUT_ARCH ( i386:x86-64 )
 | 
			
		||||
 | 
			
		||||
SECTIONS {
 | 
			
		||||
	_max_align = 32;
 | 
			
		||||
 | 
			
		||||
	. = 0x400000;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * The text section
 | 
			
		||||
	 *
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	. = ALIGN ( _max_align );
 | 
			
		||||
	.text : {
 | 
			
		||||
		_text = .;
 | 
			
		||||
		*(.text)
 | 
			
		||||
		*(.text.*)
 | 
			
		||||
		_etext = .;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * The rodata section
 | 
			
		||||
	 *
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	. = ALIGN ( _max_align );
 | 
			
		||||
	.rodata : {
 | 
			
		||||
		_rodata = .;
 | 
			
		||||
		*(.rodata)
 | 
			
		||||
		*(.rodata.*)
 | 
			
		||||
		_erodata = .;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * The data section
 | 
			
		||||
	 *
 | 
			
		||||
	 * Adjust the address for the data segment.  We want to adjust up to
 | 
			
		||||
	 * the same address within the page on the next page up.
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	. = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1));
 | 
			
		||||
	. = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
 | 
			
		||||
	.data : {
 | 
			
		||||
		_data = .;
 | 
			
		||||
		*(.data)
 | 
			
		||||
		*(.data.*)
 | 
			
		||||
		KEEP(*(SORT(.tbl.*)))
 | 
			
		||||
		KEEP(*(.provided))
 | 
			
		||||
		KEEP(*(.provided.*))
 | 
			
		||||
		_edata = .;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * The bss section
 | 
			
		||||
	 *
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	. = ALIGN ( _max_align );
 | 
			
		||||
	.bss : {
 | 
			
		||||
		_bss = .;
 | 
			
		||||
		*(.bss)
 | 
			
		||||
		*(.bss.*)
 | 
			
		||||
		*(COMMON)
 | 
			
		||||
		_ebss = .;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Weak symbols that need zero values if not otherwise defined
 | 
			
		||||
	 *
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	.weak 0x0 : {
 | 
			
		||||
		_weak = .;
 | 
			
		||||
		*(.weak)
 | 
			
		||||
		*(.weak.*)
 | 
			
		||||
		_eweak = .;
 | 
			
		||||
	}
 | 
			
		||||
	_assert = ASSERT ( ( _weak == _eweak ), ".weak is non-zero length" );
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Dispose of the comment and note sections to make the link map
 | 
			
		||||
	 * easier to read
 | 
			
		||||
	 *
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	/DISCARD/ : {
 | 
			
		||||
		*(.comment)
 | 
			
		||||
		*(.comment.*)
 | 
			
		||||
		*(.note)
 | 
			
		||||
		*(.note.*)
 | 
			
		||||
		*(.rel)
 | 
			
		||||
		*(.rel.*)
 | 
			
		||||
		*(.discard)
 | 
			
		||||
		*(.discard.*)
 | 
			
		||||
		*(.sbat)
 | 
			
		||||
		*(.sbat.*)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
INCLUDE scripts/linux.lds
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										101
									
								
								src/scripts/linux.lds
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								src/scripts/linux.lds
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,101 @@
 | 
			
		||||
/* -*- sh -*- */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Linker script for Linux images
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
SECTIONS {
 | 
			
		||||
	_max_align = 32;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * The text section
 | 
			
		||||
	 *
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	. = ALIGN ( _max_align );
 | 
			
		||||
	.text : {
 | 
			
		||||
		_text = .;
 | 
			
		||||
		*(.text)
 | 
			
		||||
		*(.text.*)
 | 
			
		||||
		_etext = .;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * The rodata section
 | 
			
		||||
	 *
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	. = ALIGN ( _max_align );
 | 
			
		||||
	.rodata : {
 | 
			
		||||
		_rodata = .;
 | 
			
		||||
		*(.rodata)
 | 
			
		||||
		*(.rodata.*)
 | 
			
		||||
		_erodata = .;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * The data section
 | 
			
		||||
	 *
 | 
			
		||||
	 * Adjust the address for the data segment.  We want to adjust up to
 | 
			
		||||
	 * the same address within the page on the next page up.
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	. = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1));
 | 
			
		||||
	. = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
 | 
			
		||||
	.data : {
 | 
			
		||||
		_data = .;
 | 
			
		||||
		*(.data)
 | 
			
		||||
		*(.data.*)
 | 
			
		||||
		KEEP(*(SORT(.tbl.*)))
 | 
			
		||||
		KEEP(*(.provided))
 | 
			
		||||
		KEEP(*(.provided.*))
 | 
			
		||||
		_edata = .;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * The bss section
 | 
			
		||||
	 *
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	. = ALIGN ( _max_align );
 | 
			
		||||
	.bss : {
 | 
			
		||||
		_bss = .;
 | 
			
		||||
		*(.bss)
 | 
			
		||||
		*(.bss.*)
 | 
			
		||||
		*(COMMON)
 | 
			
		||||
		_ebss = .;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Weak symbols that need zero values if not otherwise defined
 | 
			
		||||
	 *
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	.weak 0x0 : {
 | 
			
		||||
		_weak = .;
 | 
			
		||||
		*(.weak)
 | 
			
		||||
		*(.weak.*)
 | 
			
		||||
		_eweak = .;
 | 
			
		||||
	}
 | 
			
		||||
	_assert = ASSERT ( ( _weak == _eweak ), ".weak is non-zero length" );
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Dispose of the comment and note sections to make the link map
 | 
			
		||||
	 * easier to read
 | 
			
		||||
	 *
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	/DISCARD/ : {
 | 
			
		||||
		*(.comment)
 | 
			
		||||
		*(.comment.*)
 | 
			
		||||
		*(.note)
 | 
			
		||||
		*(.note.*)
 | 
			
		||||
		*(.rel)
 | 
			
		||||
		*(.rel.*)
 | 
			
		||||
		*(.discard)
 | 
			
		||||
		*(.discard.*)
 | 
			
		||||
		*(.sbat)
 | 
			
		||||
		*(.sbat.*)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user