[syslinux] 6.04-pre2, gnu-efi 3.0.8+, libgpl.c32 bug report. WAS: syslinux-6.04-pre2

Ady Ady ady-sf at hotmail.com
Thu Feb 7 08:51:33 PST 2019


> > > Should be a trivial fix by simply omitting those from the
> > > syslinux-provided library functions on EFI.
> > > 
> > >       -hpa
> > > 
> > 
> > All this has been already done in Debian Testing a couple of months ago
> > (at least). The next step for Debian in this regard should probably be
> > to test with gnu-efi 3.0.9 or newer, because the latter includes
> > relevant patches already.
> 
> Ahh, that would be great if these could be applied too.
> 

>From Debian's git repo:

 https://salsa.debian.org/images-team/syslinux.git 

 https://salsa.debian.org/images-team/syslinux/commits/debian/master 

 
https://salsa.debian.org/images-team/syslinux/commits/58d5e270a520da13a6
cd2ab9db0b235f1145d50a 


These are relevant patches already used in Debian:

Description: Fix compatibility with new gnu-efi version
 * The VPrint definition is now part of the exports of gnu-efi
 * The EFI_PXE_BASE_CODE struct has been renamed to 
EFI_PXE_BASE_CODE_PROTOCOL
 * Update the longjump calls to fit the new declaration
 * Allow multiple definitions when linking the syslinux binary so the
   memset and memcpy symbols which are included by gnu-efi since 3.0.8 
are
   ignored (we still use the definitions from syslinux) but linking 
succeeds


The reason for that last one is:

  * gnu-efi compatibility patch: use memset and memcpy from syslinux 
instead
    of from gnu-efi
    - Using the memset and memcpy from gnu-efi causes some modules 
(e.g.
      vesamenu.c32) to fail with "Undef symbol FAIL: memset"


And, once again, upstream git master head of gnu-efi has relevant 
patches _after_ 3.0.8. Whether they actually solved the memset and 
memcpy issues for Syslinux, that's for some capable developer to 
test/say.

 
https://sourceforge.net/p/gnu-efi/code/ci/d34132e62f666904158c7ec2f1eef5
a9d5281c36/log/ 

 git clone git://git.code.sf.net/p/gnu-efi/code gnu-efi-code 

or

 git clone https://git.code.sf.net/p/gnu-efi/code gnu-efi-code 


Additional relevant patches included in Debian:

  * Strip .note.gnu.property section from mbr.bin (added since
    binutils >= 2.31.1-2) to stay within size constraints (Closes: 
#906414).
  * Fix broken efi binaries when building with binutils >= 2.31 by 
patching
    the linker script.


In addition, syslinux 6.04-pre2 and Debian's package, both fail, for 
example with hdt.c32:

 boot: hdt.c32
 Undef symbol FAIL: exp
 Failed to load libgpl.c32
 Failed to load COM32 file hdt.c32
 boot: 


See:

_ "syslinux-common: Undef symbol FAIL: exp in libgpl.c32 when trying to 
load hdt.c32" 

 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=918915 


_ [syslinux] [PATCH 1/2] Add fabs() implementation

 https://www.syslinux.org/archives/2018-August/026158.html 


_ [syslinux] [PATCH 2/2] Add -ffreestanding to compiler flags

 https://www.syslinux.org/archives/2018-August/026159.html 



So, bintutils 2.31+, gcc 8+.


I sincerely don't know how many times a bug has to be reported, or a 
patch has 
to be sent, in order to be actually noticed. Hopefully this time...

Regards,
Ady.



More information about the Syslinux mailing list