All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] Where is this change coming from?
@ 2006-04-26 18:56 Ben Taylor
  0 siblings, 0 replies; only message in thread
From: Ben Taylor @ 2006-04-26 18:56 UTC (permalink / raw)
  To: qemu-devel

Compile environment - Solaris 9/Ultra 10 workstation


this is code generated by a 0.7.2-solaris port of dyngen for i386-softmmu/op.h for the function

case INDEX_op_imulb_AL_T0: {
    extern void op_imulb_AL_T0();
extern char __dot_umul __asm__(".umul");
    memcpy(gen_code_ptr, (void *)((char *)&op_imulb_AL_T0+4), 76);
    *(uint32_t *)(gen_code_ptr + 16) = ((*(uint32_t *)(gen_code_ptr + 16))  & ~0x3fffffff)  | (((((long)(&__dot_umul) + 0) - (long)(gen_code_ptr + 16))>>2)     & 0x3fffffff);
    gen_code_ptr += 76;
}
break;


this is the function generated by the 0.8.0-cvs code

case INDEX_op_imulb_AL_T0: {
    extern void op_imulb_AL_T0();
extern char __dot_umul __asm__(".umul");
    memcpy(gen_code_ptr, (void *)((char *)&op_imulb_AL_T0+4), 76);
    *(uint32_t *)(gen_code_ptr + 16) = ((*(uint32_t *)(gen_code_ptr + 16))  & ~0x3fffffff)  | (((((lo + 0) - (long)(gen_code_ptr + 16))>>2)
  & 0x3fffffff);
    gen_code_ptr += 76;
}
break;

This is the compile sequence for the 0.8.0-cvs with the error message:

gcc -Wall -O2 -g -fno-strict-aliasing -m32 -ffixed-g2 -ffixed-g3 -I. -I.. -I/export/src/qemu/qemu-solaris-9/target-i386 -I/export/src/qemu/qemu-solaris-9 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/export/src/qemu/qemu-solaris-9/fpu -DHAS_AUDIO -I/export/src/qemu/qemu-solaris-9/slirp -c -o translate-op.o /export/src/qemu/qemu-solaris-9/translate-op.c
In file included from /export/src/qemu/qemu-solaris-9/translate-op.c:36:
./op.h: In function `dyngen_code':
./op.h:896: error: `lo' undeclared (first use in this function)
./op.h:896: error: (Each undeclared identifier is reported only once
./op.h:896: error: for each function it appears in.)
./op.h:896: error: syntax error before ';' token
./op.h:904: error: `op_cmpneqsd' undeclared (first use in this function)
./op.h:905: error: `param1' undeclared (first use in this function)
./op.h:906: error: `param2' undeclared (first use in this function)
./op.h:894: warning: unused variable `__dot_umul'


looking carefully between the two generated functions, I see that they are slightly
different.  The first one (0.7.2) compiles cleanly and runs.  The second one (0.8.0-cvs)
does not compiile cleanly, and it appears that the function call has been
left off the line of code.

*(uint32_t *)(gen_code_ptr + 16) = ((*(uint32_t *)(gen_code_ptr + 16))  & ~0x3fffffff)  | (((((long)(&__dot_umul) + 0) - (long)(gen_code_ptr + 16))>>2)     & 0x3fffffff);

 *(uint32_t *)(gen_code_ptr + 16) = ((*(uint32_t *)(gen_code_ptr + 16))  & ~0x3fffffff)  | (((((lo + 0) - (long)(gen_code_ptr + 16))>>2)

The specific difference in the working copy has

(((((long)(&__dot_umul) + 0)

while the compile failling copy has 

(((((lo + 0)

Am I missing something?  There are many cascading errors due to "lo not defined"
in this environment, and I'm not really sure if it's a bug, or some problem in my
environment.

Ideas?

Thanks,

Ben

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-04-26 18:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-04-26 18:56 [Qemu-devel] Where is this change coming from? Ben Taylor

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.