diff -ur qemu-0.9.0-o/dyngen.c qemu-0.9.0/dyngen.c --- qemu-0.9.0-o/dyngen.c 2007-02-06 14:44:57.000000000 -0700 +++ qemu-0.9.0/dyngen.c 2007-02-06 14:46:11.000000000 -0700 @@ -1692,6 +1692,9 @@ #else fprintf(outfile, " extern void %s();\n", name); #endif +#if defined(HOST_PPC) + uint8_t *blr_addr = NULL; +#endif for(i = 0, rel = relocs;i < nb_relocs; i++, rel++) { host_ulong offset = get_rel_offset(rel); @@ -2053,6 +2056,9 @@ #else #error unsupport object format #endif + if (blr_addr) + fprintf(outfile, " *(uint32_t *)(gen_code_ptr + %d) = 0x48000000 | %d;\n", + blr_addr - p_start, p_end - blr_addr); } #elif defined(HOST_S390) { diff -ur qemu-0.9.0-o/dyngen.c.orig qemu-0.9.0/dyngen.c.orig --- qemu-0.9.0-o/dyngen.c.orig 2007-02-05 16:01:54.000000000 -0700 +++ qemu-0.9.0/dyngen.c.orig 2007-02-06 14:44:57.000000000 -0700 @@ -1206,13 +1206,11 @@ } else if (strstart(sym_name, "__op_gen_label", &p)) { snprintf(name, name_size, "gen_labels[param%s]", p); } else { -#ifdef HOST_SPARC if (sym_name[0] == '.') snprintf(name, name_size, "(long)(&__dot_%s)", sym_name + 1); else -#endif snprintf(name, name_size, "(long)(&%s)", sym_name); } } @@ -1706,14 +1704,12 @@ !strstart(sym_name, "__op_param", NULL) && !strstart(sym_name, "__op_jmp", NULL) && !strstart(sym_name, "__op_gen_label", NULL)) { -#if defined(HOST_SPARC) if (sym_name[0] == '.') { fprintf(outfile, "extern char __dot_%s __asm__(\"%s\");\n", sym_name+1, sym_name); continue; } -#endif #if defined(__APPLE__) /* set __attribute((unused)) on darwin because we wan't to avoid warning when we don't use the symbol */ fprintf(outfile, "extern char %s __attribute__((unused));\n", sym_name); Only in qemu-0.9.0: dyngen.c.rej