let process_global_init wenv kf obj =
    if WpStrategy.is_main_init kf then
      List.fold_left
        (fun obj global ->
           match global with
             | GVar (var, initinfo, loc) ->
                 if var.vstorage = Extern then obj
                 else
                   let old_loc = Cil.CurrentLoc.get () in
                   Cil.CurrentLoc.set loc ;
                   let obj =
                     match initinfo.init with
                       | None ->
                           W.init_value
                             wenv (Var var,NoOffset) var.vtype None obj
                       | Some init ->
                           let lv = Var var, NoOffset in
                           init_global_variable wenv lv init obj
                   in Cil.CurrentLoc.set old_loc ; obj
             | _ -> obj
        ) obj (Ast.get()).globals
    else
      obj