package binsec
 sectionYPositions = computeSectionYPositions($el), 10)"
  x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
  >
  
  
  Semantic analysis of binary executables
Install
    
    dune-project
 Dependency
Authors
- 
  
    
    AAdel Djoudi
- 
  
    
    BBenjamin Farinier
- 
  
    
    CChakib Foulani
- 
  
    
    DDorian Lesbre
- 
  
    
    FFrédéric Recoules
- 
  
    
    GGuillaume Girol
- 
  
    
    JJosselin Feist
- 
  
    
    LLesly-Ann Daniel
- 
  
    
    MManh-Dung Nguyen
- 
  
    
    MMathéo Vergnolle
- 
  
    
    MMathilde Ollivier
- 
  
    
    MMatthieu Lemerre
- 
  
    
    OOlivier Nicole
- 
  
    
    RRichard Bonichon
- 
  
    
    RRobin David
- 
  
    
    SSébastien Bardin
- 
  
    
    SSoline Ducousso
- 
  
    
    TTa Thanh Dinh
- 
  
    
    YYaëlle Vinçont
Maintainers
Sources
  
    
      binsec-0.8.2.tbz
    
    
        
    
  
  
  
    
  
  
    
  
        sha256=b8e7b9c756245656c481e992549fb7b1864ee6eeb492e16488e7a9d962d39cdb
    
    
  sha512=07a5e4105e5275751fcc6832743f5f9eedc72bd061273ec54c4466135032852120df3784ba571656c788e5f3cd971aad8a53f030336a364e77e940e26dff38d7
    
    
  doc/src/binsec.sse/heuristic.ml.html
Source file heuristic.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79(**************************************************************************) (* This file is part of BINSEC. *) (* *) (* Copyright (C) 2016-2024 *) (* 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). *) (* *) (**************************************************************************) open Types module Dfs : WORKLIST = struct type 'a t = 'a list let empty = [] let is_empty = function [] -> true | _ -> false let push e w = e :: w let singleton e = [ e ] let pop = function e :: w -> (e, w) | [] -> raise Not_found let length = List.length end module Bfs : WORKLIST = struct type 'a t = 'a Sequence.t let length = Sequence.length let is_empty q = Sequence.length q = 0 let empty = Sequence.empty let push p q = Sequence.push_back p q let pop q = match Sequence.peek_front q with | None -> raise Not_found | Some v -> ( match Sequence.pop_front q with | None -> assert false | Some seq -> (v, seq)) let singleton p = push p empty end module Nurs : WORKLIST = struct (* This is actually a fairly classical heap. The priority added to the date is just generated at random. *) module I = Basic_types.Int.Map type 'a t = 'a I.t let rec gen_priority t = let p = Utils.random_max_int () in if I.mem p t then gen_priority t else p let length = I.cardinal let is_empty = I.is_empty let empty = I.empty let push e t = let p = gen_priority t in I.add p e t let pop t = let (_, e), t' = I.pop t in (e, t') let singleton p = push p empty end
 sectionYPositions = computeSectionYPositions($el), 10)"
  x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
  >