200 lines
5.2 KiB
Plaintext
200 lines
5.2 KiB
Plaintext
/* Kernel entry function */
|
|
ENTRY(_start)
|
|
|
|
OUTPUT_FORMAT(elf32-i386)
|
|
|
|
SECTIONS {
|
|
|
|
/DISCARD/ : {
|
|
*(".text.inlined*")
|
|
*(.comment)
|
|
*(.eh_frame)
|
|
*(.note.gnu.build-id)
|
|
}
|
|
|
|
/* Set kernel start address */
|
|
. = 0x100000;
|
|
|
|
/* Code and readonly data */
|
|
.text : {
|
|
/* fill gaps with int3 opcode to detect invalid jumps */
|
|
FILL(0xcc)
|
|
|
|
/* multiboot header */
|
|
multiboot_header = .;
|
|
KEEP (*(".rodata.multiboot"))
|
|
|
|
/* /\* fixed address for IRQ handlers *\/ */
|
|
/* . = 0x1000; */
|
|
|
|
/* /\* start of interrupt handlers *\/ */
|
|
/* _stext_irqs = .; */
|
|
|
|
/* /\* IRQ Handlers *\/ */
|
|
/* KEEP (*(".text.irqhandlers*")) /\* ASM *\/ */
|
|
/* KEEP (*(".text.irq_handler*")) /\* C *\/ */
|
|
/* *(".text.isrs*") /\* C *\/ */
|
|
/* *(".text.isr_*") /\* C *\/ */
|
|
/* KEEP (*(".text.OSEKOS_ISR*")) */
|
|
/* KEEP (*(".text.idt")) /\* ASM *\/ */
|
|
|
|
/* /\* sysenter handler *\/ */
|
|
/* KEEP (*(".text.sysenter_syscall")) */
|
|
|
|
/* _etext_irqs = .; */
|
|
/* . += 16; /\* padding after data, workaround for import-trace *\/ */
|
|
|
|
KEEP (*(".text.startup"))
|
|
|
|
/* place before .text, otherwise they'll be caught by the wildcard */
|
|
|
|
/* AOT binary array */
|
|
_wamr_aot_start = .;
|
|
*(".text.wamr_aot")
|
|
_wamr_aot_end = .;
|
|
|
|
/* The mmap_space memory used by os_mmap in baremetal platform */
|
|
_wamr_mmap_start = .;
|
|
*(".text.wamr_mmap")
|
|
_wamr_mmap_end = .;
|
|
|
|
/* The runtime memory pool used by Alloc_With_Usage */
|
|
_wamr_runtime_pool_start = .;
|
|
*(".text.wamr_runtime_pool")
|
|
_wamr_runtime_pool_end = .;
|
|
|
|
/* The linear memory pool used by Alloc_With_Usage */
|
|
_wamr_linear_pool_start = .;
|
|
*(".text.wamr_linear_pool")
|
|
_wamr_linear_pool_end = .;
|
|
|
|
/* The memory pool used by Alloc_With_Pool */
|
|
_wamr_global_heap_start = .;
|
|
*(".text.wamr_global_heap")
|
|
_wamr_global_heap_end = .;
|
|
|
|
/*
|
|
The libiwasm.a contains the following objects:
|
|
|
|
aot_intrinsic.c.obj
|
|
aot_loader.c.obj
|
|
aot_reloc_x86_32.c.obj
|
|
aot_runtime.c.obj
|
|
bh_assert.c.obj
|
|
bh_bitmap.c.obj
|
|
bh_common.c.obj
|
|
bh_hashmap.c.obj
|
|
bh_leb128.c.obj
|
|
bh_list.c.obj
|
|
bh_log.c.obj
|
|
bh_queue.c.obj
|
|
bh_vector.c.obj
|
|
ems_alloc.c.obj
|
|
ems_gc.c.obj
|
|
ems_hmu.c.obj
|
|
ems_kfc.c.obj
|
|
invokeNative_ia32.s.obj
|
|
libc_builtin_wrapper.c.obj
|
|
mem_alloc.c.obj
|
|
platform_init.c.obj
|
|
runtime_timer.c.obj
|
|
wasm_application.c.obj
|
|
wasm_blocking_op.c.obj
|
|
wasm_c_api.c.obj
|
|
wasm_exec_env.c.obj
|
|
wasm_interp_classic.c.obj
|
|
wasm_loader.c.obj
|
|
wasm_loader_common.c.obj
|
|
wasm_memory.c.obj
|
|
wasm_native.c.obj
|
|
wasm_runtime.c.obj
|
|
wasm_runtime_common.c.obj
|
|
wasm_shared_memory.c.obj
|
|
*/
|
|
|
|
/* Put the .text section from aot_runtime.c.obj from libiwasm.a here */
|
|
_iwasm_aot_runtime_start = .;
|
|
*aot_runtime.c.obj(.text .text.*)
|
|
_iwasm_aot_runtime_end = .;
|
|
|
|
/* Put the utility library here */
|
|
_iwasm_bh_start = .;
|
|
*bh_*.c.obj(.text .text.*)
|
|
_iwasm_bh_end = .;
|
|
|
|
/* Put the allocator here */
|
|
_iwasm_mem_alloc_start = .;
|
|
*mem_alloc.c.obj(.text .text.*)
|
|
_iwasm_mem_alloc_end = .;
|
|
|
|
/* Put the baremetal platform here */
|
|
_iwasm_platform_init_start = .;
|
|
*platform_init.c.obj(.text .text.*)
|
|
_iwasm_platform_init_end = .;
|
|
|
|
/* Put the exec_env here */
|
|
_iwasm_exec_env_start = .;
|
|
*wasm_exec_env.c.obj(.text .text.*)
|
|
_iwasm_exec_env_end = .;
|
|
|
|
/* Put the classic interpreter here */
|
|
_iwasm_interp_classic_start = .;
|
|
*wasm_interp_classic.c.obj(.text .text.*)
|
|
_iwasm_interp_classic_end = .;
|
|
|
|
/* Put the wasm memory here */
|
|
_iwasm_memory_start = .;
|
|
*wasm_memory.c.obj(.text .text.*)
|
|
_iwasm_memory_end = .;
|
|
|
|
/* Put the wasm native here */
|
|
_iwasm_native_start = .;
|
|
*wasm_native.c.obj(.text .text.*)
|
|
_iwasm_native_end = .;
|
|
|
|
/* Put the wasm runtime here */
|
|
_iwasm_runtime_start = .;
|
|
*wasm_runtime.c.obj(.text .text.*)
|
|
*wasm_runtime_common.c.obj(.text .text.*)
|
|
_iwasm_runtime_end = .;
|
|
|
|
_text_start = .;
|
|
*(".text*")
|
|
_text_end = .;
|
|
|
|
*(".rodata*")
|
|
}
|
|
|
|
/* Data and Stacks */
|
|
/* NOTE: When including the WAMR mmap region inside .text, it has to be large */
|
|
/* . = 0x200000; */
|
|
. = ALIGN(4096);
|
|
.data : {
|
|
KEEP (*(".startup_stack"))
|
|
KEEP (*(".kernel_stack"))
|
|
*(".data*")
|
|
}
|
|
|
|
/* Uninitialized data */
|
|
.bss : {
|
|
_sbss = .;
|
|
*(.bss*)
|
|
*(COMMON)
|
|
_ebss = .;
|
|
}
|
|
|
|
/* Align and mark end of all sections — heap starts here */
|
|
. = ALIGN(4096);
|
|
_end = .;
|
|
|
|
/* Memory-mapped I/O APIC */
|
|
_sioapic = 0xFEC00000;
|
|
ioapic = 0xFEC00000;
|
|
_eioapic = 0xFEC00FFF;
|
|
|
|
/* Memory-mapped Local APIC */
|
|
_slapic = 0xFEE00000;
|
|
lapic = 0xFEE00000;
|
|
_elapic = 0xFEE00FFF;
|
|
}
|