diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 0694a58c549..75d7170f5c3 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,5 +1,9 @@
 2016-03-22  Nick Clifton  <nickc@redhat.com>
 
+	PR 19851
+	* dwarf.c (SAFE_BYTE_GET): Replace local dynamic array allocation
+	with run time size check.
+
 	* configure: Regenerate.
 
 2016-03-21  Andrew Burgess  <andrew.burgess@embecosm.com>
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index 85d18f3b004..086df4b4ba6 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -317,8 +317,13 @@ read_uleb128 (unsigned char * data,
 #define SAFE_BYTE_GET(VAL, PTR, AMOUNT, END)	\
   do						\
     {						\
-      int dummy [sizeof (VAL) < (AMOUNT) ? -1 : 1] ATTRIBUTE_UNUSED ; \
       unsigned int amount = (AMOUNT);		\
+      if (sizeof (VAL) < amount)		\
+	{					\
+	  error (_("internal error: attempt to read %d bytes of data in to %d sized variable"),\
+		 amount, (int) sizeof (VAL));	\
+	  amount = sizeof (VAL);		\
+	}					\
       if (((PTR) + amount) >= (END))		\
 	{					\
 	  if ((PTR) < (END))			\