diff --git a/ChangeLog b/ChangeLog index 589fad1f6..94109604a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2009-06-18 Vladimir Serbinenko + + Fix build with Apple's toolchain. Part 1 + + * commands/i386/pc/drivemap_int13h.S: use assembly-time constants + for long calls + * configure.ac: remove a leftover AC_MSG_RESULT + (CFLAGS): don't add -Wl,--defsym,___main=0x8100 when building with + Apple's toolchain + 2009-06-18 Vladimir Serbinenko Fix warnings diff --git a/commands/i386/pc/drivemap_int13h.S b/commands/i386/pc/drivemap_int13h.S index 542da0900..440349685 100644 --- a/commands/i386/pc/drivemap_int13h.S +++ b/commands/i386/pc/drivemap_int13h.S @@ -66,7 +66,12 @@ not_found: popf pushf +#ifdef APPLE_CC + grub_drivemap_oldhandler_ofs = INT13H_OFFSET (EXT_C (grub_drivemap_oldhandler)) + lcall *%cs:grub_drivemap_oldhandler_ofs +#else lcall *%cs:INT13H_OFFSET (EXT_C (grub_drivemap_oldhandler)) +#endif push %bp mov %sp, %bp @@ -89,7 +94,11 @@ norestore: popf pushf +#ifdef APPLE_CC + lcall *%cs:grub_drivemap_oldhandler_ofs +#else lcall *%cs:INT13H_OFFSET (EXT_C (grub_drivemap_oldhandler)) +#endif push %bp mov %sp, %bp diff --git a/configure.ac b/configure.ac index 371c32d03..a8cb23468 100644 --- a/configure.ac +++ b/configure.ac @@ -308,7 +308,6 @@ fi AC_SUBST(TARGET_IMG_LDSCRIPT) AC_SUBST(TARGET_IMG_LDFLAGS) AC_SUBST(TARGET_IMG_CFLAGS) -AC_MSG_RESULT([$TARGET_IMG_LDFLAGS_AC]) # For platforms where ELF is not the default link format. AC_MSG_CHECKING([for command to convert module to ELF format]) @@ -396,7 +395,11 @@ AC_SUBST(TARGET_LDFLAGS) # Set them to their new values for the tests below. CC="$TARGET_CC" +if test "x$TARGET_APPLE_CC" = x1 ; then +CFLAGS="$TARGET_CFLAGS -nostdlib" +else CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,___main=0x8100" +fi CPPFLAGS="$TARGET_CPPFLAGS" LDFLAGS="$TARGET_LDFLAGS"