diff options
Diffstat (limited to 'x86')
-rw-r--r-- | x86/Asmexpand.ml | 8 | ||||
-rw-r--r-- | x86/Machregs.v | 2 | ||||
-rw-r--r-- | x86/TargetPrinter.ml | 16 |
3 files changed, 18 insertions, 8 deletions
diff --git a/x86/Asmexpand.ml b/x86/Asmexpand.ml index 1b716165..9927d2fb 100644 --- a/x86/Asmexpand.ml +++ b/x86/Asmexpand.ml @@ -81,8 +81,8 @@ let sp_adjustment_64 sz = (* Handling of annotations *) -let expand_annot_val txt targ args res = - emit (Pbuiltin (EF_annot(txt,[targ]), args, BR_none)); +let expand_annot_val kind txt targ args res = + emit (Pbuiltin (EF_annot(kind,txt,[targ]), args, BR_none)); match args, res with | [BA(IR src)], BR(IR dst) -> if dst <> src then emit (Pmov_rr (dst,src)) @@ -537,8 +537,8 @@ let expand_instruction instr = expand_builtin_vstore chunk args | EF_memcpy(sz, al) -> expand_builtin_memcpy (Z.to_int sz) (Z.to_int al) args - | EF_annot_val(txt, targ) -> - expand_annot_val txt targ args res + | EF_annot_val(kind,txt, targ) -> + expand_annot_val kind txt targ args res | EF_annot _ | EF_debug _ | EF_inline_asm _ -> emit instr | _ -> diff --git a/x86/Machregs.v b/x86/Machregs.v index 5d1b4515..bdf492ed 100644 --- a/x86/Machregs.v +++ b/x86/Machregs.v @@ -361,7 +361,7 @@ Definition builtin_constraints (ef: external_function) : | EF_vload _ => OK_addressing :: nil | EF_vstore _ => OK_addressing :: OK_default :: nil | EF_memcpy _ _ => OK_addrstack :: OK_addrstack :: nil - | EF_annot txt targs => map (fun _ => OK_all) targs + | EF_annot kind txt targs => map (fun _ => OK_all) targs | EF_debug kind txt targs => map (fun _ => OK_all) targs | _ => nil end. diff --git a/x86/TargetPrinter.ml b/x86/TargetPrinter.ml index d55618db..c19359fa 100644 --- a/x86/TargetPrinter.ml +++ b/x86/TargetPrinter.ml @@ -131,6 +131,7 @@ module ELF_System : SYSTEM = | Section_debug_abbrev -> ".section .debug_abbrev,\"\",@progbits" | Section_debug_ranges -> ".section .debug_ranges,\"\",@progbits" | Section_debug_str -> ".section .debug_str,\"MS\",@progbits,1" + | Section_ais_annotation -> sprintf ".section \"__compcert_ais_annotations\",\"\",@note" let stack_alignment = 16 @@ -189,6 +190,7 @@ module MacOS_System : SYSTEM = | Section_debug_str -> ".section __DWARF,__debug_str,regular,debug" | Section_debug_ranges -> ".section __DWARF,__debug_ranges,regular,debug" | Section_debug_abbrev -> ".section __DWARF,__debug_abbrev,regular,debug" + | Section_ais_annotation -> assert false (* Not supported under MacOS *) let stack_alignment = 16 (* mandatory *) @@ -264,6 +266,7 @@ module Cygwin_System : SYSTEM = | Section_debug_abbrev -> ".section .debug_abbrev,\"dr\"" | Section_debug_ranges -> ".section .debug_ranges,\"dr\"" | Section_debug_str-> assert false (* Should not be used *) + | Section_ais_annotation -> assert false (* Not supported for coff binaries *) let stack_alignment = 8 (* minimum is 4, 8 is better for perfs *) @@ -796,9 +799,16 @@ module Target(System: SYSTEM):TARGET = assert false | Pbuiltin(ef, args, res) -> begin match ef with - | EF_annot(txt, targs) -> - fprintf oc "%s annotation: %s\n" comment - (annot_text preg_annot "%esp" (camlstring_of_coqstring txt) args) + | EF_annot(kind,txt, targs) -> + let annot = + begin match (P.to_int kind) with + | 1 -> annot_text preg_annot "sp" (camlstring_of_coqstring txt) args + | 2 -> let lbl = new_label () in + fprintf oc "%a: " label lbl; + ais_annot_text lbl preg_annot "r1" (camlstring_of_coqstring txt) args + | _ -> assert false + end in + fprintf oc "%s annotation: %S\n" comment annot | EF_debug(kind, txt, targs) -> print_debug_info comment print_file_line preg_annot "%esp" oc (P.to_int kind) (extern_atom txt) args |