On Sat, May 30, 2009 at 11:48 PM, Pavel Roskin <pro...@gnu.org> wrote:
> On Sat, 2009-05-30 at 17:03 +0200, Vladimir 'phcoder' Serbinenko wrote:
>> Apple's toolchain has troubles handling aliases. Disable them when
>> Apple's toolchain detected.
>
> The patch does some other things.  In particular, it introduces
> grub_macho2img.
Sorry. Shouldn't have been the case. Bad branches diff'ed
>
>> +      printf ("Invalid Mach-O fle\n");
Thanks
>
> I think you mean "file".
>
> --
> Regards,
> Pavel Roskin
>
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> http://lists.gnu.org/mailman/listinfo/grub-devel
>



-- 
Regards
Vladimir 'phcoder' Serbinenko
diff --git a/include/grub/list.h b/include/grub/list.h
index eba1237..6e03492 100644
--- a/include/grub/list.h
+++ b/include/grub/list.h
@@ -41,7 +41,18 @@ void EXPORT_FUNC(grub_list_insert) (grub_list_t *head, grub_list_t item,
 
 /* This function doesn't exist, so if assertion is false for some reason, the
    linker would fail.  */
+#ifdef APPLE_CC
+/* This approach fails with Apple's gcc. Use grub_abort.  */
+#include <grub/misc.h>
+static inline void *
+grub_assert_fail (void)
+{
+	grub_abort ();
+	return 0;
+}
+#else
 extern void* grub_assert_fail (void);
+#endif
 
 #define GRUB_FIELD_MATCH(ptr, type, field) \
   ((char *) &(ptr)->field == (char *) &((type) (ptr))->field)
diff --git a/include/grub/misc.h b/include/grub/misc.h
index 5c8baa1..23e0ce6 100644
--- a/include/grub/misc.h
+++ b/include/grub/misc.h
@@ -40,8 +40,10 @@ char *EXPORT_FUNC(grub_strcat) (char *dest, const char *src);
 char *EXPORT_FUNC(grub_strncat) (char *dest, const char *src, int c);
 
 /* Prototypes for aliases.  */
+#if !defined (GRUB_UTIL) || !defined (APPLE_CC)
 void *EXPORT_FUNC(memmove) (void *dest, const void *src, grub_size_t n);
 void *EXPORT_FUNC(memcpy) (void *dest, const void *src, grub_size_t n);
+#endif
 
 int EXPORT_FUNC(grub_memcmp) (const void *s1, const void *s2, grub_size_t n);
 int EXPORT_FUNC(grub_strcmp) (const char *s1, const char *s2);
diff --git a/kern/misc.c b/kern/misc.c
index 4c71ca8..4b46c67 100644
--- a/kern/misc.c
+++ b/kern/misc.c
@@ -44,11 +44,23 @@ grub_memmove (void *dest, const void *src, grub_size_t n)
   
   return dest;
 }
+
+#ifndef APPLE_CC
 void *memmove (void *dest, const void *src, grub_size_t n)
   __attribute__ ((alias ("grub_memmove")));
 /* GCC emits references to memcpy() for struct copies etc.  */
 void *memcpy (void *dest, const void *src, grub_size_t n)
   __attribute__ ((alias ("grub_memmove")));
+#else
+void *memcpy (void *dest, const void *src, grub_size_t n)
+{
+	return grub_memmove (dest, src, n);
+}
+void *memmove (void *dest, const void *src, grub_size_t n)
+{
+	return grub_memmove (dest, src, n);
+}
+#endif
 
 char *
 grub_strcpy (char *dest, const char *src)
@@ -134,7 +146,22 @@ grub_printf (const char *fmt, ...)
   return ret;
 }  
 
-#ifndef GRUB_UTIL
+#if defined (APPLE_CC) && ! defined (GRUB_UTIL)
+int
+grub_err_printf (const char *fmt, ...)
+{
+	va_list ap;
+	int ret;
+	
+	va_start (ap, fmt);
+	ret = grub_vprintf (fmt, ap);
+	va_end (ap);
+	
+	return ret;
+}  
+#endif
+
+#if ! defined (APPLE_CC) && ! defined (GRUB_UTIL)
 int grub_err_printf (const char *fmt, ...)
 __attribute__ ((alias("grub_printf")));
 #endif
@@ -185,8 +212,10 @@ grub_memcmp (const void *s1, const void *s2, grub_size_t n)
 
   return 0;
 }
+#ifndef APPLE_CC
 int memcmp (const void *s1, const void *s2, grub_size_t n)
   __attribute__ ((alias ("grub_memcmp")));
+#endif
 
 int
 grub_strcmp (const char *s1, const char *s2)
@@ -534,8 +563,10 @@ grub_memset (void *s, int c, grub_size_t n)
 
   return s;
 }
+#ifndef APPLE_CC
 void *memset (void *s, int c, grub_size_t n)
   __attribute__ ((alias ("grub_memset")));
+#endif
 
 grub_size_t
 grub_strlen (const char *s)
@@ -1066,8 +1097,11 @@ grub_abort (void)
 
   grub_exit ();
 }
+
+#ifndef APPLE_CC
 /* GCC emits references to abort().  */
 void abort (void) __attribute__ ((alias ("grub_abort")));
+#endif
 
 #ifdef NEED_ENABLE_EXECUTE_STACK
 /* Some gcc versions generate a call to this function
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to