From: Arun Thomas Date: Tue, 28 Jun 2011 13:34:19 +0000 (+0200) Subject: kernel: make clang-buildable X-Git-Tag: v3.2.0~516 X-Git-Url: http://zhaoyanbai.com/repos/doc/roff.7.html?a=commitdiff_plain;h=daa14edc0d7eaf724b2eb97d66e1d3b892167670;p=minix.git kernel: make clang-buildable --- diff --git a/kernel/Makefile b/kernel/Makefile index f98e15c37..a431e6633 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -21,22 +21,27 @@ CFLAGS += -D__kernel__ .if ${COMPILER_TYPE} == "ack" LDFLAGS+= -.o .elif ${COMPILER_TYPE} == "gnu" +CFLAGS+=-march=i386 CPPFLAGS+= -ffreestanding -fno-stack-protector -.if ${OBJECT_FMT} == "ELF" -LDFLAGS+= -T ${.CURDIR}/arch/${ARCH}/kernel_elf.lds -.else LDFLAGS+= -T ${.CURDIR}/arch/${ARCH}/kernel.lds -.endif LDFLAGS+= -nostdlib -L${LIBDIR} -CFLAGS+=-march=i386 +.endif + .if (${NBSD_LIBC} != "no") LDADD+= -lminlib DPADD+= ${LIBMINLIB} CPPFLAGS+= -D_NETBSD_SOURCE .else + +.if ${CC} == "gcc" DPADD+= ${LIBC} LDADD+= -lgcc -lc -lgcc +.elif ${CC} == "clang" +DPADD+= ${LIBC} +LDADD+= -L/usr/pkg/lib +LDADD+= -lCompilerRT-Generic -lc -lCompilerRT-Generic .endif + .endif CPPFLAGS+= -I${.CURDIR} -I${.CURDIR}/arch/${ARCH}/include -I${MINIXSRCDIR} diff --git a/kernel/arch/i386/kernel.lds b/kernel/arch/i386/kernel.lds index bdb27862b..2e290f383 100644 --- a/kernel/arch/i386/kernel.lds +++ b/kernel/arch/i386/kernel.lds @@ -2,12 +2,7 @@ OUTPUT_ARCH("i386") ENTRY(MINIX) SECTIONS { - . = 0x0; - _text = .; - begtext = .; - .text.head . : AT (0x0) { - *(.text.head) - } + . = 0x200000 + SIZEOF_HEADERS; .text . : AT (ADDR(.text) - 0x0000) { *(.text) *(.text.*) @@ -16,8 +11,6 @@ SECTIONS _etext = .; etext = .; - _data = .; - begdata = .; .data . : AT (ADDR(.data) - 0x0000) { _rodata = .; /* kernel data starts with this magic number */ @@ -27,17 +20,15 @@ SECTIONS _erodata = .; *(.data) *(.data.*) + . = ALIGN(4096); } _edata = .; - _bss = .; - begbss = .; + .bss . : AT (ADDR(.bss) - 0x0000) { *(.bss) *(.bss.*) *(COMMON) } - _ebss = .; - endbss = .; _end = .; end = .; diff --git a/kernel/arch/i386/kernel_elf.lds b/kernel/arch/i386/kernel_elf.lds deleted file mode 100644 index 2e290f383..000000000 --- a/kernel/arch/i386/kernel_elf.lds +++ /dev/null @@ -1,43 +0,0 @@ -OUTPUT_ARCH("i386") -ENTRY(MINIX) -SECTIONS -{ - . = 0x200000 + SIZEOF_HEADERS; - .text . : AT (ADDR(.text) - 0x0000) { - *(.text) - *(.text.*) - . = ALIGN(4096); - } - _etext = .; - etext = .; - - .data . : AT (ADDR(.data) - 0x0000) { - _rodata = .; - /* kernel data starts with this magic number */ - SHORT(0x526f); - *(.rodata) - *(.rodata.*) - _erodata = .; - *(.data) - *(.data.*) - . = ALIGN(4096); - } - _edata = .; - - .bss . : AT (ADDR(.bss) - 0x0000) { - *(.bss) - *(.bss.*) - *(COMMON) - } - _end = .; - end = .; - - /DISCARD/ : - { - *(.eh_frame) - *(.comment) - *(.comment.*) - *(.note) - *(.note.*) - } -}