aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbellard <bellard>2002-08-31 12:42:16 +0000
committerbellard <bellard>2002-08-31 12:42:16 +0000
commit431d64809666aedbfa41fc98a47355494aa873e2 (patch)
treee180d17a50bd4e7148d0a19cb6c10f2406ff3f15
parent6dd6a026c35b5c0904fdff4488511cecfb71bb27 (diff)
downloadtinycc-431d64809666aedbfa41fc98a47355494aa873e2.tar.gz
tinycc-431d64809666aedbfa41fc98a47355494aa873e2.tar.bz2
fixed PC32 relocation if constant address
-rw-r--r--i386-gen.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/i386-gen.c b/i386-gen.c
index 35cba2d..6f52cc8 100644
--- a/i386-gen.c
+++ b/i386-gen.c
@@ -360,10 +360,12 @@ void gfunc_call(GFuncContext *c)
/* relocation case */
greloc(cur_text_section, vtop->sym,
ind + 1, R_386_PC32);
- oad(0xe8, vtop->c.ul - 4);
} else {
- oad(0xe8, vtop->c.ul - ind - 5);
+ /* put an empty PC32 relocation */
+ put_elf_reloc(symtab_section, cur_text_section,
+ ind + 1, R_386_PC32, 0);
}
+ oad(0xe8, vtop->c.ul - 4);
} else {
/* otherwise, indirect call */
r = gv(RC_INT);