Make import libraries relocatable objects
authorThomas Preud'homme <thomas.preudhomme@arm.com>
Mon, 8 May 2017 14:26:51 +0000 (15:26 +0100)
committerThomas Preud'homme <thomas.preudhomme@arm.com>
Mon, 8 May 2017 14:26:51 +0000 (15:26 +0100)
commit046734ff424bc5a4c1b6a69630d5bb31aa67165c
tree96a6f114e33082729b916a70f1c5da6c76df7629
parent313c59612298b022a408ca390bd5f73f28708015
Make import libraries relocatable objects

For ELF targets --out-implib currently generates an executable file
(e_type is ET_EXEC) despite the file being expected to be linked against
some other object file to make an executable later. It seems therefore
more sensible to make the import library a relocatable object file
(e_type set to ET_REL).

Incidentally, as dicted by requirement 8 of
"ARM v8-M Security Extensions: Requirements on Development Tools"
(document ARM-ECM-0359818) version 1.0, import libraries generated when
using --cmse-implib *must* be relocatable object file so this commit
also adds an assert there in case the type of ELF import library is
changed again in the future.

2017-05-08  Thomas Preud'homme  <thomas.preudhomme@arm.com>

bfd/
* elflink.c (elf_output_implib): Remove executable flag from import
library bfd.
* elf32-arm.c (elf32_arm_filter_implib_symbols): Assert that the import
library is a relocatable object file.

ld/
* testsuite/ld-arm/arm-elf.exp
(Secure gateway import library generation): Check e_type field
of import library and executable produced.
* testsuite/ld-arm/cmse-implib.type: Expectations for e_type field.
bfd/ChangeLog
bfd/elf32-arm.c
bfd/elflink.c
ld/ChangeLog
ld/testsuite/ld-arm/arm-elf.exp
ld/testsuite/ld-arm/cmse-implib.type [new file with mode: 0644]