From: Thomas Huth <thuth@redhat.com>
To: Fabiano Rosas <farosas@suse.de>, qemu-devel@nongnu.org
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Dario Faggioli" <dfaggioli@suse.com>,
"Vasiliy Ulyanov" <vulyanov@suse.de>
Subject: Re: [PATCH] optionrom: Remove build-id section
Date: Wed, 27 Sep 2023 07:03:36 +0200 [thread overview]
Message-ID: <66963265-fdeb-9bb0-bc3e-a6cd57d53e57@redhat.com> (raw)
In-Reply-To: <20230926192502.15986-1-farosas@suse.de>
On 26/09/2023 21.25, Fabiano Rosas wrote:
> 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>
> ---
> 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 b1fff0ba6c..30d07026c7 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
I remember that we had to do the same in other projects that use their own
linker script (kvm-unit-tests?) ... so this looks fine to me.
Reviewed-by: Thomas Huth <thuth@redhat.com>
next prev parent reply other threads:[~2023-09-27 5:04 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-26 19:25 [PATCH] optionrom: Remove build-id section Fabiano Rosas
2023-09-27 5:03 ` Thomas Huth [this message]
2023-09-27 6:52 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=66963265-fdeb-9bb0-bc3e-a6cd57d53e57@redhat.com \
--to=thuth@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=dfaggioli@suse.com \
--cc=farosas@suse.de \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=vulyanov@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).