Merge from branches/ARM, all parts of the ARM-Linux port except for
the changes to do with reading and using ELF and DWARF3 info.
This breaks all targets except amd64-linux and x86-linux.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10982 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/Makefile.tool.am b/Makefile.tool.am
index c35ffc7..9e607b8 100644
--- a/Makefile.tool.am
+++ b/Makefile.tool.am
@@ -49,6 +49,10 @@
 	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ \
 	-Wl,-T,$(top_builddir)/valt_load_address_ppc64_linux.lds
 
+TOOL_LDFLAGS_ARM_LINUX = \
+	$(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@ \
+	-Wl,-T,$(top_builddir)/valt_load_address_arm_linux.lds
+
 TOOL_LDFLAGS_PPC32_AIX5 = \
 	$(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
 
@@ -88,6 +92,10 @@
 BUILT_SOURCES += $(top_builddir)/valt_load_address_ppc64_linux.lds
 CLEANFILES    += $(top_builddir)/valt_load_address_ppc64_linux.lds
 endif
+if VGCONF_PLATFORMS_INCLUDE_ARM_LINUX
+BUILT_SOURCES += $(top_builddir)/valt_load_address_arm_linux.lds
+CLEANFILES    += $(top_builddir)/valt_load_address_arm_linux.lds
+endif
 if VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5
 # No need to generate $(top_builddir)/valt_load_address*.lds; the final
 # executables can be linked to be at any address.  They will be relocated by
@@ -149,6 +157,13 @@
 		-e '/\. = \(0x[0-9A-Fa-f]\+\|SEGMENT_START("[^"]\+", 0x[0-9A-Fa-f]\+)\) + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \
 	|| rm -f $@
 
+$(top_builddir)/valt_load_address_arm_linux.lds: Makefile
+	$(CC) @FLAG_M32@ -Wl,--verbose -nostdlib 2>&1 | sed \
+		-e '1,/^=====\+$$/d' \
+		-e '/^=====\+$$/,/.\*/d' \
+		-e '/\. = \(0x[0-9A-Fa-f]\+\|SEGMENT_START("[^"]\+", 0x[0-9A-Fa-f]\+)\) + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \
+	|| rm -f $@
+
 #----------------------------------------------------------------------------
 # vgpreload_<tool>-<platform>.a stuff
 #----------------------------------------------------------------------------
@@ -165,6 +180,9 @@
 LIBREPLACEMALLOC_PPC64_LINUX = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc64-linux.a
 
+LIBREPLACEMALLOC_ARM_LINUX = \
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-arm-linux.a
+
 LIBREPLACEMALLOC_PPC32_AIX5 = \
 	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc32-aix5.a
 
@@ -198,6 +216,11 @@
 	$(LIBREPLACEMALLOC_PPC64_LINUX) \
 	-Wl,--no-whole-archive
 
+LIBREPLACEMALLOC_LDFLAGS_ARM_LINUX = \
+	-Wl,--whole-archive \
+	$(LIBREPLACEMALLOC_ARM_LINUX) \
+	-Wl,--no-whole-archive
+
 LIBREPLACEMALLOC_LDFLAGS_PPC32_AIX5 = \
 	$(LIBREPLACEMALLOC_PPC32_AIX5)