aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-avr.c1
-rw-r--r--gas/ChangeLog7
-rw-r--r--gas/config/tc-avr.c9
-rw-r--r--gas/config/tc-avr.h3
-rw-r--r--gas/testsuite/ChangeLog6
-rw-r--r--gas/testsuite/gas/avr/link-relax-elf-flag-clear.d10
-rw-r--r--gas/testsuite/gas/avr/link-relax-elf-flag-set.d10
-rw-r--r--gas/testsuite/gas/avr/link-relax-elf-flag.s4
9 files changed, 53 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 4bb379b..8e6fa09 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 3d52940..6333855 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 0df23d9..d5c489a 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 dfe66c6..bda0bd6 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 fb596ad..81ba0fc 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 7c76bbc..d6d6450 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 0000000..88cd3c9
--- /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 0000000..5614d3f
--- /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 0000000..af543e1
--- /dev/null
+++ b/gas/testsuite/gas/avr/link-relax-elf-flag.s
@@ -0,0 +1,4 @@
+ .text
+ .global _start
+_start:
+ nop