On Sat, 29 Jun, at 01:57:58AM, Igor Sverkos wrote:> Hi, > > Matt Fleming wrote: > > On Tue, 25 Jun, at 01:52:00PM, Helmut Hullen wrote: > >> Thanks - now it crashes later ... > > > > What crash are you seeing? > > > >> I don't have the ia64 files which are needed for a complete binary. But > >> maybe that's only my special problem. > > > > You shouldn't need ia64 files to build ia32 and x86-64 versions of > > gnu-efi or Syslinux. > > Just to clarify: > > On a x86_64 system with gnu-efi 3.0u I checked out tag > "syslinux-6.01-pre5" and just run "make". It failed with > > make[3]: Entering directory `/tmp/sysl/syslinux/efi32/efi' > /tmp/sysl/syslinux/mk/efi.mk:27: *** Missing ia32 gnu-efi header files. Stop. > > I didn't expect that. "make bios" will run without an error, but I > thought it should be possible to build syslinux 6.01-pre5 with just > make (when gnu-efi >=3.0u is available). Or how should I compile a > version for an EFI-capable system (x86_64)?'make efi64' will build just for x86-64. Likewise, 'make efi32' will build just for i386. You can combine these, so to build BIOS and efi64 you'd do, make bios efi64> Am I wrong?Did you install gnu-efi from source or from your distributions package manager? You need both the x86-64 libraries and the ia32 libraries to build both EFI versions of Syslinux. -- Matt Fleming, Intel Open Source Technology Center
Hi, Matt Fleming wrote:> 'make efi64' will build just for x86-64. Likewise, 'make efi32' will > build just for i386. You can combine these, so to build BIOS and efi64 > you'd do, > > make bios efi64'make efi64' failed with: ld -T /tmp/syslinux/efi/x86_64/syslinux.ld -Bsymbolic -pie -nostdlib -znocombreloc -L/usr/lib64 --hash-style=gnu -m elf_x86_64 /usr/lib64/crt0-efi-x86_64.o -E --strip-debug -o syslinux.so mem.o adv.o pxe.o fio.o console.o main.o derivative.o vesa.o diskio.o udp.o tcp.o /tmp/syslinux/efi64/core/codepage.o /tmp/syslinux/efi64/efi/../core//debug.o /tmp/syslinux/efi64/efi/../core//writestr.o /tmp/syslinux/efi64/efi/../core//init.o /tmp/syslinux/efi64/efi/../core//path.o /tmp/syslinux/efi64/efi/../core//cleanup.o /tmp/syslinux/efi64/efi/../core//serirq.o /tmp/syslinux/efi64/efi/../core//kaboom.o /tmp/syslinux/efi64/efi/../core//idle.o /tmp/syslinux/efi64/efi/../core//console.o /tmp/syslinux/efi64/efi/../core//dmi.o /tmp/syslinux/efi64/efi/../core//writehex.o /tmp/syslinux/efi64/efi/../core//pmapi.o /tmp/syslinux/efi64/efi/../core//call16.o /tmp/syslinux/efi64/efi/../core//sysappend.o /tmp/syslinux/efi64/efi/../core//rllpack.o /tmp/syslinux/efi64/efi/../core//font.o /tmp/syslinux/efi64/efi/../core//graphics.o /tmp/syslinux/efi64/efi/../core//conio.o /tmp/syslinux/efi64/efi/../core//errno.o /tmp/syslinux/efi64/efi/../core//mem/init.o /tmp/syslinux/efi64/efi/../core//mem/free.o /tmp/syslinux/efi64/efi/../core//mem/malloc.o /tmp/syslinux/efi64/efi/../core//fs/chdir.o /tmp/syslinux/efi64/efi/../core//fs/nonextextent.o /tmp/syslinux/efi64/efi/../core//fs/getfssec.o /tmp/syslinux/efi64/efi/../core//fs/readdir.o /tmp/syslinux/efi64/efi/../core//fs/getcwd.o /tmp/syslinux/efi64/efi/../core//fs/cache.o /tmp/syslinux/efi64/efi/../core//fs/diskio.o /tmp/syslinux/efi64/efi/../core//fs/fs.o /tmp/syslinux/efi64/efi/../core//elflink/load_env32.o /tmp/syslinux/efi64/efi/../core//fs/iso9660/iso9660.o /tmp/syslinux/efi64/efi/../core//fs/fat/fat.o /tmp/syslinux/efi64/efi/../core//fs/lib/chdir.o /tmp/syslinux/efi64/efi/../core//fs/lib/loadconfig.o /tmp/syslinux/efi64/efi/../core//fs/lib/searchconfig.o /tmp/syslinux/efi64/efi/../core//fs/lib/mangle.o /tmp/syslinux/efi64/efi/../core//fs/lib/close.o /tmp/syslinux/efi64/efi/../core//fs/xfs/xfs_readdir.o /tmp/syslinux/efi64/efi/../core//fs/xfs/xfs_dinode.o /tmp/syslinux/efi64/efi/../core//fs/xfs/xfs_dir2.o /tmp/syslinux/efi64/efi/../core//fs/xfs/xfs.o /tmp/syslinux/efi64/efi/../core//fs/btrfs/btrfs.o /tmp/syslinux/efi64/efi/../core//fs/ntfs/ntfs.o /tmp/syslinux/efi64/efi/../core//fs/ext2/ext2.o /tmp/syslinux/efi64/efi/../core//fs/ext2/bmap.o /tmp/syslinux/efi64/efi/../core/fs/pxe/pxe.o /tmp/syslinux/efi64/efi/../core/fs/pxe/tftp.o /tmp/syslinux/efi64/efi/../core/fs/pxe/urlparse.o /tmp/syslinux/efi64/efi/../core/fs/pxe/dhcp_option.o /tmp/syslinux/efi64/efi/../core/fs/pxe/ftp.o /tmp/syslinux/efi64/efi/../core/fs/pxe/ftp_readdir.o /tmp/syslinux/efi64/efi/../core/fs/pxe/http.o /tmp/syslinux/efi64/efi/../core/fs/pxe/http_readdir.o /tmp/syslinux/efi64/com32/lib/memcpy.o /tmp/syslinux/efi64/com32/lib/memset.o /tmp/syslinux/efi64/com32/lib/memcmp.o /tmp/syslinux/efi64/com32/lib/printf.o /tmp/syslinux/efi64/com32/lib/strncmp.o /tmp/syslinux/efi64/com32/lib/vfprintf.o /tmp/syslinux/efi64/com32/lib/strlen.o /tmp/syslinux/efi64/com32/lib/vsnprintf.o /tmp/syslinux/efi64/com32/lib/snprintf.o /tmp/syslinux/efi64/com32/lib/stpcpy.o /tmp/syslinux/efi64/com32/lib/strcmp.o /tmp/syslinux/efi64/com32/lib/strdup.o /tmp/syslinux/efi64/com32/lib/strcpy.o /tmp/syslinux/efi64/com32/lib/strncpy.o /tmp/syslinux/efi64/com32/lib/setjmp.o /tmp/syslinux/efi64/com32/lib/fopen.o /tmp/syslinux/efi64/com32/lib/fread.o /tmp/syslinux/efi64/com32/lib/fread2.o /tmp/syslinux/efi64/com32/lib/puts.o /tmp/syslinux/efi64/com32/lib/strtoul.o /tmp/syslinux/efi64/com32/lib/strntoumax.o /tmp/syslinux/efi64/com32/lib/strcasecmp.o /tmp/syslinux/efi64/com32/lib/sprintf.o /tmp/syslinux/efi64/com32/lib/strlcat.o /tmp/syslinux/efi64/com32/lib/strchr.o /tmp/syslinux/efi64/com32/lib/strlcpy.o /tmp/syslinux/efi64/com32/lib/strncasecmp.o /tmp/syslinux/efi64/com32/lib/ctypes.o /tmp/syslinux/efi64/com32/lib/fputs.o /tmp/syslinux/efi64/com32/lib/fwrite2.o /tmp/syslinux/efi64/com32/lib/fwrite.o /tmp/syslinux/efi64/com32/lib/fgetc.o /tmp/syslinux/efi64/com32/lib/fclose.o /tmp/syslinux/efi64/com32/lib/lmalloc.o /tmp/syslinux/efi64/com32/lib/sys/err_read.o /tmp/syslinux/efi64/com32/lib/sys/err_write.o /tmp/syslinux/efi64/com32/lib/sys/null_read.o /tmp/syslinux/efi64/com32/lib/sys/stdcon_write.o /tmp/syslinux/efi64/com32/lib/syslinux/memscan.o /tmp/syslinux/efi64/com32/lib/strrchr.o /tmp/syslinux/efi64/com32/lib/strcat.o /tmp/syslinux/efi64/com32/lib/libgcc/__ashldi3.o /tmp/syslinux/efi64/com32/lib/libgcc/__udivdi3.o /tmp/syslinux/efi64/com32/lib/libgcc/__negdi2.o /tmp/syslinux/efi64/com32/lib/libgcc/__ashrdi3.o /tmp/syslinux/efi64/com32/lib/libgcc/__lshrdi3.o /tmp/syslinux/efi64/com32/lib/libgcc/__muldi3.o /tmp/syslinux/efi64/com32/lib/libgcc/__udivmoddi4.o /tmp/syslinux/efi64/com32/lib/libgcc/__umoddi3.o /tmp/syslinux/efi64/com32/lib/libgcc/__divdi3.o /tmp/syslinux/efi64/com32/lib/libgcc/__moddi3.o /tmp/syslinux/efi64/com32/lib/sys/intcall.o /tmp/syslinux/efi64/com32/lib/sys/farcall.o /tmp/syslinux/efi64/com32/lib/sys/cfarcall.o /tmp/syslinux/efi64/com32/lib/sys/zeroregs.o /tmp/syslinux/efi64/com32/lib/sys/argv.o /tmp/syslinux/efi64/com32/lib/sys/sleep.o /tmp/syslinux/efi64/com32/lib/sys/fileinfo.o /tmp/syslinux/efi64/com32/lib/sys/opendev.o /tmp/syslinux/efi64/com32/lib/sys/read.o /tmp/syslinux/efi64/com32/lib/sys/write.o /tmp/syslinux/efi64/com32/lib/sys/ftell.o /tmp/syslinux/efi64/com32/lib/sys/close.o /tmp/syslinux/efi64/com32/lib/sys/open.o /tmp/syslinux/efi64/com32/lib/sys/fileread.o /tmp/syslinux/efi64/com32/lib/sys/fileclose.o /tmp/syslinux/efi64/com32/lib/sys/openmem.o /tmp/syslinux/efi64/com32/lib/sys/isatty.o /tmp/syslinux/efi64/com32/lib/sys/fstat.o /tmp/syslinux/efi64/com32/lib/dprintf.o /tmp/syslinux/efi64/com32/lib/vdprintf.o /tmp/syslinux/efi64/com32/lib/syslinux/idle.o /tmp/syslinux/efi64/com32/lib/exit.o /tmp/syslinux/efi64/com32/lib/sys/module/common.o /tmp/syslinux/efi64/com32/lib/sys/module/x86_64/elf_module.o /tmp/syslinux/efi64/com32/lib/sys/module/elfutils.o /tmp/syslinux/efi64/com32/lib/sys/module/exec.o /tmp/syslinux/efi64/com32/lib/sys/module/elf_module.o -lgnuefi -lefi ld: warning: section `.bss' type changed to PROGBITS /usr/lib64/libefi.a(init.o): In function `InitializeLib': (.text+0x1ec): undefined reference to `InitializeLibPlatform' make[3]: *** [syslinux.so] Error 1 make[3]: Leaving directory `/tmp/syslinux/efi64/efi'> Did you install gnu-efi from source or from your distributions package > manager? You need both the x86-64 libraries and the ia32 libraries to > build both EFI versions of Syslinux.>From source. These are the files which got installed after 'emake install':* Contents of sys-boot/gnu-efi-3.0u: /usr /usr/include /usr/include/efi /usr/include/efi/efi.h /usr/include/efi/efi_nii.h /usr/include/efi/efi_pxe.h /usr/include/efi/efiapi.h /usr/include/efi/eficon.h /usr/include/efi/efidebug.h /usr/include/efi/efidef.h /usr/include/efi/efidevp.h /usr/include/efi/efierr.h /usr/include/efi/efifs.h /usr/include/efi/efigpt.h /usr/include/efi/efiip.h /usr/include/efi/efilib.h /usr/include/efi/efilink.h /usr/include/efi/efinet.h /usr/include/efi/efipart.h /usr/include/efi/efipciio.h /usr/include/efi/efiprot.h /usr/include/efi/efipxebc.h /usr/include/efi/efirtlib.h /usr/include/efi/efiser.h /usr/include/efi/efistdarg.h /usr/include/efi/efitcp.h /usr/include/efi/efiudp.h /usr/include/efi/efiui.h /usr/include/efi/libsmbios.h /usr/include/efi/pci22.h /usr/include/efi/protocol /usr/include/efi/protocol/adapterdebug.h /usr/include/efi/protocol/eficonsplit.h /usr/include/efi/protocol/efidbg.h /usr/include/efi/protocol/efivar.h /usr/include/efi/protocol/intload.h /usr/include/efi/protocol/legacyboot.h /usr/include/efi/protocol/piflash64.h /usr/include/efi/protocol/vgaclass.h /usr/include/efi/romload.h /usr/include/efi/x86_64 /usr/include/efi/x86_64/efibind.h /usr/include/efi/x86_64/efilibplat.h /usr/include/efi/x86_64/pe.h /usr/lib /usr/lib/crt0-efi-x86_64.o /usr/lib/elf_x86_64_efi.lds /usr/lib/libefi.a /usr/lib/libgnuefi.a /usr/share /usr/share/doc /usr/share/doc/gnu-efi-3.0u /usr/share/doc/gnu-efi-3.0u/ChangeLog.bz2 /usr/share/doc/gnu-efi-3.0u/README.efilib.bz2 /usr/share/doc/gnu-efi-3.0u/README.elilo.bz2 /usr/share/doc/gnu-efi-3.0u/README.gnuefi.bz2 -- Regards, Igor
Hallo, Matt, Du meintest am 29.06.13: [...]>> I didn't expect that. "make bios" will run without an error, but I >> thought it should be possible to build syslinux 6.01-pre5 with just >> make (when gnu-efi >=3.0u is available). Or how should I compile a >> version for an EFI-capable system (x86_64)?> 'make efi64' will build just for x86-64. Likewise, 'make efi32' will > build just for i386. You can combine these, so to build BIOS and > efi64 you'd do,> make bios efi64>> Am I wrong?> Did you install gnu-efi from source or from your distributions > package manager? You need both the x86-64 libraries and the ia32 > libraries to build both EFI versions of Syslinux.make bios ok make bios efi32 ok make bios efi32 efi64 a lot of errors Using "gnu-efi 3.0u". Viele Gruesse! Helmut
Hi, seems like there is a problem in gnu-efi Makefiles: When you are not on Debian, this will be installed (from $source/inc/Makefile, called from $source/Makefile): install: mkdir -p $(INSTALLROOT)$(PREFIX)/include/efi mkdir -p $(INSTALLROOT)$(PREFIX)/include/efi/protocol mkdir -p $(INSTALLROOT)$(PREFIX)/include/efi/$(ARCH) $(INSTALL) -m 644 *.h $(INSTALLROOT)$(PREFIX)/include/efi $(INSTALL) -m 644 protocol/*.h $(INSTALLROOT)$(PREFIX)/include/efi/protocol $(INSTALL) -m 644 $(ARCH)/*.h $(INSTALLROOT)$(PREFIX)/include/efi/$(ARCH) ifeq ($(ARCH),ia64) mkdir -p $(INSTALLROOT)$(PREFIX)/include/efi/protocol/ia64 $(INSTALL) -m 644 protocol/ia64/*.h $(INSTALLROOT)$(PREFIX)/include/efi/protocol/ia64 endif So if you are not on ia32/ia64, no ia32/ia64 headers will be installed. But on Debian (from $source/Debian/Makefile): install: build dh_testdir dh_testroot dh_clean -k dh_installdirs -A # gnu-efi files cp -r inc/* debian/gnu-efi/usr/include/efi/ rm debian/gnu-efi/usr/include/efi/Makefile rm debian/gnu-efi/usr/include/efi/inc.mak rm debian/gnu-efi/usr/include/efi/make.inf rm debian/gnu-efi/usr/include/efi/makefile.hdr rm debian/gnu-efi/usr/include/efi/protocol/make.inf rm debian/gnu-efi/usr/include/efi/protocol/makefile.hdr rm debian/gnu-efi/usr/include/efi/protocol/readme.txt ifeq ($(buildarch),ia64) rm -rf debian/gnu-efi/usr/include/efi/ia32 rm -rf debian/gnu-efi/usr/include/efi/x84_64 else rm -rf debian/gnu-efi/usr/include/efi/ia64 endif [...] Debian will copy *everything* from inc. When it is an ia64 system, they will remove the ia32 and x84_64 headers (so you should be unable to build syslinux in ia64 on Debian, too). This will raise the question: Why does syslinux require these headers if you don't build for these archs? This would require gnu-efi too install headers for every arch, not only the arch you are on... But maybe I am totally wrong :) -- Regards, Igor
Hallo, Matt, Du meintest am 29.06.13: [...]>> I didn't expect that. "make bios" will run without an error, but I >> thought it should be possible to build syslinux 6.01-pre5 with just >> make (when gnu-efi >=3.0u is available). Or how should I compile a >> version for an EFI-capable system (x86_64)?> 'make efi64' will build just for x86-64. Likewise, 'make efi32' will > build just for i386. You can combine these, so to build BIOS and > efi64 you'd do,> make bios efi64I've run make bios efi32 efi64 (on a 32 bit machine, slackware) and got the attached error messages. Hope it helps finding the bug(s). As reported: "make bios efi32" works. Viele Gruesse! Helmut -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: syslinux-6.01pre5-err.txt URL: <http://www.zytor.com/pipermail/syslinux/attachments/20130629/4910cef4/attachment-0001.txt>
Hallo, Matt, Du meintest am 29.06.13:> Did you install gnu-efi from source or from your distributions > package manager? You need both the x86-64 libraries and the ia32 > libraries to build both EFI versions of Syslinux.Can you please take a look at "Make.defaults" in the "gnuefi-3.0u" source packet? A minor problem is "PREFIX := /usr/local", I don't understand the "Host/target identification": on an i386 machine ARCH is set to "ia32". Viele Gruesse! Helmut
On Sat, 29 Jun, at 04:46:00PM, Helmut Hullen wrote:> ld: i386 architecture of input file `zlib/adler32.o' is incompatible with i386:x86-64 outputThis is a problem with your toolchain - you don't have the necessary multilib support to build 64-bit objects. If you'll notice when building zlib/adler.o for efi64, the -m64 flag is being dropped. -- Matt Fleming, Intel Open Source Technology Center