[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 01/24] optionrom: Remove build-id section
|
From: |
Paolo Bonzini |
|
Subject: |
[PULL 01/24] optionrom: Remove build-id section |
|
Date: |
Tue, 3 Oct 2023 10:30:18 +0200 |
From: Fabiano Rosas <farosas@suse.de>
Our linker script for optionroms specifies only the placement of the
.text section, leaving the linker free to place the remaining sections
at arbitrary places in the file.
Since at least binutils 2.39, the .note.gnu.build-id section is now
being placed at the start of the file, which causes label addresses to
be shifted. For linuxboot_dma.bin that means that the PnP header
(among others) will not be found when determining the type of ROM at
optionrom_setup():
(0x1c is the label _pnph, where the magic "PnP" is)
$ xxd /usr/share/qemu/linuxboot_dma.bin | grep "PnP"
00000010: 0000 0000 0000 0000 0000 1c00 2450 6e50 ............$PnP
$ xxd pc-bios/optionrom/linuxboot_dma.bin | grep "PnP"
00000010: 0000 0000 0000 0000 0000 4c00 2450 6e50 ............$PnP
^bad
Using a freshly built linuxboot_dma.bin ROM results in a broken boot:
SeaBIOS (version rel-1.16.2-0-gea1b7a073390-prebuilt.qemu.org)
Booting from Hard Disk...
Boot failed: could not read the boot disk
Booting from Floppy...
Boot failed: could not read the boot disk
No bootable device.
We're not using the build-id section, so pass the --build-id=none
option to the linker to remove it entirely.
Note: In theory, this same issue could happen with any other
section. The ideal solution would be to have all unused sections
discarded in the linker script. However that would be a larger change,
specially for the pvh rom which uses the .bss and COMMON sections so
I'm addressing only the immediate issue here.
Reported-by: Vasiliy Ulyanov <vulyanov@suse.de>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20230926192502.15986-1-farosas@suse.de>
Cc: stable@vger.kernel.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
pc-bios/optionrom/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pc-bios/optionrom/Makefile b/pc-bios/optionrom/Makefile
index b1fff0ba6c8..30d07026c79 100644
--- a/pc-bios/optionrom/Makefile
+++ b/pc-bios/optionrom/Makefile
@@ -36,7 +36,7 @@ config-cc.mak: Makefile
$(call cc-option,-Wno-array-bounds)) 3> config-cc.mak
-include config-cc.mak
-override LDFLAGS = -nostdlib -Wl,-T,$(SRC_DIR)/flat.lds
+override LDFLAGS = -nostdlib -Wl,--build-id=none,-T,$(SRC_DIR)/flat.lds
pvh.img: pvh.o pvh_main.o
--
2.41.0
- [PULL 00/24] Audio, build system, misc fixes for 2023-10-03, Paolo Bonzini, 2023/10/03
- [PULL 01/24] optionrom: Remove build-id section,
Paolo Bonzini <=
- [PULL 06/24] meson: clean up static_library keyword arguments, Paolo Bonzini, 2023/10/03
- [PULL 02/24] accel/kvm/kvm-all: Handle register access errors, Paolo Bonzini, 2023/10/03
- [PULL 03/24] e1000: remove old compatibility code, Paolo Bonzini, 2023/10/03
- [PULL 07/24] Makefile: build plugins before running TCG tests, Paolo Bonzini, 2023/10/03
- [PULL 11/24] crypto: only include tls-cipher-suites in emulators, Paolo Bonzini, 2023/10/03
- [PULL 12/24] ui/vnc: Require audiodev= to enable audio, Paolo Bonzini, 2023/10/03
- [PULL 05/24] make-release: do not ship dtc sources, Paolo Bonzini, 2023/10/03
- [PULL 10/24] scsi-disk: ensure that FORMAT UNIT commands are terminated, Paolo Bonzini, 2023/10/03
- [PULL 21/24] hw/ppc: Support machine-default audiodev with fallback, Paolo Bonzini, 2023/10/03