DF-5658 / fix.diff
diff --git a/sys/platform/vkernel64/x86_64/genassym.c b/sys/platform/vkernel64/x86_64/genassym.c --- a/sys/platform/vkernel64/x86_64/genassym.c +++ b/sys/platform/vkernel64/x86_64/genassym.c @@ -119,3 +119,24 @@ ASSYM(TD_SAVEFPU, offsetof(struct thread, td_savefpu)); ASSYM(TDF_RUNNING, TDF_RUNNING); ASSYM(GD_NPXTHREAD, offsetof(struct mdglobaldata, gd_npxthread)); + +/* + * Consumed by global.s (.set alias exports). Omitting any of these makes + * gas resolve the macro as an undefined external symbol: the .set alias and + * its .globl export silently vanish from the linked vkernel with no build + * diagnostic (the vkernel is linked as a user program; undefined symbols + * without relocations are tolerated by ld). + */ +ASSYM(GD_REQFLAGS, offsetof(struct mdglobaldata, mi.gd_reqflags)); +ASSYM(GD_CNT, offsetof(struct mdglobaldata, mi.gd_cnt)); +ASSYM(GD_INTR_NESTING_LEVEL, offsetof(struct mdglobaldata, mi.gd_intr_nesting_level)); +ASSYM(GD_COMMON_TSSD, offsetof(struct mdglobaldata, gd_common_tssd)); +ASSYM(GD_TSS_GDT, offsetof(struct mdglobaldata, gd_tss_gdt)); +ASSYM(GD_COMMON_TSS, offsetof(struct mdglobaldata, gd_common_tss)); +ASSYM(GD_SAVEFPU, offsetof(struct mdglobaldata, gd_savefpu)); +ASSYM(GD_FPU_LOCK, offsetof(struct mdglobaldata, gd_fpu_lock)); +ASSYM(GD_FPENDING, offsetof(struct mdglobaldata, gd_fpending)); +ASSYM(GD_IPENDING, offsetof(struct mdglobaldata, gd_ipending)); +ASSYM(GD_SPENDING, offsetof(struct mdglobaldata, gd_spending)); +ASSYM(GD_CURRENTLDT, offsetof(struct mdglobaldata, gd_currentldt)); +ASSYM(GD_SS_EFLAGS, offsetof(struct mdglobaldata, gd_ss_eflags)); diff --git a/sys/platform/vkernel64/x86_64/global.s b/sys/platform/vkernel64/x86_64/global.s --- a/sys/platform/vkernel64/x86_64/global.s +++ b/sys/platform/vkernel64/x86_64/global.s @@ -74,8 +74,6 @@ */ .globl gd_cpuid, gd_other_cpus .globl gd_ss_eflags, gd_intr_nesting_level - .globl gd_CMAP1, gd_CMAP2, gd_CMAP3, gd_PMAP1 - .globl gd_CADDR1, gd_CADDR2, gd_CADDR3, gd_PADDR1 .globl gd_spending, gd_ipending, gd_fpending .globl gd_cnt @@ -83,14 +81,6 @@ .set gd_other_cpus,globaldata + GD_OTHER_CPUS .set gd_ss_eflags,globaldata + GD_SS_EFLAGS .set gd_intr_nesting_level,globaldata + GD_INTR_NESTING_LEVEL - .set gd_CMAP1,globaldata + GD_PRV_CMAP1 - .set gd_CMAP2,globaldata + GD_PRV_CMAP2 - .set gd_CMAP3,globaldata + GD_PRV_CMAP3 - .set gd_PMAP1,globaldata + GD_PRV_PMAP1 - .set gd_CADDR1,globaldata + GD_PRV_CADDR1 - .set gd_CADDR2,globaldata + GD_PRV_CADDR2 - .set gd_CADDR3,globaldata + GD_PRV_CADDR3 - .set gd_PADDR1,globaldata + GD_PRV_PADDR1 .set gd_fpending,globaldata + GD_FPENDING .set gd_ipending,globaldata + GD_IPENDING .set gd_spending,globaldata + GD_SPENDING |