[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] x86/boot: Fix build with LLVM toolchain
On Wed, Nov 06, 2024 at 11:58:19AM +0000, Frediano Ziglio wrote: > On Wed, Nov 6, 2024 at 11:45 AM Jan Beulich <jbeulich@xxxxxxxx> wrote: > > > > On 06.11.2024 12:34, Frediano Ziglio wrote: > > > On Wed, Nov 6, 2024 at 10:59 AM Jan Beulich <jbeulich@xxxxxxxx> wrote: > > >> > > >> On 06.11.2024 07:56, Frediano Ziglio wrote: > > >>> On Tue, Nov 5, 2024 at 5:06 PM Jan Beulich <jbeulich@xxxxxxxx> wrote: > > >>>> > > >>>> On 05.11.2024 17:35, Frediano Ziglio wrote: > > >>>>> On Tue, Nov 5, 2024 at 3:32 PM Jan Beulich <jbeulich@xxxxxxxx> wrote: > > >>>>>> > > >>>>>> On 05.11.2024 15:55, Frediano Ziglio wrote: > > >>>>>>> This toolchain generates different object and map files. > > >>>>>>> Account for these changes. > > >>>>>> > > >>>>>> At least briefly mentioning what exactly the differences are would be > > >>>>>> quite nice, imo. > > >>>>>> > > >>>>> > > >>>>> What about. > > >>>>> > > >>>>> Object have 3 additional sections which must be handled by the linker > > >>>>> script. > > >>>> > > >>>> I expect these sections are there in both cases. The difference, I > > >>>> assume, > > >>>> is that for the GNU linker they don't need mentioning in the linker > > >>>> script. > > >>>> Maybe that's what you mean to say, but to me at least the sentence can > > >>>> also > > >>>> be interpreted differently. > > >>> > > >>> Why do you expect such sections? They are used for dynamic symbols in > > >>> shared objects, we don't use shared objects here. Normal object > > >>> symbols are not handled by these sections. GNU compiler+linker (we > > >>> link multiple objects together) do not generate these sections. So the > > >>> comment looks correct to me. > > >> > > >> About every ELF object will have .symtab and .strtab, and many also a > > >> separate .shstrtab. There's nothing "dynamic" about them. IOW - I'm > > >> confused by your reply. > > > > > > I checked the object files and there are no such sections using GNU > > > toolchain. > > > > I think I checked every *.o that's under boot/, and they all have these > > three > > sections. Can you clarify which one(s) specifically you checked? > > > > Jan > > $ gcc --version > gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 > Copyright (C) 2021 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > $ ld --version > GNU ld (GNU Binutils for Ubuntu) 2.38 > Copyright (C) 2022 Free Software Foundation, Inc. > This program is free software; you may redistribute it under the terms of > the GNU General Public Licence version 3 or (at your option) a later version. > This program has absolutely no warranty. > > $ find xen/normal/ xen/pvh/ -name \*.o | xargs -ifilename sh -c > 'objdump -x filename' | grep -e \\. > shstrtab -e \\.strtab -e \\.symtab > > (xen/normal and xen/pvh are the build directory, with different > configurations) > > I'm saying that's possibly why the linker scripts didn't need to > specify these sections. objdump -x doesn't seem to list .symtab, .strtab or .shstrtab, but readelf -S does: # readelf -SW xen/arch/x86/boot/reloc.o [...] [11] .symtab SYMTAB 00000000 0004b0 000190 10 12 21 4 [12] .strtab STRTAB 00000000 000640 000092 00 0 0 1 [13] .shstrtab STRTAB 00000000 000734 000078 00 0 0 1 # objdump -x xen/arch/x86/boot/reloc.o [...] 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 0000041d 00000000 00000000 00000040 2**4 CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE 2 .data 00000000 00000000 00000000 0000045d 2**0 CONTENTS, ALLOC, LOAD, DATA 3 .bss 00000000 00000000 00000000 0000045d 2**0 ALLOC 4 .rodata 00000024 00000000 00000000 00000460 2**2 CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA 5 .text.__x86.get_pc_thunk.bx 00000004 00000000 00000000 00000484 2**0 CONTENTS, ALLOC, LOAD, READONLY, CODE 6 .comment 00000028 00000000 00000000 00000488 2**0 CONTENTS, READONLY 7 .note.GNU-stack 00000000 00000000 00000000 000004b0 2**0 CONTENTS, READONLY It also seems to skip .rel sections. It doesn't seem reliable to use objdump to get ELF sections. Regards, Roger.
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |