[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 0/2] deal with GOT stuff for RISC-V
The patch series introduces things to deal with GOT stuff whichwas faced during the work on [1]. Initially, the issue was with 'la' pseudo instruction, which transformed to 'aupic/l{w|d} GOT' instead of 'auipc/addi'. The transformation dependson .option {nopic, pic} directive or compiler flags. Right now, 'la' transforms to 'auipc/l{w|d}', which in case of cpu0_boot_stack[] will lead to the usage of _GLOBAL_OFFSET_TABLE_and addresses inside GOT sections will be relative to linker time addresses. At least there are two reasons for that: 1. GCC compiler used in RISCV64 container is compiled with --enable-default-pie flag. 2. GCC spec file for the RISC-V architecture by default enabled -fpic: [user@49295ae49cbe build]$ riscv64-linux-gnu-gcc -dumpspecs | grep -i pic --traditional-format %(subtarget_asm_debugging_spec) %{fno-pie|fno- PIE|fno-pic|fno-PIC:;:-fpic} %{march=*} %{mabi=*} %{mno-relax} %{mbig- endian} %{mlittle-endian} %(subtarget_asm_spec)%{misa-spec=*} which means that -fpic is enabled if none of the following options are present on the command line: fno-pie, -fno-PIE, -fno-pic, -fno-PIC To resolve that, it was added EMBEDDED_EXTRA_CFLAGS to RISCV's CFLAGS as it was done for other architecture. To catch use cases when GOT things will be produced by something was createthe second patch of the patch series: [xen/riscv: add explicit check that.got{.plt} is empty] which add .got&.got.plt sections to xen.lds.S and alsoadds asserts to check that the mentioned sections are empty otherwise, it will be produced a compilation error with the message that the sections aren't empty. [1]: https://lore.kernel.org/xen-devel/22c46432-e940-914e-53c2-2913607be3e2@xxxxxxxx/T/#t --- Changes in V2: * The patch [1] was refactored and lead to the patch [xen/riscv: add EMBEDDED_EXTRA_CFLAGS to CFLAGS]. * In addition to the patch [1] was created another patch [xen/riscv: add explicit check that .got{.plt} is empty] to be sure that .got{.plt} sections weren't produced. --- Oleksii Kurochko (2): xen/riscv: add EMBEDDED_EXTRA_CFLAGS to CFLAGS xen/riscv: add explicit check that .got{.plt} is empty xen/arch/riscv/arch.mk | 2 ++ xen/arch/riscv/xen.lds.S | 13 +++++++++++++ 2 files changed, 15 insertions(+) -- 2.39.2
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |