/* Chrysalide - Outil d'analyse de fichiers binaires * leb128.h - prototypes pour le support des valeurs encodées au format LEB128. * * Copyright (C) 2010-2012 Cyrille Bagard * * This file is part of Chrysalide. * * OpenIDA is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * OpenIDA 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Foobar. If not, see . */ #ifndef _COMMON_LEB128_H #define _COMMON_LEB128_H #include #include #include "../arch/archbase.h" /* Nouveaux types */ typedef uint64_t uleb128_t; typedef int64_t leb128_t; /* Récupération de la valeur absolue */ #define leb128_abs(v) llabs(v) /* Valeurs minimales et maximales */ #define ULEB128_MIN UINT64_MIN #define ULEB128_MAX UINT64_MAX #define LEB128_MIN INT64_MIN #define LEB128_MAX INT64_MAX /* Lit un nombre non signé encodé au format LEB128. */ bool read_uleb128(uleb128_t *, const bin_t *, off_t *, off_t); /* Lit un nombre signé encodé au format LEB128. */ bool read_leb128(leb128_t *, const bin_t *, off_t *, off_t); #endif /* _COMMON_LEB128_H */