diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 4bb379bf4cf..8e6fa094722 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* elf32-avr.c (bfd_elf_avr_final_write_processing): Don't set
+	EF_AVR_LINKRELAX_PREPARED unconditionally.
+
 2014-12-23  Alan Modra  <amodra@gmail.com>
 
 	* elflink.c (_bfd_elf_define_linkage_sym): Set linker_def.
diff --git a/bfd/elf32-avr.c b/bfd/elf32-avr.c
index 3d52940adc9..633385511cc 100644
--- a/bfd/elf32-avr.c
+++ b/bfd/elf32-avr.c
@@ -1522,7 +1522,6 @@ bfd_elf_avr_final_write_processing (bfd *abfd,
   elf_elfheader (abfd)->e_machine = EM_AVR;
   elf_elfheader (abfd)->e_flags &= ~ EF_AVR_MACH;
   elf_elfheader (abfd)->e_flags |= val;
-  elf_elfheader (abfd)->e_flags |= EF_AVR_LINKRELAX_PREPARED;
 }
 
 /* Set the right machine number.  */
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 0df23d9f330..d5c489a533d 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,10 @@
+2014-12-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* config/tc-avr.c: Add include for elf/avr.h.
+	(avr_elf_final_processing): New function.
+	* config/tc-avr.h (elf_tc_final_processing): Define.
+	(avr_elf_final_processing): Declare
+
 2014-12-18  Xingxing Pan <xxingpan@marvell.com>
 
 	* gas/config/tc-arm.c (arm_cpus): Add core marvell-whitney.
diff --git a/gas/config/tc-avr.c b/gas/config/tc-avr.c
index dfe66c68a72..bda0bd63698 100644
--- a/gas/config/tc-avr.c
+++ b/gas/config/tc-avr.c
@@ -25,7 +25,7 @@
 #include "subsegs.h"
 #include "dwarf2dbg.h"
 #include "dw2gencfi.h"
-
+#include "elf/avr.h"
 
 struct avr_opcodes_s
 {
@@ -1848,3 +1848,10 @@ avr_allow_local_subtract (expressionS * left,
      them.  */
   return FALSE;
 }
+
+void
+avr_elf_final_processing (void)
+{
+  if (linkrelax)
+    elf_elfheader (stdoutput)->e_flags |= EF_AVR_LINKRELAX_PREPARED;
+}
diff --git a/gas/config/tc-avr.h b/gas/config/tc-avr.h
index fb596add90d..81ba0fc0551 100644
--- a/gas/config/tc-avr.h
+++ b/gas/config/tc-avr.h
@@ -213,3 +213,6 @@ extern void tc_cfi_frame_initial_instructions (void);
    relaxation, so do not resolve such expressions in the assembler.  */
 #define md_allow_local_subtract(l,r,s) avr_allow_local_subtract (l, r, s)
 extern bfd_boolean avr_allow_local_subtract (expressionS *, expressionS *, segT);
+
+#define elf_tc_final_processing 	avr_elf_final_processing
+extern void avr_elf_final_processing (void);
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 7c76bbcbc21..d6d64506bdd 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2014-12-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gas/avr/link-relax-elf-flag-clear.d: New file.
+	* gas/avr/link-relax-elf-flag-set.d: New file.
+	* gas/avr/link-relax-elf-flag.s: New file.
+
 2014-12-19  Matthew Fortune  <matthew.fortune@imgtec.com>
 
 	* gas/mips/r6-64.s: Remove .align directives from LDPC
diff --git a/gas/testsuite/gas/avr/link-relax-elf-flag-clear.d b/gas/testsuite/gas/avr/link-relax-elf-flag-clear.d
new file mode 100644
index 00000000000..88cd3c9d4b9
--- /dev/null
+++ b/gas/testsuite/gas/avr/link-relax-elf-flag-clear.d
@@ -0,0 +1,10 @@
+#name: AVR, check elf link-relax header flag is clear.
+#as: -mmcu=avrxmega2
+#readelf: -h
+#source: link-relax-elf-flag.s
+#target: avr-*-*
+
+ELF Header:
+#...
+  Flags:                             0x66, avr:102
+#...
\ No newline at end of file
diff --git a/gas/testsuite/gas/avr/link-relax-elf-flag-set.d b/gas/testsuite/gas/avr/link-relax-elf-flag-set.d
new file mode 100644
index 00000000000..5614d3f313f
--- /dev/null
+++ b/gas/testsuite/gas/avr/link-relax-elf-flag-set.d
@@ -0,0 +1,10 @@
+#name: AVR, check elf link-relax header flag is set.
+#as: -mlink-relax -mmcu=avrxmega2
+#readelf: -h
+#source: link-relax-elf-flag.s
+#target: avr-*-*
+
+ELF Header:
+#...
+  Flags:                             0xe6, avr:102, link-relax
+#...
\ No newline at end of file
diff --git a/gas/testsuite/gas/avr/link-relax-elf-flag.s b/gas/testsuite/gas/avr/link-relax-elf-flag.s
new file mode 100644
index 00000000000..af543e18707
--- /dev/null
+++ b/gas/testsuite/gas/avr/link-relax-elf-flag.s
@@ -0,0 +1,4 @@
+        .text
+        .global _start
+_start:
+        nop