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. 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