Print this page
7438 intermittent build failures from the new boot loader
Reviewed by: Gordon Ross <gordon.w.ross@gmail.com>
Reviewed by: Toomas Soome <tsoome@me.com>
   1 #
   2 # This file and its contents are supplied under the terms of the
   3 # Common Development and Distribution License ("CDDL"), version 1.0.
   4 # You may only use this file in accordance with the terms of version
   5 # 1.0 of the CDDL.
   6 #
   7 # A full copy of the text of the CDDL should have accompanied this
   8 # source.  A copy of the CDDL is also available via the Internet at
   9 # http://www.illumos.org/license/CDDL.
  10 #
  11 
  12 #
  13 # Copyright 2016 Toomas Soome <tsoome@me.com>

  14 #
  15 
  16 include $(SRC)/Makefile.master
  17 
  18 CC=     $(GCC_ROOT)/bin/gcc
  19 LD=     $(GNU_ROOT)/bin/gld
  20 OBJCOPY= $(GNU_ROOT)/bin/gobjcopy
  21 OBJDUMP= $(GNU_ROOT)/bin/gobjdump
  22 OBJCOPY= /code/binutils-gdb/binutils/objcopy
  23 OBJDUMP= /code/binutils-gdb/binutils/objdump
  24 
  25 PROG=           boot1.sym
  26 MACHINE=$(MACH64)
  27 
  28 # need to update this to trigger installboot updates.
  29 BUILDDATE :sh = TZ=UTC date +%Y%m%dT%H%M%SZ
  30 BOOT1_VERSION=  1.1:$(BUILDDATE)
  31 
  32 # architecture-specific loader code
  33 SRCS=   boot1.c self_reloc.c start.S ufs_module.c zfs_module.c devopen.c


  49 
  50 CPPFLAGS +=     -I./../../zfs/
  51 CPPFLAGS +=     -I./../../../cddl/boot/zfs/
  52 CPPFLAGS +=     -DEFI_ZFS_BOOT
  53 
  54 # Always add MI sources and REGULAR efi loader bits
  55 CPPFLAGS +=     -I./../../common
  56 
  57 include ../Makefile.inc
  58 
  59 FILES=  boot1.efi
  60 FILEMODE=       0555
  61 ROOT_BOOT=      $(ROOT)/boot
  62 ROOTBOOTFILES=$(FILES:%=$(ROOT_BOOT)/%)
  63 
  64 LDSCRIPT=       ./../loader/arch/${MACHINE}/ldscript.${MACHINE}
  65 LDFLAGS=        -nostdlib --eh-frame-hdr -znocombreloc
  66 LDFLAGS +=      -shared --hash-style=both --enable-new-dtags
  67 LDFLAGS +=      -T${LDSCRIPT} -Bsymbolic
  68 
  69 all: machine x86 boot1.efi

  70 install: all $(ROOTBOOTFILES)
  71 
  72 #
  73 # Add libstand for the runtime functions used by the compiler - for example
  74 # __aeabi_* (arm) or __divdi3 (i386).
  75 # as well as required string and memory functions for all platforms.
  76 #
  77 LIBSTAND=       ../../libstand/$(MACH64)/libstand.a
  78 LIBZFSBOOT=     ../../zfs/$(MACH64)/libzfsboot.a
  79 DPADD=          ${LIBSTAND} ${LIBZFSBOOT}
  80 LDADD=          -L../../zfs/$(MACH64) -lzfsboot -L../../libstand/$(MACH64) -lstand
  81 
  82 DPADD +=        ${LDSCRIPT}
  83 
  84 EFI_TARGET=     pei-x86-64
  85 
  86 boot1.efi: ${PROG}
  87         if [ `${OBJDUMP} -t ${PROG} | fgrep '*UND*' | wc -l` != 0 ]; then \
  88                 ${OBJDUMP} -t ${PROG} | fgrep '*UND*'; \
  89                 exit 1; \


  92                 -j .dynamic -j .dynsym -j .rel.dyn \
  93                 -j .rela.dyn -j .reloc -j .eh_frame \
  94                 --output-target=${EFI_TARGET} --subsystem efi-app ${PROG} $@
  95 
  96 boot1.o: ./../../common/ufsread.c
  97 
  98 CLEANFILES= boot1.efi ${PROG}
  99 
 100 ${PROG}:        $(OBJS) $(DPADD)
 101         $(LD) $(LDFLAGS) -o $@ $(OBJS) $(LDADD)
 102 
 103 CLEANFILES +=   machine x86
 104 
 105 machine:
 106         $(RM) machine
 107         $(SYMLINK) ./../../../${MACHINE}/include machine
 108 
 109 x86:
 110         $(RM) x86
 111         $(SYMLINK) ./../../../x86/include x86


 112 
 113 clean clobber:
 114         $(RM) $(CLEANFILES) $(OBJS)
 115 
 116 %.o:    ../loader/arch/${MACHINE}/%.S
 117         $(COMPILE.S) $<
 118 
 119 %.o:    ../loader/%.c
 120         $(COMPILE.c) $<
 121 
 122 %.o:    ../../common/%.c
 123         $(COMPILE.c) $<
 124 
 125 $(ROOT_BOOT)/%: %
 126         $(INS.file)
   1 #
   2 # This file and its contents are supplied under the terms of the
   3 # Common Development and Distribution License ("CDDL"), version 1.0.
   4 # You may only use this file in accordance with the terms of version
   5 # 1.0 of the CDDL.
   6 #
   7 # A full copy of the text of the CDDL should have accompanied this
   8 # source.  A copy of the CDDL is also available via the Internet at
   9 # http://www.illumos.org/license/CDDL.
  10 #
  11 
  12 #
  13 # Copyright 2016 Toomas Soome <tsoome@me.com>
  14 # Copyright 2016 RackTop Systems.
  15 #
  16 
  17 include $(SRC)/Makefile.master
  18 
  19 CC=     $(GCC_ROOT)/bin/gcc
  20 LD=     $(GNU_ROOT)/bin/gld
  21 OBJCOPY= $(GNU_ROOT)/bin/gobjcopy
  22 OBJDUMP= $(GNU_ROOT)/bin/gobjdump
  23 OBJCOPY= /code/binutils-gdb/binutils/objcopy
  24 OBJDUMP= /code/binutils-gdb/binutils/objdump
  25 
  26 PROG=           boot1.sym
  27 MACHINE=$(MACH64)
  28 
  29 # need to update this to trigger installboot updates.
  30 BUILDDATE :sh = TZ=UTC date +%Y%m%dT%H%M%SZ
  31 BOOT1_VERSION=  1.1:$(BUILDDATE)
  32 
  33 # architecture-specific loader code
  34 SRCS=   boot1.c self_reloc.c start.S ufs_module.c zfs_module.c devopen.c


  50 
  51 CPPFLAGS +=     -I./../../zfs/
  52 CPPFLAGS +=     -I./../../../cddl/boot/zfs/
  53 CPPFLAGS +=     -DEFI_ZFS_BOOT
  54 
  55 # Always add MI sources and REGULAR efi loader bits
  56 CPPFLAGS +=     -I./../../common
  57 
  58 include ../Makefile.inc
  59 
  60 FILES=  boot1.efi
  61 FILEMODE=       0555
  62 ROOT_BOOT=      $(ROOT)/boot
  63 ROOTBOOTFILES=$(FILES:%=$(ROOT_BOOT)/%)
  64 
  65 LDSCRIPT=       ./../loader/arch/${MACHINE}/ldscript.${MACHINE}
  66 LDFLAGS=        -nostdlib --eh-frame-hdr -znocombreloc
  67 LDFLAGS +=      -shared --hash-style=both --enable-new-dtags
  68 LDFLAGS +=      -T${LDSCRIPT} -Bsymbolic
  69 
  70 all: boot1.efi
  71 
  72 install: all $(ROOTBOOTFILES)
  73 
  74 #
  75 # Add libstand for the runtime functions used by the compiler - for example
  76 # __aeabi_* (arm) or __divdi3 (i386).
  77 # as well as required string and memory functions for all platforms.
  78 #
  79 LIBSTAND=       ../../libstand/$(MACH64)/libstand.a
  80 LIBZFSBOOT=     ../../zfs/$(MACH64)/libzfsboot.a
  81 DPADD=          ${LIBSTAND} ${LIBZFSBOOT}
  82 LDADD=          -L../../zfs/$(MACH64) -lzfsboot -L../../libstand/$(MACH64) -lstand
  83 
  84 DPADD +=        ${LDSCRIPT}
  85 
  86 EFI_TARGET=     pei-x86-64
  87 
  88 boot1.efi: ${PROG}
  89         if [ `${OBJDUMP} -t ${PROG} | fgrep '*UND*' | wc -l` != 0 ]; then \
  90                 ${OBJDUMP} -t ${PROG} | fgrep '*UND*'; \
  91                 exit 1; \


  94                 -j .dynamic -j .dynsym -j .rel.dyn \
  95                 -j .rela.dyn -j .reloc -j .eh_frame \
  96                 --output-target=${EFI_TARGET} --subsystem efi-app ${PROG} $@
  97 
  98 boot1.o: ./../../common/ufsread.c
  99 
 100 CLEANFILES= boot1.efi ${PROG}
 101 
 102 ${PROG}:        $(OBJS) $(DPADD)
 103         $(LD) $(LDFLAGS) -o $@ $(OBJS) $(LDADD)
 104 
 105 CLEANFILES +=   machine x86
 106 
 107 machine:
 108         $(RM) machine
 109         $(SYMLINK) ./../../../${MACHINE}/include machine
 110 
 111 x86:
 112         $(RM) x86
 113         $(SYMLINK) ./../../../x86/include x86
 114 
 115 $(OBJS): machine x86
 116 
 117 clean clobber:
 118         $(RM) $(CLEANFILES) $(OBJS)
 119 
 120 %.o:    ../loader/arch/${MACHINE}/%.S
 121         $(COMPILE.S) $<
 122 
 123 %.o:    ../loader/%.c
 124         $(COMPILE.c) $<
 125 
 126 %.o:    ../../common/%.c
 127         $(COMPILE.c) $<
 128 
 129 $(ROOT_BOOT)/%: %
 130         $(INS.file)