|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] x86/boot: adjust text gap/diff to work with 64-bytes alignment too
On Thu, Jan 9, 2025 at 4:03 PM Andrew Cooper <andrew.cooper3@xxxxxxxxxx> wrote:
>
> On 09/01/2025 3:30 pm, Frediano Ziglio wrote:
> > On Thu, Jan 9, 2025 at 1:44 PM Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> > wrote:
> >> On 09/01/2025 1:23 pm, Jan Beulich wrote:
> >>> On 09.01.2025 14:15, Marek Marczykowski-Górecki wrote:
> >>>> Xen compiled with -mtune=generic has .text alignment set to 64-bytes.
> >>>> Having text_diff non-64-bytes-aligned breaks stuff:
> >>>>
> >>>> Traceback (most recent call last):
> >>>> File
> >>>> "/builddir/build/BUILD/xen-4.20.0-build/xen-4.20.0-rc0/xen/./tools/combine_two_binaries.py",
> >>>> line 96, in <module>
> >>>> raise Exception('File sizes do not match')
> >>>> Exception: File sizes do not match: 70160 != 4080 + 66048
> >>>>
> >>>> Adjust the numbers as suggested by Frediano to work with 64-bytes and
> >>>> even 128-bytes alignment.
> >>> And then breaking at 256? As indicated on Matrix, imo we should be able to
> >>> cope with anything up to at least PAGE_SIZE. Or we should reduce .text
> >>> alignment before linking.
> >> Do you have a concrete proposal on how to do this?
> >>
> >> Because if not, we've had 2 downstreams hit by this build failure, and
> >> we probably ought to take this patch as a stopgap fix, and see about
> >> doing the better fix for 4.20.
> >>
> > I agree with this, merge this and then leave the improvements for follow
> > up(s).
> >
> > Yesterday I checked the output object file (built-in-32.o) to find
> > that the output alignment is 1 byte, which is obviously wrong!
>
> No so. It's perfectly easy to end up with 1 byte alignment on .text,
> commonly with -Os.
>
> e.g. In my build, reloc-trampoline.32.o has:
>
> Sections:
> Idx Name Size VMA LMA File off Algn
> 0 .group 00000008 00000000 00000000 00000034 2**2
> CONTENTS, READONLY, GROUP, LINK_ONCE_DISCARD
> 1 .text 00000076 00000000 00000000 0000003c 2**0
> CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
> 2 .data 00000000 00000000 00000000 000000b2 2**0
> CONTENTS, ALLOC, LOAD, DATA
> 3 .bss 00000000 00000000 00000000 000000b2 2**0
> ALLOC
> 4 .text.__x86.get_pc_thunk.bx 00000004 00000000 00000000 000000b2 2**0
> CONTENTS, ALLOC, LOAD, READONLY, CODE
> 5 .comment 00000020 00000000 00000000 000000b6 2**0
> CONTENTS, READONLY
> 6 .note.GNU-stack 00000000 00000000 00000000 000000d6 2**0
> CONTENTS, READONLY
>
> and this is entirely reasonable IMO.
>
> That said, the fact that built-in-32.S does not have at least one .align
> directive probably is an issue.
>
> x86 will cope, and there's nothing interesting in this code that's going
> to choke on being misaligned.
>
What about something like
https://github.com/freddy77/xen/commit/299a1fd70a84e9b52b84d59daff6878a3c42a595
?
Frediano
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |