ENTRY(_start)
-PHDRS {
+/*PHDRS {
data PT_LOAD;
#ifdef IMAGE_MODE
mods PT_LOAD;
#endif
-}
+}*/
SECTIONS
{
-#define JH
-#define ENTRY_OFFSET (0x0)
-#ifdef JH
- #define ENTRY_OFFSET (0xf0000)
+#define LOAD_OFFSET (0x0)
+#ifdef JAILHOUSE
+ #define LOAD_OFFSET (0xf0000)
. = 0;
/* 16-bit sections */
- .jh-startup : { *(.jh.startup) }
+ .jh-startup : { *(.jh.startup) }
. = 0xfff0;
.jh-boot : {
#endif
#ifdef ARCH_amd64
- . = LINKADDR + SIZEOF_HEADERS + ENTRY_OFFSET;
+ . = LINKADDR + SIZEOF_HEADERS;
#else
- . = LINKADDR;
+ . = LINKADDR;
#endif
PROVIDE (ImageBase = LINKADDR);
- .hash : AT (ADDR(.hash) - ENTRY_OFFSET) { *(.hash) } : data /* this MUST come first! */
+ /*.hash : AT (ADDR(.hash) - LOAD_OFFSET) { *(.hash) } : data */ /* this MUST come first! */
/* Merge .text, .rodata, and .data in one segment to save space */
/* provide at least 1K space for PE header in case of EFI */
* this as free space for PE too
*/
/* FXIME: should make this depending on EFI */
- . = (. < (0x400 + LINKADDR)) ? (LINKADDR + 0x400) : .;
+ /*. = (. < (0x400 + LINKADDR)) ? (LINKADDR + 0x400) : .;*/
- .text : AT (ADDR(.text) - ENTRY_OFFSET)
+ .text : AT (ADDR(.text) - LOAD_OFFSET)
{
*(.init)
*(.text .text.* .gnu.linkonce.t*)
*(.rodata*)
- } : data
+ } /*: data*/
- .dynsym : AT (ADDR(.dynsym) - ENTRY_OFFSET) { *(.dynsym) } : data
- .dynstr : AT (ADDR(.dynstr) - ENTRY_OFFSET) { *(.dynstr) } : data
- .reloc : AT (ADDR(.reloc) - ENTRY_OFFSET) { *(.reloc) } : data
- .rel.dyn : AT (ADDR(.rel.dyn) - ENTRY_OFFSET)
+ .dynsym : AT (ADDR(.dynsym) - LOAD_OFFSET) { *(.dynsym) } /*: data*/
+ .dynstr : AT (ADDR(.dynstr) - LOAD_OFFSET) { *(.dynstr) } /*: data*/
+ .reloc : AT (ADDR(.reloc) - LOAD_OFFSET) { *(.reloc) } /*: data*/
+ .rel.dyn : AT (ADDR(.rel.dyn) - LOAD_OFFSET)
{
*(.rel.*) *(.rel.module_info)
- } : data
+ } /*: data*/
+
- .data : AT (ADDR(.data) - ENTRY_OFFSET)
+ .data : AT (ADDR(.data) - LOAD_OFFSET)
{
. = ALIGN(8);
*(.data)
CTORS
PLATFORMS
- } : data
+ } /*: data*/
- .data.module_info : AT (ADDR(.data.module_info) - ENTRY_OFFSET)
+
+ .data.module_info : AT (ADDR(.data.module_info) - LOAD_OFFSET)
{
. = ALIGN(16);
_module_info_start = .;
*(.module_info .module_info.*)
_module_info_end = .;
- } : data
+ } /*: data*/
+
- .dynamic : AT (ADDR(.dynamic) - ENTRY_OFFSET) { *(.dynamic) } : data
- .rela.dyn : AT (ADDR(.rela.dyn) - ENTRY_OFFSET)
+ .dynamic : AT (ADDR(.dynamic) - LOAD_OFFSET) { *(.dynamic) } /*: data*/
+ .rela.dyn : AT (ADDR(.rela.dyn) - LOAD_OFFSET)
{
*(.rela.init)
*(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
*(.rela.ifunc)
*(.rela.module*)
*(.rela.init_array)
- } : data
- .rela.plt : AT (ADDR(.rela.plt) - ENTRY_OFFSET)
+ } /*: data*/
+
+ .rela.plt : AT (ADDR(.rela.plt) - LOAD_OFFSET)
{
*(.rela.plt)
*(.rela.iplt)
- } : data
+ } /*: data*/
+
_edata = .;
PROVIDE (edata = .);
. = ALIGN(4096);
__bss_start = .;
- .bss : AT (ADDR(.bss) - ENTRY_OFFSET)
+ .bss : AT (ADDR(.bss) - LOAD_OFFSET)
{
*(.bss)
*(.bss.*)
*(COMMON)
*(.dynbss)
*(.bss_memmap)
- } : data
+ } /*: data*/
+
_end = . ;
PROVIDE (end = .);
. = ALIGN(4096);
. = RAM_BASE + MODADDR;
#endif
_module_data_start = .;
- .module_data : AT (ADDR(.module_data) - ENTRY_OFFSET) {
+ .module_data : AT (ADDR(.module_data) - LOAD_OFFSET) {
*(EXCLUDE_FILE (*mod00.bin *mod01.bin *mod02.bin) .module_data)
*(.module_data)
- } : mods
+ } /*: mods*/
+
_module_data_end = .;
#endif