diff -ru binutils-2.19.1.orig/gas/config/tc-avr.c binutils-2.19.1/gas/config/tc-avr.c
--- gas/config/tc-avr.c	Fri Aug 29 19:58:02 2008
+++ gas/config/tc-avr.c	Thu Apr 16 20:44:54 2009
@@ -24,6 +24,7 @@
 #include "as.h"
 #include "safe-ctype.h"
 #include "subsegs.h"
+#include "dwarf2dbg.h"
 
 struct avr_opcodes_s
 {
@@ -1336,6 +1337,7 @@
   if (!avr_opt.all_opcodes && (opcode->isa & avr_mcu->isa) != opcode->isa)
     as_bad (_("illegal opcode %s for mcu %s"), opcode->name, avr_mcu->name);
 
+  dwarf2_emit_insn (0);
   /* We used to set input_line_pointer to the result of get_operands,
      but that is wrong.  Our caller assumes we don't change it.  */
   {

diff -ru binutils-2.19.1.orig/gas/config/tc-avr.h binutils-2.19.1/gas/config/tc-avr.h
--- gas/config/tc-avr.h	Tue Jul  3 14:01:04 2007
+++ gas/config/tc-avr.h	Thu Apr 16 20:46:54 2009
@@ -147,3 +147,6 @@
 
 /* This target is buggy, and sets fix size too large.  */
 #define TC_FX_SIZE_SLACK(FIX) 2
+
+/* keep DWARF2_ADDR_SIZE in consistency with C compiler produced information */
+#define DWARF2_ADDR_SIZE(bfd) 4
 
