From c36e5cd162e83547f6f1481ca4c2e0c14c0fd852 Mon Sep 17 00:00:00 2001 From: Vladimir 'phcoder' Serbinenko Date: Mon, 27 Feb 2012 14:24:22 +0100 Subject: [PATCH] Remove any awareness of *.c util files about target. * Makefile.util.def (grub-setup): Split to ... (grub-bios-setup): ... and this. (grub-sparc64-setup): ... and this. * configure.ac: Don't add machine_CPPFLAGS into HOST_CPPFLAGS. * docs/man/grub-setup.h2m: Split into ... * docs/man/grub-sparc64-setup.h2m: ... this. * docs/man/grub-bios-setup.h2m: ... and this. * include/grub/dl.h (grub_dl) [GRUB_UTIL]: Remove struct. * include/grub/elf.h (Elf_*) [GRUB_UTIL]: Remove types. (GRUB_TARGET_WORDSIZE) [GRUB_UTIL]: Remove. (grub_target_addr_t): Remove. (grub_target_size_t): Remove. (grub_target_ssize_t): Remove. * util/grub-install.in: Use new grub-*-setup. * util/grub-mkimagexx.c (Elf_Word): New define. (Elf_Half): Likewise. (Elf_Section): Likewise. (ELF_ST_TYPE): Likewise. * util/grub-setup.c: Switch from GRUB_MACHINE_SPARC64 to GRUB_SETUP_SPARC64 and from GRUB_MACHINE_PCBIOS to GRUB_SETUP_BIOS. --- ChangeLog | 25 ++++++++++ Makefile.util.def | 24 +++++++-- configure.ac | 1 - .../{grub-setup.h2m => grub-bios-setup.h2m} | 0 docs/man/grub-sparc64-setup.h2m | 6 +++ include/grub/dl.h | 2 + include/grub/elf.h | 2 + include/grub/types.h | 13 ++--- util/grub-install.in | 9 +++- util/grub-mkimagexx.c | 12 +++++ util/grub-setup.c | 50 ++++++++++--------- 11 files changed, 104 insertions(+), 40 deletions(-) rename docs/man/{grub-setup.h2m => grub-bios-setup.h2m} (100%) create mode 100644 docs/man/grub-sparc64-setup.h2m diff --git a/ChangeLog b/ChangeLog index 699ba7ec3..ce3f0c26a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,28 @@ +2012-02-27 Vladimir Serbinenko + + Remove any awareness of *.c util files about target. + + * Makefile.util.def (grub-setup): Split to ... + (grub-bios-setup): ... and this. + (grub-sparc64-setup): ... and this. + * configure.ac: Don't add machine_CPPFLAGS into HOST_CPPFLAGS. + * docs/man/grub-setup.h2m: Split into ... + * docs/man/grub-sparc64-setup.h2m: ... this. + * docs/man/grub-bios-setup.h2m: ... and this. + * include/grub/dl.h (grub_dl) [GRUB_UTIL]: Remove struct. + * include/grub/elf.h (Elf_*) [GRUB_UTIL]: Remove types. + (GRUB_TARGET_WORDSIZE) [GRUB_UTIL]: Remove. + (grub_target_addr_t): Remove. + (grub_target_size_t): Remove. + (grub_target_ssize_t): Remove. + * util/grub-install.in: Use new grub-*-setup. + * util/grub-mkimagexx.c (Elf_Word): New define. + (Elf_Half): Likewise. + (Elf_Section): Likewise. + (ELF_ST_TYPE): Likewise. + * util/grub-setup.c: Switch from GRUB_MACHINE_SPARC64 to + GRUB_SETUP_SPARC64 and from GRUB_MACHINE_PCBIOS to GRUB_SETUP_BIOS. + 2012-02-27 Vladimir Serbinenko Replace grub_target_addr with more appropriate types. diff --git a/Makefile.util.def b/Makefile.util.def index 36e46e4a2..7e5a59608 100644 --- a/Makefile.util.def +++ b/Makefile.util.def @@ -300,7 +300,7 @@ program = { }; program = { - name = grub-setup; + name = grub-bios-setup; installdir = sbin; mansection = 8; common = util/grub-setup.c; @@ -308,16 +308,30 @@ program = { common = grub-core/kern/emu/argp_common.c; common = grub-core/lib/reed_solomon.c; - sparc64_ieee1275 = util/ieee1275/ofpath.c; + ldadd = libgrubmods.a; + ldadd = libgrubkern.a; + ldadd = libgrubgcry.a; + ldadd = grub-core/gnulib/libgnu.a; + ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)'; + cppflags = '-DGRUB_SETUP_BIOS=1'; +}; + +program = { + name = grub-sparc64-setup; + installdir = sbin; + mansection = 8; + common = util/grub-setup.c; + common = util/lvm.c; + common = grub-core/kern/emu/argp_common.c; + common = grub-core/lib/reed_solomon.c; + common = util/ieee1275/ofpath.c; ldadd = libgrubmods.a; ldadd = libgrubkern.a; ldadd = libgrubgcry.a; ldadd = grub-core/gnulib/libgnu.a; ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)'; - - enable = i386_pc; - enable = sparc64_ieee1275; + cppflags = '-DGRUB_SETUP_SPARC64=1'; }; program = { diff --git a/configure.ac b/configure.ac index 608ac683f..2663563e6 100644 --- a/configure.ac +++ b/configure.ac @@ -180,7 +180,6 @@ else machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo ${target_cpu}_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,` -DGRUB_TARGET_CPU_`echo ${target_cpu} | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`=1" fi -HOST_CPPFLAGS="$HOST_CPPFLAGS $machine_CPPFLAGS" TARGET_CPPFLAGS="$TARGET_CPPFLAGS $machine_CPPFLAGS" AC_SUBST(host_cpu) diff --git a/docs/man/grub-setup.h2m b/docs/man/grub-bios-setup.h2m similarity index 100% rename from docs/man/grub-setup.h2m rename to docs/man/grub-bios-setup.h2m diff --git a/docs/man/grub-sparc64-setup.h2m b/docs/man/grub-sparc64-setup.h2m new file mode 100644 index 000000000..eebe3ef38 --- /dev/null +++ b/docs/man/grub-sparc64-setup.h2m @@ -0,0 +1,6 @@ +[NAME] +grub-setup \- set up a device to boot using GRUB +[SEE ALSO] +.BR grub-install (8), +.BR grub-mkimage (1), +.BR grub-mkrescue (1) diff --git a/include/grub/dl.h b/include/grub/dl.h index 40ec09fd5..19450d5da 100644 --- a/include/grub/dl.h +++ b/include/grub/dl.h @@ -147,6 +147,7 @@ struct grub_dl_dep }; typedef struct grub_dl_dep *grub_dl_dep_t; +#ifndef GRUB_UTIL struct grub_dl { char *name; @@ -164,6 +165,7 @@ struct grub_dl grub_size_t sz; struct grub_dl *next; }; +#endif typedef struct grub_dl *grub_dl_t; grub_dl_t grub_dl_load_file (const char *filename); diff --git a/include/grub/elf.h b/include/grub/elf.h index a02b90238..a70e92576 100644 --- a/include/grub/elf.h +++ b/include/grub/elf.h @@ -2331,6 +2331,7 @@ typedef Elf32_Addr Elf32_Conflict; #define R_X86_64_NUM 24 +#ifndef GRUB_UTIL #if GRUB_TARGET_WORDSIZE == 32 typedef Elf32_Addr Elf_Addr; @@ -2377,5 +2378,6 @@ typedef Elf64_Xword Elf_Xword; #define ELF_R_INFO(sym, type) ELF64_R_INFO(sym, type) #endif /* GRUB_TARGET_WORDSIZE == 64 */ +#endif #endif /* ! GRUB_ELF_H */ diff --git a/include/grub/types.h b/include/grub/types.h index 94badaa1d..ff04495a4 100644 --- a/include/grub/types.h +++ b/include/grub/types.h @@ -20,7 +20,9 @@ #define GRUB_TYPES_HEADER 1 #include +#ifndef GRUB_UTIL #include +#endif #ifdef GRUB_UTIL # define GRUB_CPU_SIZEOF_VOID_P SIZEOF_VOID_P @@ -48,7 +50,7 @@ # error "This architecture is not supported because sizeof(void *) != 4 and sizeof(void *) != 8" #endif -#ifndef GRUB_TARGET_WORDSIZE +#if !defined (GRUB_UTIL) & !defined (GRUB_TARGET_WORDSIZE) # if GRUB_TARGET_SIZEOF_VOID_P == 4 # define GRUB_TARGET_WORDSIZE 32 # elif GRUB_TARGET_SIZEOF_VOID_P == 8 @@ -82,15 +84,6 @@ typedef unsigned long long grub_uint64_t; #endif /* Misc types. */ -#if GRUB_TARGET_SIZEOF_VOID_P == 8 -typedef grub_uint64_t grub_target_addr_t; -typedef grub_uint64_t grub_target_size_t; -typedef grub_int64_t grub_target_ssize_t; -#else -typedef grub_uint32_t grub_target_addr_t; -typedef grub_uint32_t grub_target_size_t; -typedef grub_int32_t grub_target_ssize_t; -#endif #if GRUB_CPU_SIZEOF_VOID_P == 8 typedef grub_uint64_t grub_addr_t; diff --git a/util/grub-install.in b/util/grub-install.in index c263f8a4c..1ee41d163 100644 --- a/util/grub-install.in +++ b/util/grub-install.in @@ -41,7 +41,6 @@ localedir="@datadir@/locale" self="`basename $0`" -grub_setup="${sbindir}/`echo grub-setup | sed ${transform}`" grub_mkimage="${bindir}/`echo grub-mkimage | sed ${transform}`" grub_probe="${sbindir}/`echo grub-probe | sed ${transform}`" grub_editenv="${bindir}/`echo grub-editenv | sed ${transform}`" @@ -261,6 +260,14 @@ do esac done +if test "x$grub_setup" = x && [ "${target_cpu}-${platform}" = "i386-pc" ]; then + grub_setup="${sbindir}/`echo grub-bios-setup | sed ${transform}`" +fi + +if test "x$grub_setup" = x && [ "${target_cpu}-${platform}" = "sparc64-ieee1275" ]; then + grub_setup="${sbindir}/`echo grub-sparc64-setup | sed ${transform}`" +fi + if test "x$install_device" = x && ([ "${target_cpu}-${platform}" = "i386-pc" ] \ || [ "${target_cpu}-${platform}" = "sparc64-ieee1275" ]); then gettext "Install device isn't specified." 1>&2 diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c index 2aa386fbc..2d0176aca 100644 --- a/util/grub-mkimagexx.c +++ b/util/grub-mkimagexx.c @@ -31,8 +31,12 @@ # define Elf_Shdr Elf32_Shdr # define Elf_Rela Elf32_Rela # define Elf_Rel Elf32_Rel +# define Elf_Word Elf32_Word +# define Elf_Half Elf32_Half +# define Elf_Section Elf32_Section # define ELF_R_SYM(val) ELF32_R_SYM(val) # define ELF_R_TYPE(val) ELF32_R_TYPE(val) +# define ELF_ST_TYPE(val) ELF32_ST_TYPE(val) #elif defined(MKIMAGE_ELF64) # define SUFFIX(x) x ## 64 # define ELFCLASSXX ELFCLASS64 @@ -44,8 +48,12 @@ # define Elf_Shdr Elf64_Shdr # define Elf_Rela Elf64_Rela # define Elf_Rel Elf64_Rel +# define Elf_Word Elf64_Word +# define Elf_Half Elf64_Half +# define Elf_Section Elf64_Section # define ELF_R_SYM(val) ELF64_R_SYM(val) # define ELF_R_TYPE(val) ELF64_R_TYPE(val) +# define ELF_ST_TYPE(val) ELF64_ST_TYPE(val) #else #error "I'm confused" #endif @@ -1095,3 +1103,7 @@ SUFFIX (load_image) (const char *kernel_path, grub_size_t *exec_size, #undef Elf_Rel #undef ELF_R_TYPE #undef ELF_R_SYM +#undef Elf_Word +#undef Elf_Half +#undef Elf_Section +#undef ELF_ST_TYPE diff --git a/util/grub-setup.c b/util/grub-setup.c index f464cd7c6..9768497c1 100644 --- a/util/grub-setup.c +++ b/util/grub-setup.c @@ -28,13 +28,16 @@ #include #include #include -#include -#include #include #include #include -#ifdef GRUB_MACHINE_IEEE1275 +#ifdef GRUB_SETUP_SPARC64 #include +#include +#include +#else +#include +#include #endif #include @@ -77,14 +80,14 @@ #define DEFAULT_BOOT_FILE "boot.img" #define DEFAULT_CORE_FILE "core.img" -#ifdef GRUB_MACHINE_SPARC64 +#ifdef GRUB_SETUP_SPARC64 #define grub_target_to_host16(x) grub_be_to_cpu16(x) #define grub_target_to_host32(x) grub_be_to_cpu32(x) #define grub_target_to_host64(x) grub_be_to_cpu64(x) #define grub_host_to_target16(x) grub_cpu_to_be16(x) #define grub_host_to_target32(x) grub_cpu_to_be32(x) #define grub_host_to_target64(x) grub_cpu_to_be64(x) -#elif defined (GRUB_MACHINE_PCBIOS) +#elif defined (GRUB_SETUP_BIOS) #define grub_target_to_host16(x) grub_le_to_cpu16(x) #define grub_target_to_host32(x) grub_le_to_cpu32(x) #define grub_target_to_host64(x) grub_le_to_cpu64(x) @@ -99,7 +102,7 @@ static void write_rootdev (char *core_img, grub_device_t root_dev, char *boot_img, grub_uint64_t first_sector) { -#ifdef GRUB_MACHINE_PCBIOS +#ifdef GRUB_SETUP_BIOS { grub_uint8_t *boot_drive; grub_disk_addr_t *kernel_sector; @@ -113,7 +116,7 @@ write_rootdev (char *core_img, grub_device_t root_dev, *kernel_sector = grub_cpu_to_le64 (first_sector); } #endif -#ifdef GRUB_MACHINE_IEEE1275 +#ifdef GRUB_SETUP_SPARC64 { grub_disk_addr_t *kernel_byte; kernel_byte = (grub_disk_addr_t *) (boot_img @@ -124,7 +127,7 @@ write_rootdev (char *core_img, grub_device_t root_dev, #endif } -#ifdef GRUB_MACHINE_IEEE1275 +#ifdef GRUB_SETUP_SPARC64 #define BOOT_SECTOR 1 #else #define BOOT_SECTOR 0 @@ -145,9 +148,9 @@ setup (const char *dir, struct grub_boot_blocklist *first_block, *block; char *tmp_img; grub_disk_addr_t first_sector; -#ifdef GRUB_MACHINE_PCBIOS +#ifdef GRUB_SETUP_BIOS grub_uint16_t current_segment - = GRUB_BOOT_MACHINE_KERNEL_SEG + (GRUB_DISK_SECTOR_SIZE >> 4); + = GRUB_BOOT_I386_PC_KERNEL_SEG + (GRUB_DISK_SECTOR_SIZE >> 4); #endif grub_uint16_t last_length = GRUB_DISK_SECTOR_SIZE; grub_file_t file; @@ -196,7 +199,7 @@ setup (const char *dir, { block->start = grub_host_to_target64 (sector); block->len = grub_host_to_target16 (1); -#ifdef GRUB_MACHINE_PCBIOS +#ifdef GRUB_SETUP_BIOS block->segment = grub_host_to_target16 (current_segment); #endif @@ -206,7 +209,7 @@ setup (const char *dir, } last_length = length; -#ifdef GRUB_MACHINE_PCBIOS +#ifdef GRUB_SETUP_BIOS current_segment += GRUB_DISK_SECTOR_SIZE >> 4; #endif } @@ -226,7 +229,7 @@ setup (const char *dir, >> GRUB_DISK_SECTOR_BITS); if (core_size < GRUB_DISK_SECTOR_SIZE) grub_util_error (_("the size of `%s' is too small"), core_path); -#ifdef GRUB_MACHINE_PCBIOS +#ifdef GRUB_SETUP_BIOS if (core_size > 0xFFFF * GRUB_DISK_SECTOR_SIZE) grub_util_error (_("the size of `%s' is too large"), core_path); #endif @@ -293,14 +296,14 @@ setup (const char *dir, if (grub_env_set ("root", root) != GRUB_ERR_NONE) grub_util_error ("%s", grub_errmsg); -#ifdef GRUB_MACHINE_PCBIOS +#ifdef GRUB_SETUP_BIOS /* Read the original sector from the disk. */ tmp_img = xmalloc (GRUB_DISK_SECTOR_SIZE); if (grub_disk_read (dest_dev->disk, 0, 0, GRUB_DISK_SECTOR_SIZE, tmp_img)) grub_util_error ("%s", grub_errmsg); #endif -#ifdef GRUB_MACHINE_PCBIOS +#ifdef GRUB_SETUP_BIOS { grub_uint16_t *boot_drive_check; boot_drive_check = (grub_uint16_t *) (boot_img @@ -319,7 +322,7 @@ setup (const char *dir, } #endif -#ifdef GRUB_MACHINE_PCBIOS +#ifdef GRUB_SETUP_BIOS { grub_partition_map_t dest_partmap = NULL; grub_partition_t container = dest_dev->disk->partition; @@ -374,7 +377,7 @@ setup (const char *dir, is_ldm = grub_util_is_ldm (dest_dev->disk); -#ifdef GRUB_MACHINE_PCBIOS +#ifdef GRUB_SETUP_BIOS if (fs_probe) { if (!fs && !dest_partmap) @@ -551,7 +554,7 @@ unable_to_embed: grub_util_error ("%s", _("embedding is not possible, but this is required for " "RAID and LVM install")); -#ifdef GRUB_MACHINE_PCBIOS +#ifdef GRUB_SETUP_BIOS if (dest_dev->disk->id != root_dev->disk->id || dest_dev->disk->dev->id != root_dev->disk->dev->id) /* TRANSLATORS: cross-disk refers to /boot being on one disk @@ -651,7 +654,7 @@ unable_to_embed: { block->start = 0; block->len = 0; -#ifdef GRUB_MACHINE_PCBIOS +#ifdef GRUB_SETUP_BIOS block->segment = 0; #endif @@ -678,7 +681,7 @@ unable_to_embed: != (grub_ssize_t) core_size - GRUB_DISK_SECTOR_SIZE) grub_util_error ("%s", _("failed to read the rest sectors of the core image")); -#ifdef GRUB_MACHINE_IEEE1275 +#ifdef GRUB_SETUP_SPARC64 { char *boot_devpath; boot_devpath = (char *) (boot_img @@ -691,7 +694,8 @@ unable_to_embed: dest_ofpath = grub_util_devname_to_ofpath (grub_util_biosdisk_get_osdev (root_dev->disk)); grub_util_info ("dest_ofpath is `%s'", dest_ofpath); - strncpy (boot_devpath, dest_ofpath, GRUB_BOOT_MACHINE_BOOT_DEVPATH_END + strncpy (boot_devpath, dest_ofpath, + GRUB_BOOT_MACHINE_BOOT_DEVPATH_END - GRUB_BOOT_MACHINE_BOOT_DEVPATH - 1); boot_devpath[GRUB_BOOT_MACHINE_BOOT_DEVPATH_END - GRUB_BOOT_MACHINE_BOOT_DEVPATH - 1] = 0; @@ -723,7 +727,7 @@ unable_to_embed: grub_util_write_image (core_img, GRUB_DISK_SECTOR_SIZE * 2, fp, core_path); fclose (fp); -#ifdef GRUB_MACHINE_PCBIOS +#ifdef GRUB_SETUP_BIOS finish: #endif @@ -919,7 +923,7 @@ main (int argc, char *argv[]) exit(1); } -#ifdef GRUB_MACHINE_IEEE1275 +#ifdef GRUB_SETUP_SPARC64 arguments.force = 1; #endif