Indeed, the parisc linux port doesn't use the socketcall wrapper. Could you try the attached patch?
Samuel
diff -ur purelibc-0.2/socketcalls.c purelibc-0.2-mine/socketcalls.c --- purelibc-0.2/socketcalls.c 2006-10-20 15:02:00.000000000 +0200 +++ purelibc-0.2-mine/socketcalls.c 2006-12-26 01:27:21.000000000 +0100 @@ -32,7 +32,7 @@ sfun _pure_socketcall=pure_int_socketcall; static char sockargc[]={0,3,3,3,2,3,3,3,4,4,4,6,6,2,5,5,3,3}; -#if defined(__x86_64__) +#if defined(__x86_64__) || defined(__hppa__) static struct socket64_mapping{ int socketcallno; @@ -111,14 +111,14 @@ return _pure_socketcall(SYS_SOCKETPAIR,d,type,protocol,sv); } ssize_t send(int s, const void *buf, size_t len, int flags){ -#if defined(__x86_64__) +#if defined(__x86_64__) || defined(__hppa__) return sendto(s,buf,len,flags,NULL,0); #else return _pure_socketcall(SYS_SEND,s,buf,len,flags); #endif } ssize_t recv(int s, void *buf, size_t len, int flags){ -#if defined(__x86_64__) +#if defined(__x86_64__) || defined(__hppa__) return recvfrom(s,buf,len,flags,NULL,0); #else return _pure_socketcall(SYS_RECV,s,buf,len,flags);