From 9dbf765337c8606a1e07428618beee7d1f559a4c Mon Sep 17 00:00:00 2001 From: phcoder Date: Thu, 4 Jun 2009 21:25:58 +0000 Subject: [PATCH] 2009-06-04 Vladimir Serbinenko Disable lnxboot.img when compiled with Apple's CC * conf/i386-pc.rmk (pkglib_IMAGES): remove lnxboot.img pkglib_IMAGES [! TARGET_APPLE_CC] (pkglib_IMAGES): add lnxboot.img * boot/i386/pc/lnxboot.S [APPLE_CC]: define an #error [! APPLE_CC] (CODE_LENG): skip [! APPLE_CC] (setup_sects): likewise [! APPLE_CC]: skip filling --- ChangeLog | 12 ++++++++++++ boot/i386/pc/lnxboot.S | 14 ++++++++++++++ conf/i386-pc.rmk | 6 ++++-- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 63ef8c2e5..0c13d6089 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2009-06-04 Vladimir Serbinenko + + Disable lnxboot.img when compiled + with Apple's CC + + * conf/i386-pc.rmk (pkglib_IMAGES): remove lnxboot.img + pkglib_IMAGES [! TARGET_APPLE_CC] (pkglib_IMAGES): add lnxboot.img + * boot/i386/pc/lnxboot.S [APPLE_CC]: define an #error + [! APPLE_CC] (CODE_LENG): skip + [! APPLE_CC] (setup_sects): likewise + [! APPLE_CC]: skip filling + 2009-06-04 Vladimir Serbinenko Address in trampolines based on 32-bit registers when compiled diff --git a/boot/i386/pc/lnxboot.S b/boot/i386/pc/lnxboot.S index 0db6826d7..f244feccf 100644 --- a/boot/i386/pc/lnxboot.S +++ b/boot/i386/pc/lnxboot.S @@ -24,9 +24,15 @@ #include .file "lnxboot.S" + +#ifdef APPLE_CC +#error Building lnxboot.img with Apple's as results in an unusable image +#endif #define CODE_ADDR 0x6000 +#ifndef APPLE_CC #define CODE_LENG (code_end - start) +#endif #define DATA_ADDR ((GRUB_BOOT_MACHINE_KERNEL_ADDR) + 0x200) #define BLCK_LENG 0x4000 @@ -44,7 +50,12 @@ data_start: . = data_start + 0x1F1 setup_sects: +/* Apple's cc can't fill this value. */ +#ifdef APPLE_CC + .byte 0 +#else .byte (CODE_LENG >> 9) +#endif root_flags: .word 0 syssize: @@ -351,7 +362,10 @@ fail: err_int15_msg: .ascii "move memory fails\0" + /* Unsupported feature in Apple's cc. */ +#ifndef APPLE_CC . = (. & (~0x1FF)) + 0x1FF +#endif .byte 0 diff --git a/conf/i386-pc.rmk b/conf/i386-pc.rmk index 066b50625..fe67a8f60 100644 --- a/conf/i386-pc.rmk +++ b/conf/i386-pc.rmk @@ -10,8 +10,7 @@ COMMON_LDFLAGS = -m32 -nostdlib script/sh/lexer.c_DEPENDENCIES = grub_script.tab.h # Images. -pkglib_IMAGES = boot.img diskboot.img kernel.img pxeboot.img lnxboot.img \ - cdboot.img +pkglib_IMAGES = boot.img diskboot.img kernel.img pxeboot.img cdboot.img # For boot.img. boot_img_SOURCES = boot/i386/pc/boot.S @@ -32,6 +31,9 @@ diskboot_img_LDFLAGS = $(COMMON_LDFLAGS) $(TARGET_IMG_LDFLAGS)8000 diskboot_img_FORMAT = binary # For lnxboot.img. +ifeq ($(TARGET_APPLE_CC), 0) +pkglib_IMAGES += lnxboot.img +endif lnxboot_img_SOURCES = boot/i386/pc/lnxboot.S lnxboot_img_ASFLAGS = $(COMMON_ASFLAGS) lnxboot_img_LDFLAGS = $(COMMON_LDFLAGS) $(TARGET_IMG_LDFLAGS)6000