alpha 4K mmap offsets and em86

James McKenzie
2001-09-23T11:30:46Z

Hi,

very sorry if this has been discussed before I couldn't
find any references in the archive. There is a program
on the alpha architecture which can (with a little help
from the kernel) execute ia32 linux binaries it's useful
if you need to run badly written 32 bit code.

The emulator needs to mmap elf binaries in, and
offsets in ia32 elf files are 4k aligned for a 4k
pagesize. On 2.2 on an alpha you could do
mmap(NULL,3176, ... , fd, 0x1000);
but now in 2.4 but in 2.4 it returns EINVAL.

The code in mm/mmap.c and vm_area_struct seem to
now count the offset in pages rather than bytes,
which would make fixing this ugly [maybe an element
in the structure to store 'slop' ?]

I can fix static binaries by patching an ia32 ld
to generate 8k alignments and running ld on the
binary - but I suspect this problem will surface
again once ia64 takes off.

Any ideas or pointers very welcome,

Thanks,

James.