--- a/stage2/asm.S +++ b/stage2/asm.S @@ -95,14 +95,16 @@ VARIABLE(stage2_id) VARIABLE(force_lba) .byte 0 VARIABLE(version_string) - .string VERSION + .ascii VERSION + .byte 0 VARIABLE(config_file) #ifndef STAGE1_5 - .string "/boot/grub/menu.lst" + .ascii "/boot/grub/menu.lst" #else /* STAGE1_5 */ .long 0xffffffff - .string "/boot/grub/stage2" + .ascii "/boot/grub/stage2" #endif /* STAGE1_5 */ + .byte 0 /* * Leave some breathing room for the config file name. @@ -762,7 +764,9 @@ ENTRY(chain_stage1) call EXT_C(prot_to_real) .code16 -#ifdef ABSOLUTE_WITHOUT_ASTERISK +#ifdef __APPLE__ + DATA32 ADDR32 ljmp offset +#elif defined(ABSOLUTE_WITHOUT_ASTERISK) DATA32 ADDR32 ljmp (offset) #else DATA32 ADDR32 ljmp *(offset) --- a/stage2/char_io.c +++ b/stage2/char_io.c @@ -1345,5 +1345,12 @@ grub_strcpy (char *dest, const char *src #ifndef GRUB_UTIL # undef memcpy /* GCC emits references to memcpy() for struct copies etc. */ +#ifdef __APPLE__ +void *memcpy (void *dest, const void *src, int n) +{ + return grub_memmove(dest, src, n); +} +#else void *memcpy (void *dest, const void *src, int n) __attribute__ ((alias ("grub_memmove"))); #endif +#endif