mirror of https://github.com/ipxe/ipxe.git
[linux] Centralise the linker script for Linux binaries
Reduce duplication between i386 and x86_64 by providing a single shared linker script that both architectures can include. Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/858/head
parent
a99e435c8e
commit
475c0dfa8e
|
@ -8,6 +8,10 @@ SYMBOL_PREFIX = _ipxe__
|
||||||
#
|
#
|
||||||
CFLAGS += -UNVALGRIND
|
CFLAGS += -UNVALGRIND
|
||||||
|
|
||||||
|
# The Linux linker script
|
||||||
|
#
|
||||||
|
LDSCRIPT = scripts/linux.lds
|
||||||
|
|
||||||
# Use a two-stage link
|
# Use a two-stage link
|
||||||
#
|
#
|
||||||
LDFLAGS += -r -d
|
LDFLAGS += -r -d
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# -*- makefile -*- : Force emacs to use Makefile mode
|
# -*- makefile -*- : Force emacs to use Makefile mode
|
||||||
|
|
||||||
# Linker script
|
# Starting virtual address
|
||||||
#
|
#
|
||||||
LDSCRIPT = arch/i386/scripts/linux.lds
|
LDFLAGS += -Ttext=0x08048000
|
||||||
|
|
||||||
# Compiler flags for building host API wrapper
|
# Compiler flags for building host API wrapper
|
||||||
#
|
#
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# -*- makefile -*- : Force emacs to use Makefile mode
|
# -*- makefile -*- : Force emacs to use Makefile mode
|
||||||
|
|
||||||
# Linker script
|
# Starting virtual address
|
||||||
#
|
#
|
||||||
LDSCRIPT = arch/x86_64/scripts/linux.lds
|
LDFLAGS += -Ttext=0x400000
|
||||||
|
|
||||||
# Include generic Linux Makefile
|
# Include generic Linux Makefile
|
||||||
#
|
#
|
||||||
|
|
|
@ -1,106 +0,0 @@
|
||||||
/* -*- sh -*- */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Linker script for x86_64 Linux images
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
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.*)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,18 +1,13 @@
|
||||||
/* -*- sh -*- */
|
/* -*- sh -*- */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Linker script for i386 Linux images
|
* Linker script for Linux images
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
OUTPUT_FORMAT ( "elf32-i386", "elf32-i386", "elf32-i386" )
|
|
||||||
OUTPUT_ARCH ( i386 )
|
|
||||||
|
|
||||||
SECTIONS {
|
SECTIONS {
|
||||||
_max_align = 32;
|
_max_align = 32;
|
||||||
|
|
||||||
. = 0x08048000;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The text section
|
* The text section
|
||||||
*
|
*
|
Loading…
Reference in New Issue