1
0
mirror of https://github.com/upx/upx synced 2025-09-28 19:06:07 +08:00

Fixed Win64 warnings.

committer: mfx <mfx> 1088804606 +0000
This commit is contained in:
Markus F.X.J. Oberhumer 2004-07-02 21:43:26 +00:00
parent f14d594a1a
commit f412b5e0cd
3 changed files with 39 additions and 28 deletions

View File

@ -338,7 +338,7 @@ unsigned optimize_relocs(upx_byte *b, const unsigned size,
set_le16 (crel_save+2,seg_high);
//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);
ph.u_len -= 2;
upx_byte *p;
wrkmem.alloc(4*MAXRELOCS);
unsigned es = 0,ones = get_le16(relocs);
unsigned seghi = get_le16(relocs+2);
p = relocs + 4;
unsigned es = 0, ones = get_le16(relocs);
const unsigned seghi = get_le16(relocs+2);
const upx_byte *p = relocs + 4;
while (ones)
{
@ -628,10 +627,10 @@ void PackExe::unpack(OutputFile *fo)
dorel = true;
if (*p == 0)
{
upx_byte *q;
const upx_byte *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)
{

View File

@ -66,6 +66,18 @@ static const
# define strcpy(a,b) strcpy((char *)(a),(const char *)(b))
#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
static bool ustrsame(const void *s1, const void *s2)
@ -728,11 +740,11 @@ unsigned PackW32Pe::processImports() // pass 1
}
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);
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);
}
names.add(idlls[ic]->name,strlen(idlls[ic]->name) + 1 + 1);
@ -908,26 +920,26 @@ void Export::convert(unsigned eoffs,unsigned esize)
#endif
}
void Export::build(char *newbase,unsigned newoffs)
void Export::build(char *newbase, unsigned newoffs)
{
char *functionp = newbase + sizeof(edir);
char *namep = functionp + 4 * edir.functions;
char *ordinalp = namep + 4 * edir.names;
char *enamep = ordinalp + 2 * edir.names;
char *exports = enamep + strlen(ename) + 1;
char * const functionp = newbase + sizeof(edir);
char * const namep = functionp + 4 * edir.functions;
char * const ordinalp = namep + 4 * edir.names;
char * const enamep = ordinalp + 2 * edir.names;
char * exports = enamep + strlen(ename) + 1;
edir.addrtable = newoffs + functionp - newbase;
edir.ordinaltable = newoffs + ordinalp - newbase;
edir.addrtable = newoffs + ptr_diff(functionp, newbase);
edir.ordinaltable = newoffs + ptr_diff(ordinalp, newbase);
memcpy(ordinalp,ordinals,2 * edir.names);
edir.name = newoffs + enamep - newbase;
edir.name = newoffs + ptr_diff(enamep, newbase);
strcpy(enamep,ename);
edir.nameptrtable = newoffs + namep - newbase;
edir.nameptrtable = newoffs + ptr_diff(namep, newbase);
unsigned ic;
for (ic = 0; ic < edir.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;
}
@ -936,7 +948,7 @@ void Export::build(char *newbase,unsigned newoffs)
if (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;
}

View File

@ -166,7 +166,7 @@ void PackWcle::encodeEntryTable()
//if (Opt_debug) printf("%d entries encoded.\n",n);
UNUSED(n);
soentries = p - ientries + 1;
soentries = ptr_diff(p, ientries) + 1;
oentries = ientries;
ientries = NULL;
}
@ -402,7 +402,7 @@ void PackWcle::preprocessFixups()
set_le32(fix,0xFFFFFFFFUL);
fix += 4;
sofixups = fix - ifixups;
sofixups = ptr_diff(fix, ifixups);
}
@ -590,7 +590,7 @@ void PackWcle::decodeFixups()
while (*selfrel_fixups != 0xC3)
selfrel_fixups += 9;
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];
upx_bytep fp = ofixups;
@ -656,11 +656,11 @@ void PackWcle::decodeFixups()
fp += fp[1] ? 9 : 7;
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++)
*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);
soentries = p - ientries + 1;
soentries = ptr_diff(p, ientries) + 1;
oentries = ientries;
ientries = NULL;
}