]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2009-06-04 Vladimir Serbinenko <phcoder@gmail.com>
authorphcoder <phcoder@localhost>
Thu, 4 Jun 2009 20:40:51 +0000 (20:40 +0000)
committerphcoder <phcoder@localhost>
Thu, 4 Jun 2009 20:40:51 +0000 (20:40 +0000)
Define segment as well as section when compiling with
Apple's CC

* efiemu/runtime/efiemu.c (PHYSICAL_ATTRIBUTE): new definition
(efiemu_set_virtual_address_map): declare with PHYSICAL_ATTRIBUTE
(efiemu_convert_pointer): likewise
(efiemu_set_virtual_address_map): likewise
(efiemu_convert_pointer): likewise
(efiemu_getcrc32): likewise
(init_crc32_table): likewise
(reflect): likewise
* include/grub/dl.h (GRUB_MOD_NAME): define segment with Apple's CC
(GRUB_MOD_DEP): likewise

ChangeLog
efiemu/runtime/efiemu.c
include/grub/dl.h

index 71193d1b4b6d40075e8e2cc0b0db3535f1accf87..fdf61bbda9a723f81a07a3c56377d24e4e558ca8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2009-06-04  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       Define segment as well as section when compiling with
+       Apple's CC
+
+       * efiemu/runtime/efiemu.c (PHYSICAL_ATTRIBUTE): new definition
+       (efiemu_set_virtual_address_map): declare with PHYSICAL_ATTRIBUTE
+       (efiemu_convert_pointer): likewise
+       (efiemu_set_virtual_address_map): likewise
+       (efiemu_convert_pointer): likewise
+       (efiemu_getcrc32): likewise
+       (init_crc32_table): likewise
+       (reflect): likewise
+       * include/grub/dl.h (GRUB_MOD_NAME): define segment with Apple's CC
+       (GRUB_MOD_DEP): likewise
+       
 2009-06-04  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Allow a compilation without -mcmodel=large
index 71188130d4983fd5b1ca88f4c3e3406ef205a751..0316e495728bedaea24633b7c1f71b2721649e74 100644 (file)
@@ -40,18 +40,23 @@ grub_efi_status_t
 efiemu_set_wakeup_time (grub_efi_boolean_t enabled,
                        grub_efi_time_t *time);
 
+#ifdef APPLE_CC
+#define PHYSICAL_ATTRIBUTE __attribute__ ((section("_text-physical, _text-physical")));
+#else
+#define PHYSICAL_ATTRIBUTE __attribute__ ((section(".text-physical")));
+#endif
 
 grub_efi_status_t
 efiemu_set_virtual_address_map (grub_efi_uintn_t memory_map_size,
                                grub_efi_uintn_t descriptor_size,
                                grub_efi_uint32_t descriptor_version,
                                grub_efi_memory_descriptor_t *virtual_map)
-  __attribute__ ((section(".text-physical")));
+  PHYSICAL_ATTRIBUTE;
 
 grub_efi_status_t
 efiemu_convert_pointer (grub_efi_uintn_t debug_disposition, 
                        void **address)
-  __attribute__ ((section(".text-physical")));
+  PHYSICAL_ATTRIBUTE;
 
 grub_efi_status_t
 efiemu_get_variable (grub_efi_char16_t *variable_name,
@@ -84,17 +89,20 @@ EFI_FUNC (efiemu_set_virtual_address_map) (grub_efi_uintn_t,
                                              grub_efi_uintn_t,
                                              grub_efi_uint32_t,
                                              grub_efi_memory_descriptor_t *)
-  __attribute__ ((section(".text-physical")));
+     PHYSICAL_ATTRIBUTE;
 grub_efi_status_t
 EFI_FUNC (efiemu_convert_pointer) (grub_efi_uintn_t debug_disposition, 
                                      void **address)
-  __attribute__ ((section(".text-physical")));
+     PHYSICAL_ATTRIBUTE;
 static grub_uint32_t
 efiemu_getcrc32 (grub_uint32_t crc, void *buf, int size)
-     __attribute__ ((section(".text-physical")));
+     PHYSICAL_ATTRIBUTE;
 static void
 init_crc32_table (void)
-  __attribute__ ((section(".text-physical")));
+     PHYSICAL_ATTRIBUTE;
+static grub_uint32_t 
+reflect (grub_uint32_t ref, int len)
+     PHYSICAL_ATTRIBUTE;
                             
 /*
   The log. It's used when examining memory dump
index 55f5d4e22ac93d1b7b11522d27199238c2854d40..894da1d33eec09db3d80edf8b826a0d836330242 100644 (file)
@@ -40,11 +40,19 @@ grub_##name##_fini (void) { grub_mod_fini (); } \
 static void \
 grub_mod_fini (void)
 
+#ifdef APPLE_CC
+#define GRUB_MOD_NAME(name)    \
+static char grub_modname[] __attribute__ ((section ("_modname, _modname"), used)) = #name;
+
+#define GRUB_MOD_DEP(name)     \
+__asm__ (".section _moddeps, _moddeps\n.asciz \"" #name "\"\n")
+#else
 #define GRUB_MOD_NAME(name)    \
 __asm__ (".section .modname\n.asciz \"" #name "\"\n")
 
 #define GRUB_MOD_DEP(name)     \
 __asm__ (".section .moddeps\n.asciz \"" #name "\"\n")
+#endif
 
 struct grub_dl_segment
 {