[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1] xen/riscv: make calculation of stack address PC-relative
> > > > Could you please explain what is x86 section asserts? > > If you look at the bottom of x86's xen.lds.S you'll find a number of > assertions, among them one towards .got being empty. Some of the > sections checked there may indeed not be applicable on arbitrary > architectures, but I think .got is sufficiently universal. So I agree > with Andrew that it may be worthwhile making some of this generic. I have question about 'SIZEOF(.got.plt) == 3 * 8': #ifndef EFI ASSERT(!SIZEOF(.got), ".got non-empty") /* * At least GNU ld 2.30 and earlier fail to discard the generic part of * .got.plt when no actual entries were allocated. Permit this case alongside * the section being empty. */ ASSERT(!SIZEOF(.got.plt) || SIZEOF(.got.plt) == 3 * 8, "unexpected .got.plt size") ASSERT(!SIZEOF(.igot.plt), ".igot.plt non-empty") ASSERT(!SIZEOF(.iplt), ".iplt non-empty") ASSERT(!SIZEOF(.plt), ".plt non-empty") ASSERT(!SIZEOF(.rela), "leftover relocations") #endif I assume that the check 'SIZEOF(.got.plt) == 3 * 8' was added to verify the case when no real entries in .got.plt are needed but .got.plt still has 3 entries. I commented the code where got entries are produced now: --- a/xen/arch/riscv/riscv64/head.S +++ b/xen/arch/riscv/riscv64/head.S @@ -20,6 +20,7 @@ ENTRY(start) csrc CSR_SSTATUS, t0 /* Clear the BSS */ +/* la t3, __bss_start la t4, __bss_end .L_clear_bss: @@ -30,5 +31,6 @@ ENTRY(start) la sp, cpu0_boot_stack li t0, STACK_SIZE add sp, sp, t0 +*/ tail start_xen And I can't see .got.plt with 3 entries: $ riscv64-linux-gnu-objdump -x xen/xen-syms | grep -i got What am I doing wrong? Or my understanding of the idea of the check is wrong? And I assume that add !SIZEOF(.got) and !SIZEOF(.got.plt) would be enough to RISC-V's xen.lds.S? ~ Oleksii
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |