aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcomex2015-01-19 19:08:48 -0500
committercomex2015-01-19 19:08:48 -0500
commit066a1fa86407c80c3b7ef2c3e8c86f1ffbd2929d (patch)
tree6f5a4abebbcb4cf034ab009a49c167ac95da418e
parentadd the required copy of the GPL; clarify license text (diff)
downloadsubstitute-066a1fa86407c80c3b7ef2c3e8c86f1ffbd2929d.tar.gz
some reorganization
-rw-r--r--Makefile11
-rw-r--r--lib/arm/dis-arm-multi.inc.h (renamed from lib/dis-arm-multi.inc.h)0
-rw-r--r--lib/arm/dis-arm.inc.h (renamed from lib/dis-arm.inc.h)0
-rw-r--r--lib/arm/dis-thumb.inc.h (renamed from lib/dis-thumb.inc.h)0
-rw-r--r--lib/arm/dis-thumb2.inc.h (renamed from lib/dis-thumb2.inc.h)0
-rw-r--r--lib/arm/misc.h7
-rw-r--r--lib/arm/transform-dis-arm-multi.inc.h (renamed from lib/transform-dis-arm-multi.inc.h)0
-rw-r--r--lib/arm64/dis-arm64.inc.h (renamed from lib/dis-arm64.inc.h)0
-rw-r--r--lib/arm64/misc.h6
-rw-r--r--lib/arm64/transform-dis-arm64.inc.h (renamed from lib/transform-dis-arm64.inc.h)0
-rw-r--r--lib/dis.h20
-rw-r--r--lib/jump-dis.c4
-rw-r--r--lib/substitute-internal.h11
-rw-r--r--lib/transform-dis.c10
14 files changed, 33 insertions, 36 deletions
diff --git a/Makefile b/Makefile
index 37ec88a..4004dfd 100644
--- a/Makefile
+++ b/Makefile
@@ -27,8 +27,10 @@ $(eval $(call do_prefix,arm,-n _arm,ARM))
$(eval $(call do_prefix,arm64,,AArch64))
out/%.o: lib/%.c Makefile $(HEADERS)
+ @mkdir -p $(dir $@)
$(CC) -fvisibility=hidden -std=c11 -c -o $@ $<
out/%.o: lib/%.S Makefile $(HEADERS)
+ @mkdir -p $(dir $@)
$(CC) -fvisibility=hidden -c -o $@ $<
out/jump-dis.o: $(GENERATED)
out/transform-dis.o: $(GENERATED)
@@ -41,6 +43,7 @@ LIB_OBJS := \
out/substrate-compat.o \
out/jump-dis.o \
out/transform-dis.o
+
out/libsubstitute.dylib: $(LIB_OBJS)
$(CC) -o $@ $(LIB_OBJS) $(LIB_LDFLAGS)
@@ -49,10 +52,10 @@ out/test-$(1): test/test-$(2).[cm]* $(HEADERS) $(GENERATED) Makefile out/libsubs
$(3) -g -o $$@ $$< -Ilib -Isubstrate -Lout -lsubstitute
all: out/test-$(1)
endef
-$(eval $(call define_test,tdarm-simple,td-simple,$(CC) -std=c11 -DHDR='"dis-arm.inc.h"' -Dxdis=dis_arm -DFORCE_TARGET_arm))
-$(eval $(call define_test,tdthumb-simple,td-simple,$(CC) -std=c11 -DHDR='"dis-thumb.inc.h"' -Dxdis=dis_thumb -DFORCE_TARGET_arm))
-$(eval $(call define_test,tdthumb2-simple,td-simple,$(CC) -std=c11 -DHDR='"dis-thumb2.inc.h"' -Dxdis=dis_thumb2 -DFORCE_TARGET_arm))
-$(eval $(call define_test,tdarm64-simple,td-simple,$(CC) -std=c11 -DHDR='"dis-arm64.inc.h"' -Dxdis=dis -DFORCE_TARGET_arm64))
+$(eval $(call define_test,tdarm-simple,td-simple,$(CC) -std=c11 -DHDR='"arm/dis-arm.inc.h"' -Dxdis=dis_arm -DFORCE_TARGET_arm))
+$(eval $(call define_test,tdthumb-simple,td-simple,$(CC) -std=c11 -DHDR='"arm/dis-thumb.inc.h"' -Dxdis=dis_thumb -DFORCE_TARGET_arm))
+$(eval $(call define_test,tdthumb2-simple,td-simple,$(CC) -std=c11 -DHDR='"arm/dis-thumb2.inc.h"' -Dxdis=dis_thumb2 -DFORCE_TARGET_arm))
+$(eval $(call define_test,tdarm64-simple,td-simple,$(CC) -std=c11 -DHDR='"arm64/dis-arm64.inc.h"' -Dxdis=dis -DFORCE_TARGET_arm64))
$(eval $(call define_test,dis-arm,dis,$(CC) -std=c11 -DFORCE_TARGET_arm))
$(eval $(call define_test,dis-arm64,dis,$(CC) -std=c11 -DFORCE_TARGET_arm64))
$(eval $(call define_test,jump-dis-arm,jump-dis,$(CC) -std=c11 -DFORCE_TARGET_arm -O0))
diff --git a/lib/dis-arm-multi.inc.h b/lib/arm/dis-arm-multi.inc.h
index 56cde35..56cde35 100644
--- a/lib/dis-arm-multi.inc.h
+++ b/lib/arm/dis-arm-multi.inc.h
diff --git a/lib/dis-arm.inc.h b/lib/arm/dis-arm.inc.h
index 2f06234..2f06234 100644
--- a/lib/dis-arm.inc.h
+++ b/lib/arm/dis-arm.inc.h
diff --git a/lib/dis-thumb.inc.h b/lib/arm/dis-thumb.inc.h
index 4e6d106..4e6d106 100644
--- a/lib/dis-thumb.inc.h
+++ b/lib/arm/dis-thumb.inc.h
diff --git a/lib/dis-thumb2.inc.h b/lib/arm/dis-thumb2.inc.h
index a9d7f9d..a9d7f9d 100644
--- a/lib/dis-thumb2.inc.h
+++ b/lib/arm/dis-thumb2.inc.h
diff --git a/lib/arm/misc.h b/lib/arm/misc.h
new file mode 100644
index 0000000..44d8e7a
--- /dev/null
+++ b/lib/arm/misc.h
@@ -0,0 +1,7 @@
+#pragma once
+#define TARGET_DIS_SUPPORTED
+#define TARGET_DIS_HEADER "arm/dis-arm-multi.inc.h"
+#define TARGET_TRANSFORM_DIS_HEADER "arm/transform-dis-arm-multi.inc.h"
+#define MIN_INSN_SIZE 2
+struct arch_dis_ctx { unsigned thumb_it_length; };
+enum { IS_LDRD_STRD = 1 << 16 };
diff --git a/lib/transform-dis-arm-multi.inc.h b/lib/arm/transform-dis-arm-multi.inc.h
index 662b501..662b501 100644
--- a/lib/transform-dis-arm-multi.inc.h
+++ b/lib/arm/transform-dis-arm-multi.inc.h
diff --git a/lib/dis-arm64.inc.h b/lib/arm64/dis-arm64.inc.h
index 5317b89..5317b89 100644
--- a/lib/dis-arm64.inc.h
+++ b/lib/arm64/dis-arm64.inc.h
diff --git a/lib/arm64/misc.h b/lib/arm64/misc.h
new file mode 100644
index 0000000..672e1bd
--- /dev/null
+++ b/lib/arm64/misc.h
@@ -0,0 +1,6 @@
+#pragma once
+#define TARGET_DIS_SUPPORTED
+#define TARGET_DIS_HEADER "arm64/dis-arm64.inc.h"
+#define TARGET_TRANSFORM_DIS_HEADER "arm64/transform-dis-arm64.inc.h"
+#define MIN_INSN_SIZE 4
+struct arch_dis_ctx {};
diff --git a/lib/transform-dis-arm64.inc.h b/lib/arm64/transform-dis-arm64.inc.h
index c47971b..c47971b 100644
--- a/lib/transform-dis-arm64.inc.h
+++ b/lib/arm64/transform-dis-arm64.inc.h
diff --git a/lib/dis.h b/lib/dis.h
index 7a53f27..675cf17 100644
--- a/lib/dis.h
+++ b/lib/dis.h
@@ -107,22 +107,6 @@ static const unsigned null_op = -0x100;
return; \
} while (0)
-#if defined(TARGET_x86_64)
- #define MIN_INSN_SIZE 1
- #error "no x86 dis yet"
- struct arch_dis_ctx {};
-#elif defined(TARGET_i386)
- #define MIN_INSN_SIZE 1
- #error "no x86 dis yet"
- struct arch_dis_ctx {};
-#elif defined(TARGET_arm)
- #define MIN_INSN_SIZE 2
- #define TARGET_DIS_HEADER "dis-arm-multi.inc.h"
- struct arch_dis_ctx { unsigned thumb_it_length; };
- enum { IS_LDRD_STRD = 1 << 16 };
-#elif defined(TARGET_arm64)
- #define MIN_INSN_SIZE 4
- #define TARGET_DIS_HEADER "dis-arm64.inc.h"
- struct arch_dis_ctx {};
+#ifndef TARGET_DIS_SUPPORTED
+ #error "no disassembler for the target architecture yet"
#endif
-
diff --git a/lib/jump-dis.c b/lib/jump-dis.c
index 355ac0f..2a4f94c 100644
--- a/lib/jump-dis.c
+++ b/lib/jump-dis.c
@@ -1,5 +1,5 @@
#include "substitute-internal.h"
-#ifdef TARGET_SUPPORTED
+#ifdef TARGET_DIS_SUPPORTED
#include "dis.h"
#include <stdint.h>
#include <stdbool.h>
@@ -163,4 +163,4 @@ fail:
}
#include TARGET_DIS_HEADER
-#endif /* TARGET_SUPPORTED */
+#endif /* TARGET_DIS_SUPPORTED */
diff --git a/lib/substitute-internal.h b/lib/substitute-internal.h
index e89715f..0f3e0ad 100644
--- a/lib/substitute-internal.h
+++ b/lib/substitute-internal.h
@@ -32,23 +32,24 @@ typedef struct section section_x;
#define TARGET_x86_64
#elif defined(FORCE_TARGET_i386)
#define TARGET_i386
- #define TARGET_UNSUPPORTED
#elif defined(FORCE_TARGET_arm)
#define TARGET_arm
- #define TARGET_SUPPORTED
#elif defined(FORCE_TARGET_arm64)
#define TARGET_arm64
- #define TARGET_SUPPORTED
#elif defined(__x86_64__)
#define TARGET_x86_64
#elif defined(__i386__)
#define TARGET_i386
#elif defined(__arm__)
#define TARGET_arm
- #define TARGET_SUPPORTED
#elif defined(__arm64__)
#define TARGET_arm64
- #define TARGET_SUPPORTED
#else
#error target?
#endif
+
+#if defined(TARGET_arm)
+ #include "arm/misc.h"
+#elif defined(TARGET_arm64)
+ #include "arm64/misc.h"
+#endif
diff --git a/lib/transform-dis.c b/lib/transform-dis.c
index 6d5fc66..6067ea0 100644
--- a/lib/transform-dis.c
+++ b/lib/transform-dis.c
@@ -1,5 +1,5 @@
#include "substitute-internal.h"
-#ifdef TARGET_SUPPORTED
+#ifdef TARGET_DIS_SUPPORTED
#include "substitute.h"
#include "dis.h"
@@ -123,11 +123,7 @@ static inline void op32(struct transform_dis_ctx *ctx, uint32_t op) {
*rpp += 4;
}
-#ifdef TARGET_arm
- #include "transform-dis-arm-multi.inc.h"
-#else
- #include "transform-dis-arm64.inc.h"
-#endif
+#include TARGET_TRANSFORM_DIS_HEADER
#include TARGET_DIS_HEADER
-#endif /* TARGET_SUPPORTED */
+#endif /* TARGET_DIS_SUPPORTED */