Fix linking MSP430 files created by gcc's LTO optimizer.
authorJozef Lawrynowicz <jozef.l@mittosystems.com>
Wed, 21 Nov 2018 16:21:25 +0000 (16:21 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 21 Nov 2018 16:21:25 +0000 (16:21 +0000)
commitca94519e70c39fca1d6ea93b8604349111522a8b
tree8cce71581cf14d96f73a219b71b2e9c8adb0bd09
parentb5ffee3181d157a4d964f62344ac827142e37bde
Fix linking MSP430 files created by gcc's LTO optimizer.

When invoking GCC with "-g -flto", the compiler will create LTO objects
with debug information. The objects created are "simple ELF" objects (see
libiberty/simple-object-elf.c) and do not have target-specific sections.

When the MSP430 linker sees one of these objects without a .MSP430.attributes
section it errors:

> error: /tmp/cc4LhbEI.ltrans0.ltrans.o uses MSP430X instructions but /tmp/ccynqIwudebugobj uses unknown
> error: /tmp/cc4LhbEI.ltrans0.ltrans.o uses the small code model whereas /tmp/ccynqIwudebugobj uses the unknown code model
> error: /tmp/cc4LhbEI.ltrans0.ltrans.o uses the small data model whereas /tmp/ccynqIwudebugobj uses the unknown data model
> error: /tmp/cc4LhbEI.ltrans0.ltrans.o uses the small code model but /tmp/ccynqIwudebugobj uses the unknown data model
> failed to merge target specific data of file /tmp/cc4LhbEI.ltrans0.ltrans.o

The following patch allows these debug LTO objects to be linked with other
MSP430 objects even if they do not have a .MSP430.attributes section.

bfd * elf32-msp430.c (elf32_msp430_merge_mspabi_attributes): Do not
error when .MSP430.attributes section is missing from objects
created by LTO.
bfd/ChangeLog
bfd/elf32-msp430.c