qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] Qemu user-mode MacOS
@ 2009-08-21  0:43 Toni
  2009-08-22 15:14 ` Blue Swirl
  0 siblings, 1 reply; 2+ messages in thread
From: Toni @ 2009-08-21  0:43 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 3839 bytes --]

Hi,I have a problem: I'm trying to install on Mac OS qemu user-mode, I need
it, and so I find out that the only way is correct the wrong part of the
source code of qemu darwin_user, I correct some errors, but now I found out
something that I don't undestand:

  CC    i386-darwin-user/cpu-exec.o
/Users/ToNy/Desktop/qemu-0.10.5_prova/cpu-exec.c: In function
‘cpu_x86_signal_handler’:
/Users/ToNy/Desktop/qemu-0.10.5_prova/cpu-exec.c:1182: error: dereferencing
pointer to incomplete type
/Users/ToNy/Desktop/qemu-0.10.5_prova/cpu-exec.c:1183: error: dereferencing
pointer to incomplete type
/Users/ToNy/Desktop/qemu-0.10.5_prova/cpu-exec.c:1186: error: dereferencing
pointer to incomplete type
/Users/ToNy/Desktop/qemu-0.10.5_prova/cpu-exec.c:1187: error: dereferencing
pointer to incomplete type
make[1]: *** [cpu-exec.o] Error 1
make: *** [subdir-i386-darwin-user] Error 2

that is this part of code:

#1154# include <sys/ucontext.h>

#1168int cpu_signal_handler(int host_signum, void *pinfo,

#1169                       void *puc)

#1170{

#1171   siginfo_t *info = pinfo;

#1172    struct ucontext *uc = puc;

#1173    unsigned long pc;

#1174    int trapno;

#1175

#1176#ifndef REG_EIP

#1177/* for glibc 2.1 */

#1178#define REG_EIP    EIP

#1179#define REG_ERR    ERR

#1180#define REG_TRAPNO TRAPNO

#1181#endif

#1182  pc = EIP_sig(uc);

#1183    trapno = TRAP_sig(uc);

#1184    return handle_cpu_signal(pc, (unsigned long)info->si_addr,

#1185                             trapno == 0xe ?

#1186                             (ERROR_sig(uc) >> 1) & 1 : 0,

#1187                             &uc->uc_sigmask, puc);


the problem may be the ucontext definition of the uc variable, that is
defined in sys/ucontext.h, that call _structs.h where finally we found the
struct:


#ifdef __need_struct_ucontext

#undef __need_struct_ucontext

#ifndef _STRUCT_UCONTEXT

#if __DARWIN_UNIX03

#define _STRUCT_UCONTEXT        struct __darwin_ucontext

#else /* !__DARWIN_UNIX03 */

#define _STRUCT_UCONTEXT        struct ucontext

#endif /* __DARWIN_UNIX03 */

_STRUCT_UCONTEXT

{

        int                     uc_onstack;

        __darwin_sigset_t       uc_sigmask;     /* signal mask used by this
context */

        _STRUCT_SIGALTSTACK     uc_stack;       /* stack used by this
context */

        _STRUCT_UCONTEXT        *uc_link;       /* pointer to resuming
context */

        __darwin_size_t         uc_mcsize;      /* size of the machine
context passed in */

        _STRUCT_MCONTEXT        *uc_mcontext;   /* pointer to machine
specific context */

#ifdef _XOPEN_SOURCE

        _STRUCT_MCONTEXT        __mcontext_data;

#endif /* _XOPEN_SOURCE */

};

#endif /* _STRUCT_UCONTEXT */

#endif /* __need_struct_ucontext */


here I found _STRUCT_SIGALTSTACK that gave me the same error in another
part, in that case I resolved the error simply with the declaration of the
struct inside the code... but I think that is better now to understand why
it gives error.


The _STRUCT_SIGALTSTACK is also declared inside _structs.h:


#ifdef __need_struct_sigaltstack

#undef __need_struct_sigaltstack

/* Structure used in sigaltstack call. */

#ifndef _STRUCT_SIGALTSTACK

#if __DARWIN_UNIX03

#define _STRUCT_SIGALTSTACK     struct __darwin_sigaltstack

#else /* !__DARWIN_UNIX03 */

#define _STRUCT_SIGALTSTACK     struct sigaltstack

#endif /* __DARWIN_UNIX03 */

_STRUCT_SIGALTSTACK

{

        void            *ss_sp;         /* signal stack base */

        __darwin_size_t ss_size;        /* signal stack length */

        int             ss_flags;       /* SA_DISABLE and/or SA_ONSTACK */

};

#endif /* _STRUCT_SIGALTSTACK */

#endif /* __need_struct_sigaltstack */

[-- Attachment #2: Type: text/html, Size: 12622 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-08-22 15:14 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-21  0:43 [Qemu-devel] Qemu user-mode MacOS Toni
2009-08-22 15:14 ` Blue Swirl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).