Skip to content

ci: Fix Clang build - #336

Draft
wojiushixiaobai wants to merge 1 commit into
lat-opensource:masterfrom
wojiushixiaobai:master
Draft

ci: Fix Clang build#336
wojiushixiaobai wants to merge 1 commit into
lat-opensource:masterfrom
wojiushixiaobai:master

Conversation

@wojiushixiaobai

Copy link
Copy Markdown
Contributor

适配 Clang 交叉编译,目前还有一些问题:

  • ./latxbuild/build-release.sh 编译通过
  • ./latxbuild/build32.sh 编译失败
  • ./latxbuild/build32-dbg.sh 编译失败
  • ./latxbuild/build64.sh 编译失败
  • ./latxbuild/build64-dbg.sh 编译失败

Signed-off-by: 吴小白 <296015668@qq.com>
(cherry picked from commit 3d9ed5a)
Signed-off-by: 吴小白 <296015668@qq.com>
@wojiushixiaobai
wojiushixiaobai marked this pull request as draft July 20, 2026 08:53
@wojiushixiaobai

Copy link
Copy Markdown
Contributor Author

一些尚未验证的补丁,有条件的可以自行验证下。

diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
index a2c25bc..311428a 100644
--- a/accel/tcg/user-exec.c
+++ b/accel/tcg/user-exec.c
@@ -204,7 +204,7 @@ static uint64_t parse_guest_store(siginfo_t *info, ucontext_t *uc, int *size)
 {
     uint32_t inst = *(uint32_t *)UC_PC(uc);
     int rj = (inst >> 5) & 0x1f;
-    int64_t imm, real_guest_addr;
+    int64_t imm, real_guest_addr = 0;
     static uint64_t unsup = 0, unsup_sc = 0;
     int s = -1; /* unsupport inst */
     int check_cross_host = 1;
@@ -241,6 +241,7 @@ static uint64_t parse_guest_store(siginfo_t *info, ucontext_t *uc, int *size)
     /* handle unsupport inst here */
     unsup += 1;
     if (s == -2) unsup_sc += 1;
+    check_cross_host = 0;
 
     if (unsup < 0x100) {
         qemu_log_mask(LAT_LOG_SMC,
diff --git a/linux-user/mmap.c b/linux-user/mmap.c
index c68e7aa..35aa30f 100644
--- a/linux-user/mmap.c
+++ b/linux-user/mmap.c
@@ -1301,12 +1301,13 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size,
             }
         }
         if (prot == 0) {
-            if (reserved_va && new_size > old_size && num_pages)
+            if (reserved_va && new_size > old_size && num_pages) {
                 if (is_shadow_page_shmm(TARGET_PAGE_ALIGN(old_addr + old_size))) {
                     fprintf(stderr, "%s:%d, should not happen\n", __func__, __LINE__);
                 }
                 munmap(g2h_untagged(TARGET_PAGE_ALIGN(old_addr + old_size)),
                                         num_pages*TARGET_PAGE_SIZE);
+            }
             host_addr = mremap(g2h_untagged(old_addr),
                                old_size, new_size, flags);
 
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 74d0070..dbfe506 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -17467,6 +17467,7 @@ defined(__loongarch__)
 #ifdef CONFIG_LATX_TUNNEL_LIB
     case TUNNEL_VIRTUAL_SYSCALL_ID:
         reg_priv_plt(arg1, arg2, arg3);
+        ret = 0;
         break;
 #endif
 #if TARGET_ABI_BITS == 32 && HOST_LONG_BITS == 64
diff --git a/target/i386/latx/latx-name-demangling.cpp b/target/i386/latx/latx-name-demangling.cpp
index 09b4349..ca6a599 100644
--- a/target/i386/latx/latx-name-demangling.cpp
+++ b/target/i386/latx/latx-name-demangling.cpp
@@ -5,8 +5,9 @@
 extern "C"
 const char *latx_demangling(char *symbol)
 {
-    size_t b_sz = 1024;
-    char buff[b_sz];
+    static constexpr size_t buff_capacity = 1024;
+    char buff[buff_capacity];
+    size_t b_sz = buff_capacity;
     int status;
     char *ret = abi::__cxa_demangle(symbol, buff, &b_sz, &status);
     return (status == 0) ? ret : symbol;
diff --git a/target/i386/latx/optimization/flag-reduction.c b/target/i386/latx/optimization/flag-reduction.c
index be6e63d..9bf8a27 100644
--- a/target/i386/latx/optimization/flag-reduction.c
+++ b/target/i386/latx/optimization/flag-reduction.c
@@ -377,7 +377,7 @@ static bool flag_reduction_pass1(void *tb)
     time_t ti = profile_getclock();
 #endif
     TranslationBlock *ptb = (TranslationBlock *)tb;
-    IR1_INST *pir1 = dt_X86_INS_INVALID;
+    IR1_INST *pir1 = NULL;
 
     /* scanning if this insts will def ALL_EFLAGS */
     for (int i = tb_ir1_num(ptb) - 1; i >= 0; --i) {
diff --git a/target/i386/latx/optimization/hbr.c b/target/i386/latx/optimization/hbr.c
index a51e731..dcf0c0d 100644
--- a/target/i386/latx/optimization/hbr.c
+++ b/target/i386/latx/optimization/hbr.c
@@ -754,7 +754,7 @@ static void tb_xmm_analyse(TranslationBlock *tb,
     tb->s_data->shbr_type = SHBR_NTYPE;
     tb->s_data->xmm_use = 0;
     tb->s_data->xmm_def = 0;
-    IR1_INST *ir1 = dt_X86_INS_INVALID;
+    IR1_INST *ir1 = NULL;
     for (int i = 0; i < tb_ir1_num(tb); ++i) {
         ir1 = tb_ir1_inst(tb, i);
         ir1->xmm_def = 0;
@@ -844,7 +844,7 @@ static void over_tb_shbr_opt(TranslationBlock **tb_list, int tb_num_in_tu,
     for (int i = 0; i < tb_num_in_tu; i++) {
         TranslationBlock *tb = tb_list[i];
         if (tb->s_data->shbr_type != SHBR_NTYPE) {
-            IR1_INST *ir1 = dt_X86_INS_INVALID;
+            IR1_INST *ir1 = NULL;
             uint32_t no_opt_xmm = tb->s_data->xmm_out & SHBR_XMM_MASK;
             for (int j = tb_ir1_num(tb) - 1; j >= 0; j--) {
                 /* fprintf(stderr, "%x\n", tb->s_data->xmm_out); */
@@ -923,7 +923,7 @@ static void clear_ir1_flag(TranslationBlock **tb_list, int tb_num_in_tu)
     for (int i = 0; i < tb_num_in_tu; i++) {
         TranslationBlock *tb = tb_list[i];
         if (tb->s_data->shbr_type != SHBR_NTYPE) {
-            IR1_INST *ir1 = dt_X86_INS_INVALID;
+            IR1_INST *ir1 = NULL;
             for (int j = 0; j < tb_ir1_num(tb); j++) {
                 ir1 = tb_ir1_inst(tb, j);
                 ir1->hbr_flag = 0;
diff --git a/target/i386/latx/optimization/imm-cache.c b/target/i386/latx/optimization/imm-cache.c
index dffefbb..deabc32 100644
--- a/target/i386/latx/optimization/imm-cache.c
+++ b/target/i386/latx/optimization/imm-cache.c
@@ -46,7 +46,7 @@ const int itemp_map[4] = {
 const int itemp_reverse_map[11] = {
     [0 ... 10] = -1,
 #ifndef TARGET_X86_64
-    [ITEMP7] = 0,    [ITEMP8] 1, [ITEMP9] = 2, [ITEMP10] = 3,
+    [ITEMP7] = 0,    [ITEMP8] = 1, [ITEMP9] = 2, [ITEMP10] = 3,
 #else
     [ITEMP3] = 0,    [ITEMP4] = 1, [ITEMP5] = 2, [ITEMP6] = 3,
 #endif
diff --git a/target/i386/latx/optimization/ir1-optimization.c b/target/i386/latx/optimization/ir1-optimization.c
index 1045108..99b32fc 100644
--- a/target/i386/latx/optimization/ir1-optimization.c
+++ b/target/i386/latx/optimization/ir1-optimization.c
@@ -35,7 +35,7 @@ static void ir1_optimization_over_tb(TranslationBlock *tb)
     if (!tb->icount) {
         return;
     }
-    IR1_INST *ir1 = dt_X86_INS_INVALID;
+    IR1_INST *ir1 = NULL;
     /* cross scanning var defination */
     DEF_FLAG_RDTN(rdtn);
     DEF_INSTS_PTN(ptn);
@@ -105,7 +105,7 @@ void over_tb_rfd(TranslationBlock **tb_list, int tb_num)
 {
     TranslationBlock *tb;
     uint8_t  eflag_def[tb_num];
-    IR1_INST *ir1 = dt_X86_INS_INVALID;
+    IR1_INST *ir1 = NULL;
     for (int i = 0; i < tb_num; i++) {
         tb = tb_list[i];
         if (!tb->icount) {
@@ -152,7 +152,7 @@ void ir1_optimization(TranslationBlock *tb)
     if (!tb->icount) {
         return;
     }
-    IR1_INST *ir1 = dt_X86_INS_INVALID;
+    IR1_INST *ir1 = NULL;
     /* cross scanning var defination */
     DEF_FLAG_RDTN(rdtn);
     DEF_INSTS_PTN(ptn);
diff --git a/target/i386/latx/optimization/ir2-optimization.c b/target/i386/latx/optimization/ir2-optimization.c
index 58288b5..154feef 100644
--- a/target/i386/latx/optimization/ir2-optimization.c
+++ b/target/i386/latx/optimization/ir2-optimization.c
@@ -561,7 +561,7 @@ void ir2_opt_push_pop_fix(TranslationBlock *tb, CPUState *cpu, int i)
     tr_ir2_generate(ntb);
 
     IR2_INST *curr;
-    int curr_id, end_id, off, patch_off, last_id;
+    int curr_id, end_id, off, patch_off, last_id = -1;
     bool insert;
     IR2_OPCODE op;
     IR2_OPND esp;
diff --git a/target/i386/latx/sbt/aot.c b/target/i386/latx/sbt/aot.c
index 2270162..cc7ed66 100644
--- a/target/i386/latx/sbt/aot.c
+++ b/target/i386/latx/sbt/aot.c
@@ -831,7 +831,7 @@ static int get_tb_num(char *lib_name, CPUState *cpu) {
     /* Get file size */
     fseek(pf, 0, SEEK_END);      /* seek to end of file */
     size_t file_sz = ftell(pf);  /* get current file pointer */
-    char aot_version[strlen(AOT_VERSION) + 1];
+    char aot_version[sizeof(AOT_VERSION)];
     /*check aot complete.*/
     if (fseek(pf, -strlen(AOT_VERSION), SEEK_END) != 0) {
         qemu_log_mask(LAT_LOG_AOT, "can't fseek aot file\n");
@@ -1158,7 +1158,7 @@ lib_info *aot_load(char *lib_name, void **curr_aot_buffer)
     void *buffer;
     struct stat statbuf;
     lib_info *curr_lib_info = NULL;
-    char aot_version[strlen(AOT_VERSION) + 1];
+    char aot_version[sizeof(AOT_VERSION)];
     int fd = open(aot_file_path, O_RDONLY);
     FILE *pf = NULL;
     if (fd < 0) {
diff --git a/target/i386/latx/sbt/aot_merge.c b/target/i386/latx/sbt/aot_merge.c
index f8f551d..9ebde32 100644
--- a/target/i386/latx/sbt/aot_merge.c
+++ b/target/i386/latx/sbt/aot_merge.c
@@ -671,7 +671,7 @@ static int aot_load_no_lock(char *lib_name)
     struct stat statbuf;
     int count = aot_get_file_init(aot_file_path);
     size_t total_file_sz = 0;
-    char aot_version[strlen(AOT_VERSION) + 1];
+    char aot_version[sizeof(AOT_VERSION)];
     lsassert(count > 0);
     char tmp_file_path[PATH_MAX];
     if (lstat(aot_file_path, &statbuf)) {
diff --git a/target/i386/latx/sbt/aot_recover_tb.c b/target/i386/latx/sbt/aot_recover_tb.c
index 866f252..81bb6b8 100644
--- a/target/i386/latx/sbt/aot_recover_tb.c
+++ b/target/i386/latx/sbt/aot_recover_tb.c
@@ -210,7 +210,7 @@ static void recover_tb_range(target_ulong page, struct aot_tb *p_aot_tbs,
         /* Reserve space for tu tbmin table. */
         TBMini *tbmini_ptr= (TBMini *)
             ROUND_UP((uintptr_t)tcg_ctx->code_gen_ptr, CODE_GEN_ALIGN);
-        qatomic_set(&tcg_ctx->code_gen_ptr, ROUND_UP((uintptr_t)tbmini_ptr +
+        qatomic_set(&tcg_ctx->code_gen_ptr, (void *)ROUND_UP((uintptr_t)tbmini_ptr +
                     sizeof(struct TBMini) * (tb_num_in_tu + 1), qemu_icache_linesize));
         /* First tbm save tb_num_in_tu and TB_MAGIC. */
         aot_tbmini_set_pointer((uintptr_t)tbmini_ptr, tb_num_in_tu, TB_MAGIC);
diff --git a/target/i386/latx/translator/tr-lock-fast-atomic.c b/target/i386/latx/translator/tr-lock-fast-atomic.c
index fc796e5..2defdc8 100644
--- a/target/i386/latx/translator/tr-lock-fast-atomic.c
+++ b/target/i386/latx/translator/tr-lock-fast-atomic.c
@@ -387,7 +387,7 @@ bool translate_lock_cmpxchg_fast_atomic(IR1_INST *pir1)
     IR1_OPND *opnd0 = ir1_get_opnd(pir1, 0);
     IR1_OPND *opnd1 = ir1_get_opnd(pir1, 1);
 
-    IR2_OPND src0, src1;
+    IR2_OPND src1;
     IR1_OPND *reg_ir1 = NULL;
     int opnd0_size = ir1_opnd_size(opnd0);
 
@@ -418,7 +418,10 @@ bool translate_lock_cmpxchg_fast_atomic(IR1_INST *pir1)
 
         la_amcas_db_d(mem_val, src1, mem_opnd);
         if (ir1_need_calculate_any_flag(pir1)) {
-            generate_eflag_calculation(src0, gpr_eax_opnd, mem_val, pir1, true);
+            IR2_OPND dest = ra_alloc_itemp();
+            la_sub_d(dest, gpr_eax_opnd, mem_val);
+            generate_eflag_calculation(
+                dest, gpr_eax_opnd, mem_val, pir1, true);
         }
         IR2_OPND temp1 = ra_alloc_itemp();
         IR2_OPND temp2 = ra_alloc_itemp();
@@ -442,7 +445,12 @@ bool translate_lock_cmpxchg_fast_atomic(IR1_INST *pir1)
            /* amcas always change rd to rj (change eax_opnd to *src0_mem_addr),
          * so we need to generate EFLAGS.ZF by comparing old eax and new eax(src0_mem_addr) */
         la_amcas_db_w(temp1, src1, mem_opnd);
-        generate_eflag_calculation(src0, old_eax_opnd, temp1, pir1, true);
+        if (ir1_need_calculate_any_flag(pir1)) {
+            IR2_OPND dest = ra_alloc_itemp();
+            la_sub_w(dest, old_eax_opnd, temp1);
+            generate_eflag_calculation(
+                dest, old_eax_opnd, temp1, pir1, true);
+        }
 
         la_mov32_zx(zx_opnd, temp1);
 
@@ -465,7 +473,10 @@ bool translate_lock_cmpxchg_fast_atomic(IR1_INST *pir1)
         }
         la_amcas_db_w(gpr_eax_opnd, src1, mem_opnd);
         if (ir1_need_calculate_any_flag(pir1)) {
-            generate_eflag_calculation(src0, eax_opnd, gpr_eax_opnd, pir1, true);
+            IR2_OPND dest = ra_alloc_itemp();
+            la_sub_w(dest, eax_opnd, gpr_eax_opnd);
+            generate_eflag_calculation(
+                dest, eax_opnd, gpr_eax_opnd, pir1, true);
         }
 
         return true;
@@ -486,7 +497,12 @@ bool translate_lock_cmpxchg_fast_atomic(IR1_INST *pir1)
         lsassert(0);
     }
 
-    generate_eflag_calculation(src0, old_eax_opnd, temp1, pir1, true);
+    if (ir1_need_calculate_any_flag(pir1)) {
+        IR2_OPND dest = ra_alloc_itemp();
+        la_sub_w(dest, old_eax_opnd, temp1);
+        generate_eflag_calculation(
+            dest, old_eax_opnd, temp1, pir1, true);
+    }
 
     IR2_OPND temp2 = ra_alloc_itemp();
     la_xor(temp2, temp1, old_eax_opnd);
diff --git a/target/i386/latx/translator/tr-lock.c b/target/i386/latx/translator/tr-lock.c
index 08bc86b..9e50ac8 100644
--- a/target/i386/latx/translator/tr-lock.c
+++ b/target/i386/latx/translator/tr-lock.c
@@ -631,7 +631,14 @@ bool translate_lock_inc(IR1_INST *pir1)
     if (CODEIS64 && opnd0_size == 64) {
         la_addi_d(tmp, zero_ir2_opnd, 1);
         la_amadd_db_d(src0, tmp, mem_opnd);
+
+        dest = ra_alloc_itemp();
+        la_addi_d(dest, src0, 1);
         generate_eflag_calculation(dest, src0, src0, pir1, true);
+
+        ra_free_temp(src0);
+        ra_free_temp(dest);
+        ra_free_temp(tmp);
         return true;
     }
 #endif
@@ -768,7 +775,14 @@ bool translate_lock_dec(IR1_INST *pir1)
     if (CODEIS64 && opnd0_size == 64) {
         la_addi_d(tmp, zero_ir2_opnd, -1);
         la_amadd_db_d(src0, tmp, mem_opnd);
+
+        dest = ra_alloc_itemp();
+        la_addi_d(dest, src0, -1);
         generate_eflag_calculation(dest, src0, src0, pir1, true);
+
+        ra_free_temp(src0);
+        ra_free_temp(dest);
+        ra_free_temp(tmp);
         return true;
     }
 #endif
diff --git a/target/i386/latx/translator/tr-opnd-process.c b/target/i386/latx/translator/tr-opnd-process.c
index 9ce7f83..0f91a69 100644
--- a/target/i386/latx/translator/tr-opnd-process.c
+++ b/target/i386/latx/translator/tr-opnd-process.c
@@ -459,6 +459,7 @@ IR2_OPND load_ireg_from_ir1(IR1_OPND *opnd1, EXTENSION_MODE em, bool is_xmm_hi)
         }
         else if(ir1_opnd_is_ymm(opnd1)){
             lsassert(0);
+            __builtin_unreachable();
         }
         else if(ir1_opnd_is_seg(opnd1)){
             ret_opnd = ra_alloc_itemp_internal();
@@ -468,7 +469,7 @@ IR2_OPND load_ireg_from_ir1(IR1_OPND *opnd1, EXTENSION_MODE em, bool is_xmm_hi)
             break;
         }
         lsassert(0);
-        break;
+        __builtin_unreachable();
     }
 
     case dt_X86_OP_MEM: {
@@ -478,7 +479,7 @@ IR2_OPND load_ireg_from_ir1(IR1_OPND *opnd1, EXTENSION_MODE em, bool is_xmm_hi)
     }
     default:
         lsassert(0);
-        break;
+        __builtin_unreachable();
     }
 
     return ret_opnd;
diff --git a/target/i386/latx/translator/tr-pattern.c b/target/i386/latx/translator/tr-pattern.c
index 16aa8dc..09b47ff 100644
--- a/target/i386/latx/translator/tr-pattern.c
+++ b/target/i386/latx/translator/tr-pattern.c
@@ -813,7 +813,7 @@ static bool translate_test_jcc(IR1_INST *ir1)
         load_ireg_from_ir1(opnd0, SIGN_EXTENSION, false);
 
     IR2_OPND src_opnd_1;
-    IR2_OPND temp;
+    IR2_OPND temp = src_opnd_0;
     int is_same_reg = ir1_opnd_is_same_reg(opnd0, opnd1);
     if (!is_same_reg) {
         src_opnd_1 = load_ireg_from_ir1(opnd1, SIGN_EXTENSION, false);

@wojiushixiaobai

wojiushixiaobai commented Jul 20, 2026

Copy link
Copy Markdown
Contributor Author

错误日志:

  • ./latxbuild/build32-dbg.sh
[396/396] Linking target latx-i386
FAILED: latx-i386 
c++  -o latx-i386 libcommon.fa.p/cpus-common.c.o libcommon.fa.p/page-vary-common.c.o libcommon.fa.p/disas_i386.c.o libcommon.fa.p/disas_loongarch.c.o libcommon.fa.p/hw_core_cpu.c.o libcommon.fa.p/accel_accel-user.c.o libqemu-i386-linux-user.fa.p/linux-user_i386_signal.c.o libqemu-i386-linux-user.fa.p/linux-user_i386_cpu_loop.c.o libqemu-i386-linux-user.fa.p/target_i386_cpu.c.o libqemu-i386-linux-user.fa.p/target_i386_gdbstub.c.o libqemu-i386-linux-user.fa.p/target_i386_helper.c.o libqemu-i386-linux-user.fa.p/target_i386_xsave_helper.c.o libqemu-i386-linux-user.fa.p/target_i386_cpu-dump.c.o libqemu-i386-linux-user.fa.p/target_i386_sev-stub.c.o libqemu-i386-linux-user.fa.p/target_i386_tcg_bpt_helper.c.o libqemu-i386-linux-user.fa.p/target_i386_tcg_cc_helper.c.o libqemu-i386-linux-user.fa.p/target_i386_tcg_excp_helper.c.o libqemu-i386-linux-user.fa.p/target_i386_tcg_fpu_helper.c.o libqemu-i386-linux-user.fa.p/target_i386_tcg_int_helper.c.o libqemu-i386-linux-user.fa.p/target_i386_tcg_mem_helper.c.o libqemu-i386-linux-user.fa.p/target_i386_tcg_misc_helper.c.o libqemu-i386-linux-user.fa.p/target_i386_tcg_mpx_helper.c.o libqemu-i386-linux-user.fa.p/target_i386_tcg_seg_helper.c.o libqemu-i386-linux-user.fa.p/target_i386_tcg_smm_helper.c.o libqemu-i386-linux-user.fa.p/target_i386_tcg_svm_helper.c.o libqemu-i386-linux-user.fa.p/target_i386_tcg_tcg-cpu.c.o libqemu-i386-linux-user.fa.p/target_i386_tcg_translate.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_error.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_mem.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_latx-config.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_latx-options.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_latx-perf.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_latx-name-demangling.cpp.o libqemu-i386-linux-user.fa.p/target_i386_latx_latx-special-args.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_latx-signal.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_latx-disassemble-trace_latx-disassemble-trace.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_ir1_ir1.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_ir2_ir2.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_ir2_ir2-assemble.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_ir2_ir2-relocate.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_ir2_la-append.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_ir2_la-decode.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_ir2_la-disasm.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_optimization_tu.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_optimization_jrra.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_optimization_flag-lbt.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_optimization_flag-reduction.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_optimization_insts-pattern.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_optimization_ir1-optimization.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_optimization_ir2-optimization.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_optimization_tunnel-lib.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_optimization_syscall-tunnel.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_optimization_profile.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_optimization_ts.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_optimization_imm-cache.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_optimization_hbr.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_reg-alloc.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-arith.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-eflag.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-eflag-process.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-farith.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-fcmovcc.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-fctrl.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-fldst.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-jcc.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-logic.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-misc.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-mov.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-opnd-process.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-setcc.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-btx.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-lock.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-lock-fast-atomic.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-simd.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-vpaes.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-simd-cmp.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-simd-cvt.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-simd-mov.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-simd-shift.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-simd-fma.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-simd-sha.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-simd-f16c.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-avx.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-avx-cmp.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-avx-cvt.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-avx-mov.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-avx-shift.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-bmi.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-adx.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-softfpu.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_tr-pattern.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_translate.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_runtime-trace.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_mem-interface.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_translator_macro-helper.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_sbt_segment.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_sbt_aot.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_sbt_file_ctx.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_sbt_aot_link_seg.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_sbt_aot_merge.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_sbt_aot_recover_tb.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_sbt_aot_lib.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_sbt_aot_page.c.o libqemu-i386-linux-user.fa.p/target_i386_latx_sbt_aot_smc.c.o libqemu-i386-linux-user.fa.p/trace_control-target.c.o libqemu-i386-linux-user.fa.p/cpu.c.o libqemu-i386-linux-user.fa.p/disas.c.o libqemu-i386-linux-user.fa.p/gdbstub.c.o libqemu-i386-linux-user.fa.p/tcg_optimize.c.o libqemu-i386-linux-user.fa.p/tcg_tcg-common.c.o libqemu-i386-linux-user.fa.p/tcg_tcg-op-gvec.c.o libqemu-i386-linux-user.fa.p/tcg_tcg-op-vec.c.o libqemu-i386-linux-user.fa.p/tcg_tcg-op.c.o libqemu-i386-linux-user.fa.p/tcg_tcg.c.o libqemu-i386-linux-user.fa.p/page-vary.c.o libqemu-i386-linux-user.fa.p/fpu_softfloat.c.o libqemu-i386-linux-user.fa.p/accel_accel-common.c.o libqemu-i386-linux-user.fa.p/accel_tcg_tcg-all.c.o libqemu-i386-linux-user.fa.p/accel_tcg_cpu-exec-common.c.o libqemu-i386-linux-user.fa.p/accel_tcg_cpu-exec.c.o libqemu-i386-linux-user.fa.p/accel_tcg_tcg-runtime-gvec.c.o libqemu-i386-linux-user.fa.p/accel_tcg_tcg-runtime.c.o libqemu-i386-linux-user.fa.p/accel_tcg_translate-all.c.o libqemu-i386-linux-user.fa.p/accel_tcg_translator.c.o libqemu-i386-linux-user.fa.p/accel_tcg_user-exec.c.o libqemu-i386-linux-user.fa.p/accel_tcg_user-exec-stub.c.o libqemu-i386-linux-user.fa.p/accel_stubs_hax-stub.c.o libqemu-i386-linux-user.fa.p/accel_stubs_xen-stub.c.o libqemu-i386-linux-user.fa.p/accel_stubs_kvm-stub.c.o libqemu-i386-linux-user.fa.p/linux-user_elfload-pagesize.c.o libqemu-i386-linux-user.fa.p/linux-user_elfload.c.o libqemu-i386-linux-user.fa.p/linux-user_exit.c.o libqemu-i386-linux-user.fa.p/linux-user_fd-trans.c.o libqemu-i386-linux-user.fa.p/linux-user_linuxload.c.o libqemu-i386-linux-user.fa.p/linux-user_main.c.o libqemu-i386-linux-user.fa.p/linux-user_mmap.c.o libqemu-i386-linux-user.fa.p/linux-user_safe-syscall.S.o libqemu-i386-linux-user.fa.p/linux-user_signal.c.o libqemu-i386-linux-user.fa.p/linux-user_strace.c.o libqemu-i386-linux-user.fa.p/linux-user_syscall.c.o libqemu-i386-linux-user.fa.p/linux-user_uaccess.c.o libqemu-i386-linux-user.fa.p/linux-user_uname.c.o libqemu-i386-linux-user.fa.p/linux-user_vm86.c.o libqemu-i386-linux-user.fa.p/thunk.c.o libqemu-i386-linux-user.fa.p/meson-generated_.._trace_generated-helpers.c.o -Llib/clang/22 -L/usr/lib/gcc/loongarch64-linux-gnu/14 -L/usr/lib/gcc/loongarch64-linux-gnu/14/../../../../lib64 -L/lib/loongarch64-linux-gnu -L/lib/../lib64 -L/usr/lib/loongarch64-linux-gnu -L/usr/lib64 -L/lib -L/usr/lib -Wl,--as-needed -Wl,--no-undefined -pie -Wl,--whole-archive libhwcore.fa libqom.fa -Wl,--no-whole-archive -Wl,-z,relro -Wl,-z,now -Wl,--start-group -lcrypto -lz -Wl,--export-dynamic -fuse-ld=bfd -T/opt/lat/latx-new.lds -fstack-protector-strong target/i386/latx/liblazydis.a target/i386/latx/libcapstone_git.a libqemuutil.a libhwcore.fa libqom.fa -L/opt/lat/target/i386/latx/exlib -lZydis -lZycore -lrt -pthread -lm -lgthread-2.0 -lglib-2.0 -lstdc++ -Wl,--end-group
/usr/bin/ld.bfd: libqemu-i386-linux-user.fa.p/target_i386_cpu.c.o: in function `x86_cpu_expand_features':
/opt/lat/build32-dbg/../target/i386/cpu.c:6582:(.text+0x48b4): undefined reference to `kvm_arch_get_supported_cpuid'
/usr/bin/ld.bfd: /opt/lat/build32-dbg/../target/i386/cpu.c:6584:(.text+0x48d0): undefined reference to `kvm_arch_get_supported_cpuid'
/usr/bin/ld.bfd: /opt/lat/build32-dbg/../target/i386/cpu.c:6581:(.text+0x48ec): undefined reference to `kvm_arch_get_supported_cpuid'
/usr/bin/ld.bfd: /opt/lat/build32-dbg/../target/i386/cpu.c:6577:(.text+0x4904): undefined reference to `kvm_arch_get_supported_cpuid'
/usr/bin/ld.bfd: /opt/lat/build32-dbg/../target/i386/cpu.c:6588:(.text+0x491c): undefined reference to `kvm_arch_get_supported_cpuid'
c++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
  • ./latxbuild/build64-dbg.sh
[469/469] Linking target latx-x86_64
FAILED: latx-x86_64 
c++  -o latx-x86_64 libcommon.fa.p/cpus-common.c.o libcommon.fa.p/page-vary-common.c.o libcommon.fa.p/disas_i386.c.o libcommon.fa.p/disas_loongarch.c.o libcommon.fa.p/hw_core_cpu.c.o libcommon.fa.p/accel_accel-user.c.o libqemu-x86_64-linux-user.fa.p/linux-user_x86_64_signal.c.o libqemu-x86_64-linux-user.fa.p/linux-user_x86_64_cpu_loop.c.o libqemu-x86_64-linux-user.fa.p/target_i386_cpu.c.o libqemu-x86_64-linux-user.fa.p/target_i386_gdbstub.c.o libqemu-x86_64-linux-user.fa.p/target_i386_helper.c.o libqemu-x86_64-linux-user.fa.p/target_i386_xsave_helper.c.o libqemu-x86_64-linux-user.fa.p/target_i386_cpu-dump.c.o libqemu-x86_64-linux-user.fa.p/target_i386_sev-stub.c.o libqemu-x86_64-linux-user.fa.p/target_i386_tcg_bpt_helper.c.o libqemu-x86_64-linux-user.fa.p/target_i386_tcg_cc_helper.c.o libqemu-x86_64-linux-user.fa.p/target_i386_tcg_excp_helper.c.o libqemu-x86_64-linux-user.fa.p/target_i386_tcg_fpu_helper.c.o libqemu-x86_64-linux-user.fa.p/target_i386_tcg_int_helper.c.o libqemu-x86_64-linux-user.fa.p/target_i386_tcg_mem_helper.c.o libqemu-x86_64-linux-user.fa.p/target_i386_tcg_misc_helper.c.o libqemu-x86_64-linux-user.fa.p/target_i386_tcg_mpx_helper.c.o libqemu-x86_64-linux-user.fa.p/target_i386_tcg_seg_helper.c.o libqemu-x86_64-linux-user.fa.p/target_i386_tcg_smm_helper.c.o libqemu-x86_64-linux-user.fa.p/target_i386_tcg_svm_helper.c.o libqemu-x86_64-linux-user.fa.p/target_i386_tcg_tcg-cpu.c.o libqemu-x86_64-linux-user.fa.p/target_i386_tcg_translate.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_error.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_mem.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_latx-config.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_latx-options.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_latx-perf.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_latx-name-demangling.cpp.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_latx-special-args.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_latx-signal.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_latx-disassemble-trace_latx-disassemble-trace.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_ir1_ir1.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_ir2_ir2.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_ir2_ir2-assemble.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_ir2_ir2-relocate.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_ir2_la-append.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_ir2_la-decode.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_ir2_la-disasm.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_optimization_tu.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_optimization_jrra.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_optimization_flag-lbt.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_optimization_flag-reduction.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_optimization_insts-pattern.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_optimization_ir1-optimization.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_optimization_ir2-optimization.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_optimization_tunnel-lib.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_optimization_syscall-tunnel.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_optimization_profile.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_optimization_ts.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_optimization_imm-cache.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_optimization_hbr.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_reg-alloc.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-arith.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-eflag.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-eflag-process.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-farith.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-fcmovcc.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-fctrl.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-fldst.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-jcc.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-logic.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-misc.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-mov.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-opnd-process.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-setcc.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-btx.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-lock.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-lock-fast-atomic.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-simd.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-vpaes.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-simd-cmp.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-simd-cvt.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-simd-mov.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-simd-shift.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-simd-fma.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-simd-sha.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-simd-f16c.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-avx.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-avx-cmp.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-avx-cvt.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-avx-mov.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-avx-shift.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-bmi.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-adx.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-softfpu.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_tr-pattern.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_translate.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_runtime-trace.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_mem-interface.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_translator_macro-helper.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_sbt_segment.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_sbt_aot.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_sbt_file_ctx.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_sbt_aot_link_seg.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_sbt_aot_merge.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_sbt_aot_recover_tb.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_sbt_aot_lib.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_sbt_aot_page.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_sbt_aot_smc.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedvulkan.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibc.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibvadrm.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibva.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibvax11.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbxkb.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcb.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbdri2.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbdri3.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbglx.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbimage.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbkeysyms.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbrandr.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbshape.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbshm.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbxfixes.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbxtest.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbcursor.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbicccm.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbpresent.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbrender.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbrenderutil.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbsync.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbutil.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbxinerama.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcbxinput.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibx11xcb.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedxkbcommon.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedxkbcommonx11.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxpm.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxmu.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxdamage.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcomposite.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxrender.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxft.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxtst.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxt.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxss.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxrandr.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxi.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedxinerama.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxcursor.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibx11.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxext.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibgl.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibglu.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibglx.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxxf86vm.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxau.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxdmcp.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedxshmfence.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibxfixes.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappedlibegl.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_box64context.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_librarian.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_dictionnary.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_symbols.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_library.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_pathcoll.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_fileutils.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_elfparser.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_elfloader.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_elfload_dump.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_mallochook.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_bridge.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrapperdebug.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrapper.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_myalign.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_obstack.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_globalsymbols.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_callback.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_context_wrappertbbridge.c.o libqemu-x86_64-linux-user.fa.p/target_i386_latx_wrapper_wrapper.c.o libqemu-x86_64-linux-user.fa.p/trace_control-target.c.o libqemu-x86_64-linux-user.fa.p/cpu.c.o libqemu-x86_64-linux-user.fa.p/disas.c.o libqemu-x86_64-linux-user.fa.p/gdbstub.c.o libqemu-x86_64-linux-user.fa.p/tcg_optimize.c.o libqemu-x86_64-linux-user.fa.p/tcg_tcg-common.c.o libqemu-x86_64-linux-user.fa.p/tcg_tcg-op-gvec.c.o libqemu-x86_64-linux-user.fa.p/tcg_tcg-op-vec.c.o libqemu-x86_64-linux-user.fa.p/tcg_tcg-op.c.o libqemu-x86_64-linux-user.fa.p/tcg_tcg.c.o libqemu-x86_64-linux-user.fa.p/page-vary.c.o libqemu-x86_64-linux-user.fa.p/fpu_softfloat.c.o libqemu-x86_64-linux-user.fa.p/accel_accel-common.c.o libqemu-x86_64-linux-user.fa.p/accel_tcg_tcg-all.c.o libqemu-x86_64-linux-user.fa.p/accel_tcg_cpu-exec-common.c.o libqemu-x86_64-linux-user.fa.p/accel_tcg_cpu-exec.c.o libqemu-x86_64-linux-user.fa.p/accel_tcg_tcg-runtime-gvec.c.o libqemu-x86_64-linux-user.fa.p/accel_tcg_tcg-runtime.c.o libqemu-x86_64-linux-user.fa.p/accel_tcg_translate-all.c.o libqemu-x86_64-linux-user.fa.p/accel_tcg_translator.c.o libqemu-x86_64-linux-user.fa.p/accel_tcg_user-exec.c.o libqemu-x86_64-linux-user.fa.p/accel_tcg_user-exec-stub.c.o libqemu-x86_64-linux-user.fa.p/accel_stubs_hax-stub.c.o libqemu-x86_64-linux-user.fa.p/accel_stubs_xen-stub.c.o libqemu-x86_64-linux-user.fa.p/accel_stubs_kvm-stub.c.o libqemu-x86_64-linux-user.fa.p/linux-user_elfload-pagesize.c.o libqemu-x86_64-linux-user.fa.p/linux-user_elfload.c.o libqemu-x86_64-linux-user.fa.p/linux-user_exit.c.o libqemu-x86_64-linux-user.fa.p/linux-user_fd-trans.c.o libqemu-x86_64-linux-user.fa.p/linux-user_linuxload.c.o libqemu-x86_64-linux-user.fa.p/linux-user_main.c.o libqemu-x86_64-linux-user.fa.p/linux-user_mmap.c.o libqemu-x86_64-linux-user.fa.p/linux-user_safe-syscall.S.o libqemu-x86_64-linux-user.fa.p/linux-user_signal.c.o libqemu-x86_64-linux-user.fa.p/linux-user_strace.c.o libqemu-x86_64-linux-user.fa.p/linux-user_syscall.c.o libqemu-x86_64-linux-user.fa.p/linux-user_uaccess.c.o libqemu-x86_64-linux-user.fa.p/linux-user_uname.c.o libqemu-x86_64-linux-user.fa.p/linux-user_vm86.c.o libqemu-x86_64-linux-user.fa.p/thunk.c.o libqemu-x86_64-linux-user.fa.p/meson-generated_.._trace_generated-helpers.c.o -Llib/clang/22 -L/usr/lib/gcc/loongarch64-linux-gnu/14 -L/usr/lib/gcc/loongarch64-linux-gnu/14/../../../../lib64 -L/lib/loongarch64-linux-gnu -L/lib/../lib64 -L/usr/lib/loongarch64-linux-gnu -L/usr/lib64 -L/lib -L/usr/lib -Wl,--as-needed -Wl,--no-undefined -pie -Wl,--whole-archive libhwcore.fa libqom.fa -Wl,--no-whole-archive -Wl,-z,relro -Wl,-z,now -Wl,--start-group -lcrypto -lz -Wl,--export-dynamic -fuse-ld=bfd -T/opt/lat/latx-x86_64-new.lds -ldl -fstack-protector-strong target/i386/latx/liblazydis.a target/i386/latx/libcapstone_git.a libqemuutil.a libhwcore.fa libqom.fa -L/opt/lat/target/i386/latx/exlib -lZydis -lZycore -lrt -pthread -lm -lgthread-2.0 -lglib-2.0 -lstdc++ -Wl,--end-group
/usr/bin/ld.bfd: libqemu-x86_64-linux-user.fa.p/target_i386_cpu.c.o: in function `x86_cpu_expand_features':
/opt/lat/build64-dbg/../target/i386/cpu.c:6582:(.text+0x48f8): undefined reference to `kvm_arch_get_supported_cpuid'
/usr/bin/ld.bfd: /opt/lat/build64-dbg/../target/i386/cpu.c:6584:(.text+0x4914): undefined reference to `kvm_arch_get_supported_cpuid'
/usr/bin/ld.bfd: /opt/lat/build64-dbg/../target/i386/cpu.c:6581:(.text+0x4930): undefined reference to `kvm_arch_get_supported_cpuid'
/usr/bin/ld.bfd: /opt/lat/build64-dbg/../target/i386/cpu.c:6577:(.text+0x4948): undefined reference to `kvm_arch_get_supported_cpuid'
/usr/bin/ld.bfd: /opt/lat/build64-dbg/../target/i386/cpu.c:6588:(.text+0x4960): undefined reference to `kvm_arch_get_supported_cpuid'
c++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant