diff --recur -u binutils-2.16.1/bfd/configure.in avr-binutils-2.16.1tinyos/bfd/configure.in
--- binutils-2.16.1/bfd/configure.in	2004-05-17 12:35:57.000000000 -0700
+++ avr-binutils-2.16.1tinyos/bfd/configure.in	2006-09-26 13:37:01.000000000 -0800
@@ -8,7 +8,7 @@
 AC_CANONICAL_TARGET
 AC_ISC_POSIX
 
-AM_INIT_AUTOMAKE(bfd, 2.16.1)
+AM_INIT_AUTOMAKE(bfd, 2.16.1-tinyos)
 
 dnl These must be called before AM_PROG_LIBTOOL, because it may want

diff --recur -u binutils-2.16.1/gas/config/tc-avr.h avr-binutils-2.16.1tinyos/gas/config/tc-avr.h
--- binutils-2.16.1/gas/config/tc-avr.h	2002-09-04 17:01:17.000000000 -0700
+++ avr-binutils-2.16.1tinyos/gas/config/tc-avr.h	2006-09-26 13:56:31.000000000 -0700
@@ -113,8 +113,12 @@
    would print `12 34 56 78'.  The default value is 4.  */
 #define LISTING_WORD_SIZE 2
 
-/* AVR port uses `$' as a logical line separator */
-#define LEX_DOLLAR 0
+/* AVR port uses `$' as a logical line separator and doesn't 
+   allow it in symbols. We allow it in the middle of symbols. 
+   We also hack get_symbol_end to disallow it at the end of a symbol. */
+#define LEX_DOLLAR 1
+#define TC_EOL_IN_INSN(PTR)	(*(PTR) == '$' && is_part_of_name((PTR)[-1]) && is_part_of_name((PTR)[1]))
+#define TC_FORBID_DOLLAR_AT_END
 
 /* An `.lcomm' directive with no explicit alignment parameter will
    use this macro to set P2VAR to the alignment that a request for
diff --recur -u binutils-2.16.1/gas/config/tc-msp430.h avr-binutils-2.16.1tinyos/gas/config/tc-msp430.h
--- binutils-2.16.1/gas/config/tc-msp430.h	2002-12-30 11:25:07.000000000 -0800
+++ avr-binutils-2.16.1tinyos/gas/config/tc-msp430.h	2006-09-26 11:37:46.000000000 -0800
@@ -101,7 +101,7 @@
      example, a value of 2 might print `1234 5678' where a value of 1
      would print `12 34 56 78'.  The default value is 4.  */
 
-#define LEX_DOLLAR 0
+#undef LEX_DOLLAR
 /* MSP430 port does not use `$' as a logical line separator */
 
 #define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) (P2VAR) = 0
diff --recur -u binutils-2.16.1/gas/expr.c avr-binutils-2.16.1tinyos/gas/expr.c
--- binutils-2.16.1/gas/expr.c	2004-05-17 12:36:07.000000000 -0700
+++ avr-binutils-2.16.1tinyos/gas/expr.c	2006-09-26 14:31:11.000000000 -0700
@@ -1913,6 +1913,15 @@
 	;
       if (is_name_ender (c))
 	c = *input_line_pointer++;
+#ifdef TC_FORBID_DOLLAR_AT_END
+      /* This is for the Atmel AVR platforms. We want to allow $ in symbols
+	 but also as a line separator. Yucky. */
+      if (input_line_pointer[-2] == '$')
+	{
+	  input_line_pointer--;
+	  c = '$';
+	}
+#endif
     }
   *--input_line_pointer = 0;
   return (c);
