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];