Fixed Win64 warnings.
committer: mfx <mfx> 1088804606 +0000
This commit is contained in:
+6
-7
@@ -338,7 +338,7 @@ unsigned optimize_relocs(upx_byte *b, const unsigned size,
|
|||||||
set_le16 (crel_save+2,seg_high);
|
set_le16 (crel_save+2,seg_high);
|
||||||
|
|
||||||
//OutputFile::dump("x.rel", crel_save, crel - crel_save);
|
//OutputFile::dump("x.rel", crel_save, crel - crel_save);
|
||||||
return crel - crel_save;
|
return (unsigned) (crel - crel_save);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -605,12 +605,11 @@ void PackExe::unpack(OutputFile *fo)
|
|||||||
{
|
{
|
||||||
relocs -= get_le16(obuf+ph.u_len-2);
|
relocs -= get_le16(obuf+ph.u_len-2);
|
||||||
ph.u_len -= 2;
|
ph.u_len -= 2;
|
||||||
upx_byte *p;
|
|
||||||
|
|
||||||
wrkmem.alloc(4*MAXRELOCS);
|
wrkmem.alloc(4*MAXRELOCS);
|
||||||
unsigned es = 0,ones = get_le16(relocs);
|
unsigned es = 0, ones = get_le16(relocs);
|
||||||
unsigned seghi = get_le16(relocs+2);
|
const unsigned seghi = get_le16(relocs+2);
|
||||||
p = relocs + 4;
|
const upx_byte *p = relocs + 4;
|
||||||
|
|
||||||
while (ones)
|
while (ones)
|
||||||
{
|
{
|
||||||
@@ -628,10 +627,10 @@ void PackExe::unpack(OutputFile *fo)
|
|||||||
dorel = true;
|
dorel = true;
|
||||||
if (*p == 0)
|
if (*p == 0)
|
||||||
{
|
{
|
||||||
upx_byte *q;
|
const upx_byte *q;
|
||||||
for (q = obuf+es*16+di; !(*q == 0x9a && get_le16(q+3) <= seghi); q++)
|
for (q = obuf+es*16+di; !(*q == 0x9a && get_le16(q+3) <= seghi); q++)
|
||||||
;
|
;
|
||||||
di = q - (obuf+es*16) + 3;
|
di = ptr_diff(q, obuf+es*16) + 3;
|
||||||
}
|
}
|
||||||
else if (*p == 1)
|
else if (*p == 1)
|
||||||
{
|
{
|
||||||
|
|||||||
+27
-15
@@ -66,6 +66,18 @@ static const
|
|||||||
# define strcpy(a,b) strcpy((char *)(a),(const char *)(b))
|
# define strcpy(a,b) strcpy((char *)(a),(const char *)(b))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
static unsigned my_strlen(const char *s)
|
||||||
|
{
|
||||||
|
size_t l = strlen((const char*)s); assert((unsigned) l == l); return (unsigned) l;
|
||||||
|
}
|
||||||
|
static unsigned my_strlen(const unsigned char *s)
|
||||||
|
{
|
||||||
|
size_t l = strlen((const char*)s); assert((unsigned) l == l); return (unsigned) l;
|
||||||
|
}
|
||||||
|
#define strlen my_strlen
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// Unicode string compare
|
// Unicode string compare
|
||||||
static bool ustrsame(const void *s1, const void *s2)
|
static bool ustrsame(const void *s1, const void *s2)
|
||||||
@@ -728,11 +740,11 @@ unsigned PackW32Pe::processImports() // pass 1
|
|||||||
}
|
}
|
||||||
ppi++;
|
ppi++;
|
||||||
|
|
||||||
unsigned esize = ptr_diff(tarr,idlls[ic]->lookupt);
|
unsigned esize = ptr_diff((char *)tarr, (char *)idlls[ic]->lookupt);
|
||||||
lookups.add(idlls[ic]->lookupt,esize);
|
lookups.add(idlls[ic]->lookupt,esize);
|
||||||
if (ptr_diff(ibuf + idlls[ic]->iat,idlls[ic]->lookupt))
|
if (ptr_diff(ibuf + idlls[ic]->iat, (char *)idlls[ic]->lookupt))
|
||||||
{
|
{
|
||||||
memcpy(ibuf + idlls[ic]->iat,idlls[ic]->lookupt,esize);
|
memcpy(ibuf + idlls[ic]->iat, idlls[ic]->lookupt, esize);
|
||||||
iats.add(idlls[ic]->iat,esize);
|
iats.add(idlls[ic]->iat,esize);
|
||||||
}
|
}
|
||||||
names.add(idlls[ic]->name,strlen(idlls[ic]->name) + 1 + 1);
|
names.add(idlls[ic]->name,strlen(idlls[ic]->name) + 1 + 1);
|
||||||
@@ -908,26 +920,26 @@ void Export::convert(unsigned eoffs,unsigned esize)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Export::build(char *newbase,unsigned newoffs)
|
void Export::build(char *newbase, unsigned newoffs)
|
||||||
{
|
{
|
||||||
char *functionp = newbase + sizeof(edir);
|
char * const functionp = newbase + sizeof(edir);
|
||||||
char *namep = functionp + 4 * edir.functions;
|
char * const namep = functionp + 4 * edir.functions;
|
||||||
char *ordinalp = namep + 4 * edir.names;
|
char * const ordinalp = namep + 4 * edir.names;
|
||||||
char *enamep = ordinalp + 2 * edir.names;
|
char * const enamep = ordinalp + 2 * edir.names;
|
||||||
char *exports = enamep + strlen(ename) + 1;
|
char * exports = enamep + strlen(ename) + 1;
|
||||||
|
|
||||||
edir.addrtable = newoffs + functionp - newbase;
|
edir.addrtable = newoffs + ptr_diff(functionp, newbase);
|
||||||
edir.ordinaltable = newoffs + ordinalp - newbase;
|
edir.ordinaltable = newoffs + ptr_diff(ordinalp, newbase);
|
||||||
memcpy(ordinalp,ordinals,2 * edir.names);
|
memcpy(ordinalp,ordinals,2 * edir.names);
|
||||||
|
|
||||||
edir.name = newoffs + enamep - newbase;
|
edir.name = newoffs + ptr_diff(enamep, newbase);
|
||||||
strcpy(enamep,ename);
|
strcpy(enamep,ename);
|
||||||
edir.nameptrtable = newoffs + namep - newbase;
|
edir.nameptrtable = newoffs + ptr_diff(namep, newbase);
|
||||||
unsigned ic;
|
unsigned ic;
|
||||||
for (ic = 0; ic < edir.names; ic++)
|
for (ic = 0; ic < edir.names; ic++)
|
||||||
{
|
{
|
||||||
strcpy(exports,names[ic]);
|
strcpy(exports,names[ic]);
|
||||||
set_le32(namep + 4 * ic,newoffs + exports - newbase);
|
set_le32(namep + 4 * ic,newoffs + ptr_diff(exports, newbase));
|
||||||
exports += strlen(exports) + 1;
|
exports += strlen(exports) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -936,7 +948,7 @@ void Export::build(char *newbase,unsigned newoffs)
|
|||||||
if (names[edir.names + ic])
|
if (names[edir.names + ic])
|
||||||
{
|
{
|
||||||
strcpy(exports,names[edir.names + ic]);
|
strcpy(exports,names[edir.names + ic]);
|
||||||
set_le32(functionp + 4 * ic,newoffs + exports - newbase);
|
set_le32(functionp + 4 * ic,newoffs + ptr_diff(exports, newbase));
|
||||||
exports += strlen(exports) + 1;
|
exports += strlen(exports) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-6
@@ -166,7 +166,7 @@ void PackWcle::encodeEntryTable()
|
|||||||
//if (Opt_debug) printf("%d entries encoded.\n",n);
|
//if (Opt_debug) printf("%d entries encoded.\n",n);
|
||||||
UNUSED(n);
|
UNUSED(n);
|
||||||
|
|
||||||
soentries = p - ientries + 1;
|
soentries = ptr_diff(p, ientries) + 1;
|
||||||
oentries = ientries;
|
oentries = ientries;
|
||||||
ientries = NULL;
|
ientries = NULL;
|
||||||
}
|
}
|
||||||
@@ -402,7 +402,7 @@ void PackWcle::preprocessFixups()
|
|||||||
set_le32(fix,0xFFFFFFFFUL);
|
set_le32(fix,0xFFFFFFFFUL);
|
||||||
fix += 4;
|
fix += 4;
|
||||||
|
|
||||||
sofixups = fix - ifixups;
|
sofixups = ptr_diff(fix, ifixups);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -590,7 +590,7 @@ void PackWcle::decodeFixups()
|
|||||||
while (*selfrel_fixups != 0xC3)
|
while (*selfrel_fixups != 0xC3)
|
||||||
selfrel_fixups += 9;
|
selfrel_fixups += 9;
|
||||||
selfrel_fixups++;
|
selfrel_fixups++;
|
||||||
unsigned selectlen = (selfrel_fixups - selector_fixups)/9;
|
unsigned selectlen = ptr_diff(selfrel_fixups, selector_fixups)/9;
|
||||||
|
|
||||||
ofixups = new upx_byte[fixupn*9+1000+selectlen*5];
|
ofixups = new upx_byte[fixupn*9+1000+selectlen*5];
|
||||||
upx_bytep fp = ofixups;
|
upx_bytep fp = ofixups;
|
||||||
@@ -656,11 +656,11 @@ void PackWcle::decodeFixups()
|
|||||||
fp += fp[1] ? 9 : 7;
|
fp += fp[1] ? 9 : 7;
|
||||||
jc += 2;
|
jc += 2;
|
||||||
}
|
}
|
||||||
set_le32(ofpage_table+ic,fp-ofixups);
|
set_le32(ofpage_table+ic,ptr_diff(fp,ofixups));
|
||||||
}
|
}
|
||||||
for (ic=0; ic < FIXUP_EXTRA; ic++)
|
for (ic=0; ic < FIXUP_EXTRA; ic++)
|
||||||
*fp++ = 0;
|
*fp++ = 0;
|
||||||
sofixups = fp-ofixups;
|
sofixups = ptr_diff(fp, ofixups);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -748,7 +748,7 @@ void PackWcle::decodeEntryTable()
|
|||||||
|
|
||||||
//if (Opt_debug) printf("\n%d entries decoded.\n",n);
|
//if (Opt_debug) printf("\n%d entries decoded.\n",n);
|
||||||
|
|
||||||
soentries = p - ientries + 1;
|
soentries = ptr_diff(p, ientries) + 1;
|
||||||
oentries = ientries;
|
oentries = ientries;
|
||||||
ientries = NULL;
|
ientries = NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user