Commit 5a7b542bbd6d79a049b4a1ab5fe3e284fac46e9a

Authored by ths
1 parent fd677642

siginfo fix for Darwin/Mac OS X, by Pierre d'Herbemont.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2369 c046a42c-6fe2-441c-8c8c-71466251a162
cpu-exec.c
... ... @@ -1280,9 +1280,10 @@ static void cpu_send_trap(unsigned long pc, int trap,
1280 1280 }
1281 1281 #endif
1282 1282  
1283   -int cpu_signal_handler(int host_signum, struct siginfo *info,
  1283 +int cpu_signal_handler(int host_signum, void *pinfo,
1284 1284 void *puc)
1285 1285 {
  1286 + siginfo_t *info = pinfo;
1286 1287 struct ucontext *uc = puc;
1287 1288 unsigned long pc;
1288 1289 int trapno;
... ... @@ -1310,9 +1311,10 @@ int cpu_signal_handler(int host_signum, struct siginfo *info,
1310 1311  
1311 1312 #elif defined(__x86_64__)
1312 1313  
1313   -int cpu_signal_handler(int host_signum, struct siginfo *info,
  1314 +int cpu_signal_handler(int host_signum, void *pinfo,
1314 1315 void *puc)
1315 1316 {
  1317 + siginfo_t *info = pinfo;
1316 1318 struct ucontext *uc = puc;
1317 1319 unsigned long pc;
1318 1320  
... ... @@ -1374,9 +1376,10 @@ typedef struct ucontext SIGCONTEXT;
1374 1376 # define TRAP_sig(context) EXCEPREG_sig(exception, context) /* number of powerpc exception taken */
1375 1377 #endif /* __APPLE__ */
1376 1378  
1377   -int cpu_signal_handler(int host_signum, struct siginfo *info,
  1379 +int cpu_signal_handler(int host_signum, void *pinfo,
1378 1380 void *puc)
1379 1381 {
  1382 + siginfo_t *info = pinfo;
1380 1383 struct ucontext *uc = puc;
1381 1384 unsigned long pc;
1382 1385 int is_write;
... ... @@ -1397,9 +1400,10 @@ int cpu_signal_handler(int host_signum, struct siginfo *info,
1397 1400  
1398 1401 #elif defined(__alpha__)
1399 1402  
1400   -int cpu_signal_handler(int host_signum, struct siginfo *info,
  1403 +int cpu_signal_handler(int host_signum, void *pinfo,
1401 1404 void *puc)
1402 1405 {
  1406 + siginfo_t *info = pinfo;
1403 1407 struct ucontext *uc = puc;
1404 1408 uint32_t *pc = uc->uc_mcontext.sc_pc;
1405 1409 uint32_t insn = *pc;
... ... @@ -1426,9 +1430,10 @@ int cpu_signal_handler(int host_signum, struct siginfo *info,
1426 1430 }
1427 1431 #elif defined(__sparc__)
1428 1432  
1429   -int cpu_signal_handler(int host_signum, struct siginfo *info,
  1433 +int cpu_signal_handler(int host_signum, void *pinfo,
1430 1434 void *puc)
1431 1435 {
  1436 + siginfo_t *info = pinfo;
1432 1437 uint32_t *regs = (uint32_t *)(info + 1);
1433 1438 void *sigmask = (regs + 20);
1434 1439 unsigned long pc;
... ... @@ -1459,9 +1464,10 @@ int cpu_signal_handler(int host_signum, struct siginfo *info,
1459 1464  
1460 1465 #elif defined(__arm__)
1461 1466  
1462   -int cpu_signal_handler(int host_signum, struct siginfo *info,
  1467 +int cpu_signal_handler(int host_signum, void *pinfo,
1463 1468 void *puc)
1464 1469 {
  1470 + siginfo_t *info = pinfo;
1465 1471 struct ucontext *uc = puc;
1466 1472 unsigned long pc;
1467 1473 int is_write;
... ... @@ -1476,9 +1482,10 @@ int cpu_signal_handler(int host_signum, struct siginfo *info,
1476 1482  
1477 1483 #elif defined(__mc68000)
1478 1484  
1479   -int cpu_signal_handler(int host_signum, struct siginfo *info,
  1485 +int cpu_signal_handler(int host_signum, void *pinfo,
1480 1486 void *puc)
1481 1487 {
  1488 + siginfo_t *info = pinfo;
1482 1489 struct ucontext *uc = puc;
1483 1490 unsigned long pc;
1484 1491 int is_write;
... ... @@ -1498,8 +1505,9 @@ int cpu_signal_handler(int host_signum, struct siginfo *info,
1498 1505 # define __ISR_VALID 1
1499 1506 #endif
1500 1507  
1501   -int cpu_signal_handler(int host_signum, struct siginfo *info, void *puc)
  1508 +int cpu_signal_handler(int host_signum, void *pinfo, void *puc)
1502 1509 {
  1510 + siginfo_t *info = pinfo;
1503 1511 struct ucontext *uc = puc;
1504 1512 unsigned long ip;
1505 1513 int is_write = 0;
... ... @@ -1526,9 +1534,10 @@ int cpu_signal_handler(int host_signum, struct siginfo *info, void *puc)
1526 1534  
1527 1535 #elif defined(__s390__)
1528 1536  
1529   -int cpu_signal_handler(int host_signum, struct siginfo *info,
  1537 +int cpu_signal_handler(int host_signum, void *pinfo,
1530 1538 void *puc)
1531 1539 {
  1540 + siginfo_t *info = pinfo;
1532 1541 struct ucontext *uc = puc;
1533 1542 unsigned long pc;
1534 1543 int is_write;
... ...
target-arm/cpu.h
... ... @@ -133,8 +133,7 @@ void switch_mode(CPUARMState *, int);
133 133 /* you can call this signal handler from your SIGBUS and SIGSEGV
134 134 signal handlers to inform the virtual CPU of exceptions. non zero
135 135 is returned if the signal was handled by the virtual CPU. */
136   -struct siginfo;
137   -int cpu_arm_signal_handler(int host_signum, struct siginfo *info,
  136 +int cpu_arm_signal_handler(int host_signum, void *pinfo,
138 137 void *puc);
139 138  
140 139 #define CPSR_M (0x1f)
... ...
target-i386/cpu.h
... ... @@ -628,8 +628,7 @@ void cpu_x86_frstor(CPUX86State *s, uint8_t *ptr, int data32);
628 628 /* you can call this signal handler from your SIGBUS and SIGSEGV
629 629 signal handlers to inform the virtual CPU of exceptions. non zero
630 630 is returned if the signal was handled by the virtual CPU. */
631   -struct siginfo;
632   -int cpu_x86_signal_handler(int host_signum, struct siginfo *info,
  631 +int cpu_x86_signal_handler(int host_signum, void *pinfo,
633 632 void *puc);
634 633 void cpu_x86_set_a20(CPUX86State *env, int a20_state);
635 634  
... ...
target-m68k/cpu.h
... ... @@ -97,8 +97,7 @@ void cpu_m68k_close(CPUM68KState *s);
97 97 /* you can call this signal handler from your SIGBUS and SIGSEGV
98 98 signal handlers to inform the virtual CPU of exceptions. non zero
99 99 is returned if the signal was handled by the virtual CPU. */
100   -struct siginfo;
101   -int cpu_m68k_signal_handler(int host_signum, struct siginfo *info,
  100 +int cpu_m68k_signal_handler(int host_signum, void *pinfo,
102 101 void *puc);
103 102 void cpu_m68k_flush_flags(CPUM68KState *, int);
104 103  
... ...
target-ppc/cpu.h
... ... @@ -575,8 +575,7 @@ void cpu_ppc_close(CPUPPCState *s);
575 575 /* you can call this signal handler from your SIGBUS and SIGSEGV
576 576 signal handlers to inform the virtual CPU of exceptions. non zero
577 577 is returned if the signal was handled by the virtual CPU. */
578   -struct siginfo;
579   -int cpu_ppc_signal_handler(int host_signum, struct siginfo *info,
  578 +int cpu_ppc_signal_handler(int host_signum, void *pinfo,
580 579 void *puc);
581 580  
582 581 void do_interrupt (CPUPPCState *env);
... ...
target-sh4/cpu.h
... ... @@ -121,9 +121,8 @@ typedef struct CPUSH4State {
121 121  
122 122 CPUSH4State *cpu_sh4_init(void);
123 123 int cpu_sh4_exec(CPUSH4State * s);
124   -struct siginfo;
125   -int cpu_sh4_signal_handler(int hostsignum, struct siginfo *info,
126   - void *puc);
  124 +int cpu_sh4_signal_handler(int host_signum, void *pinfo,
  125 + void *puc);
127 126  
128 127 #include "softfloat.h"
129 128  
... ...
target-sparc/cpu.h
... ... @@ -275,8 +275,7 @@ void cpu_set_cwp(CPUSPARCState *env1, int new_cwp);
275 275 } while (0)
276 276 #endif
277 277  
278   -struct siginfo;
279   -int cpu_sparc_signal_handler(int hostsignum, struct siginfo *info, void *puc);
  278 +int cpu_sparc_signal_handler(int host_signum, void *pinfo, void *puc);
280 279  
281 280 #include "cpu-all.h"
282 281  
... ...