From: Hans Ulrich Niedermann <hun@n-dimensional.de>
To: grub-devel@gnu.org
Subject: Re: Multiboot2 on aarch64: Alignment of ELF Headers
Date: Sat, 23 May 2020 12:43:16 +0200 [thread overview]
Message-ID: <20200523124316.68a51221@n-dimensional.de> (raw)
In-Reply-To: <f280ace103ff8081e55b728e2be1ac41f64105c1.camel@monkeyircd.org>
On Fri, 22 May 2020 17:23:35 +0100
Chris Plant via Grub-devel <grub-devel@gnu.org> wrote:
> I'm continuing to work on Multiboot2 support on aarch64, and I'm
> looking at the alignment of the ELF headers which are passed through
> MB2.
At the risk of me sounding stupid...
Having read the MB2 specs quite thoroughly in the past few months, I
still have no idea what "ELF headers" being "passed through MB2" could
be about. The MB2 spec defines a MB2 header consisting of a four MB2
header magic fields and a set of MB2 header tags.
The only thing ELF related I could find there is the MB2 header address
tag which duplicates some information from ELF (if OS image is in ELF
format) or contains address information (if OS image is in non-ELF
format). Is that what you are talking about?
> The alignment of the MB2 header's isn't the problem, the problem is in
> the ELF headers which are linked through. Some of the 8 byte wide
> fields (specifically addr and size) in the ELF headers are not aligned
> on 8 byte boundaries, and instead can aligned on 4-byte boundaries.
>
> My question is, is it preferable to state that it is possible that the
> headers may be aligned on 4 byte boundaries (and manage that through
> reading two 4-byte chunks), or to change grub code to ensure that the
> ELF headers are aligned on 8 byte boundaries and state that 8 byte
> alignment is always the case?
As it is, the largest values in the MB2 header defined in the OS image
are u32, there are no u64 values. Sorry if I am asking stupid questions,
but where would u64 values come into play here in the MB2 spec? Are you
redefining some MB2 header tags with u64 values instead of u32 values?
> I think logically that it should be 8 byte aligned so that's my
> preference, but I thought I'd ask.
If you happen to be speaking about MB2 Header Tags when you say "linked
through ELF headers" and you have been modeling your boot code off the
example boot.S and boot_mips.S and run into alignment issues there, be
advised that the current example boot code does violate the MB2 spec:
The MB2 spec and the grub2 code both agree on the MB2 header tags being
aligned to 8 byte boundaries, while the example code (both for ia32 and
for mips) does not align the MB2 header tags at all.
Uli
next prev parent reply other threads:[~2020-05-23 10:43 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-22 16:23 Multiboot2 on aarch64: Alignment of ELF Headers Chris Plant
2020-05-23 10:43 ` Hans Ulrich Niedermann [this message]
2020-05-23 11:21 ` Chris Plant
2020-05-23 12:33 ` Hans Ulrich Niedermann
2020-09-21 19:14 ` Chris Plant
2020-09-22 6:33 ` Krystian Hebel
2020-09-22 6:53 ` Chris Plant
2020-09-26 12:54 ` Chris Plant
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=20200523124316.68a51221@n-dimensional.de \
--to=hun@n-dimensional.de \
--cc=grub-devel@gnu.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.