Fixed linker and switched it to use clang directly instead of lld.
This commit is contained in:
parent
c05bcbec88
commit
7faa974542
36
linker.ld
36
linker.ld
@ -1,32 +1,30 @@
|
||||
OUTPUT_FORMAT(elf32-i386)
|
||||
ENTRY (start)
|
||||
/* http://wiki.osdev.org/Bare_Bones#Linking_the_Kernel */
|
||||
ENTRY(_start)
|
||||
|
||||
SECTIONS{
|
||||
. = 0x00100000;
|
||||
SECTIONS
|
||||
{
|
||||
. = 1M;
|
||||
|
||||
.text :{
|
||||
code = .; _code = .; __code = .;
|
||||
.text BLOCK(4K) : ALIGN(4K)
|
||||
{
|
||||
*(.multiboot)
|
||||
*(.text)
|
||||
}
|
||||
|
||||
.rodata BLOCK(4K) : ALIGN(4K)
|
||||
{
|
||||
*(.rodata)
|
||||
}
|
||||
|
||||
.rodata ALIGN (0x1000) : {
|
||||
*(.rodata)
|
||||
}
|
||||
|
||||
.data ALIGN (0x1000) : {
|
||||
data = .; _data = .; __data = .;
|
||||
.data BLOCK(4K) : ALIGN(4K)
|
||||
{
|
||||
*(.data)
|
||||
start_ctors = .; *(.ctors) end_ctors = .;
|
||||
start_dtors = .; *(.dtors) end_dtors = .;
|
||||
}
|
||||
|
||||
.bss : {
|
||||
sbss = .;
|
||||
bss = .; _bss = .; __bss = .;
|
||||
.bss BLOCK(4K) : ALIGN(4K)
|
||||
{
|
||||
*(COMMON)
|
||||
*(.bss)
|
||||
ebss = .;
|
||||
}
|
||||
end = .; _end = .; __end = .;
|
||||
|
||||
}
|
||||
|
2
makefile
2
makefile
@ -1,7 +1,7 @@
|
||||
all: kernel
|
||||
|
||||
kernel: bootloader
|
||||
nim cc --cc:clang --clang.linkerexe=ld.lld --gc:none --deadCodeElim:on --cpu:i386 --os:standalone --passC:"-ffreestanding -nostdlib --target=i686-pc-none-elf -march=i686" --passL:"-m elf_i386 -T linker.ld boot.o" kernel.nim
|
||||
nim cc --cc:clang --clang.linkerexe=clang --gc:none --deadCodeElim:on -d:StandaloneHeapSize=4096 --cpu:i386 --os:standalone --passC:"-ffreestanding -nostdlib --target=i686-pc-none-elf -march=i686" --passL:"-target i386 -nostdlib -T linker.ld boot.o" kernel.nim
|
||||
|
||||
bootloader:
|
||||
nasm -felf32 boot.s -o boot.o
|
||||
|
Loading…
Reference in New Issue
Block a user