1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859(**************************************************************************)(* This file is part of BINSEC. *)(* *)(* Copyright (C) 2016-2026 *)(* CEA (Commissariat à l'énergie atomique et aux énergies *)(* alternatives) *)(* *)(* you can redistribute it and/or modify it under the terms of the GNU *)(* Lesser General Public License as published by the Free Software *)(* Foundation, version 2.1. *)(* *)(* It is distributed in the hope that it will be useful, *)(* but WITHOUT ANY WARRANTY; without even the implied warranty of *)(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *)(* GNU Lesser General Public License for more details. *)(* *)(* See the GNU Lesser General Public License version 2.1 *)(* for more details (enclosed in the file licenses/LGPLv2.1). *)(* *)(**************************************************************************)openKernel_options(* we can't use the option framework yet, as options have not been parsed yet. *)letconfig_file=refNonelet_=letlen=Array.lengthSys.argvinletrecloopi=ifi<lenthenifSys.argv.(i)="-config"then(letconfig_filename=Sys.argv.(i+1)in(* for other parts of the code to read after option parsing *)Kernel_options.Config_file.setconfig_filename;(* for us *)config_file:=Someconfig_filename)elseloop(i+1)inloop0letread_configuration_file()=match!config_filewith|None->()(* Maybe_TODO : Use default file ? *)|Somefilename->ignore@@Cli.parse_configuration_file~filenameletbinary_descr()=ifDescribe_binary.get()&&ExecFile.is_set()thenLogger.result"@]@\n@[<v>%a"Kernel_functions.Loader.pp_loader_summary(ExecFile.get())letversion()=ifVersion.get()then(Logger.set_log_level"result";Format.printf"Binsec version 0.11.1\n";exit0)let_=Cli.Boot.enlist~name:"binary description"~f:binary_descr;Cli.Boot.enlist~name:"version description"~f:version