obvious fixup ... getsockopt() takes a socklen_t, not an int -mike
pgpmFlADRziAp.pgp
Description: PGP signature
--- linux-user/syscall.c +++ linux-user/syscall.c @@ -642,7 +642,8 @@ static long do_setsockopt(int sockfd, in static long do_getsockopt(int sockfd, int level, int optname, target_ulong optval, target_ulong optlen) { - int len, lv, val, ret; + int len, val, ret; + socklen_t lv; switch(level) { case TARGET_SOL_SOCKET: @@ -665,7 +666,7 @@ static long do_getsockopt(int sockfd, in len = tget32(optlen); if (len < 0) return -EINVAL; - lv = sizeof(int); + lv = sizeof(lv); ret = get_errno(getsockopt(sockfd, level, optname, &val, &lv)); if (ret < 0) return ret; @@ -698,7 +699,7 @@ static long do_getsockopt(int sockfd, in len = tget32(optlen); if (len < 0) return -EINVAL; - lv = sizeof(int); + lv = sizeof(lv); ret = get_errno(getsockopt(sockfd, level, optname, &val, &lv)); if (ret < 0) return ret;