Commit 039de852 authored by bellard's avatar bellard
Browse files

fixed op_label computation on ppc


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@248 c046a42c-6fe2-441c-8c8c-71466251a162
parent 144c345d
...@@ -654,7 +654,6 @@ void gen_code(const char *name, host_ulong offset, host_ulong size, ...@@ -654,7 +654,6 @@ void gen_code(const char *name, host_ulong offset, host_ulong size,
sym_name = strtab + sym->st_name; sym_name = strtab + sym->st_name;
if (strstart(sym_name, "__op_label", &p)) { if (strstart(sym_name, "__op_label", &p)) {
uint8_t *ptr; uint8_t *ptr;
int addend;
unsigned long offset; unsigned long offset;
/* test if the variable refers to a label inside /* test if the variable refers to a label inside
...@@ -663,7 +662,7 @@ void gen_code(const char *name, host_ulong offset, host_ulong size, ...@@ -663,7 +662,7 @@ void gen_code(const char *name, host_ulong offset, host_ulong size,
if (!ptr) if (!ptr)
error("__op_labelN in invalid section"); error("__op_labelN in invalid section");
offset = sym->st_value; offset = sym->st_value;
addend = 0; val = *(target_ulong *)(ptr + offset);
#ifdef ELF_USES_RELOCA #ifdef ELF_USES_RELOCA
{ {
int reloc_shndx, nb_relocs1, j; int reloc_shndx, nb_relocs1, j;
...@@ -676,7 +675,7 @@ void gen_code(const char *name, host_ulong offset, host_ulong size, ...@@ -676,7 +675,7 @@ void gen_code(const char *name, host_ulong offset, host_ulong size,
rel = (ELF_RELOC *)sdata[reloc_shndx]; rel = (ELF_RELOC *)sdata[reloc_shndx];
for(j = 0; j < nb_relocs1; j++) { for(j = 0; j < nb_relocs1; j++) {
if (rel->r_offset == offset) { if (rel->r_offset == offset) {
addend = rel->r_addend; val = rel->r_addend;
break; break;
} }
rel++; rel++;
...@@ -684,8 +683,6 @@ void gen_code(const char *name, host_ulong offset, host_ulong size, ...@@ -684,8 +683,6 @@ void gen_code(const char *name, host_ulong offset, host_ulong size,
} }
} }
#endif #endif
val = *(target_ulong *)(ptr + offset);
val += addend;
if (val >= start_offset && val < start_offset + copy_size) { if (val >= start_offset && val < start_offset + copy_size) {
n = strtol(p, NULL, 10); n = strtol(p, NULL, 10);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment