diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 829023209cbd5cb9e506db393dc5c86f3e799283..03c26b61ac8c53172cfc73e13e1f5c8822fd41ff 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,7 @@
+2009-09-16  Andrew Haley  <aph@redhat.com>
+
+	* libgcj_bc.c (__data_start, data_start, _end): Add dummy usage.
+
 2009-09-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
 	* Makefile.am (libgij_la_LINK, libjvm_la_LINK): New.
diff --git a/libjava/libgcj_bc.c b/libjava/libgcj_bc.c
index e8da443f5fb8a9208e9ff3610fe73b2217a72a89..67f00aebfb08628df152eae6be58f73f5ceb282d 100644
--- a/libjava/libgcj_bc.c
+++ b/libjava/libgcj_bc.c
@@ -112,3 +112,14 @@ DECLARE_PRIM_TYPE(char)
 DECLARE_PRIM_TYPE(float)
 DECLARE_PRIM_TYPE(double)
 DECLARE_PRIM_TYPE(void)
+
+
+/* Force executable to export __data_start et al.  */
+
+#pragma weak __data_start
+extern int __data_start[];
+#pragma weak data_start
+extern int data_start[];
+#pragma weak _end
+extern int _end[];
+static void *dummy[] __attribute__((used)) = {__data_start, data_start, _end};