summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog68
-rw-r--r--Makefile.am2
-rw-r--r--configure.ac13
-rw-r--r--pixmaps/Makefile.am1
-rw-r--r--plugins/Makefile.am2
-rw-r--r--plugins/python/apkfiles/Makefile.am2
-rw-r--r--plugins/python/samples/Makefile.am2
-rw-r--r--src/analysis/disass/instructions.c4
-rw-r--r--src/analysis/disass/macro.c540
-rw-r--r--src/analysis/disass/macro.h38
-rw-r--r--src/analysis/disass/routines.c1
-rw-r--r--src/arch/Makefile.am1
-rw-r--r--src/arch/arm/Makefile.am1
-rw-r--r--src/arch/arm/v7/opcodes/Makefile.am3
-rw-r--r--src/arch/arm/v7/opdefs/Makefile.am11
-rw-r--r--src/arch/dalvik/opdefs/Makefile.am11
-rw-r--r--src/core/processors.c2
-rwxr-xr-xsrc/debug/Makefile.am1
-rw-r--r--src/format/dwarf/Makefile.am1
-rwxr-xr-xsrc/format/mangling/itanium/Makefile.am1
-rw-r--r--src/gui/dialogs/Makefile.am2
-rw-r--r--src/gui/panels/Makefile.am3
-rw-r--r--themes/Adwaita/Makefile.am2
-rw-r--r--tools/d2c/Makefile.am4
-rw-r--r--tools/d2c/args/Makefile.am3
-rw-r--r--tools/d2c/bits/Makefile.am3
-rw-r--r--tools/d2c/conv/Makefile.am3
-rw-r--r--tools/d2c/format/Makefile.am3
-rw-r--r--tools/d2c/hooks/Makefile.am3
-rw-r--r--tools/d2c/rules/Makefile.am3
-rw-r--r--tools/d2c/syntax/Makefile.am3
31 files changed, 137 insertions, 600 deletions
diff --git a/ChangeLog b/ChangeLog
index d96c0ea..9037924 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,73 @@
17-02-14 Cyrille Bagard <nocbos@gmail.com>
+ * Makefile.am:
+ Extend EXTRA_DIST.
+
+ * configure.ac:
+ Remove directories which are not included in SUBDIRS.
+
+ * pixmaps/Makefile.am:
+ Extend EXTRA_DIST.
+
+ * plugins/Makefile.am:
+ Fix SUBDIRS.
+
+ * plugins/python/apkfiles/Makefile.am:
+ * plugins/python/samples/Makefile.am:
+ Extend EXTRA_DIST.
+
+ * src/analysis/disass/instructions.c:
+ Fix included headers.
+
+ * src/analysis/disass/macro.c:
+ * src/analysis/disass/macro.h:
+ Deleted entries.
+
+ * src/analysis/disass/routines.c:
+ Fix included headers.
+
+ * src/arch/Makefile.am:
+ Remove the 'translate.h' file from libarch_la_SOURCES.
+
+ * src/arch/arm/Makefile.am:
+ Add the 'processor-int.h' file to libarcharm_la_SOURCES.
+
+ * src/arch/arm/v7/opcodes/Makefile.am:
+ * src/arch/arm/v7/opdefs/Makefile.am:
+ * src/arch/dalvik/opdefs/Makefile.am:
+ Extend EXTRA_DIST.
+
+ * src/core/processors.c:
+ Fix included headers.
+
+ * src/debug/Makefile.am:
+ Add the 'debugger-int.h' file to libdebug_la_SOURCES.
+
+ * src/format/dwarf/Makefile.am:
+ Add the 'dwarf_def.h' to libformatdwarf_la_SOURCES.
+
+ * src/format/mangling/itanium/Makefile.am:
+ Add the 'component-int.h' to libformatmanglingitanium_la_SOURCES.
+
+ * src/gui/dialogs/Makefile.am:
+ Extend EXTRA_DIST.
+
+ * src/gui/panels/Makefile.am:
+ Add the 'panel-int.h' to libguipanels_la_SOURCES. Extend EXTRA_DIST.
+
+ * themes/Adwaita/Makefile.am:
+ * tools/d2c/Makefile.am:
+ * tools/d2c/args/Makefile.am:
+ * tools/d2c/bits/Makefile.am:
+ * tools/d2c/conv/Makefile.am:
+ * tools/d2c/format/Makefile.am:
+ * tools/d2c/hooks/Makefile.am:
+ * tools/d2c/rules/Makefile.am:
+ * tools/d2c/syntax/Makefile.am:
+ Extend EXTRA_DIST.
+
+17-02-14 Cyrille Bagard <nocbos@gmail.com>
+
* src/arch/processor.c:
Fix a typo that breaks compilation if DEBUG is not defined.
diff --git a/Makefile.am b/Makefile.am
index 747cd30..0b2a436 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,5 +1,5 @@
-EXTRA_DIST = config.rpath ChangeLog
+EXTRA_DIST = config.rpath ChangeLog gettext.h i18n.h
SUBDIRS = tools pixmaps src plugins po themes
diff --git a/configure.ac b/configure.ac
index 55c2b7a..b646361 100644
--- a/configure.ac
+++ b/configure.ac
@@ -314,9 +314,7 @@ AC_CONFIG_COMMANDS([marshal], [echo -e "VOID:UINT64\nVOID:UINT64,UINT64\nVOID:IN
AC_CONFIG_FILES([Makefile
pixmaps/Makefile
plugins/Makefile
- plugins/androhelpers/Makefile
plugins/devdbg/Makefile
- plugins/govm/Makefile
plugins/libcsem/Makefile
plugins/mobicore/Makefile
plugins/pychrysa/Makefile
@@ -329,7 +327,6 @@ AC_CONFIG_FILES([Makefile
plugins/pychrysa/arch/arm/v7/Makefile
plugins/pychrysa/common/Makefile
plugins/pychrysa/core/Makefile
- plugins/pychrysa/debug/Makefile
plugins/pychrysa/format/Makefile
plugins/pychrysa/format/dex/Makefile
plugins/pychrysa/format/elf/Makefile
@@ -339,19 +336,16 @@ AC_CONFIG_FILES([Makefile
plugins/pychrysa/gui/panels/Makefile
plugins/python/Makefile
plugins/python/apkfiles/Makefile
- plugins/python/exectracer/Makefile
plugins/python/samples/Makefile
plugins/readdex/Makefile
plugins/readelf/Makefile
plugins/ropgadgets/Makefile
- plugins/stackvars/Makefile
src/Makefile
src/analysis/Makefile
src/analysis/contents/Makefile
src/analysis/db/Makefile
src/analysis/db/items/Makefile
src/analysis/db/misc/Makefile
- src/analysis/decomp/Makefile
src/analysis/disass/Makefile
src/analysis/human/Makefile
src/analysis/human/asm/Makefile
@@ -367,12 +361,7 @@ AC_CONFIG_FILES([Makefile
src/arch/dalvik/opcodes/Makefile
src/arch/dalvik/operands/Makefile
src/arch/dalvik/pseudo/Makefile
- src/arch/jvm/Makefile
- src/arch/mips/Makefile
src/arch/sharing/Makefile
- src/arch/x86/Makefile
- src/arch/x86/opcodes/Makefile
- src/arch/x86/operands/Makefile
src/common/Makefile
src/core/Makefile
src/debug/Makefile
@@ -402,9 +391,7 @@ AC_CONFIG_FILES([Makefile
src/gui/menus/Makefile
src/gui/panels/Makefile
src/gui/tb/Makefile
- src/panels/Makefile
src/plugins/Makefile
- src/plugins/overjump/Makefile
tools/Makefile
tools/d2c/Makefile
tools/d2c/args/Makefile
diff --git a/pixmaps/Makefile.am b/pixmaps/Makefile.am
index e6dd92a..26f3b5f 100644
--- a/pixmaps/Makefile.am
+++ b/pixmaps/Makefile.am
@@ -42,6 +42,7 @@ EXTRA_DIST = \
openida.xcf \
openida_text.xcf \
before-after.png \
+ $(APP_ICONS) \
$(REVISION_PIX) \
$(TOOLBAR_BUTTONS) \
$(LIST_ICONS) \
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index 9b5cd17..d0b8fc8 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -4,4 +4,4 @@ if HAVE_PYTHON3_CONFIG
endif
# androhelpers
-SUBDIRS = devdbg libcsem mobicore $(PYTHON3_SUBDIRS) readdex readelf ropgadgets stackvars
+SUBDIRS = devdbg libcsem mobicore $(PYTHON3_SUBDIRS) readdex readelf ropgadgets
diff --git a/plugins/python/apkfiles/Makefile.am b/plugins/python/apkfiles/Makefile.am
index 931e0e8..dfa27b7 100644
--- a/plugins/python/apkfiles/Makefile.am
+++ b/plugins/python/apkfiles/Makefile.am
@@ -4,3 +4,5 @@ apkfilesdir = $(datadir)/openida/plugins/python/apkfiles
apkfiles_DATA = \
__init__.py \
apkfiles.py
+
+EXTRA_DIST = $(apkfiles_DATA)
diff --git a/plugins/python/samples/Makefile.am b/plugins/python/samples/Makefile.am
index 38ab6c8..1268032 100644
--- a/plugins/python/samples/Makefile.am
+++ b/plugins/python/samples/Makefile.am
@@ -5,3 +5,5 @@ samples_DATA = \
__init__.py \
basic_blocks.py \
demo.py
+
+EXTRA_DIST = $(samples_DATA)
diff --git a/src/analysis/disass/instructions.c b/src/analysis/disass/instructions.c
index 6d2819b..fc16186 100644
--- a/src/analysis/disass/instructions.c
+++ b/src/analysis/disass/instructions.c
@@ -24,11 +24,7 @@
#include "instructions.h"
-#include "dragon.h"
#include "links.h"
-#include "loop.h"
-#include "macro.h"
-#include "rank.h"
#include "../../glibext/delayed-int.h"
diff --git a/src/analysis/disass/macro.c b/src/analysis/disass/macro.c
deleted file mode 100644
index c40df04..0000000
--- a/src/analysis/disass/macro.c
+++ /dev/null
@@ -1,540 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * macro.c - vue macroscopique des liens entre blocs d'instructions
- *
- * Copyright (C) 2012-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 Foobar. If not, see <http://www.gnu.org/licenses/>.
- */
-
-
-#include "macro.h"
-
-
-#include <assert.h>
-
-
-#include "../blocks/flow.h"
-#include "../blocks/virtual.h"
-
-
-
-/**
- * Procédure d'ajout de blocs : pour le premier, on conserve le bloc en mémoire
- * et on attend. Si rien ne suit, il constitura l'unique retour. Sinon, on
- * l'ajoute à partir de la sauvegarde, et le reste suit.
- */
-#define DELAYED_BLOCK_ADDING(res, cache, blk) \
- do \
- { \
- if (res == NULL) \
- { \
- if (cache == NULL) \
- cache = blk; \
- else \
- { \
- res = g_virtual_block_new(); \
- g_virtual_block_add_child(G_VIRTUAL_BLOCK(res), cache); \
- } \
- } \
- \
- if (res != NULL) \
- g_virtual_block_add_child(G_VIRTUAL_BLOCK(res), blk); \
- \
- } \
- while (0)
-
-
-/* Détermine la couverture d'un ensemble de chemins. */
-static bitfield_t *compute_other_paths_mask(const dragon_knight *, GArchInstruction **, InstructionLinkType *, size_t, size_t);
-
-/* Procède à la définition de bloc regroupant des instructions. */
-static GInstrBlock *build_instruction_blocks(GArchProcessor *, const dragon_knight *, dragon_node *, const bitfield_t *, bitfield_t *, size_t *);
-
-
-
-/******************************************************************************
-* *
-* Paramètres : knight = représentation de la complexité du code. *
-* dests = instructions pointées à consulter. *
-* types = types associés aux destinations. *
-* dcount = nombre de destinations. *
-* current = indice de la destionation courante. *
-* *
-* Description : Détermine la couverture d'un ensemble de chemins. *
-* *
-* Retour : Champ de bits mis en place. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static bitfield_t *compute_other_paths_mask(const dragon_knight *knight, GArchInstruction **dests, InstructionLinkType *types, size_t dcount, size_t current)
-{
- bitfield_t *result; /* Couverture à retourner */
- size_t length; /* Taille du champ de bits */
- InstructionLinkType target; /* Type de noeud à cibler */
- size_t i; /* Boucle de parcours */
- dragon_node *node; /* Noeud à considérer */
-
- get_dragon_knight_content(knight, NULL, &length);
-
- result = create_bit_field(length, false);
-
- target = types[current];
-
- if (target == ILT_JUMP_IF_TRUE)
- target = ILT_JUMP_IF_FALSE;
- else if (target == ILT_JUMP_IF_FALSE)
- target = ILT_JUMP_IF_TRUE;
-
- assert(target == ILT_CASE_JUMP || target == ILT_JUMP_IF_TRUE || target == ILT_JUMP_IF_FALSE);
-
- for (i = 0; i < dcount; i++)
- {
- if (i == current)
- continue;
-
- if (types[i] == target)
- {
- node = find_knight_node_for_instruction(knight, false, dests[i]);
- if (node == NULL) continue;
-
- or_bit_field(result, get_paths_bits(node));
-
- }
-
- }
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : proc = ensemble des instructions d'assemblage. *
-* coverage = délimitations de la zone à couvrir. *
-* *
-* Description : Procède à la définition de bloc regroupant des instructions. *
-* *
-* Retour : Bloc créé et enregistré, ou NULL si erreur. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static GInstrBlock *build_instruction_blocks(GArchProcessor *proc, const dragon_knight *knight, dragon_node *node, const bitfield_t *stop, bitfield_t *converted, size_t *next)
-{
- GInstrBlock *result; /* Regroupement à retourner */
- GInstrBlock *result_cached; /* Temporisation pour unicité */
- size_t id; /* Indice du bit associé */
- GArchInstruction *first; /* Première instruction de bloc*/
- GArchInstruction *last; /* Dernière instruction de bloc*/
- GInstrBlock *block; /* Nouveau bloc mis en place */
- bitfield_t *local_stop; /* Arrêts pour les sous-blocs */
- bitfield_t *others; /* Couvertures des autres */
- GArchInstruction **dests; /* Instr. visée par une autre */
- InstructionLinkType *types; /* Type de lien entre lignes */
- size_t dcount; /* Nombre de liens de dest. */
- size_t i; /* Boucle de parcours */
- dragon_node *target; /* Noeud suivant à traiter */
- GInstrBlock *group; /* Regroupement à retourner */
- GInstrBlock *group_cached ; /* Temporisation pour unicité */
-
- result = NULL;
- result_cached = NULL;
-
-
-
-
- while (1)
- {
- id = get_dragon_knight_node_index(knight, node);
-
- /**
- * Si on traite une des branches Vrai/Faux et que cette branche est vide,
- * on doit s'arrêter.
- */
-
-
- //printf("=== [%d] PROCESSING NODE %u (0x%x) in 0x%08x\n", fff, id, 1 << id, gfw(stop));
-
-
- if (test_in_bit_field(stop, id, 1))
- {
- //printf(" -- STOP\n");
- *next = id;
- break;
- }
-
- /**
- * Si le bloc a déjà été converti, on arrête la conversion pour la branche courante.
- *
- * Cela peut correspondre à la situation suivante quand on revient sur le bloc
- * inférieur droit :
- *
- * ======
- * / \
- * === |
- * / \ |
- * | `.|
- * | ||
- * === ===
- */
-
- if (test_in_bit_field(converted, id, 1))
- {
- //printf(" HALT\n");
-
- *next = 0;
- break;
- }
-
- /* Constitution et ajout d'un bloc */
-
- get_dragon_node_bounding_instructions(node, &first, &last);
-
- /*
- printf(" -- [%d] process block %u @ 0x%08x <-> 0x%08x\n",
- fff, (unsigned int)id,
- (unsigned int)first->range.addr.virtual,
- (unsigned int)last->range.addr.virtual);
- */
-
- block = g_flow_block_new(proc, first, last);
-
- DELAYED_BLOCK_ADDING(result, result_cached, block);
-
- set_in_bit_field(converted, id, 1);
-
- /* Détermination du prochain arrêt */
-
- local_stop = create_bit_field_from(stop, true);
-
- others = NULL;
-
- g_arch_instruction_rlock_dest(last);
- dcount = g_arch_instruction_get_destinations(last, &dests, &types);
-
- for (i = 0; i < dcount && others == NULL; i++)
- switch (types[i])
- {
- case ILT_EXEC_FLOW:
- case ILT_JUMP:
- break;
-
- case ILT_LOOP:
- break;
-
- case ILT_CASE_JUMP:
- case ILT_JUMP_IF_TRUE:
- case ILT_JUMP_IF_FALSE:
-
- target = find_knight_node_for_instruction(knight, false, dests[i]);
- if (target == NULL) break;
-
- id = get_dragon_knight_node_index(knight, target);
-
- others = compute_other_paths_mask(knight, dests, types, dcount, i);
-
- /**
- * Si une patte est contenue dans une autre, on place la branche
- * incluse comme borne de fin.
- */
- if (test_in_bit_field(others, id, 1))
- {
- reset_all_in_bit_field(others);
- set_in_bit_field(others, id, 1);
- }
-
- /**
- * Sinon la borne de fin est la sortie commune.
- */
- else
- {
- delete_bit_field(others);
- others = NULL;
-
- and_bit_field(local_stop, get_paths_bits(target));
-
- }
-
- break;
-
- case ILT_CATCH_EXCEPTION:
- break;
-
- default:
- //assert(false);
- break;
-
- }
-
- g_arch_instruction_runlock_dest(last);
-
- if (others != NULL)
- {
- //printf(" HO \n");
- delete_bit_field(local_stop);
- local_stop = others;
- }
-
-
-
- //printf(" -- [%d] common :: 0x%08x\n", fff, gfw(local_stop));
-
-
- //or_bit_field(local_stop, stop);
-
-
- //printf(" -- [%d] common :: 0x%08x\n", fff, gfw(local_stop));
-
-
- /* Récupération des sous-blocs */
-
- *next = 0;
-
- group = NULL;
- group_cached = NULL;
-
- for (i = 0; i < dcount; i++)
- switch (types[i])
- {
- case ILT_EXEC_FLOW:
- case ILT_JUMP:
-
- /* Il ne peut y en avoir qu'un ! */
- assert(*next == 0);
-
- target = find_knight_node_for_instruction(knight, false, dests[i]);
- if (target == NULL) break;
-
- *next = get_dragon_knight_node_index(knight, target);
- break;
-
- case ILT_LOOP:
- break;
-
- case ILT_CASE_JUMP:
- case ILT_JUMP_IF_TRUE:
- case ILT_JUMP_IF_FALSE:
-
- target = find_knight_node_for_instruction(knight, false, dests[i]);
- if (target == NULL) break;
-
- /*
- printf(" -- call %d -> %zu -> %zu\n",
- fff,
- get_dragon_knight_node_index(knight, node),
- get_dragon_knight_node_index(knight, target));
- */
-
- block = build_instruction_blocks(proc, knight, target, local_stop, converted, &id);
-
- //printf(" -> next id = %zu\n", id);
-
-
-
- /* Le premier passage crée la référence */
- if (*next == 0)
- *next = id;
-
- /**
- * Une patte, première ou nom, peut se terminer alors que
- * ses voisines continuent.
- *
- * Il y a donc plusieurs valeurs pour l'indice suivant :
- * un nul et un strictement positif.
- *
- * Le cas typique est le suivant :
- *
- * ======
- * / \
- * | |
- * ret |
- * |
- * ===
- */
-
- else if (id > 0)
- {
- //printf(" NEXT :: %u vs %u\n", *next, id);
- assert(*next == id);
- }
-
- if (block != NULL)
- DELAYED_BLOCK_ADDING(group, group_cached, block);
-
- break;
-
- case ILT_CATCH_EXCEPTION:
- break;
-
- default:
- //assert(false);
- break;
-
- }
-
- if (/*group != NULL || */group_cached != NULL)
- DELAYED_BLOCK_ADDING(result, result_cached, group != NULL ? group : group_cached);
-
- delete_bit_field(local_stop);
-
- /* On passe au noeud suivant */
-
- if (*next == 0)
- break;
-
- node = get_dragon_knight_node(knight, *next);
-
- }
-
- return (result != NULL ? result : result_cached);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : routine = routine en code exécutable à traiter. *
-* knight = rassemblement des complexités de code. *
-* *
-* Description : Procède à la définition de blocs regroupant des instructions.*
-* *
-* Retour : Blocs créés et enregistrés, ou NULL si erreur. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void group_routine_instructions(GBinRoutine *routine, const dragon_knight *knight)
-{
-
-
- dragon_node *nodes; /* Liste des noeuds détectés */
- size_t count; /* Taille de cette liste */
- dragon_node *node; /* Noeud à traiter */
- bitfield_t *stop; /* Bloc d'arrêt de l'analyse */
- bitfield_t *converted; /* Cartographie des traitements*/
- GInstrBlock *blocks; /* Blocs basiques construits */
-
-
-
-
-
- get_dragon_knight_content(knight, &nodes, &count);
-
- compute_all_paths(nodes, count);
-
-
-
-
-#if 0
- size_t k;
-
- for (k = 0; k < count; k++)
- {
- GArchInstruction *first;
- GArchInstruction *last;
- const bitfield_t *paths;
-
- node = get_dragon_node(nodes, k);
-
- paths = get_paths_bits(node);
-
- get_dragon_node_bounding_instructions(node, &first, &last);
-
-
- printf("#[ node %zu ]# @ 0x%08x / 0x%08x - mask = 0x%08lx\n", k,
- (unsigned int)g_arch_instruction_get_range(first)->addr.virtual,
- (unsigned int)g_arch_instruction_get_range(last)->addr.virtual,
- gfw(paths));
-
- }
-#endif
-
-
-
-
- node = get_dragon_node(nodes, 0);
-
- stop = create_bit_field(count, false);
- converted = create_bit_field(count, false);
-
- blocks = build_instruction_blocks(NULL, knight, node, stop, converted, (size_t []) { 0 });
-
- delete_bit_field(stop);
-
-
-
-
-#if 0
- bool visit_block(GInstrBlock *blk, BlockVisitOrder order, int *indent)
- {
- int i;
-
- switch (order)
- {
- case BVO_IN:
- case BVO_PENDING:
-
- for (i = 0; i < *indent; i++)
- printf(" ");
-
- printf("%p '%s'", blk, G_OBJECT_TYPE_NAME(blk));
-
- if (G_IS_FLOW_BLOCK(blk))
- {
- vmpa2t start;
- vmpa2t end;
-
- g_flow_block_get_boundary_addresses(G_FLOW_BLOCK(blk), &start, &end);
-
- printf(" 0x%08x -> 0x%08x",
- (unsigned int)start.virtual,
- (unsigned int)end.virtual);
-
- }
-
- printf("\n");
-
- if (order == BVO_IN) (*indent)++;
- break;
-
- case BVO_OUT:
- (*indent)--;
- break;
-
- }
-
- return true;
-
- }
-
- g_instr_block_visit(blocks, (instr_block_visitor_cb)visit_block, (int []){ 0 });
-
- printf("\n");
-#endif
-
-
- //if (blocks != NULL)
-
-
- g_binary_routine_set_basic_blocks(routine, blocks);
-
-}
diff --git a/src/analysis/disass/macro.h b/src/analysis/disass/macro.h
deleted file mode 100644
index 555d48a..0000000
--- a/src/analysis/disass/macro.h
+++ /dev/null
@@ -1,38 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * macro.h - prototypes pour la vue macroscopique des liens entre blocs d'instructions
- *
- * Copyright (C) 2012-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 Foobar. If not, see <http://www.gnu.org/licenses/>.
- */
-
-
-#ifndef _ANALYSIS_DISASS_MACRO_H
-#define _ANALYSIS_DISASS_MACRO_H
-
-
-#include "dragon.h"
-#include "../routine.h"
-
-
-
-/* Procède à la définition de blocs regroupant des instructions. */
-void group_routine_instructions(GBinRoutine *, const dragon_knight *);
-
-
-
-#endif /* _ANALYSIS_DISASS_MACRO_H */
diff --git a/src/analysis/disass/routines.c b/src/analysis/disass/routines.c
index 7493af3..32a2259 100644
--- a/src/analysis/disass/routines.c
+++ b/src/analysis/disass/routines.c
@@ -27,7 +27,6 @@
#include "dragon.h"
#include "limit.h"
#include "loop.h"
-#include "macro.h"
#include "rank.h"
#include "../../glibext/delayed-int.h"
diff --git a/src/arch/Makefile.am b/src/arch/Makefile.am
index a7ff3a2..58474d7 100644
--- a/src/arch/Makefile.am
+++ b/src/arch/Makefile.am
@@ -19,7 +19,6 @@ libarch_la_SOURCES = \
register-int.h \
register.h register.c \
target.h target.c \
- translate.h \
undefined.h undefined.c \
vmpa.h vmpa.c
diff --git a/src/arch/arm/Makefile.am b/src/arch/arm/Makefile.am
index c0bbdf7..496872a 100644
--- a/src/arch/arm/Makefile.am
+++ b/src/arch/arm/Makefile.am
@@ -8,6 +8,7 @@ libarcharm_la_SOURCES = \
instruction-int.h \
instruction.h instruction.c \
link.h link.c \
+ processor-int.h \
processor.h processor.c \
register-int.h \
register.h register.c
diff --git a/src/arch/arm/v7/opcodes/Makefile.am b/src/arch/arm/v7/opcodes/Makefile.am
index a7313b1..fb00143 100644
--- a/src/arch/arm/v7/opcodes/Makefile.am
+++ b/src/arch/arm/v7/opcodes/Makefile.am
@@ -21,3 +21,6 @@ libarcharmv7opcodes_la_CFLAGS = $(AM_CFLAGS)
AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
+
+
+EXTRA_DIST = opcodes_tmp_arm.h opcodes_tmp_simd.h opcodes_tmp_thumb_16.h opcodes_tmp_thumb_32.h
diff --git a/src/arch/arm/v7/opdefs/Makefile.am b/src/arch/arm/v7/opdefs/Makefile.am
index 41785c6..a702d10 100644
--- a/src/arch/arm/v7/opdefs/Makefile.am
+++ b/src/arch/arm/v7/opdefs/Makefile.am
@@ -279,6 +279,17 @@ ARMV7_DEFS = \
# subs_B9320.d
+# make dist procède répertoire par répertoire. Or le répertoire opcodes utilise
+# le contenu du répertoire opdefs. Il faut donc générer les fichiers nécessaires
+# au répertoire opcodes. Et comme on ne peut pas compléter la règle dist, on
+# ajoute à la distribution les cibles marquant la génération. (1/2)
+
+EXTRA_DIST = $(ARMV7_DEFS) $(ARMV7_DEFS:.d=.g)
+
+# Après coup, on supprime les fichiers inutiles de la distribution/ (2/2)
+
+dist-hook:
+ cd $(distdir) && rm $(ARMV7_DEFS:.d=.g)
all: $(ARMV7_DEFS:.d=.g) fmk.done d2c_final_rules
diff --git a/src/arch/dalvik/opdefs/Makefile.am b/src/arch/dalvik/opdefs/Makefile.am
index 055e8a4..822e593 100644
--- a/src/arch/dalvik/opdefs/Makefile.am
+++ b/src/arch/dalvik/opdefs/Makefile.am
@@ -263,6 +263,17 @@ DALVIK_DEFS = \
shr_e1.d \
ushr_e2.d
+# make dist procède répertoire par répertoire. Or le répertoire opcodes utilise
+# le contenu du répertoire opdefs. Il faut donc générer les fichiers nécessaires
+# au répertoire opcodes. Et comme on ne peut pas compléter la règle dist, on
+# ajoute à la distribution les cibles marquant la génération. (1/2)
+
+EXTRA_DIST = $(DALVIK_DEFS) $(DALVIK_DEFS:.d=.g)
+
+# Après coup, on supprime les fichiers inutiles de la distribution/ (2/2)
+
+dist-hook:
+ cd $(distdir) && rm $(DALVIK_DEFS:.d=.g)
all: $(DALVIK_DEFS:.d=.g) fmk.done d2c_final_rules
diff --git a/src/core/processors.c b/src/core/processors.c
index 27d0e34..864b066 100644
--- a/src/core/processors.c
+++ b/src/core/processors.c
@@ -33,7 +33,7 @@
#include "../arch/arm/v7/processor.h"
#include "../arch/dalvik/core.h"
#include "../arch/dalvik/processor.h"
-#include "../arch/jvm/processor.h"
+//#include "../arch/jvm/processor.h"
diff --git a/src/debug/Makefile.am b/src/debug/Makefile.am
index e9dd1fd..b2f4685 100755
--- a/src/debug/Makefile.am
+++ b/src/debug/Makefile.am
@@ -3,6 +3,7 @@ noinst_LTLIBRARIES = libdebug.la
libdebug_la_SOURCES = \
break.h break.c \
+ debugger-int.h \
debugger.h debugger.c \
packet-int.h \
packet.h packet.c \
diff --git a/src/format/dwarf/Makefile.am b/src/format/dwarf/Makefile.am
index 6ebea4e..c2954fc 100644
--- a/src/format/dwarf/Makefile.am
+++ b/src/format/dwarf/Makefile.am
@@ -6,6 +6,7 @@ libformatdwarf_la_SOURCES = \
die.h die.c \
dwarf.h dwarf.c \
dwarf-int.h dwarf-int.c \
+ dwarf_def.h \
form.h form.c \
info.h info.c \
symbols.h symbols.c
diff --git a/src/format/mangling/itanium/Makefile.am b/src/format/mangling/itanium/Makefile.am
index 6265691..21a62c0 100755
--- a/src/format/mangling/itanium/Makefile.am
+++ b/src/format/mangling/itanium/Makefile.am
@@ -3,6 +3,7 @@ noinst_LTLIBRARIES = libformatmanglingitanium.la
libformatmanglingitanium_la_SOURCES = \
abi.h abi.c \
+ component-int.h \
component.h component.c \
context.h context.c
diff --git a/src/gui/dialogs/Makefile.am b/src/gui/dialogs/Makefile.am
index 5a60f25..e1774d7 100644
--- a/src/gui/dialogs/Makefile.am
+++ b/src/gui/dialogs/Makefile.am
@@ -35,3 +35,5 @@ resources.h: gresource.xml
CLEANFILES = resources.h resources.c
+
+EXTRA_DIST = gresource.xml $(UI_FILES)
diff --git a/src/gui/panels/Makefile.am b/src/gui/panels/Makefile.am
index 929aef1..bd4572d 100644
--- a/src/gui/panels/Makefile.am
+++ b/src/gui/panels/Makefile.am
@@ -11,6 +11,7 @@ libguipanels_la_SOURCES = \
glance.h glance.c \
history.h history.c \
log.h log.c \
+ panel-int.h \
panel.h panel.c \
regedit.h regedit.c \
resources.h resources.c \
@@ -36,3 +37,5 @@ resources.h: gresource.xml
CLEANFILES = resources.h resources.c
+
+EXTRA_DIST = gresource.xml $(UI_FILES)
diff --git a/themes/Adwaita/Makefile.am b/themes/Adwaita/Makefile.am
index 9ef46c5..338d65b 100644
--- a/themes/Adwaita/Makefile.am
+++ b/themes/Adwaita/Makefile.am
@@ -10,3 +10,5 @@ GTK3_CSS = \
cssdir = $(datadir)/themes/Adwaita
css_DATA = $(GTK3_CSS)
+
+EXTRA_DIST = $(css_DATA)
diff --git a/tools/d2c/Makefile.am b/tools/d2c/Makefile.am
index 53904be..5b9eb48 100644
--- a/tools/d2c/Makefile.am
+++ b/tools/d2c/Makefile.am
@@ -46,5 +46,9 @@ d2c_LDADD = \
# Automake fait les choses à moitié
CLEANFILES = grammar.h grammar.c grammar.output tokens.c tokens.h
+# Pareil : de tous les fichiers générés, seule la sortie de Flex saute pour les distributions !
+# On rajoute également de quoi générer les Makefiles.
+EXTRA_DIST = tokens.h d2c_genmakefile.sh
+
SUBDIRS = args bits conv format hooks rules syntax
diff --git a/tools/d2c/args/Makefile.am b/tools/d2c/args/Makefile.am
index c26dea4..1a2647c 100644
--- a/tools/d2c/args/Makefile.am
+++ b/tools/d2c/args/Makefile.am
@@ -29,3 +29,6 @@ libd2cargs_la_SOURCES = \
# Automake fait les choses à moitié
CLEANFILES = grammar.h grammar.c grammar.output tokens.c tokens.h
+
+# Pareil : de tous les fichiers générés, seule la sortie de Flex saute pour les distributions !
+EXTRA_DIST = tokens.h
diff --git a/tools/d2c/bits/Makefile.am b/tools/d2c/bits/Makefile.am
index 8459770..b1d79b6 100644
--- a/tools/d2c/bits/Makefile.am
+++ b/tools/d2c/bits/Makefile.am
@@ -29,3 +29,6 @@ libd2cbits_la_SOURCES = \
# Automake fait les choses à moitié
CLEANFILES = grammar.h grammar.c grammar.output tokens.c tokens.h
+
+# Pareil : de tous les fichiers générés, seule la sortie de Flex saute pour les distributions !
+EXTRA_DIST = tokens.h
diff --git a/tools/d2c/conv/Makefile.am b/tools/d2c/conv/Makefile.am
index 0a49e97..d2d495b 100644
--- a/tools/d2c/conv/Makefile.am
+++ b/tools/d2c/conv/Makefile.am
@@ -29,3 +29,6 @@ libd2cconv_la_SOURCES = \
# Automake fait les choses à moitié
CLEANFILES = grammar.h grammar.c grammar.output tokens.c tokens.h
+
+# Pareil : de tous les fichiers générés, seule la sortie de Flex saute pour les distributions !
+EXTRA_DIST = tokens.h
diff --git a/tools/d2c/format/Makefile.am b/tools/d2c/format/Makefile.am
index 5b1dcee..c40b38e 100644
--- a/tools/d2c/format/Makefile.am
+++ b/tools/d2c/format/Makefile.am
@@ -29,3 +29,6 @@ libd2cformat_la_SOURCES = \
# Automake fait les choses à moitié
CLEANFILES = grammar.h grammar.c grammar.output tokens.c tokens.h
+
+# Pareil : de tous les fichiers générés, seule la sortie de Flex saute pour les distributions !
+EXTRA_DIST = tokens.h
diff --git a/tools/d2c/hooks/Makefile.am b/tools/d2c/hooks/Makefile.am
index 4dc34e4..27d88ec 100644
--- a/tools/d2c/hooks/Makefile.am
+++ b/tools/d2c/hooks/Makefile.am
@@ -29,3 +29,6 @@ libd2chooks_la_SOURCES = \
# Automake fait les choses à moitié
CLEANFILES = grammar.h grammar.c grammar.output tokens.c tokens.h
+
+# Pareil : de tous les fichiers générés, seule la sortie de Flex saute pour les distributions !
+EXTRA_DIST = tokens.h
diff --git a/tools/d2c/rules/Makefile.am b/tools/d2c/rules/Makefile.am
index 9db9905..81bf7b8 100644
--- a/tools/d2c/rules/Makefile.am
+++ b/tools/d2c/rules/Makefile.am
@@ -29,3 +29,6 @@ libd2crules_la_SOURCES = \
# Automake fait les choses à moitié
CLEANFILES = grammar.h grammar.c grammar.output tokens.c tokens.h
+
+# Pareil : de tous les fichiers générés, seule la sortie de Flex saute pour les distributions !
+EXTRA_DIST = tokens.h
diff --git a/tools/d2c/syntax/Makefile.am b/tools/d2c/syntax/Makefile.am
index 95da241..7529978 100644
--- a/tools/d2c/syntax/Makefile.am
+++ b/tools/d2c/syntax/Makefile.am
@@ -29,3 +29,6 @@ libd2csyntax_la_SOURCES = \
# Automake fait les choses à moitié
CLEANFILES = grammar.h grammar.c grammar.output tokens.c tokens.h
+
+# Pareil : de tous les fichiers générés, seule la sortie de Flex saute pour les distributions !
+EXTRA_DIST = tokens.h