Hi, On Thu, Feb 10, 2022 at 05:20:44PM +0800, Zhenzhong Duan wrote: > UEFI loads EFI applications to dynamic runtime addresses, so it requires > all applications to be compiled as PIC (position independent code). > > The new introduced single-step #DB tests series bring some compile time > absolute address, fixed it with RIP relative address. With this patch the error: ld: x86/debug.o: relocation R_X86_64_32S against `.text' can not be used when making a shared object; recompile with -fPIC disappears and I can now build kvm-unit-tests for x86_64 when configured with --target-efi: Tested-by: Alexandru Elisei <alexandru.elisei@xxxxxxx> Thanks, Alex > > Fixes: 9734b4236294 ("x86/debug: Add framework for single-step #DB tests") > Fixes: 6bfb9572ec04 ("x86/debug: Test IN instead of RDMSR for single-step #DB emulation test") > Fixes: bc0dd8bdc627 ("x86/debug: Add single-step #DB + STI/MOVSS blocking tests") > Signed-off-by: Zhenzhong Duan <zhenzhong.duan@xxxxxxxxx> > --- > x86/debug.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/x86/debug.c b/x86/debug.c > index 20ff8ebacc16..13d1f9629e1d 100644 > --- a/x86/debug.c > +++ b/x86/debug.c > @@ -145,7 +145,7 @@ static unsigned long singlestep_basic(void) > "and $~(1<<8),%%rax\n\t" > "1:push %%rax\n\t" > "popf\n\t" > - "lea 1b, %0\n\t" > + "lea 1b(%%rip), %0\n\t" > : "=r" (start) : : "rax" > ); > return start; > @@ -186,7 +186,7 @@ static unsigned long singlestep_emulated_instructions(void) > "movl $0x3fd, %%edx\n\t" > "inb %%dx, %%al\n\t" > "popf\n\t" > - "lea 1b,%0\n\t" > + "lea 1b(%%rip),%0\n\t" > : "=r" (start) : : "rax", "ebx", "ecx", "edx" > ); > return start; > @@ -223,7 +223,7 @@ static unsigned long singlestep_with_sti_blocking(void) > "1:and $~(1<<8),%%rax\n\t" > "push %%rax\n\t" > "popf\n\t" > - "lea 1b,%0\n\t" > + "lea 1b(%%rip),%0\n\t" > : "=r" (start_rip) : : "rax" > ); > return start_rip; > @@ -259,7 +259,7 @@ static unsigned long singlestep_with_movss_blocking(void) > "and $~(1<<8),%%rax\n\t" > "1: push %%rax\n\t" > "popf\n\t" > - "lea 1b,%0\n\t" > + "lea 1b(%%rip),%0\n\t" > : "=r" (start_rip) : : "rax" > ); > return start_rip; > @@ -302,7 +302,7 @@ static unsigned long singlestep_with_movss_blocking_and_icebp(void) > "1:and $~(1<<8),%%rax\n\t" > "push %%rax\n\t" > "popf\n\t" > - "lea 1b,%0\n\t" > + "lea 1b(%%rip),%0\n\t" > : "=r" (start) : : "rax" > ); > return start; > @@ -346,7 +346,7 @@ static unsigned long singlestep_with_movss_blocking_and_dr7_gd(void) > "and $~(1<<8),%%rax\n\t" > "push %%rax\n\t" > "popf\n\t" > - "lea 1b,%0\n\t" > + "lea 1b(%%rip),%0\n\t" > : "=r" (start_rip) : : "rax" > ); > return start_rip; > -- > 2.25.1 >