]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2009-06-04 Vladimir Serbinenko <phcoder@gmail.com>
authorphcoder <phcoder@localhost>
Thu, 4 Jun 2009 21:17:05 +0000 (21:17 +0000)
committerphcoder <phcoder@localhost>
Thu, 4 Jun 2009 21:17:05 +0000 (21:17 +0000)
Avoid aliases when compiling with Apple's CC for PCBIOS machine

* kern/misc.c [APPLE_CC] (memcpy): new function
[APPLE_CC] (memmove): likewise
[APPLE_CC && !GRUB_UTIL] (grub_err_printf): likewise
(memcpy): define alias conditionaly on !APPLE_CC
(memset): likewise
(abort): likewise
* include/grub/misc.h (memove): don't define when both GRUB_UTIL and
APPLE_CC are defined
* include/grub/list.h [APPLE_CC] (grub_assert_fail): new function
(grub_assert_fail): make prototype conditional

ChangeLog
include/grub/list.h
include/grub/misc.h
kern/misc.c

index f2abef9dd9f87a6cbce0f0dd0d28efa37c1a3dff..03b8f64c8652150cb50ebae9f685bceccd552cb3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2009-06-04  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       Avoid aliases when compiling with Apple's CC for PCBIOS machine
+
+       * kern/misc.c [APPLE_CC] (memcpy): new function
+       [APPLE_CC] (memmove): likewise
+       [APPLE_CC && !GRUB_UTIL] (grub_err_printf): likewise
+       (memcpy): define alias conditionaly on !APPLE_CC
+       (memset): likewise
+       (abort): likewise
+       * include/grub/misc.h (memove): don't define when both GRUB_UTIL and
+       APPLE_CC are defined
+       * include/grub/list.h [APPLE_CC] (grub_assert_fail): new function
+       (grub_assert_fail): make prototype conditional
+
 2009-06-04  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Use grub-macho2img when compiling with Apple's CC for PCBIOS machine
index eba12371bf11f20e2b08f9971dc9a370bdaa1d56..6e034928ac4d930580ccc314aa5036c616097aa7 100644 (file)
@@ -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)
index 5c8baa1aa55d1071d45cf2c31b3e882987dc9b2b..23e0ce60d089de5a81098b0c1cce773d1a0048b5 100644 (file)
@@ -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);
index 4c71ca854fd049ec15652937b9c918a8735cf2f2..4b46c67627ab9c8dccbfe4bc435c623fc4cefdee 100644 (file)
@@ -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