diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2017-11-12 21:00:45 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2017-11-12 21:00:45 (GMT) |
commit | 332da5c182e576400a0b1e2ae62c2b990a5e52f1 (patch) | |
tree | ca25811f8c2abaae8d835554d38d243c946fbe96 /plugins/elf/python | |
parent | 7591f34e7e9d5dd0f20d242394628ab4bcd0a430 (diff) |
Updated the list of tags for ELF dynamic entries.
Diffstat (limited to 'plugins/elf/python')
-rw-r--r-- | plugins/elf/python/Makefile.am | 1 | ||||
-rw-r--r-- | plugins/elf/python/constants.c | 384 | ||||
-rw-r--r-- | plugins/elf/python/constants.h | 39 | ||||
-rw-r--r-- | plugins/elf/python/format.c | 4 |
4 files changed, 428 insertions, 0 deletions
diff --git a/plugins/elf/python/Makefile.am b/plugins/elf/python/Makefile.am index c39d170..91e86f0 100644 --- a/plugins/elf/python/Makefile.am +++ b/plugins/elf/python/Makefile.am @@ -2,6 +2,7 @@ noinst_LTLIBRARIES = libelfpython.la libelfpython_la_SOURCES = \ + constants.h constants.c \ format.h format.c \ module.h module.c diff --git a/plugins/elf/python/constants.c b/plugins/elf/python/constants.c new file mode 100644 index 0000000..91c07ee --- /dev/null +++ b/plugins/elf/python/constants.c @@ -0,0 +1,384 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * constants.c - équivalent Python partiel du fichier "plugins/elf/elf_def.h" + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide 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. + * + * Chrysalide 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 this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +#include "constants.h" + + +#include <plugins/pychrysa/helpers.h> + + +#include "../elf_def.h" + + + +/* Définit les constantes communes pour le format Elf. */ +static bool define_python_binary_format_common_constants(PyTypeObject *); + + +/****************************************************************************** +* * +* Paramètres : obj_type = type dont le dictionnaire est à compléter. * +* * +* Description : Définit les constantes communes pour le format Elf. * +* * +* Retour : true en cas de succès de l'opération, false sinon. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static bool define_python_binary_format_common_constants(PyTypeObject *obj_type) +{ + bool result; /* Bilan à retourner */ + + result = true; + + /** + * En-tête de fichier ELF (32 et 64 bits) + */ + + if (result) result = PyDict_AddIntMacro(obj_type, EI_NIDENT); + + /* Composition du champ e_ident */ + + if (result) result = PyDict_AddIntMacro(obj_type, EI_CLASS); + if (result) result = PyDict_AddIntMacro(obj_type, EI_DATA); + if (result) result = PyDict_AddIntMacro(obj_type, EI_VERSION); + if (result) result = PyDict_AddIntMacro(obj_type, EI_OSABI); + + /* ... EI_CLASS */ + + if (result) result = PyDict_AddIntMacro(obj_type, ELFCLASSNONE); + if (result) result = PyDict_AddIntMacro(obj_type, ELFCLASS32); + if (result) result = PyDict_AddIntMacro(obj_type, ELFCLASS64); + + /* ... EI_DATA */ + + if (result) result = PyDict_AddIntMacro(obj_type, ELFDATANONE); + if (result) result = PyDict_AddIntMacro(obj_type, ELFDATA2LSB); + if (result) result = PyDict_AddIntMacro(obj_type, ELFDATA2MSB); + + /* ... EI_VERSION */ + + if (result) result = PyDict_AddIntMacro(obj_type, EV_NONE); + if (result) result = PyDict_AddIntMacro(obj_type, EV_CURRENT); + + /* ... EI_OSABI */ + + if (result) result = PyDict_AddIntMacro(obj_type, ELFOSABI_NONE); + if (result) result = PyDict_AddIntMacro(obj_type, ELFOSABI_SYSV); + if (result) result = PyDict_AddIntMacro(obj_type, ELFOSABI_HPUX); + if (result) result = PyDict_AddIntMacro(obj_type, ELFOSABI_NETBSD); + if (result) result = PyDict_AddIntMacro(obj_type, ELFOSABI_GNU); + if (result) result = PyDict_AddIntMacro(obj_type, ELFOSABI_LINUX); + if (result) result = PyDict_AddIntMacro(obj_type, ELFOSABI_SOLARIS); + if (result) result = PyDict_AddIntMacro(obj_type, ELFOSABI_AIX); + if (result) result = PyDict_AddIntMacro(obj_type, ELFOSABI_IRIX); + if (result) result = PyDict_AddIntMacro(obj_type, ELFOSABI_FREEBSD); + if (result) result = PyDict_AddIntMacro(obj_type, ELFOSABI_TRU64); + if (result) result = PyDict_AddIntMacro(obj_type, ELFOSABI_MODESTO); + if (result) result = PyDict_AddIntMacro(obj_type, ELFOSABI_OPENBSD); + if (result) result = PyDict_AddIntMacro(obj_type, ELFOSABI_ARM_AEABI); + if (result) result = PyDict_AddIntMacro(obj_type, ELFOSABI_ARM); + if (result) result = PyDict_AddIntMacro(obj_type, ELFOSABI_STANDALONE); + + /* Valeurs possibles pour e_type */ + + if (result) result = PyDict_AddIntMacro(obj_type, ET_NONE); + if (result) result = PyDict_AddIntMacro(obj_type, ET_REL); + if (result) result = PyDict_AddIntMacro(obj_type, ET_EXEC); + if (result) result = PyDict_AddIntMacro(obj_type, ET_DYN); + if (result) result = PyDict_AddIntMacro(obj_type, ET_CORE); + if (result) result = PyDict_AddIntMacro(obj_type, ET_LOOS); + if (result) result = PyDict_AddIntMacro(obj_type, ET_HIOS); + if (result) result = PyDict_AddIntMacro(obj_type, ET_LOPROC); + if (result) result = PyDict_AddIntMacro(obj_type, ET_HIPROC); + + /* Valeurs possibles pour e_machine */ + + if (result) result = PyDict_AddIntMacro(obj_type, EM_NONE); + if (result) result = PyDict_AddIntMacro(obj_type, EM_M32); + if (result) result = PyDict_AddIntMacro(obj_type, EM_SPARC); + if (result) result = PyDict_AddIntMacro(obj_type, EM_386); + if (result) result = PyDict_AddIntMacro(obj_type, EM_68K); + if (result) result = PyDict_AddIntMacro(obj_type, EM_88K); + if (result) result = PyDict_AddIntMacro(obj_type, EM_860); + if (result) result = PyDict_AddIntMacro(obj_type, EM_MIPS); + if (result) result = PyDict_AddIntMacro(obj_type, EM_S370); + if (result) result = PyDict_AddIntMacro(obj_type, EM_MIPS_RS3_LE); + if (result) result = PyDict_AddIntMacro(obj_type, EM_PARISC); + if (result) result = PyDict_AddIntMacro(obj_type, EM_VPP500); + if (result) result = PyDict_AddIntMacro(obj_type, EM_SPARC32PLUS); + if (result) result = PyDict_AddIntMacro(obj_type, EM_960); + if (result) result = PyDict_AddIntMacro(obj_type, EM_PPC); + if (result) result = PyDict_AddIntMacro(obj_type, EM_PPC64); + if (result) result = PyDict_AddIntMacro(obj_type, EM_S390); + if (result) result = PyDict_AddIntMacro(obj_type, EM_V800); + if (result) result = PyDict_AddIntMacro(obj_type, EM_FR20); + if (result) result = PyDict_AddIntMacro(obj_type, EM_RH32); + if (result) result = PyDict_AddIntMacro(obj_type, EM_RCE); + if (result) result = PyDict_AddIntMacro(obj_type, EM_ARM); + if (result) result = PyDict_AddIntMacro(obj_type, EM_FAKE_ALPHA); + if (result) result = PyDict_AddIntMacro(obj_type, EM_SH); + if (result) result = PyDict_AddIntMacro(obj_type, EM_SPARCV9); + if (result) result = PyDict_AddIntMacro(obj_type, EM_TRICORE); + if (result) result = PyDict_AddIntMacro(obj_type, EM_ARC); + if (result) result = PyDict_AddIntMacro(obj_type, EM_H8_300); + if (result) result = PyDict_AddIntMacro(obj_type, EM_H8_300H); + if (result) result = PyDict_AddIntMacro(obj_type, EM_H8S); + if (result) result = PyDict_AddIntMacro(obj_type, EM_H8_500); + if (result) result = PyDict_AddIntMacro(obj_type, EM_IA_64); + if (result) result = PyDict_AddIntMacro(obj_type, EM_MIPS_X); + if (result) result = PyDict_AddIntMacro(obj_type, EM_COLDFIRE); + if (result) result = PyDict_AddIntMacro(obj_type, EM_68HC12); + if (result) result = PyDict_AddIntMacro(obj_type, EM_MMA); + if (result) result = PyDict_AddIntMacro(obj_type, EM_PCP); + if (result) result = PyDict_AddIntMacro(obj_type, EM_NCPU); + if (result) result = PyDict_AddIntMacro(obj_type, EM_NDR1); + if (result) result = PyDict_AddIntMacro(obj_type, EM_STARCORE); + if (result) result = PyDict_AddIntMacro(obj_type, EM_ME16); + if (result) result = PyDict_AddIntMacro(obj_type, EM_ST100); + if (result) result = PyDict_AddIntMacro(obj_type, EM_TINYJ); + if (result) result = PyDict_AddIntMacro(obj_type, EM_X86_64); + if (result) result = PyDict_AddIntMacro(obj_type, EM_PDSP); + if (result) result = PyDict_AddIntMacro(obj_type, EM_FX66); + if (result) result = PyDict_AddIntMacro(obj_type, EM_ST9PLUS); + if (result) result = PyDict_AddIntMacro(obj_type, EM_ST7); + if (result) result = PyDict_AddIntMacro(obj_type, EM_68HC16); + if (result) result = PyDict_AddIntMacro(obj_type, EM_68HC11); + if (result) result = PyDict_AddIntMacro(obj_type, EM_68HC08); + if (result) result = PyDict_AddIntMacro(obj_type, EM_68HC05); + if (result) result = PyDict_AddIntMacro(obj_type, EM_SVX); + if (result) result = PyDict_AddIntMacro(obj_type, EM_ST19); + if (result) result = PyDict_AddIntMacro(obj_type, EM_VAX); + if (result) result = PyDict_AddIntMacro(obj_type, EM_CRIS); + if (result) result = PyDict_AddIntMacro(obj_type, EM_JAVELIN); + if (result) result = PyDict_AddIntMacro(obj_type, EM_FIREPATH); + if (result) result = PyDict_AddIntMacro(obj_type, EM_ZSP); + if (result) result = PyDict_AddIntMacro(obj_type, EM_MMIX); + if (result) result = PyDict_AddIntMacro(obj_type, EM_HUANY); + if (result) result = PyDict_AddIntMacro(obj_type, EM_PRISM); + if (result) result = PyDict_AddIntMacro(obj_type, EM_AVR); + if (result) result = PyDict_AddIntMacro(obj_type, EM_FR30); + if (result) result = PyDict_AddIntMacro(obj_type, EM_D10V); + if (result) result = PyDict_AddIntMacro(obj_type, EM_D30V); + if (result) result = PyDict_AddIntMacro(obj_type, EM_V850); + if (result) result = PyDict_AddIntMacro(obj_type, EM_M32R); + if (result) result = PyDict_AddIntMacro(obj_type, EM_MN10300); + if (result) result = PyDict_AddIntMacro(obj_type, EM_MN10200); + if (result) result = PyDict_AddIntMacro(obj_type, EM_PJ); + if (result) result = PyDict_AddIntMacro(obj_type, EM_OPENRISC); + if (result) result = PyDict_AddIntMacro(obj_type, EM_ARC_A5); + if (result) result = PyDict_AddIntMacro(obj_type, EM_XTENSA); + if (result) result = PyDict_AddIntMacro(obj_type, EM_AARCH64); + if (result) result = PyDict_AddIntMacro(obj_type, EM_TILEPRO); + if (result) result = PyDict_AddIntMacro(obj_type, EM_MICROBLAZE); + if (result) result = PyDict_AddIntMacro(obj_type, EM_TILEGX); + + /** + * En-tête des programmes Elf + */ + + /* Valeurs possibles pour p_type */ + + if (result) result = PyDict_AddIntMacro(obj_type, PT_NULL); + if (result) result = PyDict_AddIntMacro(obj_type, PT_LOAD); + if (result) result = PyDict_AddIntMacro(obj_type, PT_DYNAMIC); + if (result) result = PyDict_AddIntMacro(obj_type, PT_INTERP); + if (result) result = PyDict_AddIntMacro(obj_type, PT_NOTE); + if (result) result = PyDict_AddIntMacro(obj_type, PT_SHLIB); + if (result) result = PyDict_AddIntMacro(obj_type, PT_PHDR); + if (result) result = PyDict_AddIntMacro(obj_type, PT_TLS); + if (result) result = PyDict_AddIntMacro(obj_type, PT_NUM); + if (result) result = PyDict_AddIntMacro(obj_type, PT_LOOS); + if (result) result = PyDict_AddIntMacro(obj_type, PT_GNU_EH_FRAME); + if (result) result = PyDict_AddIntMacro(obj_type, PT_GNU_STACK); + if (result) result = PyDict_AddIntMacro(obj_type, PT_GNU_RELRO); + if (result) result = PyDict_AddIntMacro(obj_type, PT_LOSUNW); + if (result) result = PyDict_AddIntMacro(obj_type, PT_SUNWBSS); + if (result) result = PyDict_AddIntMacro(obj_type, PT_SUNWSTACK); + if (result) result = PyDict_AddIntMacro(obj_type, PT_HISUNW); + if (result) result = PyDict_AddIntMacro(obj_type, PT_HIOS); + if (result) result = PyDict_AddIntMacro(obj_type, PT_LOPROC); + if (result) result = PyDict_AddIntMacro(obj_type, PT_HIPROC); + + /* Valeurs possibles pour p_flags */ + + if (result) result = PyDict_AddIntMacro(obj_type, PF_X); + if (result) result = PyDict_AddIntMacro(obj_type, PF_W); + if (result) result = PyDict_AddIntMacro(obj_type, PF_R); + if (result) result = PyDict_AddIntMacro(obj_type, PF_MASKOS); + if (result) result = PyDict_AddIntMacro(obj_type, PF_MASKPROC); + + /** + * En-tête des sections Elf + */ + + /* Valeurs possibles pour sh_type */ + + if (result) result = PyDict_AddIntMacro(obj_type, SHT_NULL); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_PROGBITS); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_SYMTAB); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_STRTAB); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_RELA); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_HASH); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_DYNAMIC); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_NOTE); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_NOBITS); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_REL); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_SHLIB); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_DYNSYM); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_INIT_ARRAY); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_FINI_ARRAY); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_PREINIT_ARRAY); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_GROUP); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_SYMTAB_SHNDX); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_NUM); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_LOOS); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_GNU_ATTRIBUTES); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_GNU_HASH); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_GNU_LIBLIST); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_CHECKSUM); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_LOSUNW); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_SUNW_move); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_SUNW_COMDAT); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_SUNW_syminfo); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_GNU_verdef); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_GNU_verneed); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_GNU_versym); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_HISUNW); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_HIOS); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_LOPROC); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_HIPROC); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_LOUSER); + if (result) result = PyDict_AddIntMacro(obj_type, SHT_HIUSER); + + /* Valeurs possibles pour sh_flags */ + + if (result) result = PyDict_AddIntMacro(obj_type, SHF_WRITE); + if (result) result = PyDict_AddIntMacro(obj_type, SHF_ALLOC); + if (result) result = PyDict_AddIntMacro(obj_type, SHF_EXECINSTR); + if (result) result = PyDict_AddIntMacro(obj_type, SHF_MERGE); + if (result) result = PyDict_AddIntMacro(obj_type, SHF_STRINGS); + if (result) result = PyDict_AddIntMacro(obj_type, SHF_INFO_LINK); + if (result) result = PyDict_AddIntMacro(obj_type, SHF_LINK_ORDER); + if (result) result = PyDict_AddIntMacro(obj_type, SHF_OS_NONCONFORMING); + if (result) result = PyDict_AddIntMacro(obj_type, SHF_GROUP); + if (result) result = PyDict_AddIntMacro(obj_type, SHF_TLS); + if (result) result = PyDict_AddIntMacro(obj_type, SHF_MASKOS); + if (result) result = PyDict_AddIntMacro(obj_type, SHF_MASKPROC); + if (result) result = PyDict_AddIntMacro(obj_type, SHF_ORDERED); + if (result) result = PyDict_AddIntMacro(obj_type, SHF_EXCLUDE); + + /** + * Données pour le linker + */ + + /* Valeurs possibles pour d_tag */ + + if (result) result = PyDict_AddIntMacro(obj_type, DT_NULL); + if (result) result = PyDict_AddIntMacro(obj_type, DT_NEEDED); + if (result) result = PyDict_AddIntMacro(obj_type, DT_PLTRELSZ); + if (result) result = PyDict_AddIntMacro(obj_type, DT_PLTGOT); + if (result) result = PyDict_AddIntMacro(obj_type, DT_HASH); + if (result) result = PyDict_AddIntMacro(obj_type, DT_STRTAB); + if (result) result = PyDict_AddIntMacro(obj_type, DT_SYMTAB); + if (result) result = PyDict_AddIntMacro(obj_type, DT_RELA); + if (result) result = PyDict_AddIntMacro(obj_type, DT_RELASZ); + if (result) result = PyDict_AddIntMacro(obj_type, DT_RELAENT); + if (result) result = PyDict_AddIntMacro(obj_type, DT_STRSZ); + if (result) result = PyDict_AddIntMacro(obj_type, DT_SYMENT); + if (result) result = PyDict_AddIntMacro(obj_type, DT_INIT); + if (result) result = PyDict_AddIntMacro(obj_type, DT_FINI); + if (result) result = PyDict_AddIntMacro(obj_type, DT_SONAME); + if (result) result = PyDict_AddIntMacro(obj_type, DT_RPATH); + if (result) result = PyDict_AddIntMacro(obj_type, DT_SYMBOLIC); + if (result) result = PyDict_AddIntMacro(obj_type, DT_REL); + if (result) result = PyDict_AddIntMacro(obj_type, DT_RELSZ); + if (result) result = PyDict_AddIntMacro(obj_type, DT_RELENT); + if (result) result = PyDict_AddIntMacro(obj_type, DT_PLTREL); + if (result) result = PyDict_AddIntMacro(obj_type, DT_DEBUG); + if (result) result = PyDict_AddIntMacro(obj_type, DT_TEXTREL); + if (result) result = PyDict_AddIntMacro(obj_type, DT_JMPREL); + if (result) result = PyDict_AddIntMacro(obj_type, DT_BIND_NOW); + if (result) result = PyDict_AddIntMacro(obj_type, DT_INIT_ARRAY); + if (result) result = PyDict_AddIntMacro(obj_type, DT_FINI_ARRAY); + if (result) result = PyDict_AddIntMacro(obj_type, DT_INIT_ARRAYSZ); + if (result) result = PyDict_AddIntMacro(obj_type, DT_FINI_ARRAYSZ); + if (result) result = PyDict_AddIntMacro(obj_type, DT_RUNPATH); + if (result) result = PyDict_AddIntMacro(obj_type, DT_FLAGS); + if (result) result = PyDict_AddIntMacro(obj_type, DT_ENCODING); + if (result) result = PyDict_AddIntMacro(obj_type, DT_PREINIT_ARRAY); + if (result) result = PyDict_AddIntMacro(obj_type, DT_PREINIT_ARRAYSZ); + if (result) result = PyDict_AddIntMacro(obj_type, DT_NUM); + + /** + * Symboles de binaires Elf + */ + + /* Valeurs pour le sous-champ ST_TYPE de st_info */ + + if (result) result = PyDict_AddIntMacro(obj_type, STT_NOTYPE); + if (result) result = PyDict_AddIntMacro(obj_type, STT_OBJECT); + if (result) result = PyDict_AddIntMacro(obj_type, STT_FUNC); + + /** + * Informations de relocalisation + */ + + /* Type de relocalisation (x86) */ + + if (result) result = PyDict_AddIntMacro(obj_type, R_386_NONE); + if (result) result = PyDict_AddIntMacro(obj_type, R_386_JMP_SLOT); + + /* Type de relocalisation (ARM) */ + + if (result) result = PyDict_AddIntMacro(obj_type, R_ARM_JUMP_SLOT); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : obj_type = type dont le dictionnaire est à compléter. * +* * +* Description : Définit les constantes pour le format Elf. * +* * +* Retour : true en cas de succès de l'opération, false sinon. * +* * +* Remarques : - * +* * +******************************************************************************/ + +bool define_python_binary_format_constants(PyTypeObject *obj_type) +{ + bool result; /* Bilan à retourner */ + + result = define_python_binary_format_common_constants(obj_type); + + return result; + +} diff --git a/plugins/elf/python/constants.h b/plugins/elf/python/constants.h new file mode 100644 index 0000000..95b840c --- /dev/null +++ b/plugins/elf/python/constants.h @@ -0,0 +1,39 @@ + +/* Chrysalide - Outil d'analyse de fichiers binaires + * constants.h - prototypes pour l'équivalent Python partiel du fichier "plugins/elf/elf_def.h" + * + * Copyright (C) 2017 Cyrille Bagard + * + * This file is part of Chrysalide. + * + * Chrysalide 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. + * + * Chrysalide 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 this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +#ifndef _PLUGINS_ELF_PYTHON_CONSTANTS_H +#define _PLUGINS_ELF_PYTHON_CONSTANTS_H + + +#include <Python.h> +#include <stdbool.h> + + + +/* Définit les constantes pour le format Elf. */ +bool define_python_binary_format_constants(PyTypeObject *); + + + +#endif /* _PLUGINS_ELF_PYTHON_CONSTANTS_H */ diff --git a/plugins/elf/python/format.c b/plugins/elf/python/format.c index 84aa68c..1ff22bd 100644 --- a/plugins/elf/python/format.c +++ b/plugins/elf/python/format.c @@ -36,6 +36,7 @@ #include <plugins/pychrysa/format/executable.h> +#include "constants.h" #include "../format.h" @@ -193,6 +194,9 @@ bool register_python_elf_format(PyObject *module) py_elf_format_type, get_python_executable_format_type())) return false; + if (!define_python_binary_format_constants(py_elf_format_type)) + return false; + return true; } |