You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
4.3 KiB
149 lines
4.3 KiB
Subject: [PATCH] fix declarations with type mismatches
|
|
|
|
Type mismatches between declarations prevent the compile from using LTO
|
|
|
|
Bug: https://bugs.gentoo.org/854534
|
|
Upstream: https://sourceforge.net/p/softgun/patches/5/
|
|
|
|
# Pascal Jäger <pascal.jaeger@leimstift.de> (2023-09-21)
|
|
|
|
--- a/m16c/idecode_m16c.c
|
|
+++ b/m16c/idecode_m16c.c
|
|
@@ -9,7 +9,7 @@
|
|
#include "sglib.h"
|
|
|
|
M16C_InstructionProc **iProcTab;
|
|
-M16C_Instruction **iTab;
|
|
+M16C_Instruction **iTabM16C;
|
|
|
|
static M16C_Instruction instrlist[] = {
|
|
{0xfef0,0x76f0,"abs.size_dst",2 ,m16c_abs_size_dst},
|
|
@@ -308,7 +308,7 @@ M16C_IDecoderNew()
|
|
int i,j;
|
|
int onecount1,onecount2;
|
|
iProcTab=(M16C_InstructionProc**)sg_calloc(0x10000*sizeof(M16C_InstructionProc*));
|
|
- iTab=sg_calloc(0x10000*sizeof(M16C_Instruction*));
|
|
+ iTabM16C=sg_calloc(0x10000*sizeof(M16C_Instruction*));
|
|
fprintf(stderr,"Allocated M16C Instruction decoder table\n");
|
|
for(j=0;instrlist[j].proc;j++) {
|
|
M16C_Instruction *instr = &instrlist[j];
|
|
@@ -327,8 +327,8 @@ M16C_IDecoderNew()
|
|
}
|
|
#endif
|
|
if((i & instr->mask) == instr->icode) {
|
|
- if(iTab[i]) {
|
|
- M16C_Instruction *instr2 = iTab[i];
|
|
+ if(iTabM16C[i]) {
|
|
+ M16C_Instruction *instr2 = iTabM16C[i];
|
|
specmask1 = instr->mask;
|
|
specmask2 = instr2->mask;
|
|
onecount1 = SGLib_OnecountU32(instr->mask);
|
|
@@ -336,18 +336,18 @@ M16C_IDecoderNew()
|
|
fprintf(stderr,"Collission %s, %s\n",instr->name,instr2->name);
|
|
#if 0
|
|
if(instr->len > instr2->len) {
|
|
- iTab[i] = instr;
|
|
+ iTabM16C[i] = instr;
|
|
iProcTab[i] = instr->proc;
|
|
} else if(instr2->len > instr->len) {
|
|
- iTab[i] = instr2;
|
|
+ iTabM16C[i] = instr2;
|
|
iProcTab[i] = instr2->proc;
|
|
} else
|
|
#endif
|
|
if(onecount1 > onecount2) {
|
|
- iTab[i] = instr;
|
|
+ iTabM16C[i] = instr;
|
|
iProcTab[i] = instr->proc;
|
|
} else if(onecount2 > onecount1) {
|
|
- iTab[i] = instr2;
|
|
+ iTabM16C[i] = instr2;
|
|
iProcTab[i] = instr2->proc;
|
|
} else {
|
|
fprintf(stderr,"Can not decide %s, %s\n",instr->name,instr2->name);
|
|
@@ -360,10 +360,10 @@ M16C_IDecoderNew()
|
|
specmask2 |= 0xff00;
|
|
}
|
|
if((specmask2 & specmask1) == specmask1) {
|
|
- iTab[i] = instr2;
|
|
+ iTabM16C[i] = instr2;
|
|
iProcTab[i] = instr2->proc;
|
|
} else if((specmask2 & specmask1) == specmask2) {
|
|
- iTab[i] = instr;
|
|
+ iTabM16C[i] = instr;
|
|
iProcTab[i] = instr->proc;
|
|
} else {
|
|
fprintf(stdout,"%04x: no instruction is more specific %s %s %04x %04x %d %d\n",i,instr->name,instr2->name,instr->icode,instr2->icode,instr->len,instr2->len);
|
|
@@ -371,13 +371,13 @@ M16C_IDecoderNew()
|
|
}
|
|
#endif
|
|
} else {
|
|
- iTab[i] = instr;
|
|
+ iTabM16C[i] = instr;
|
|
iProcTab[i] = instr->proc;
|
|
}
|
|
}
|
|
}
|
|
- if(iTab[i] == NULL) {
|
|
- iTab[i] = &undefined_instr;
|
|
+ if(iTabM16C[i] == NULL) {
|
|
+ iTabM16C[i] = &undefined_instr;
|
|
iProcTab[i] = (&undefined_instr)->proc;
|
|
}
|
|
}
|
|
--- a/m16c/idecode_m16c.h
|
|
+++ b/m16c/idecode_m16c.h
|
|
@@ -11,14 +11,14 @@ typedef struct M16C_Instruction {
|
|
} M16C_Instruction;
|
|
|
|
extern M16C_InstructionProc **iProcTab;
|
|
-extern M16C_Instruction **iTab;
|
|
+extern M16C_Instruction **iTabM16C;
|
|
|
|
void M16C_IDecoderNew(void);
|
|
|
|
static inline M16C_Instruction *
|
|
M16C_InstructionFind(uint16_t icode)
|
|
{
|
|
- return iTab[icode];
|
|
+ return iTabM16C[icode];
|
|
}
|
|
static inline M16C_InstructionProc *
|
|
M16C_InstructionProcFind(uint16_t icode)
|
|
--- a/m16c/instructions_m16c.h
|
|
+++ b/m16c/instructions_m16c.h
|
|
@@ -160,7 +160,7 @@ void m16c_smovb_size(void);
|
|
void m16c_smovf_size(void);
|
|
void m16c_sstr_size(void);
|
|
void m16c_stc_srcdst(void);
|
|
-void m16c_stc_pcdst(void);
|
|
+void m16c_stc_pcdst(uint16_t icode);
|
|
void m16c_stctx_abs16abs20(void);
|
|
void m16c_ste_size_srcabs20(void);
|
|
void m16c_ste_size_srcdsp20(void);
|
|
--- a/ppc/mmu_ppc.c
|
|
+++ b/ppc/mmu_ppc.c
|
|
@@ -587,7 +587,7 @@ PPCMMU_Read8(uint32_t va) {
|
|
}
|
|
|
|
void
|
|
-PPCMMU_Write64(uint32_t value,uint32_t va) {
|
|
+PPCMMU_Write64(uint64_t value,uint32_t va) {
|
|
uint32_t pa=translate_data(va);
|
|
Bus_Write64(value,pa);
|
|
}
|
|
--- a/printer/decompress.c
|
|
+++ b/printer/decompress.c
|
|
@@ -55,7 +55,7 @@ enum
|
|
eeCachedColor = 0x60
|
|
};
|
|
|
|
-inline uint32_t get3pixel (uint8_t* src)
|
|
+static inline uint32_t get3pixel (uint8_t* src)
|
|
{
|
|
return (src[0] << 16) | (src[1] << 8) | (src[2]);
|
|
}
|
|
--
|
|
2.41.0
|
|
|