diff options
author | John van Groningen | 2011-02-03 14:37:44 +0000 |
---|---|---|
committer | John van Groningen | 2011-02-03 14:37:44 +0000 |
commit | 43646d288bd5ef3ad7d96f66ad4e20e72aded5b7 (patch) | |
tree | 6ff68c67ffdc95062b966355d5da0e0de98c74a6 | |
parent | add makefile for Mac OS X (AMD64) (diff) |
port stack tracing to Mac OS X (AMD64)
-rw-r--r-- | cgawas.c | 13 | ||||
-rw-r--r-- | cgcode.c | 6 |
2 files changed, 16 insertions, 3 deletions
@@ -3939,6 +3939,9 @@ static void w_as_import_labels (struct label_node *label_node) static void w_as_profile_call (struct basic_block *block) { +#ifdef MACH_O64 + w_as_lea_descriptor (block->block_profile_function_label,0,REGISTER_O0); +#else w_as_opcode_movl(); if (intel_asm) w_as_scratch_register_comma(); @@ -3946,7 +3949,7 @@ static void w_as_profile_call (struct basic_block *block) if (!intel_asm) w_as_comma_scratch_register(); w_as_newline(); - +#endif w_as_opcode ("call"); if (block->block_n_node_arguments>-100) @@ -4114,6 +4117,9 @@ void write_assembly (VOID) intel_syntax(); #endif } else { +#ifdef MACH_O64 + w_as_lea_descriptor (block->block_profile_function_label,0,REGISTER_A4); +#else w_as_opcode_movl(); if (intel_asm) w_as_register_comma (REGISTER_A4); @@ -4121,7 +4127,7 @@ void write_assembly (VOID) if (!intel_asm) w_as_comma_register (REGISTER_A4); w_as_newline(); - +#endif w_as_opcode ("jmp"); w_as_label (eval_upd_labels[n_node_arguments]->label_name); fprintf (assembly_file,"-8"); @@ -4131,6 +4137,9 @@ void write_assembly (VOID) if (intel_asm) w_as_register_comma (REGISTER_D0); w_as_label (block->block_ea_label->label_name); +#ifdef MACH_O64 + fprintf (assembly_file,"%s",intel_asm ? "[rip]" : "(%rip)"); +#endif if (!intel_asm) w_as_comma_register (REGISTER_D0); w_as_newline(); @@ -3860,7 +3860,11 @@ static void code_jmp_ap_ (int n_apply_args) i_move_id_r (0,REGISTER_A1,REGISTER_A2); # ifdef PROFILE if (profile_function_label!=NULL) - i_jmp_id_profile (4-2,REGISTER_A2,0); +# ifdef MACH_O64 + i_jmp_id_profile (8-2,REGISTER_A2,0); +# else + i_jmp_id_profile (4-2,REGISTER_A2,0); +# endif else # endif # ifdef MACH_O64 |