gcc-4.1.0 vs. mmap()

linux.hh
	fold_elf86.asm  l_lx_elf.c
	fold_exec86.asm l_lx_exec.c
	fold_pti86.asm  l_lx_pti.c
	fold_sh86.asm   l_lx_sh.c    l_lx_sh86.asm
	l_lx_sep.c

committer: jreiser <jreiser> 1142305438 +0000
This commit is contained in:
John Reiser
2006-03-14 03:03:58 +00:00
parent a3097d5e25
commit 676cacff04
11 changed files with 72 additions and 57 deletions
+5 -11
View File
@@ -127,14 +127,8 @@ static uint32_t ascii5(char *p, uint32_t v, unsigned n)
}
static unsigned char *
__attribute_cdecl
do_mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset)
{
(void)len; (void)prot; (void)flags; (void)fd; (void)offset;
return (unsigned char *) mmap((void *)&addr);
}
extern char *mmap(void *addr, size_t len,
int prot, int flags, int fd, off_t offset);
#if defined(__i386__)
# define SET2(p, c0, c1) \
@@ -359,7 +353,7 @@ void upx_main(
#if defined(USE_MMAP_FO)
// FIXME: packer could set length
buf = do_mmap(0, header.p_filesize,
buf = (unsigned char *)mmap(0, header.p_filesize,
PROT_READ | PROT_WRITE, MAP_SHARED, fdo, 0);
if ((unsigned long) buf >= (unsigned long) -4095)
goto error;
@@ -367,13 +361,13 @@ void upx_main(
// Decompressor can overrun the output by 3 bytes.
// Defend against SIGSEGV by using a scratch page.
// FIXME: packer could set address delta
do_mmap(buf + (PAGE_MASK & (header.p_filesize + ~PAGE_MASK)),
mmap(buf + (PAGE_MASK & (header.p_filesize + ~PAGE_MASK)),
-PAGE_MASK, PROT_READ | PROT_WRITE,
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, 0, 0 );
#else
// Temporary decompression buffer.
// FIXME: packer could set length
buf = do_mmap(0, (header.p_blocksize + OVERHEAD + ~PAGE_MASK) & PAGE_MASK,
buf = mmap(0, (header.p_blocksize + OVERHEAD + ~PAGE_MASK) & PAGE_MASK,
PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0 );
if ((unsigned long) buf >= (unsigned long) -4095)
goto error;