david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[linux] Add linux platform skeleton

Add makefiles, ld scripts and default config for linux platform for
both i386 and x86_64.

Signed-off-by: Piotr Jaroszyński <p.jaroszynski@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Piotr Jaroszyński 2010-04-08 01:25:38 +02:00 committed by Michael Brown
parent 1822b1deb9
commit e84db1121b
7 changed files with 239 additions and 2 deletions

View File

@ -0,0 +1,6 @@
LDSCRIPT = arch/i386/scripts/linux.lds
SRCDIRS += arch/i386/core/linux
MAKEDEPS += arch/x86/Makefile.linux
include arch/x86/Makefile.linux

View File

@ -0,0 +1,101 @@
/* -*- sh -*- */
/*
* Linker script for i386 Linux images
*
*/
OUTPUT_FORMAT ( "elf32-i386", "elf32-i386", "elf32-i386" )
OUTPUT_ARCH ( i386 )
ENTRY ( _start )
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
*
*/
. = ALIGN ( _max_align );
.data : {
_data = .;
*(.data)
*(.data.*)
*(SORT(.tbl.*)) /* Various tables. See include/tables.h */
_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)
_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.*)
*(.eh_frame)
*(.eh_frame.*)
*(.rel)
*(.rel.*)
*(.discard)
}
}

View File

@ -5,5 +5,8 @@ INCDIRS += arch/x86/include
# x86-specific directories containing source files
#
SRCDIRS += arch/x86/core
SRCDIRS += arch/x86/interface/efi
SRCDIRS += arch/x86/prefix
SRCDIRS += arch/x86/interface/efi
SRCDIRS += arch/x86/prefix
# breaks building some of the linux-related objects
CFLAGS += -Ulinux

View File

@ -0,0 +1,8 @@
MEDIA = linux
INCDIRS += arch/x86/include/linux
SRCDIRS += arch/x86/core/linux
$(BIN)/%.linux : $(BIN)/%.linux.tmp
$(QM)$(ECHO) " [FINISH] $@"
$(Q)cp -p $< $@

View File

@ -0,0 +1,6 @@
LDSCRIPT = arch/x86_64/scripts/linux.lds
SRCDIRS += arch/x86_64/core/linux
MAKEDEPS += arch/x86/Makefile.linux
include arch/x86/Makefile.linux

View File

@ -0,0 +1,101 @@
/* -*- sh -*- */
/*
* Linker script for x86_64 Linux images
*
*/
OUTPUT_FORMAT ( "elf64-x86-64", "elf64-x86-64", "elf64-x86-64" )
OUTPUT_ARCH ( i386:x86-64 )
ENTRY ( _start )
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
*
*/
. = ALIGN ( _max_align );
.data : {
_data = .;
*(.data)
*(.data.*)
*(SORT(.tbl.*)) /* Various tables. See include/tables.h */
_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)
_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.*)
*(.eh_frame)
*(.eh_frame.*)
*(.rel)
*(.rel.*)
*(.discard)
}
}

View File

@ -0,0 +1,12 @@
#ifndef CONFIG_DEFAULTS_LINUX_H
#define CONFIG_DEFAULTS_LINUX_H
/** @file
*
* Configuration defaults for linux
*
*/
#define IMAGE_SCRIPT
#endif /* CONFIG_DEFAULTS_LINUX_H */