Commit f8b0aa25599782eef91edc00ebf620bd14db720c

Authored by bellard
1 parent 28be6234

fixed more invalid pointer usage


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3624 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 55 additions and 48 deletions
linux-user/signal.c
@@ -1039,8 +1039,8 @@ struct sigframe @@ -1039,8 +1039,8 @@ struct sigframe
1039 1039
1040 struct rt_sigframe 1040 struct rt_sigframe
1041 { 1041 {
1042 - struct target_siginfo *pinfo;  
1043 - void *puc; 1042 + abi_ulong pinfo;
  1043 + abi_ulong puc;
1044 struct target_siginfo info; 1044 struct target_siginfo info;
1045 struct target_ucontext uc; 1045 struct target_ucontext uc;
1046 abi_ulong retcode; 1046 abi_ulong retcode;
@@ -1077,7 +1077,7 @@ static inline int valid_user_regs(CPUState *regs) @@ -1077,7 +1077,7 @@ static inline int valid_user_regs(CPUState *regs)
1077 1077
1078 static int 1078 static int
1079 setup_sigcontext(struct target_sigcontext *sc, /*struct _fpstate *fpstate,*/ 1079 setup_sigcontext(struct target_sigcontext *sc, /*struct _fpstate *fpstate,*/
1080 - CPUState *env, unsigned long mask) 1080 + CPUState *env, abi_ulong mask)
1081 { 1081 {
1082 int err = 0; 1082 int err = 0;
1083 1083
@@ -1127,9 +1127,9 @@ get_sigframe(struct emulated_sigaction *ka, CPUState *regs, int framesize) @@ -1127,9 +1127,9 @@ get_sigframe(struct emulated_sigaction *ka, CPUState *regs, int framesize)
1127 1127
1128 static int 1128 static int
1129 setup_return(CPUState *env, struct emulated_sigaction *ka, 1129 setup_return(CPUState *env, struct emulated_sigaction *ka,
1130 - abi_ulong *rc, void *frame, int usig) 1130 + abi_ulong *rc, abi_ulong frame_addr, int usig, abi_ulong rc_addr)
1131 { 1131 {
1132 - abi_ulong handler = (abi_ulong)ka->sa._sa_handler; 1132 + abi_ulong handler = ka->sa._sa_handler;
1133 abi_ulong retcode; 1133 abi_ulong retcode;
1134 int thumb = 0; 1134 int thumb = 0;
1135 #if defined(TARGET_CONFIG_CPU_32) 1135 #if defined(TARGET_CONFIG_CPU_32)
@@ -1160,7 +1160,7 @@ setup_return(CPUState *env, struct emulated_sigaction *ka, @@ -1160,7 +1160,7 @@ setup_return(CPUState *env, struct emulated_sigaction *ka,
1160 #endif /* TARGET_CONFIG_CPU_32 */ 1160 #endif /* TARGET_CONFIG_CPU_32 */
1161 1161
1162 if (ka->sa.sa_flags & TARGET_SA_RESTORER) { 1162 if (ka->sa.sa_flags & TARGET_SA_RESTORER) {
1163 - retcode = (abi_ulong)ka->sa.sa_restorer; 1163 + retcode = ka->sa.sa_restorer;
1164 } else { 1164 } else {
1165 unsigned int idx = thumb; 1165 unsigned int idx = thumb;
1166 1166
@@ -1173,11 +1173,11 @@ setup_return(CPUState *env, struct emulated_sigaction *ka, @@ -1173,11 +1173,11 @@ setup_return(CPUState *env, struct emulated_sigaction *ka,
1173 flush_icache_range((abi_ulong)rc, 1173 flush_icache_range((abi_ulong)rc,
1174 (abi_ulong)(rc + 1)); 1174 (abi_ulong)(rc + 1));
1175 #endif 1175 #endif
1176 - retcode = ((abi_ulong)rc) + thumb; 1176 + retcode = rc_addr + thumb;
1177 } 1177 }
1178 1178
1179 env->regs[0] = usig; 1179 env->regs[0] = usig;
1180 - env->regs[13] = h2g(frame); 1180 + env->regs[13] = frame_addr;
1181 env->regs[14] = retcode; 1181 env->regs[14] = retcode;
1182 env->regs[15] = handler & (thumb ? ~1 : ~3); 1182 env->regs[15] = handler & (thumb ? ~1 : ~3);
1183 1183
@@ -1209,7 +1209,8 @@ static void setup_frame(int usig, struct emulated_sigaction *ka, @@ -1209,7 +1209,8 @@ static void setup_frame(int usig, struct emulated_sigaction *ka,
1209 } 1209 }
1210 1210
1211 if (err == 0) 1211 if (err == 0)
1212 - err = setup_return(regs, ka, &frame->retcode, frame, usig); 1212 + err = setup_return(regs, ka, &frame->retcode, frame_addr, usig,
  1213 + frame_addr + offsetof(struct sigframe, retcode));
1213 1214
1214 end: 1215 end:
1215 unlock_user_struct(frame, frame_addr, 1); 1216 unlock_user_struct(frame, frame_addr, 1);
@@ -1225,12 +1226,15 @@ static void setup_rt_frame(int usig, struct emulated_sigaction *ka, @@ -1225,12 +1226,15 @@ static void setup_rt_frame(int usig, struct emulated_sigaction *ka,
1225 abi_ulong frame_addr = get_sigframe(ka, env, sizeof(*frame)); 1226 abi_ulong frame_addr = get_sigframe(ka, env, sizeof(*frame));
1226 struct target_sigaltstack stack; 1227 struct target_sigaltstack stack;
1227 int i, err = 0; 1228 int i, err = 0;
  1229 + abi_ulong info_addr, uc_addr;
1228 1230
1229 if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) 1231 if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
1230 return /* 1 */; 1232 return /* 1 */;
1231 1233
1232 - __put_user_error(&frame->info, (abi_ulong *)&frame->pinfo, err);  
1233 - __put_user_error(&frame->uc, (abi_ulong *)&frame->puc, err); 1234 + info_addr = frame_addr + offsetof(struct rt_sigframe, info);
  1235 + __put_user_error(info_addr, &frame->pinfo, err);
  1236 + uc_addr = frame_addr + offsetof(struct rt_sigframe, uc);
  1237 + __put_user_error(uc_addr, &frame->puc, err);
1234 err |= copy_siginfo_to_user(&frame->info, info); 1238 err |= copy_siginfo_to_user(&frame->info, info);
1235 1239
1236 /* Clear all the bits of the ucontext we don't use. */ 1240 /* Clear all the bits of the ucontext we don't use. */
@@ -1250,7 +1254,8 @@ static void setup_rt_frame(int usig, struct emulated_sigaction *ka, @@ -1250,7 +1254,8 @@ static void setup_rt_frame(int usig, struct emulated_sigaction *ka,
1250 } 1254 }
1251 1255
1252 if (err == 0) 1256 if (err == 0)
1253 - err = setup_return(env, ka, &frame->retcode, frame, usig); 1257 + err = setup_return(env, ka, &frame->retcode, frame_addr, usig,
  1258 + frame_addr + offsetof(struct rt_sigframe, retcode));
1254 1259
1255 if (err == 0) { 1260 if (err == 0) {
1256 /* 1261 /*
@@ -1258,8 +1263,8 @@ static void setup_rt_frame(int usig, struct emulated_sigaction *ka, @@ -1258,8 +1263,8 @@ static void setup_rt_frame(int usig, struct emulated_sigaction *ka,
1258 * arguments for the signal handler. 1263 * arguments for the signal handler.
1259 * -- Peter Maydell <pmaydell@chiark.greenend.org.uk> 2000-12-06 1264 * -- Peter Maydell <pmaydell@chiark.greenend.org.uk> 2000-12-06
1260 */ 1265 */
1261 - env->regs[1] = (abi_ulong)frame->pinfo;  
1262 - env->regs[2] = (abi_ulong)frame->puc; 1266 + env->regs[1] = info_addr;
  1267 + env->regs[2] = uc_addr;
1263 } 1268 }
1264 1269
1265 end: 1270 end:
@@ -1302,6 +1307,7 @@ restore_sigcontext(CPUState *env, struct target_sigcontext *sc) @@ -1302,6 +1307,7 @@ restore_sigcontext(CPUState *env, struct target_sigcontext *sc)
1302 1307
1303 long do_sigreturn(CPUState *env) 1308 long do_sigreturn(CPUState *env)
1304 { 1309 {
  1310 + abi_ulong frame_addr;
1305 struct sigframe *frame; 1311 struct sigframe *frame;
1306 target_sigset_t set; 1312 target_sigset_t set;
1307 sigset_t host_set; 1313 sigset_t host_set;
@@ -1315,12 +1321,10 @@ long do_sigreturn(CPUState *env) @@ -1315,12 +1321,10 @@ long do_sigreturn(CPUState *env)
1315 if (env->regs[13] & 7) 1321 if (env->regs[13] & 7)
1316 goto badframe; 1322 goto badframe;
1317 1323
1318 - frame = (struct sigframe *)g2h(env->regs[13]); 1324 + frame_addr = env->regs[13];
  1325 + if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
  1326 + goto badframe;
1319 1327
1320 -#if 0  
1321 - if (verify_area(VERIFY_READ, frame, sizeof (*frame)))  
1322 - goto badframe;  
1323 -#endif  
1324 if (__get_user(set.sig[0], &frame->sc.oldmask)) 1328 if (__get_user(set.sig[0], &frame->sc.oldmask))
1325 goto badframe; 1329 goto badframe;
1326 for(i = 1; i < TARGET_NSIG_WORDS; i++) { 1330 for(i = 1; i < TARGET_NSIG_WORDS; i++) {
@@ -1339,15 +1343,18 @@ long do_sigreturn(CPUState *env) @@ -1339,15 +1343,18 @@ long do_sigreturn(CPUState *env)
1339 if (ptrace_cancel_bpt(current)) 1343 if (ptrace_cancel_bpt(current))
1340 send_sig(SIGTRAP, current, 1); 1344 send_sig(SIGTRAP, current, 1);
1341 #endif 1345 #endif
1342 - return env->regs[0]; 1346 + unlock_user_struct(frame, frame_addr, 0);
  1347 + return env->regs[0];
1343 1348
1344 badframe: 1349 badframe:
  1350 + unlock_user_struct(frame, frame_addr, 0);
1345 force_sig(SIGSEGV /* , current */); 1351 force_sig(SIGSEGV /* , current */);
1346 return 0; 1352 return 0;
1347 } 1353 }
1348 1354
1349 long do_rt_sigreturn(CPUState *env) 1355 long do_rt_sigreturn(CPUState *env)
1350 { 1356 {
  1357 + abi_ulong frame_addr;
1351 struct rt_sigframe *frame; 1358 struct rt_sigframe *frame;
1352 sigset_t host_set; 1359 sigset_t host_set;
1353 1360
@@ -1359,19 +1366,17 @@ long do_rt_sigreturn(CPUState *env) @@ -1359,19 +1366,17 @@ long do_rt_sigreturn(CPUState *env)
1359 if (env->regs[13] & 7) 1366 if (env->regs[13] & 7)
1360 goto badframe; 1367 goto badframe;
1361 1368
1362 - frame = (struct rt_sigframe *)env->regs[13]; 1369 + frame_addr = env->regs[13];
  1370 + if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
  1371 + goto badframe;
1363 1372
1364 -#if 0  
1365 - if (verify_area(VERIFY_READ, frame, sizeof (*frame)))  
1366 - goto badframe;  
1367 -#endif  
1368 target_to_host_sigset(&host_set, &frame->uc.tuc_sigmask); 1373 target_to_host_sigset(&host_set, &frame->uc.tuc_sigmask);
1369 sigprocmask(SIG_SETMASK, &host_set, NULL); 1374 sigprocmask(SIG_SETMASK, &host_set, NULL);
1370 1375
1371 if (restore_sigcontext(env, &frame->uc.tuc_mcontext)) 1376 if (restore_sigcontext(env, &frame->uc.tuc_mcontext))
1372 goto badframe; 1377 goto badframe;
1373 1378
1374 - if (do_sigaltstack(h2g(&frame->uc.tuc_stack), 0, get_sp_from_cpustate(env)) == -EFAULT) 1379 + if (do_sigaltstack(frame_addr + offsetof(struct rt_sigframe, uc.tuc_stack), 0, get_sp_from_cpustate(env)) == -EFAULT)
1375 goto badframe; 1380 goto badframe;
1376 1381
1377 #if 0 1382 #if 0
@@ -1379,9 +1384,11 @@ long do_rt_sigreturn(CPUState *env) @@ -1379,9 +1384,11 @@ long do_rt_sigreturn(CPUState *env)
1379 if (ptrace_cancel_bpt(current)) 1384 if (ptrace_cancel_bpt(current))
1380 send_sig(SIGTRAP, current, 1); 1385 send_sig(SIGTRAP, current, 1);
1381 #endif 1386 #endif
  1387 + unlock_user_struct(frame, frame_addr, 0);
1382 return env->regs[0]; 1388 return env->regs[0];
1383 1389
1384 badframe: 1390 badframe:
  1391 + unlock_user_struct(frame, frame_addr, 0);
1385 force_sig(SIGSEGV /* , current */); 1392 force_sig(SIGSEGV /* , current */);
1386 return 0; 1393 return 0;
1387 } 1394 }
@@ -1452,7 +1459,7 @@ typedef struct { @@ -1452,7 +1459,7 @@ typedef struct {
1452 struct target_signal_frame { 1459 struct target_signal_frame {
1453 struct sparc_stackf ss; 1460 struct sparc_stackf ss;
1454 __siginfo_t info; 1461 __siginfo_t info;
1455 - qemu_siginfo_fpu_t *fpu_save; 1462 + abi_ulong fpu_save;
1456 abi_ulong insns[2] __attribute__ ((aligned (8))); 1463 abi_ulong insns[2] __attribute__ ((aligned (8)));
1457 abi_ulong extramask[TARGET_NSIG_WORDS - 1]; 1464 abi_ulong extramask[TARGET_NSIG_WORDS - 1];
1458 abi_ulong extra_size; /* Should be 0 */ 1465 abi_ulong extra_size; /* Should be 0 */
@@ -1463,7 +1470,7 @@ struct target_rt_signal_frame { @@ -1463,7 +1470,7 @@ struct target_rt_signal_frame {
1463 siginfo_t info; 1470 siginfo_t info;
1464 abi_ulong regs[20]; 1471 abi_ulong regs[20];
1465 sigset_t mask; 1472 sigset_t mask;
1466 - qemu_siginfo_fpu_t *fpu_save; 1473 + abi_ulong fpu_save;
1467 unsigned int insns[2]; 1474 unsigned int insns[2];
1468 stack_t stack; 1475 stack_t stack;
1469 unsigned int extra_size; /* Should be 0 */ 1476 unsigned int extra_size; /* Should be 0 */
@@ -1677,14 +1684,17 @@ static void setup_rt_frame(int sig, struct emulated_sigaction *ka, @@ -1677,14 +1684,17 @@ static void setup_rt_frame(int sig, struct emulated_sigaction *ka,
1677 1684
1678 long do_sigreturn(CPUState *env) 1685 long do_sigreturn(CPUState *env)
1679 { 1686 {
  1687 + abi_ulong sf_addr;
1680 struct target_signal_frame *sf; 1688 struct target_signal_frame *sf;
1681 uint32_t up_psr, pc, npc; 1689 uint32_t up_psr, pc, npc;
1682 target_sigset_t set; 1690 target_sigset_t set;
1683 sigset_t host_set; 1691 sigset_t host_set;
1684 - abi_ulong fpu_save; 1692 + abi_ulong fpu_save_addr;
1685 int err, i; 1693 int err, i;
1686 1694
1687 - sf = (struct target_signal_frame *)g2h(env->regwptr[UREG_FP]); 1695 + sf_addr = env->regwptr[UREG_FP];
  1696 + if (!lock_user_struct(VERIFY_READ, sf, sf_addr, 1))
  1697 + goto segv_and_exit;
1688 #if 0 1698 #if 0
1689 fprintf(stderr, "sigreturn\n"); 1699 fprintf(stderr, "sigreturn\n");
1690 fprintf(stderr, "sf: %x pc %x fp %x sp %x\n", sf, env->pc, env->regwptr[UREG_FP], env->regwptr[UREG_SP]); 1700 fprintf(stderr, "sf: %x pc %x fp %x sp %x\n", sf, env->pc, env->regwptr[UREG_FP], env->regwptr[UREG_SP]);
@@ -1692,12 +1702,8 @@ long do_sigreturn(CPUState *env) @@ -1692,12 +1702,8 @@ long do_sigreturn(CPUState *env)
1692 //cpu_dump_state(env, stderr, fprintf, 0); 1702 //cpu_dump_state(env, stderr, fprintf, 0);
1693 1703
1694 /* 1. Make sure we are not getting garbage from the user */ 1704 /* 1. Make sure we are not getting garbage from the user */
1695 -#if 0  
1696 - if (verify_area (VERIFY_READ, sf, sizeof (*sf)))  
1697 - goto segv_and_exit;  
1698 -#endif  
1699 1705
1700 - if (((uint) sf) & 3) 1706 + if (sf_addr & 3)
1701 goto segv_and_exit; 1707 goto segv_and_exit;
1702 1708
1703 err = __get_user(pc, &sf->info.si_regs.pc); 1709 err = __get_user(pc, &sf->info.si_regs.pc);
@@ -1723,7 +1729,7 @@ long do_sigreturn(CPUState *env) @@ -1723,7 +1729,7 @@ long do_sigreturn(CPUState *env)
1723 err |= __get_user(env->regwptr[i + UREG_I0], &sf->info.si_regs.u_regs[i+8]); 1729 err |= __get_user(env->regwptr[i + UREG_I0], &sf->info.si_regs.u_regs[i+8]);
1724 } 1730 }
1725 1731
1726 - err |= __get_user(fpu_save, (abi_ulong *)&sf->fpu_save); 1732 + err |= __get_user(fpu_save_addr, &sf->fpu_save);
1727 1733
1728 //if (fpu_save) 1734 //if (fpu_save)
1729 // err |= restore_fpu_state(env, fpu_save); 1735 // err |= restore_fpu_state(env, fpu_save);
@@ -1741,17 +1747,18 @@ long do_sigreturn(CPUState *env) @@ -1741,17 +1747,18 @@ long do_sigreturn(CPUState *env)
1741 1747
1742 if (err) 1748 if (err)
1743 goto segv_and_exit; 1749 goto segv_and_exit;
1744 - 1750 + unlock_user_struct(sf, sf_addr, 0);
1745 return env->regwptr[0]; 1751 return env->regwptr[0];
1746 1752
1747 segv_and_exit: 1753 segv_and_exit:
  1754 + unlock_user_struct(sf, sf_addr, 0);
1748 force_sig(TARGET_SIGSEGV); 1755 force_sig(TARGET_SIGSEGV);
1749 } 1756 }
1750 1757
1751 long do_rt_sigreturn(CPUState *env) 1758 long do_rt_sigreturn(CPUState *env)
1752 { 1759 {
1753 fprintf(stderr, "do_rt_sigreturn: not implemented\n"); 1760 fprintf(stderr, "do_rt_sigreturn: not implemented\n");
1754 - return -ENOSYS; 1761 + return -TARGET_ENOSYS;
1755 } 1762 }
1756 1763
1757 #if defined(TARGET_SPARC64) && !defined(TARGET_ABI32) 1764 #if defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
@@ -2032,13 +2039,13 @@ static void setup_rt_frame(int sig, struct emulated_sigaction *ka, @@ -2032,13 +2039,13 @@ static void setup_rt_frame(int sig, struct emulated_sigaction *ka,
2032 long do_sigreturn(CPUState *env) 2039 long do_sigreturn(CPUState *env)
2033 { 2040 {
2034 fprintf(stderr, "do_sigreturn: not implemented\n"); 2041 fprintf(stderr, "do_sigreturn: not implemented\n");
2035 - return -ENOSYS; 2042 + return -TARGET_ENOSYS;
2036 } 2043 }
2037 2044
2038 long do_rt_sigreturn(CPUState *env) 2045 long do_rt_sigreturn(CPUState *env)
2039 { 2046 {
2040 fprintf(stderr, "do_rt_sigreturn: not implemented\n"); 2047 fprintf(stderr, "do_rt_sigreturn: not implemented\n");
2041 - return -ENOSYS; 2048 + return -TARGET_ENOSYS;
2042 } 2049 }
2043 2050
2044 #elif defined(TARGET_ABI_MIPSN32) 2051 #elif defined(TARGET_ABI_MIPSN32)
@@ -2061,13 +2068,13 @@ static void setup_rt_frame(int sig, struct emulated_sigaction *ka, @@ -2061,13 +2068,13 @@ static void setup_rt_frame(int sig, struct emulated_sigaction *ka,
2061 long do_sigreturn(CPUState *env) 2068 long do_sigreturn(CPUState *env)
2062 { 2069 {
2063 fprintf(stderr, "do_sigreturn: not implemented\n"); 2070 fprintf(stderr, "do_sigreturn: not implemented\n");
2064 - return -ENOSYS; 2071 + return -TARGET_ENOSYS;
2065 } 2072 }
2066 2073
2067 long do_rt_sigreturn(CPUState *env) 2074 long do_rt_sigreturn(CPUState *env)
2068 { 2075 {
2069 fprintf(stderr, "do_rt_sigreturn: not implemented\n"); 2076 fprintf(stderr, "do_rt_sigreturn: not implemented\n");
2070 - return -ENOSYS; 2077 + return -TARGET_ENOSYS;
2071 } 2078 }
2072 2079
2073 #elif defined(TARGET_ABI_MIPSO32) 2080 #elif defined(TARGET_ABI_MIPSO32)
@@ -2321,9 +2328,9 @@ static void setup_frame(int sig, struct emulated_sigaction * ka, @@ -2321,9 +2328,9 @@ static void setup_frame(int sig, struct emulated_sigaction * ka,
2321 */ 2328 */
2322 regs->gpr[ 4][regs->current_tc] = sig; 2329 regs->gpr[ 4][regs->current_tc] = sig;
2323 regs->gpr[ 5][regs->current_tc] = 0; 2330 regs->gpr[ 5][regs->current_tc] = 0;
2324 - regs->gpr[ 6][regs->current_tc] = h2g(&frame->sf_sc);  
2325 - regs->gpr[29][regs->current_tc] = h2g(frame);  
2326 - regs->gpr[31][regs->current_tc] = h2g(frame->sf_code); 2331 + regs->gpr[ 6][regs->current_tc] = frame_addr + offsetof(struct sigframe, sf_sc);
  2332 + regs->gpr[29][regs->current_tc] = frame_addr;
  2333 + regs->gpr[31][regs->current_tc] = frame_addr + offsetof(struct sigframe, sf_code);
2327 /* The original kernel code sets CP0_EPC to the handler 2334 /* The original kernel code sets CP0_EPC to the handler
2328 * since it returns to userland using eret 2335 * since it returns to userland using eret
2329 * we cannot do this here, and we must set PC directly */ 2336 * we cannot do this here, and we must set PC directly */
@@ -2396,7 +2403,7 @@ static void setup_rt_frame(int sig, struct emulated_sigaction *ka, @@ -2396,7 +2403,7 @@ static void setup_rt_frame(int sig, struct emulated_sigaction *ka,
2396 long do_rt_sigreturn(CPUState *env) 2403 long do_rt_sigreturn(CPUState *env)
2397 { 2404 {
2398 fprintf(stderr, "do_rt_sigreturn: not implemented\n"); 2405 fprintf(stderr, "do_rt_sigreturn: not implemented\n");
2399 - return -ENOSYS; 2406 + return -TARGET_ENOSYS;
2400 } 2407 }
2401 2408
2402 #else 2409 #else
@@ -2417,13 +2424,13 @@ static void setup_rt_frame(int sig, struct emulated_sigaction *ka, @@ -2417,13 +2424,13 @@ static void setup_rt_frame(int sig, struct emulated_sigaction *ka,
2417 long do_sigreturn(CPUState *env) 2424 long do_sigreturn(CPUState *env)
2418 { 2425 {
2419 fprintf(stderr, "do_sigreturn: not implemented\n"); 2426 fprintf(stderr, "do_sigreturn: not implemented\n");
2420 - return -ENOSYS; 2427 + return -TARGET_ENOSYS;
2421 } 2428 }
2422 2429
2423 long do_rt_sigreturn(CPUState *env) 2430 long do_rt_sigreturn(CPUState *env)
2424 { 2431 {
2425 fprintf(stderr, "do_rt_sigreturn: not implemented\n"); 2432 fprintf(stderr, "do_rt_sigreturn: not implemented\n");
2426 - return -ENOSYS; 2433 + return -TARGET_ENOSYS;
2427 } 2434 }
2428 2435
2429 #endif 2436 #endif