    let ms_struct_name = mk_ms_struct_name fd.Ast.fname in
    let declare_ms_ptr = sprintf "%s* %s = SGX_CAST(%s*, %s);"
                                 ms_struct_name
-@@ -1372,7 +1454,7 @@
+@@ -741,6 +831,7 @@
+ (* Generate untrusted proxy code for a given trusted function. *)
+ let gen_func_uproxy (tf: Ast.trusted_func) (idx: int) (ec: enclave_content) =
+   let fd = tf.Ast.tf_fdecl in
++  let is_utility = tf.Ast.tf_is_utility in
+   let func_open  =
+     gen_uproxy_com_proto fd ec.enclave_name ^
+       "\n{\n\tsgx_status_t status;\n"
+@@ -754,8 +845,8 @@
+   let sgx_ecall_fn = get_sgx_fname SGX_ECALL tf.Ast.tf_is_switchless in
+ 
+   (* Normal case - do ECALL with marshaling structure*)
+-  let ecall_with_ms = sprintf "status = %s(%s, %d, %s, &%s);"
+-                              sgx_ecall_fn eid_name idx ocall_table_ptr ms_struct_val in
++  let ecall_with_ms = sprintf "status = %s(%s, %d, %s, &%s, %s);"
++                              sgx_ecall_fn eid_name idx ocall_table_ptr ms_struct_val (if is_utility then "true" else "false") in
+ 
+   (* Rare case - the trusted function doesn't have parameter nor return value.
+    * In this situation, no marshaling structure is required - passing in NULL.
+@@ -1372,7 +1463,7 @@
       List.fold_left (fun acc s -> acc ^ s) s2 do_gen_ocalloc_block
  
  (* Generate trusted proxy code for a given untrusted function. *)

       tfunc_decls  = List.rev !ac_tfunc_decls;
       ufunc_decls  = List.rev !ac_ufunc_decls; }
 
@@ -347,6 +358,62 @@
       | Ast.UnionDef  u -> mk_union_decl  (gen_member_list u.Ast.mlist) u.Ast.sname
       | Ast.EnumDef   e -> mk_enum_def    e
 

         | Ast.Include   x -> ac_include_list := x :: !ac_include_list
         | Ast.Importing x -> ac_import_exprs := x :: !ac_import_exprs
         | Ast.Interface xs ->
@@ -138,6 +154,7 @@
       include_list = List.rev !ac_include_list;
       import_exprs = List.rev !ac_import_exprs;
       comp_defs    = List.rev !ac_comp_defs;
