On 9/13/24 18:43, Bibo Mao wrote:
Variable env->cf[i] is defined as bool type, it cannot be used with left
shifting operation.

Not true; it promotes to 'int'. But that isn't wide enough for the value that you're trying to construct.

There is existing api read_fcc(), it can be used when
dumping fp registers into coredump note segment.

Resolves: Coverity CID 1561133
Signed-off-by: Bibo Mao <maob...@loongson.cn>

Reviewed-by: Richard Henderson <richard.hender...@linaro.org>

r~

---
  target/loongarch/arch_dump.c | 6 +-----
  1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/target/loongarch/arch_dump.c b/target/loongarch/arch_dump.c
index 4986db970e..d9e1120333 100644
--- a/target/loongarch/arch_dump.c
+++ b/target/loongarch/arch_dump.c
@@ -97,11 +97,7 @@ static int 
loongarch_write_elf64_fprpreg(WriteCoreDumpFunction f,
loongarch_note_init(&note, s, "CORE", 5, NT_PRFPREG, sizeof(note.fpu));
      note.fpu.fcsr = cpu_to_dump64(s, env->fcsr0);
-
-    for (i = 0; i < 8; i++) {
-        note.fpu.fcc |= env->cf[i] << (8 * i);
-    }
-    note.fpu.fcc = cpu_to_dump64(s, note.fpu.fcc);
+    note.fpu.fcc = cpu_to_dump64(s, read_fcc(env));
for (i = 0; i < 32; ++i) {
          note.fpu.fpr[i] = cpu_to_dump64(s, env->fpr[i].vreg.UD[0]);

base-commit: 28ae3179fc52d2e4d870b635c4a412aab99759e7


Reply via email to