summaryrefslogtreecommitdiffstats
path: root/toolchain/binutils/patches/2.17/502-avr32-bfd-dont-allow-direct-refs-to-bss.patch
blob: 847f269be08e283aa192c470bb52c97c1325c42e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Index: binutils-2.17/bfd/elf32-avr32.c
===================================================================
--- binutils-2.17.orig/bfd/elf32-avr32.c	2007-06-28 09:19:38.494384416 +0200
+++ binutils-2.17/bfd/elf32-avr32.c	2007-06-28 09:19:38.682355840 +0200
@@ -2449,9 +2449,13 @@
 	     after the relaxation code is done, so we can't really
 	     trust that our "distance" is correct.  There's really no
 	     easy solution to this problem, so we'll just disallow
-	     direct references to SEC_DATA sections.  */
+	     direct references to SEC_DATA sections.
+	     
+	     Oh, and .bss isn't actually SEC_DATA, so we disallow
+	     !SEC_HAS_CONTENTS as well. */
 	  if (!dynamic && defined
 	      && !(sym_sec->flags & SEC_DATA)
+	      && (sym_sec->flags & SEC_HAS_CONTENTS)
 	      && next_state->direct)
 	    {
 	      next_state = &relax_state[next_state->direct];