From 2170797544daed58fd722880043a5b425469d655 Mon Sep 17 00:00:00 2001 From: kub Date: Tue, 29 Dec 2020 11:13:45 +0100 Subject: [PATCH] fixes for gcc warnings wrt 64 bit platforms --- cpu/drc/emit_mips.c | 2 +- pico/state.c | 6 ++++-- platform/common/config_file.c | 10 ++++++---- platform/common/host_dasm.c | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/cpu/drc/emit_mips.c b/cpu/drc/emit_mips.c index 41544ca1..e98073d7 100644 --- a/cpu/drc/emit_mips.c +++ b/cpu/drc/emit_mips.c @@ -1537,7 +1537,7 @@ static int emith_cond_check(int cond, int *r) #define emith_abijump_reg_c(cond, r) \ emith_abijump_reg(r) #define emith_abicall(target) do { \ - emith_move_r_imm(CR, target); \ + emith_move_r_ptr_imm(CR, target); \ emith_branch(MIPS_JALR(LR, CR)); \ } while (0) #define emith_abicall_cond(cond, target) \ diff --git a/pico/state.c b/pico/state.c index 60cbdcca..d56bd50a 100644 --- a/pico/state.c +++ b/pico/state.c @@ -205,7 +205,8 @@ static int write_chunk(chunk_name_e name, int len, void *data, void *file) #define CHECKED_WRITE(name,len,data) { \ if (PicoStateProgressCB && name < CHUNK_DEFAULT_COUNT && chunk_names[name]) { \ - strncpy(sbuff + 9, chunk_names[name], sizeof(sbuff) - 9); \ + strncpy(sbuff + 9, chunk_names[name], sizeof(sbuff)-1 - 9); \ + sbuff[sizeof(sbuff)-1] = '\0'; \ PicoStateProgressCB(sbuff); \ } \ if (data == buf2 && len > CHUNK_LIMIT_W) \ @@ -216,7 +217,8 @@ static int write_chunk(chunk_name_e name, int len, void *data, void *file) #define CHECKED_WRITE_BUFF(name,buff) { \ if (PicoStateProgressCB && name < CHUNK_DEFAULT_COUNT && chunk_names[name]) { \ - strncpy(sbuff + 9, chunk_names[name], sizeof(sbuff) - 9); \ + strncpy(sbuff + 9, chunk_names[name], sizeof(sbuff)-1 - 9); \ + sbuff[sizeof(sbuff)-1] = '\0'; \ PicoStateProgressCB(sbuff); \ } \ if (!write_chunk(name, sizeof(buff), &buff, file)) \ diff --git a/platform/common/config_file.c b/platform/common/config_file.c index ae388438..e69c3a28 100644 --- a/platform/common/config_file.c +++ b/platform/common/config_file.c @@ -124,13 +124,15 @@ int config_write(const char *fname) const char **names = (const char **)me->data; for (t = 0; names[t] != NULL; t++) { if (*(int *)me->var == t) { - strncpy(line, names[t], sizeof(line)); + strncpy(line, names[t], sizeof(line)-1); + line[sizeof(line)-1] = '\0'; goto write_line; } } } else if (me->generate_name != NULL) { - strncpy(line, me->generate_name(0, &dummy), sizeof(line)); + strncpy(line, me->generate_name(0, &dummy), sizeof(line)-1); + line[sizeof(line)-1] = '\0'; goto write_line; } else @@ -238,9 +240,9 @@ int config_readlrom(const char *fname) tmp++; mystrip(tmp); - len = sizeof(rom_fname_loaded); + len = sizeof(rom_fname_loaded)-1; strncpy(rom_fname_loaded, tmp, len); - rom_fname_loaded[len-1] = 0; + rom_fname_loaded[len] = 0; ret = 0; break; } diff --git a/platform/common/host_dasm.c b/platform/common/host_dasm.c index b3b504e8..03a28946 100644 --- a/platform/common/host_dasm.c +++ b/platform/common/host_dasm.c @@ -50,7 +50,7 @@ void host_dasm(void *addr, int len) insn = *(unsigned long *)addr; printf(" %08lx %08lx ", (long)addr, insn); - if(disasm((unsigned)addr, insn, buf, sizeof(buf), &symaddr)) + if(disasm((uintptr_t)addr, insn, buf, sizeof(buf), &symaddr)) { if (symaddr) name = lookup_name((void *)symaddr); -- 2.39.2