It seems that longrun and similar programs (procmeter3 longrun support,
etc) are broken by the new libc.

This program should read the transmeta vendor cpuid:

#define CPUID_DEVICE "/dev/cpu/0/cpuid"
#define CPUID_TMx86_VENDOR_ID 0x80860000

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdint.h>

main () {
        int fd = open(CPUID_DEVICE, O_RDONLY);
        uint32_t data[4];

        if (pread(fd, &data, 16, CPUID_TMx86_VENDOR_ID) != 16) {
                perror("pread");
        }
}

If I strace this, the pread looks like this:

pread(3, 0xbffff834, 16, 18446744071570849792) = -1 EINVAL (Invalid argument)

If I build the same program in a woody chroot, and strace it, I get:

pread(3, "\7\0\206\200TranaCPUsmet", 16, 2156265472) = 16

ltrace on the unstable system shows, much as I expected:

pread(3, 0xbffff814, 16, 0x80860000, 0x40108622)  = -1

Not sure what is happening with the pread offset here, but it
looks like it is getting mangled on the way to the syscall?

-- 
see shy jo

Attachment: msg01403/pgp00000.pgp
Description: PGP signature

Reply via email to