aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Makefile.linux4
-rw-r--r--src/arch/i386/Makefile.linux4
-rw-r--r--src/arch/x86_64/Makefile.linux4
-rw-r--r--src/arch/x86_64/scripts/linux.lds106
-rw-r--r--src/scripts/linux.lds (renamed from src/arch/i386/scripts/linux.lds)7
5 files changed, 9 insertions, 116 deletions
diff --git a/src/Makefile.linux b/src/Makefile.linux
index 85d9c64..b278c8c 100644
--- a/src/Makefile.linux
+++ b/src/Makefile.linux
@@ -8,6 +8,10 @@ SYMBOL_PREFIX = _ipxe__
#
CFLAGS += -UNVALGRIND
+# The Linux linker script
+#
+LDSCRIPT = scripts/linux.lds
+
# Use a two-stage link
#
LDFLAGS += -r -d
diff --git a/src/arch/i386/Makefile.linux b/src/arch/i386/Makefile.linux
index fe4229e..5992b06 100644
--- a/src/arch/i386/Makefile.linux
+++ b/src/arch/i386/Makefile.linux
@@ -1,8 +1,8 @@
# -*- 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
#
diff --git a/src/arch/x86_64/Makefile.linux b/src/arch/x86_64/Makefile.linux
index c41ee49..3372d70 100644
--- a/src/arch/x86_64/Makefile.linux
+++ b/src/arch/x86_64/Makefile.linux
@@ -1,8 +1,8 @@
# -*- 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
#
diff --git a/src/arch/x86_64/scripts/linux.lds b/src/arch/x86_64/scripts/linux.lds
deleted file mode 100644
index a093787..0000000
--- a/src/arch/x86_64/scripts/linux.lds
+++ /dev/null
@@ -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.*)
- }
-}
diff --git a/src/arch/i386/scripts/linux.lds b/src/scripts/linux.lds
index 8c3a7b0..afc0128 100644
--- a/src/arch/i386/scripts/linux.lds
+++ b/src/scripts/linux.lds
@@ -1,18 +1,13 @@
/* -*- sh -*- */
/*
- * Linker script for i386 Linux images
+ * Linker script for Linux images
*
*/
-OUTPUT_FORMAT ( "elf32-i386", "elf32-i386", "elf32-i386" )
-OUTPUT_ARCH ( i386 )
-
SECTIONS {
_max_align = 32;
- . = 0x08048000;
-
/*
* The text section
*