From d7b20baf9747e6deacfada9e1289bdc601523c44 Mon Sep 17 00:00:00 2001 From: Marvin Friedrich Date: Thu, 15 Oct 2026 17:17:03 +0200 Subject: [PATCH] fix x86_64 on clang --- arch/x86_64/smp.c | 9 ++++++--- meson.build | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/arch/x86_64/smp.c b/arch/x86_64/smp.c index ee1d4b0..7feebc1 100644 --- a/arch/x86_64/smp.c +++ b/arch/x86_64/smp.c @@ -51,15 +51,18 @@ static void smp_trampoline() { ".set .Ltemp_cr3_offset, (.Ldata_offset + %c[temp_cr3])\n" ".set .Lentry_offset, (.Ldata_offset + %c[entry])\n" ".set .Lhhdm_offset, (.Ldata_offset + %c[hhdm])\n" + ".set .Linvalid_idtr_offset, (.Linvalid_idtr - smp_trampoline_start)\n" + ".set .Lmode32_offset, (.Lmode32 - smp_trampoline_start)\n" + ".set .Lmode64_offset, (.Lmode64 - smp_trampoline_start)\n" ".Lmode16:\n" " mov bx, cs\n" " shl ebx, 4\n" - " lidtd cs:(.Linvalid_idtr - smp_trampoline_start)\n" + " lidtd cs:.Linvalid_idtr_offset\n" " lgdtd cs:.Lgdtr_offset\n" - " lea eax, [ebx + (.Lmode32 - smp_trampoline_start)]\n" + " lea eax, [ebx + .Lmode32_offset]\n" " mov dword ptr cs:.Lfarjmp_offset, eax\n" " mov eax, %c[cr0]\n" @@ -98,7 +101,7 @@ static void smp_trampoline() { " or eax, %c[cr0_pg]\n" " mov cr0, eax\n" - " lea eax, [ebx + (.Lmode64 - smp_trampoline_start)]\n" + " lea eax, [ebx + .Lmode64_offset]\n" " push %c[kernel64_cs]\n" " push eax\n" " retf\n" diff --git a/meson.build b/meson.build index 2521e4b..6782975 100644 --- a/meson.build +++ b/meson.build @@ -44,7 +44,7 @@ common_c_args = [ common_link_args = [ '-ffreestanding', '-nostdlib', - '-znoexecstack', + '-Wl,-z,noexecstack', '-Wl,--gc-sections', '-Wl,--build-id=none', ]