* include/grub/types.h: Define GRUB_TARGET_WORDSIZE.
* include/grub/elf.h: Define symbols without "32" or "64" based
on GRUB_TARGET_WORDSIZE.
* include/grub/multiboot2.h: Use GRUB_TARGET_WORDSIZE.
* efiemu/loadcore32.c: Redefine GRUB_TARGET_WORDSIZE, remove own
ELF definitions.
* efiemu/loadcore64.c: Likewise.
* loader/i386/bsd32.c: Likewise.
* loader/i386/bsd64.c: Likewise.
* kern/dl.c: Remove own ELF definitions.
* util/i386/efi/grub-mkimage.c: Likewise.
+2009-06-26 Pavel Roskin <proski@gnu.org>
+
+ * include/grub/types.h: Define GRUB_TARGET_WORDSIZE.
+ * include/grub/elf.h: Define symbols without "32" or "64" based
+ on GRUB_TARGET_WORDSIZE.
+ * include/grub/multiboot2.h: Use GRUB_TARGET_WORDSIZE.
+ * efiemu/loadcore32.c: Redefine GRUB_TARGET_WORDSIZE, remove own
+ ELF definitions.
+ * efiemu/loadcore64.c: Likewise.
+ * loader/i386/bsd32.c: Likewise.
+ * loader/i386/bsd64.c: Likewise.
+ * kern/dl.c: Remove own ELF definitions.
+ * util/i386/efi/grub-mkimage.c: Likewise.
+
2009-06-23 Robert Millan <rmh.grub@aybabtu.com>
* kern/i386/pc/startup.S (real_to_prot): Access `gdtdesc' using
*/
#define SUFFIX(x) x ## 32
-#define Elf_Ehdr Elf32_Ehdr
-#define Elf_Shdr Elf32_Shdr
-#define Elf_Sym Elf32_Sym
-#define Elf_Word Elf32_Word
-#define ELF_ST_TYPE ELF32_ST_TYPE
-#define ELF_ST_BIND ELF32_ST_BIND
+#define GRUB_TARGET_WORDSIZE 32
#include "loadcore.c"
*/
#define SUFFIX(x) x ## 64
-#define Elf_Ehdr Elf64_Ehdr
-#define Elf_Shdr Elf64_Shdr
-#define Elf_Sym Elf64_Sym
-#define Elf_Word Elf64_Word
-#define ELF_ST_TYPE ELF64_ST_TYPE
-#define ELF_ST_BIND ELF64_ST_BIND
+#define GRUB_TARGET_WORDSIZE 64
#include "loadcore.c"
#define R_X86_64_NUM 24
+#if GRUB_TARGET_WORDSIZE == 32
+
+typedef Elf32_Addr Elf_Addr;
+typedef Elf32_Ehdr Elf_Ehdr;
+typedef Elf32_Half Elf_Half;
+typedef Elf32_Off Elf_Off;
+typedef Elf32_Rel Elf_Rel;
+typedef Elf32_Rela Elf_Rela;
+typedef Elf32_Section Elf_Section;
+typedef Elf32_Shdr Elf_Shdr;
+typedef Elf32_Sym Elf_Sym;
+typedef Elf32_Word Elf_Word;
+
+#define ELF_ST_BIND(val) ELF32_ST_BIND(val)
+#define ELF_ST_TYPE(val) ELF32_ST_TYPE(val)
+#define ELF_R_SYM(val) ELF32_R_SYM(val)
+#define ELF_R_TYPE(val) ELF32_R_TYPE(val)
+#define ELF_R_INFO(sym, type) ELF32_R_INFO(sym, type)
+
+#elif GRUB_TARGET_WORDSIZE == 64
+
+typedef Elf64_Addr Elf_Addr;
+typedef Elf64_Ehdr Elf_Ehdr;
+typedef Elf64_Half Elf_Half;
+typedef Elf64_Off Elf_Off;
+typedef Elf64_Rel Elf_Rel;
+typedef Elf64_Rela Elf_Rela;
+typedef Elf64_Section Elf_Section;
+typedef Elf64_Shdr Elf_Shdr;
+typedef Elf64_Sym Elf_Sym;
+typedef Elf64_Word Elf_Word;
+
+#define ELF_ST_BIND(val) ELF64_ST_BIND (val)
+#define ELF_ST_TYPE(val) ELF64_ST_TYPE (val)
+#define ELF_R_SYM(val) ELF64_R_SYM(val)
+#define ELF_R_TYPE(val) ELF64_R_TYPE(val)
+#define ELF_R_INFO(sym, type) ELF64_R_INFO(sym, type)
+
+#endif /* GRUB_TARGET_WORDSIZE == 64 */
+
#endif /* ! GRUB_ELF_H */
#ifndef GRUB_UTIL
typedef grub_uint32_t uint32_t;
typedef grub_uint64_t uint64_t;
-#define __WORDSIZE (8 * GRUB_TARGET_SIZEOF_VOID_P)
+#define __WORDSIZE GRUB_TARGET_WORDSIZE
#endif
struct multiboot_tag_header;
# error "This architecture is not supported because sizeof(void *) != 4 and sizeof(void *) != 8"
#endif
+#ifndef GRUB_TARGET_WORDSIZE
+# if GRUB_TARGET_SIZEOF_VOID_P == 4
+# define GRUB_TARGET_WORDSIZE 32
+# elif GRUB_TARGET_SIZEOF_VOID_P == 8
+# define GRUB_TARGET_WORDSIZE 64
+# endif
+#endif
+
/* Define various wide integers. */
typedef signed char grub_int8_t;
typedef short grub_int16_t;
#include <grub/env.h>
#include <grub/cache.h>
-#if GRUB_CPU_SIZEOF_VOID_P == 4
-
-typedef Elf32_Word Elf_Word;
-typedef Elf32_Addr Elf_Addr;
-typedef Elf32_Ehdr Elf_Ehdr;
-typedef Elf32_Shdr Elf_Shdr;
-typedef Elf32_Sym Elf_Sym;
-
-# define ELF_ST_BIND(val) ELF32_ST_BIND (val)
-# define ELF_ST_TYPE(val) ELF32_ST_TYPE (val)
-
-#elif GRUB_CPU_SIZEOF_VOID_P == 8
-
-typedef Elf64_Word Elf_Word;
-typedef Elf64_Addr Elf_Addr;
-typedef Elf64_Ehdr Elf_Ehdr;
-typedef Elf64_Shdr Elf_Shdr;
-typedef Elf64_Sym Elf_Sym;
-
-# define ELF_ST_BIND(val) ELF64_ST_BIND (val)
-# define ELF_ST_TYPE(val) ELF64_ST_TYPE (val)
-
-#endif
-
\f
struct grub_dl_list
#define SUFFIX(x) x ## 32
-#define Elf_Ehdr Elf32_Ehdr
-#define Elf_Shdr Elf32_Shdr
-#define Elf_Sym Elf32_Sym
+#define GRUB_TARGET_WORDSIZE 32
#define OBJSYM 0
#include <grub/types.h>
typedef grub_uint32_t grub_freebsd_addr_t;
#define SUFFIX(x) x ## 64
-#define Elf_Ehdr Elf64_Ehdr
-#define Elf_Shdr Elf64_Shdr
-#define Elf_Sym Elf64_Sym
+#define GRUB_TARGET_WORDSIZE 64
#define OBJSYM 1
#include <grub/types.h>
typedef grub_uint64_t grub_freebsd_addr_t;
#include <grub/efi/pe32.h>
#include <grub/machine/kernel.h>
-#if GRUB_TARGET_SIZEOF_VOID_P == 4
-
-typedef Elf32_Word Elf_Word;
-typedef Elf32_Addr Elf_Addr;
-typedef Elf32_Ehdr Elf_Ehdr;
-typedef Elf32_Shdr Elf_Shdr;
-typedef Elf32_Sym Elf_Sym;
-typedef Elf32_Half Elf_Half;
-typedef Elf32_Off Elf_Off;
-typedef Elf32_Section Elf_Section;
-typedef Elf32_Rel Elf_Rel;
-typedef Elf32_Rela Elf_Rela;
-
-#define ELF_R_SYM ELF32_R_SYM
-#define ELF_R_TYPE ELF32_R_TYPE
-#define ELF_R_INFO ELF32_R_INFO
-
-#define grub_le_to_cpu grub_le_to_cpu32
-
-#elif GRUB_TARGET_SIZEOF_VOID_P == 8
-
-typedef Elf64_Word Elf_Word;
-typedef Elf64_Addr Elf_Addr;
-typedef Elf64_Ehdr Elf_Ehdr;
-typedef Elf64_Shdr Elf_Shdr;
-typedef Elf64_Sym Elf_Sym;
-typedef Elf64_Half Elf_Half;
-typedef Elf64_Off Elf_Off;
-typedef Elf64_Section Elf_Section;
-typedef Elf64_Rel Elf_Rel;
-typedef Elf64_Rela Elf_Rela;
-
-#define ELF_R_SYM ELF64_R_SYM
-#define ELF_R_TYPE ELF64_R_TYPE
-#define ELF_R_INFO ELF64_R_INFO
-
-#define grub_le_to_cpu grub_le_to_cpu64
-
+#if GRUB_TARGET_WORDSIZE == 32
+# define grub_le_to_cpu(val) grub_le_to_cpu32(val)
+#elif GRUB_TARGET_WORDSIZE == 64
+# define grub_le_to_cpu(val) grub_le_to_cpu64(val)
#endif
static const grub_uint8_t stub[] = GRUB_PE32_MSDOS_STUB;