[prev in list] [next in list] [prev in thread] [next in thread] 

List:       qemu-devel
Subject:    Re: hppa-firmware.img missing build-id
From:       Helge Deller <deller () gmx ! de>
Date:       2024-04-23 15:07:17
Message-ID: 96f04d1a-2470-4118-8e07-b864f58f241e () gmx ! de
[Download RAW message or body]

On 4/23/24 16:58, Cole Robinson wrote:
> On 4/23/24 10:11 AM, Cole Robinson wrote:
> > Hi,
> > 
> > hppa-firmware.img and hppa-firmware64.img in qemu.git are missing ELF
> > build-id annotations. rpm builds on Fedora will error if an ELF binary
> > doesn't have build-id:
> > 
> > RPM build errors:
> > Missing build-id in
> > /tmp/rpmbuild/BUILDROOT/qemu-9.0.0-1.rc2.fc41.x86_64/usr/share/qemu/hppa-firmware.img
> >  Missing build-id in
> > /tmp/rpmbuild/BUILDROOT/qemu-9.0.0-1.rc2.fc41.x86_64/usr/share/qemu/hppa-firmware64.img
> >  Generating build-id links failed
> > 
> > I didn't hit this with qemu 8.2.* builds FWIW
> > 
> 
> Though checking older bundled hppa-firmware binaries with `readelf` I
> don't see build-id either, so now I'm not sure why those RPM builds were
> passing.
> 
> FWIW the RPM check is deep in RPM code:
> https://github.com/rpm-software-management/rpm/blob/68d0f3119c3d46b6184f4704edb51749ce9f819e/build/files.c#L1976
>  
> Maybe something else in hppa-firmware ELF headers caused this check to
> be skipped in the past

Maybe Fedora ignores binaries which don't have the executable flag set?
Qemu does not need it.
If so, a "chmod -x pc-bios/hppa-firmware*.img" should be sufficient.


Otherwise, adding "--build-id" to the link line when building the SeaBIOS
hppa-firmware.img does adds a build-id:

diff --git a/Makefile.parisc b/Makefile.parisc
index 5c34eb3d..256142f4 100644
--- a/Makefile.parisc
+++ b/Makefile.parisc
@@ -169,7 +169,7 @@ $(OUT)hppa-firmware$(BIT_SUFFIX).img: $(OUT)autoconf.h \
$(OUT)head.o $(OUT)ccode3  @echo "  Linking $@"
         $(Q)$(CPP) $(CPPFLAGS) -Isrc -D__ASSEMBLY__ -DBITS=$(BITS) \
src/parisc/pafirmware.lds.S -o $(OUT)pafirmware.lds  $(Q)$(CC) $(CFLAGS32FLAT) -c \
                src/version.c -o $(OUT)version.o
-       $(Q)$(LD) -N -T $(OUT)pafirmware.lds $(OUT)head.o $(OUT)version.o -X -o $@ -e \
startup --as-needed $(OUT)ccode32flat.o $(LIBGCC) +       $(Q)$(LD) -N -T \
$(OUT)pafirmware.lds $(OUT)head.o $(OUT)version.o -X -o $@ -e startup --as-needed \
--build-id $(OUT)ccode32flat.o $(LIBGCC)


deller@carbonx1:/home/cvs/LINUX/seabios$ eu-readelf -n out/hppa-firmware.img

Note section [ 1] '.note.gnu.build-id' of 36 bytes at offset 0x100:
   Owner          Data size  Type
   GNU                   20  GNU_BUILD_ID
     Build ID: 61a59ebba32fd40eadda7083983a1e1b04ec4082

Are you using the firmware blobs which come with qemu, or do you build Seabios-hppa \
yourself?

Helge


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic