summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cgaas.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/cgaas.c b/cgaas.c
index 822fabb..556f82a 100644
--- a/cgaas.c
+++ b/cgaas.c
@@ -2401,12 +2401,18 @@ static void as_jmp_instruction (struct instruction *instruction)
as_branch_label (instruction->instruction_parameters[0].parameter_data.l,JUMP_RELOCATION);
break;
case P_INDIRECT:
- if (instruction->instruction_parameters[0].parameter_offset!=0){
+#ifndef MACH_O64
+ if (
+# ifdef LINUX
+ !pic_flag &&
+# endif
+ instruction->instruction_parameters[0].parameter_offset!=0){
as_id_r (0x63,instruction->instruction_parameters[0].parameter_offset,
instruction->instruction_parameters[0].parameter_data.reg.r,REGISTER_O0); /* movsxd */
store_c (0377);
store_c (0340 | reg_num (REGISTER_O0));
} else
+#endif
as_id_rex (0377,040,instruction->instruction_parameters[0].parameter_offset,
instruction->instruction_parameters[0].parameter_data.reg.r);
break;