m68k: tag floating-point ABI used
authorPat Bernardi <bernardi@adacore.com>
Thu, 25 Jun 2020 20:05:38 +0000 (16:05 -0400)
committerAlan Modra <amodra@gmail.com>
Fri, 26 Jun 2020 05:12:19 +0000 (14:42 +0930)
commit85f7484a3a1921649029c4a4fcf3247c3f3bc13c
treed8cec9b624c9984936c00c9f3389d0c3a757750d
parentba9b3ef5ee666467b67780e81f868c432f4fc56d
m68k: tag floating-point ABI used

This patch adds GNU attribute support to m68k and utilises it to tag the
floating-point calling convention used (hard-float or soft-float). It enables
the linker to ensure linked objects use a consistent floating-point ABI and
allows tools like GDB to infer the ABI used from the ELF file. It is based on
similar work done for PowerPC.

bfd/
* elf32-m68k.c (m68k_elf_merge_obj_attributes): New function.
(elf32_m68k_merge_private_bfd_data): Merge GNU attributes.
binutils/
* readelf.c (display_m68k_gnu_attribute): New function.
(process_arch_specific): Call display_m68k_gnu_attribute for EM_68K.
gas/
* config/tc-m68k.c (m68k_elf_gnu_attribute): New function.
(md_pseudo_table): Handle "gnu_attribute".
* doc/as.texi: Document GNU attribute for M68K.
include/
* elf/m68k.h: Add enum for GNU object attribute with floating point
tag name and values.
ld/
* testsuite/ld-m68k/attr-gnu-4-0.s: New file.
* testsuite/ld-m68k/attr-gnu-4-1.s: Likewise.
* testsuite/ld-m68k/attr-gnu-4-2.s: Likewise.
* testsuite/ld-m68k/attr-gnu-4-00.d: Likewise.
* testsuite/ld-m68k/attr-gnu-4-01.d: Likewise.
* testsuite/ld-m68k/attr-gnu-4-02.d: Likewise.
* testsuite/ld-m68k/attr-gnu-4-10.d: Likewise.
* testsuite/ld-m68k/attr-gnu-4-11.d: Likewise.
* testsuite/ld-m68k/attr-gnu-4-12.d: Likewise.
* testsuite/ld-m68k/attr-gnu-4-20.d: Likewise.
* testsuite/ld-m68k/attr-gnu-4-21.d: Likewise.
* testsuite/ld-m68k/attr-gnu-4-22.d: Likewise.
* testsuite/ld-m68k/m68k.exp: Run the new tests.
23 files changed:
bfd/ChangeLog
bfd/elf32-m68k.c
binutils/ChangeLog
binutils/readelf.c
gas/ChangeLog
gas/config/tc-m68k.c
gas/doc/as.texi
include/ChangeLog
include/elf/m68k.h
ld/ChangeLog
ld/testsuite/ld-m68k/attr-gnu-4-0.s [new file with mode: 0644]
ld/testsuite/ld-m68k/attr-gnu-4-00.d [new file with mode: 0644]
ld/testsuite/ld-m68k/attr-gnu-4-01.d [new file with mode: 0644]
ld/testsuite/ld-m68k/attr-gnu-4-02.d [new file with mode: 0644]
ld/testsuite/ld-m68k/attr-gnu-4-1.s [new file with mode: 0644]
ld/testsuite/ld-m68k/attr-gnu-4-10.d [new file with mode: 0644]
ld/testsuite/ld-m68k/attr-gnu-4-11.d [new file with mode: 0644]
ld/testsuite/ld-m68k/attr-gnu-4-12.d [new file with mode: 0644]
ld/testsuite/ld-m68k/attr-gnu-4-2.s [new file with mode: 0644]
ld/testsuite/ld-m68k/attr-gnu-4-20.d [new file with mode: 0644]
ld/testsuite/ld-m68k/attr-gnu-4-21.d [new file with mode: 0644]
ld/testsuite/ld-m68k/attr-gnu-4-22.d [new file with mode: 0644]
ld/testsuite/ld-m68k/m68k.exp