From 877791769e23126090bab077d41f4d6221a23045 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Tue, 2 Nov 2010 14:36:39 +0000 Subject: [PATCH] bfd: * elf32-tic6x.c (elf32_tic6x_obj_attrs_arg_type): Except for Tag_ABI_compatibility, treat odd tags as strings and even ones as integers. (elf32_tic6x_obj_attrs_order, elf32_tic6x_tag_to_array_alignment, elf32_tic6x_array_alignment_to_tag): New. (elf32_tic6x_merge_attributes): Handle more attributes. Set type for merged attributes. (elf_backend_obj_attrs_order): Define. binutils: * readelf.c (display_tic6x_attribute): Handle more attributes. gas: * config/tc-tic6x.c (OPTION_MPID, OPTION_MPIC, OPTION_MNO_PIC): New enum values. (md_longopts): Add options mpid, mpic and mno-pic. (tic6x_pid_type, tic6x_pid, tic6x_pic, tic6x_pid_type_table, tic6x_pid_types, tic6x_use_pid): New. (md_parse_option): Handle new options. (md_show_usage): Output help text for new options. (tic6x_set_attributes): Set PID and PIC attributes. * doc/as.texinfo: Document -mpid=, -mpic and -mno-pic. * doc/c-tic6x.texi (TIC6X Options): Likewise. gas/testsuite: * gas/tic6x/attr-array-directive-1.d, gas/tic6x/attr-array-directive-1.s, gas/tic6x/attr-array-directive-2.d, gas/tic6x/attr-array-directive-2.s, gas/tic6x/attr-array-directive-3.d, gas/tic6x/attr-array-directive-3.s, gas/tic6x/attr-array-directive-4.d, gas/tic6x/attr-array-directive-4.s, gas/tic6x/attr-conformance-directive-1.d, gas/tic6x/attr-conformance-directive-1.s, gas/tic6x/attr-conformance-directive-2.d, gas/tic6x/attr-conformance-directive-2.s, gas/tic6x/attr-pic-directive-1.d, gas/tic6x/attr-pic-directive-1.s, gas/tic6x/attr-pic-directive-2.d, gas/tic6x/attr-pic-directive-2.s, gas/tic6x/attr-pic-opts-mno-pic.d, gas/tic6x/attr-pic-opts-mpic.d, gas/tic6x/attr-pid-directive-1.d, gas/tic6x/attr-pid-directive-1.s, gas/tic6x/attr-pid-directive-2.d, gas/tic6x/attr-pid-directive-2.s, gas/tic6x/attr-pid-opts-mpid-far.d, gas/tic6x/attr-pid-opts-mpid-near.d, gas/tic6x/attr-pid-opts-mpid-no.d, gas/tic6x/attr-stack-directive-1.d, gas/tic6x/attr-stack-directive-1.s, gas/tic6x/attr-stack-directive-2.d, gas/tic6x/attr-stack-directive-2.s, gas/tic6x/attr-wchar-directive-1.d, gas/tic6x/attr-wchar-directive-1.s, gas/tic6x/attr-wchar-directive-2.d, gas/tic6x/attr-wchar-directive-2.s: New tests. include/elf: * tic6x-attrs.h (Tag_ABI_wchar_t, Tag_ABI_stack_align_needed, Tag_ABI_stack_align_preserved, Tag_ABI_PID, Tag_ABI_PIC, Tag_ABI_array_object_alignment, Tag_ABI_array_object_align_expected, Tag_ABI_conformance): Define. ld/testsuite: * ld-tic6x/attr-array-16-16.d, ld-tic6x/attr-array-16-4.d, ld-tic6x/attr-array-16-416.d, ld-tic6x/attr-array-16-48.d, ld-tic6x/attr-array-16-8.d, ld-tic6x/attr-array-16-816.d, ld-tic6x/attr-array-16.s, ld-tic6x/attr-array-4-16.d, ld-tic6x/attr-array-4-4.d, ld-tic6x/attr-array-4-416.d, ld-tic6x/attr-array-4-48.d, ld-tic6x/attr-array-4-8.d, ld-tic6x/attr-array-4-816.d, ld-tic6x/attr-array-4.s, ld-tic6x/attr-array-416-16.d, ld-tic6x/attr-array-416-4.d, ld-tic6x/attr-array-416-416.d, ld-tic6x/attr-array-416-48.d, ld-tic6x/attr-array-416-8.d, ld-tic6x/attr-array-416-816.d, ld-tic6x/attr-array-416.s, ld-tic6x/attr-array-48-16.d, ld-tic6x/attr-array-48-4.d, ld-tic6x/attr-array-48-416.d, ld-tic6x/attr-array-48-48.d, ld-tic6x/attr-array-48-8.d, ld-tic6x/attr-array-48-816.d, ld-tic6x/attr-array-48.s, ld-tic6x/attr-array-8-16.d, ld-tic6x/attr-array-8-4.d, ld-tic6x/attr-array-8-416.d, ld-tic6x/attr-array-8-48.d, ld-tic6x/attr-array-8-8.d, ld-tic6x/attr-array-8-816.d, ld-tic6x/attr-array-8.s, ld-tic6x/attr-array-816-16.d, ld-tic6x/attr-array-816-4.d, ld-tic6x/attr-array-816-416.d, ld-tic6x/attr-array-816-48.d, ld-tic6x/attr-array-816-8.d, ld-tic6x/attr-array-816-816.d, ld-tic6x/attr-array-816.s, ld-tic6x/attr-conformance-10-10.d, ld-tic6x/attr-conformance-10-11.d, ld-tic6x/attr-conformance-10-none.d, ld-tic6x/attr-conformance-10.s, ld-tic6x/attr-conformance-11-10.d, ld-tic6x/attr-conformance-11-11.d, ld-tic6x/attr-conformance-11-none.d, ld-tic6x/attr-conformance-11.s, ld-tic6x/attr-conformance-none-10.d, ld-tic6x/attr-conformance-none-11.d, ld-tic6x/attr-conformance-none-none.d, ld-tic6x/attr-conformance-none.s, ld-tic6x/attr-pic-0.s, ld-tic6x/attr-pic-00.d, ld-tic6x/attr-pic-01.d, ld-tic6x/attr-pic-1.s, ld-tic6x/attr-pic-10.d, ld-tic6x/attr-pic-11.d, ld-tic6x/attr-pid-0.s, ld-tic6x/attr-pid-00.d, ld-tic6x/attr-pid-01.d, ld-tic6x/attr-pid-02.d, ld-tic6x/attr-pid-1.s, ld-tic6x/attr-pid-10.d, ld-tic6x/attr-pid-11.d, ld-tic6x/attr-pid-12.d, ld-tic6x/attr-pid-2.s, ld-tic6x/attr-pid-20.d, ld-tic6x/attr-pid-21.d, ld-tic6x/attr-pid-22.d, ld-tic6x/attr-stack-16-16.d, ld-tic6x/attr-stack-16-8.d, ld-tic6x/attr-stack-16-816.d, ld-tic6x/attr-stack-16.s, ld-tic6x/attr-stack-8-16.d, ld-tic6x/attr-stack-8-8.d, ld-tic6x/attr-stack-8-816.d, ld-tic6x/attr-stack-8.s, ld-tic6x/attr-stack-816-16.d, ld-tic6x/attr-stack-816-8.d, ld-tic6x/attr-stack-816-816.d, ld-tic6x/attr-stack-816.s, ld-tic6x/attr-wchar-0.s, ld-tic6x/attr-wchar-00.d, ld-tic6x/attr-wchar-01.d, ld-tic6x/attr-wchar-02.d, ld-tic6x/attr-wchar-1.s, ld-tic6x/attr-wchar-10.d, ld-tic6x/attr-wchar-11.d, ld-tic6x/attr-wchar-12.d, ld-tic6x/attr-wchar-2.s, ld-tic6x/attr-wchar-20.d, ld-tic6x/attr-wchar-21.d, ld-tic6x/attr-wchar-22.d: New tests. --- bfd/ChangeLog | 11 + bfd/elf32-tic6x.c | 232 +++++++++++++++++- binutils/ChangeLog | 4 + binutils/readelf.c | 160 +++++++++++- gas/ChangeLog | 13 + gas/config/tc-tic6x.c | 72 ++++++ gas/doc/as.texinfo | 24 ++ gas/doc/c-tic6x.texi | 34 ++- gas/testsuite/ChangeLog | 35 +++ .../gas/tic6x/attr-array-directive-1.d | 9 + .../gas/tic6x/attr-array-directive-1.s | 1 + .../gas/tic6x/attr-array-directive-2.d | 9 + .../gas/tic6x/attr-array-directive-2.s | 1 + .../gas/tic6x/attr-array-directive-3.d | 9 + .../gas/tic6x/attr-array-directive-3.s | 1 + .../gas/tic6x/attr-array-directive-4.d | 9 + .../gas/tic6x/attr-array-directive-4.s | 1 + .../gas/tic6x/attr-conformance-directive-1.d | 9 + .../gas/tic6x/attr-conformance-directive-1.s | 1 + .../gas/tic6x/attr-conformance-directive-2.d | 9 + .../gas/tic6x/attr-conformance-directive-2.s | 1 + .../gas/tic6x/attr-pic-directive-1.d | 9 + .../gas/tic6x/attr-pic-directive-1.s | 1 + .../gas/tic6x/attr-pic-directive-2.d | 9 + .../gas/tic6x/attr-pic-directive-2.s | 1 + .../gas/tic6x/attr-pic-opts-mno-pic.d | 8 + gas/testsuite/gas/tic6x/attr-pic-opts-mpic.d | 9 + .../gas/tic6x/attr-pid-directive-1.d | 9 + .../gas/tic6x/attr-pid-directive-1.s | 1 + .../gas/tic6x/attr-pid-directive-2.d | 9 + .../gas/tic6x/attr-pid-directive-2.s | 1 + .../gas/tic6x/attr-pid-opts-mpid-far.d | 9 + .../gas/tic6x/attr-pid-opts-mpid-near.d | 9 + .../gas/tic6x/attr-pid-opts-mpid-no.d | 8 + .../gas/tic6x/attr-stack-directive-1.d | 9 + .../gas/tic6x/attr-stack-directive-1.s | 2 + .../gas/tic6x/attr-stack-directive-2.d | 10 + .../gas/tic6x/attr-stack-directive-2.s | 2 + .../gas/tic6x/attr-wchar-directive-1.d | 9 + .../gas/tic6x/attr-wchar-directive-1.s | 1 + .../gas/tic6x/attr-wchar-directive-2.d | 9 + .../gas/tic6x/attr-wchar-directive-2.s | 1 + include/elf/ChangeLog | 7 + include/elf/tic6x-attrs.h | 8 + ld/testsuite/ChangeLog | 56 +++++ ld/testsuite/ld-tic6x/attr-array-16-16.d | 12 + ld/testsuite/ld-tic6x/attr-array-16-4.d | 6 + ld/testsuite/ld-tic6x/attr-array-16-416.d | 12 + ld/testsuite/ld-tic6x/attr-array-16-48.d | 6 + ld/testsuite/ld-tic6x/attr-array-16-8.d | 6 + ld/testsuite/ld-tic6x/attr-array-16-816.d | 12 + ld/testsuite/ld-tic6x/attr-array-16.s | 2 + ld/testsuite/ld-tic6x/attr-array-4-16.d | 6 + ld/testsuite/ld-tic6x/attr-array-4-4.d | 12 + ld/testsuite/ld-tic6x/attr-array-4-416.d | 12 + ld/testsuite/ld-tic6x/attr-array-4-48.d | 12 + ld/testsuite/ld-tic6x/attr-array-4-8.d | 6 + ld/testsuite/ld-tic6x/attr-array-4-816.d | 6 + ld/testsuite/ld-tic6x/attr-array-4.s | 2 + ld/testsuite/ld-tic6x/attr-array-416-16.d | 12 + ld/testsuite/ld-tic6x/attr-array-416-4.d | 12 + ld/testsuite/ld-tic6x/attr-array-416-416.d | 12 + ld/testsuite/ld-tic6x/attr-array-416-48.d | 11 + ld/testsuite/ld-tic6x/attr-array-416-8.d | 10 + ld/testsuite/ld-tic6x/attr-array-416-816.d | 11 + ld/testsuite/ld-tic6x/attr-array-416.s | 2 + ld/testsuite/ld-tic6x/attr-array-48-16.d | 6 + ld/testsuite/ld-tic6x/attr-array-48-4.d | 12 + ld/testsuite/ld-tic6x/attr-array-48-416.d | 11 + ld/testsuite/ld-tic6x/attr-array-48-48.d | 11 + ld/testsuite/ld-tic6x/attr-array-48-8.d | 10 + ld/testsuite/ld-tic6x/attr-array-48-816.d | 10 + ld/testsuite/ld-tic6x/attr-array-48.s | 2 + ld/testsuite/ld-tic6x/attr-array-8-16.d | 6 + ld/testsuite/ld-tic6x/attr-array-8-4.d | 6 + ld/testsuite/ld-tic6x/attr-array-8-416.d | 10 + ld/testsuite/ld-tic6x/attr-array-8-48.d | 10 + ld/testsuite/ld-tic6x/attr-array-8-8.d | 10 + ld/testsuite/ld-tic6x/attr-array-8-816.d | 10 + ld/testsuite/ld-tic6x/attr-array-8.s | 2 + ld/testsuite/ld-tic6x/attr-array-816-16.d | 12 + ld/testsuite/ld-tic6x/attr-array-816-4.d | 6 + ld/testsuite/ld-tic6x/attr-array-816-416.d | 11 + ld/testsuite/ld-tic6x/attr-array-816-48.d | 10 + ld/testsuite/ld-tic6x/attr-array-816-8.d | 10 + ld/testsuite/ld-tic6x/attr-array-816-816.d | 11 + ld/testsuite/ld-tic6x/attr-array-816.s | 2 + .../ld-tic6x/attr-conformance-10-10.d | 11 + .../ld-tic6x/attr-conformance-10-11.d | 10 + .../ld-tic6x/attr-conformance-10-none.d | 10 + ld/testsuite/ld-tic6x/attr-conformance-10.s | 1 + .../ld-tic6x/attr-conformance-11-10.d | 10 + .../ld-tic6x/attr-conformance-11-11.d | 11 + .../ld-tic6x/attr-conformance-11-none.d | 10 + ld/testsuite/ld-tic6x/attr-conformance-11.s | 1 + .../ld-tic6x/attr-conformance-none-10.d | 10 + .../ld-tic6x/attr-conformance-none-11.d | 10 + .../ld-tic6x/attr-conformance-none-none.d | 10 + ld/testsuite/ld-tic6x/attr-conformance-none.s | 1 + ld/testsuite/ld-tic6x/attr-pic-0.s | 1 + ld/testsuite/ld-tic6x/attr-pic-00.d | 10 + ld/testsuite/ld-tic6x/attr-pic-01.d | 6 + ld/testsuite/ld-tic6x/attr-pic-1.s | 1 + ld/testsuite/ld-tic6x/attr-pic-10.d | 6 + ld/testsuite/ld-tic6x/attr-pic-11.d | 11 + ld/testsuite/ld-tic6x/attr-pid-0.s | 1 + ld/testsuite/ld-tic6x/attr-pid-00.d | 10 + ld/testsuite/ld-tic6x/attr-pid-01.d | 6 + ld/testsuite/ld-tic6x/attr-pid-02.d | 6 + ld/testsuite/ld-tic6x/attr-pid-1.s | 1 + ld/testsuite/ld-tic6x/attr-pid-10.d | 6 + ld/testsuite/ld-tic6x/attr-pid-11.d | 11 + ld/testsuite/ld-tic6x/attr-pid-12.d | 6 + ld/testsuite/ld-tic6x/attr-pid-2.s | 1 + ld/testsuite/ld-tic6x/attr-pid-20.d | 6 + ld/testsuite/ld-tic6x/attr-pid-21.d | 6 + ld/testsuite/ld-tic6x/attr-pid-22.d | 11 + ld/testsuite/ld-tic6x/attr-stack-16-16.d | 12 + ld/testsuite/ld-tic6x/attr-stack-16-8.d | 6 + ld/testsuite/ld-tic6x/attr-stack-16-816.d | 12 + ld/testsuite/ld-tic6x/attr-stack-16.s | 2 + ld/testsuite/ld-tic6x/attr-stack-8-16.d | 6 + ld/testsuite/ld-tic6x/attr-stack-8-8.d | 10 + ld/testsuite/ld-tic6x/attr-stack-8-816.d | 10 + ld/testsuite/ld-tic6x/attr-stack-8.s | 2 + ld/testsuite/ld-tic6x/attr-stack-816-16.d | 12 + ld/testsuite/ld-tic6x/attr-stack-816-8.d | 10 + ld/testsuite/ld-tic6x/attr-stack-816-816.d | 11 + ld/testsuite/ld-tic6x/attr-stack-816.s | 2 + ld/testsuite/ld-tic6x/attr-wchar-0.s | 1 + ld/testsuite/ld-tic6x/attr-wchar-00.d | 10 + ld/testsuite/ld-tic6x/attr-wchar-01.d | 11 + ld/testsuite/ld-tic6x/attr-wchar-02.d | 11 + ld/testsuite/ld-tic6x/attr-wchar-1.s | 1 + ld/testsuite/ld-tic6x/attr-wchar-10.d | 11 + ld/testsuite/ld-tic6x/attr-wchar-11.d | 11 + ld/testsuite/ld-tic6x/attr-wchar-12.d | 6 + ld/testsuite/ld-tic6x/attr-wchar-2.s | 1 + ld/testsuite/ld-tic6x/attr-wchar-20.d | 11 + ld/testsuite/ld-tic6x/attr-wchar-21.d | 6 + ld/testsuite/ld-tic6x/attr-wchar-22.d | 11 + 141 files changed, 1576 insertions(+), 13 deletions(-) create mode 100644 gas/testsuite/gas/tic6x/attr-array-directive-1.d create mode 100644 gas/testsuite/gas/tic6x/attr-array-directive-1.s create mode 100644 gas/testsuite/gas/tic6x/attr-array-directive-2.d create mode 100644 gas/testsuite/gas/tic6x/attr-array-directive-2.s create mode 100644 gas/testsuite/gas/tic6x/attr-array-directive-3.d create mode 100644 gas/testsuite/gas/tic6x/attr-array-directive-3.s create mode 100644 gas/testsuite/gas/tic6x/attr-array-directive-4.d create mode 100644 gas/testsuite/gas/tic6x/attr-array-directive-4.s create mode 100644 gas/testsuite/gas/tic6x/attr-conformance-directive-1.d create mode 100644 gas/testsuite/gas/tic6x/attr-conformance-directive-1.s create mode 100644 gas/testsuite/gas/tic6x/attr-conformance-directive-2.d create mode 100644 gas/testsuite/gas/tic6x/attr-conformance-directive-2.s create mode 100644 gas/testsuite/gas/tic6x/attr-pic-directive-1.d create mode 100644 gas/testsuite/gas/tic6x/attr-pic-directive-1.s create mode 100644 gas/testsuite/gas/tic6x/attr-pic-directive-2.d create mode 100644 gas/testsuite/gas/tic6x/attr-pic-directive-2.s create mode 100644 gas/testsuite/gas/tic6x/attr-pic-opts-mno-pic.d create mode 100644 gas/testsuite/gas/tic6x/attr-pic-opts-mpic.d create mode 100644 gas/testsuite/gas/tic6x/attr-pid-directive-1.d create mode 100644 gas/testsuite/gas/tic6x/attr-pid-directive-1.s create mode 100644 gas/testsuite/gas/tic6x/attr-pid-directive-2.d create mode 100644 gas/testsuite/gas/tic6x/attr-pid-directive-2.s create mode 100644 gas/testsuite/gas/tic6x/attr-pid-opts-mpid-far.d create mode 100644 gas/testsuite/gas/tic6x/attr-pid-opts-mpid-near.d create mode 100644 gas/testsuite/gas/tic6x/attr-pid-opts-mpid-no.d create mode 100644 gas/testsuite/gas/tic6x/attr-stack-directive-1.d create mode 100644 gas/testsuite/gas/tic6x/attr-stack-directive-1.s create mode 100644 gas/testsuite/gas/tic6x/attr-stack-directive-2.d create mode 100644 gas/testsuite/gas/tic6x/attr-stack-directive-2.s create mode 100644 gas/testsuite/gas/tic6x/attr-wchar-directive-1.d create mode 100644 gas/testsuite/gas/tic6x/attr-wchar-directive-1.s create mode 100644 gas/testsuite/gas/tic6x/attr-wchar-directive-2.d create mode 100644 gas/testsuite/gas/tic6x/attr-wchar-directive-2.s create mode 100644 ld/testsuite/ld-tic6x/attr-array-16-16.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-16-4.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-16-416.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-16-48.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-16-8.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-16-816.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-16.s create mode 100644 ld/testsuite/ld-tic6x/attr-array-4-16.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-4-4.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-4-416.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-4-48.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-4-8.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-4-816.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-4.s create mode 100644 ld/testsuite/ld-tic6x/attr-array-416-16.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-416-4.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-416-416.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-416-48.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-416-8.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-416-816.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-416.s create mode 100644 ld/testsuite/ld-tic6x/attr-array-48-16.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-48-4.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-48-416.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-48-48.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-48-8.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-48-816.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-48.s create mode 100644 ld/testsuite/ld-tic6x/attr-array-8-16.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-8-4.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-8-416.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-8-48.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-8-8.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-8-816.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-8.s create mode 100644 ld/testsuite/ld-tic6x/attr-array-816-16.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-816-4.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-816-416.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-816-48.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-816-8.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-816-816.d create mode 100644 ld/testsuite/ld-tic6x/attr-array-816.s create mode 100644 ld/testsuite/ld-tic6x/attr-conformance-10-10.d create mode 100644 ld/testsuite/ld-tic6x/attr-conformance-10-11.d create mode 100644 ld/testsuite/ld-tic6x/attr-conformance-10-none.d create mode 100644 ld/testsuite/ld-tic6x/attr-conformance-10.s create mode 100644 ld/testsuite/ld-tic6x/attr-conformance-11-10.d create mode 100644 ld/testsuite/ld-tic6x/attr-conformance-11-11.d create mode 100644 ld/testsuite/ld-tic6x/attr-conformance-11-none.d create mode 100644 ld/testsuite/ld-tic6x/attr-conformance-11.s create mode 100644 ld/testsuite/ld-tic6x/attr-conformance-none-10.d create mode 100644 ld/testsuite/ld-tic6x/attr-conformance-none-11.d create mode 100644 ld/testsuite/ld-tic6x/attr-conformance-none-none.d create mode 100644 ld/testsuite/ld-tic6x/attr-conformance-none.s create mode 100644 ld/testsuite/ld-tic6x/attr-pic-0.s create mode 100644 ld/testsuite/ld-tic6x/attr-pic-00.d create mode 100644 ld/testsuite/ld-tic6x/attr-pic-01.d create mode 100644 ld/testsuite/ld-tic6x/attr-pic-1.s create mode 100644 ld/testsuite/ld-tic6x/attr-pic-10.d create mode 100644 ld/testsuite/ld-tic6x/attr-pic-11.d create mode 100644 ld/testsuite/ld-tic6x/attr-pid-0.s create mode 100644 ld/testsuite/ld-tic6x/attr-pid-00.d create mode 100644 ld/testsuite/ld-tic6x/attr-pid-01.d create mode 100644 ld/testsuite/ld-tic6x/attr-pid-02.d create mode 100644 ld/testsuite/ld-tic6x/attr-pid-1.s create mode 100644 ld/testsuite/ld-tic6x/attr-pid-10.d create mode 100644 ld/testsuite/ld-tic6x/attr-pid-11.d create mode 100644 ld/testsuite/ld-tic6x/attr-pid-12.d create mode 100644 ld/testsuite/ld-tic6x/attr-pid-2.s create mode 100644 ld/testsuite/ld-tic6x/attr-pid-20.d create mode 100644 ld/testsuite/ld-tic6x/attr-pid-21.d create mode 100644 ld/testsuite/ld-tic6x/attr-pid-22.d create mode 100644 ld/testsuite/ld-tic6x/attr-stack-16-16.d create mode 100644 ld/testsuite/ld-tic6x/attr-stack-16-8.d create mode 100644 ld/testsuite/ld-tic6x/attr-stack-16-816.d create mode 100644 ld/testsuite/ld-tic6x/attr-stack-16.s create mode 100644 ld/testsuite/ld-tic6x/attr-stack-8-16.d create mode 100644 ld/testsuite/ld-tic6x/attr-stack-8-8.d create mode 100644 ld/testsuite/ld-tic6x/attr-stack-8-816.d create mode 100644 ld/testsuite/ld-tic6x/attr-stack-8.s create mode 100644 ld/testsuite/ld-tic6x/attr-stack-816-16.d create mode 100644 ld/testsuite/ld-tic6x/attr-stack-816-8.d create mode 100644 ld/testsuite/ld-tic6x/attr-stack-816-816.d create mode 100644 ld/testsuite/ld-tic6x/attr-stack-816.s create mode 100644 ld/testsuite/ld-tic6x/attr-wchar-0.s create mode 100644 ld/testsuite/ld-tic6x/attr-wchar-00.d create mode 100644 ld/testsuite/ld-tic6x/attr-wchar-01.d create mode 100644 ld/testsuite/ld-tic6x/attr-wchar-02.d create mode 100644 ld/testsuite/ld-tic6x/attr-wchar-1.s create mode 100644 ld/testsuite/ld-tic6x/attr-wchar-10.d create mode 100644 ld/testsuite/ld-tic6x/attr-wchar-11.d create mode 100644 ld/testsuite/ld-tic6x/attr-wchar-12.d create mode 100644 ld/testsuite/ld-tic6x/attr-wchar-2.s create mode 100644 ld/testsuite/ld-tic6x/attr-wchar-20.d create mode 100644 ld/testsuite/ld-tic6x/attr-wchar-21.d create mode 100644 ld/testsuite/ld-tic6x/attr-wchar-22.d diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 60c3b18e9e1..3538ef5dc9a 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,14 @@ +2010-11-02 Joseph Myers + + * elf32-tic6x.c (elf32_tic6x_obj_attrs_arg_type): Except for + Tag_ABI_compatibility, treat odd tags as strings and even ones as + integers. + (elf32_tic6x_obj_attrs_order, elf32_tic6x_tag_to_array_alignment, + elf32_tic6x_array_alignment_to_tag): New. + (elf32_tic6x_merge_attributes): Handle more attributes. Set type + for merged attributes. + (elf_backend_obj_attrs_order): Define. + 2010-10-29 Maciej W. Rozycki * elfxx-mips.c (mips_elf_calculate_relocation): Fix a typo. diff --git a/bfd/elf32-tic6x.c b/bfd/elf32-tic6x.c index 3e8564a4335..4e91d7497db 100644 --- a/bfd/elf32-tic6x.c +++ b/bfd/elf32-tic6x.c @@ -1663,11 +1663,22 @@ elf32_tic6x_obj_attrs_arg_type (int tag) { if (tag == Tag_ABI_compatibility) return ATTR_TYPE_FLAG_INT_VAL | ATTR_TYPE_FLAG_STR_VAL; + else if (tag & 1) + return ATTR_TYPE_FLAG_STR_VAL; else - /* Correct for known attributes, arbitrary for others. */ return ATTR_TYPE_FLAG_INT_VAL; } +static int +elf32_tic6x_obj_attrs_order (int num) +{ + if (num == LEAST_KNOWN_OBJ_ATTRIBUTE) + return Tag_ABI_conformance; + if ((num - 1) < Tag_ABI_conformance) + return num - 1; + return num; +} + /* Merge the Tag_ISA attribute values ARCH1 and ARCH2 and return the merged value. At present, all merges succeed, so no return value for errors is defined. */ @@ -1691,14 +1702,64 @@ elf32_tic6x_merge_arch_attributes (int arch1, int arch2) return max_arch; } +/* Convert a Tag_ABI_array_object_alignment or + Tag_ABI_array_object_align_expected tag value TAG to a + corresponding alignment value; return the alignment, or -1 for an + unknown tag value. */ + +static int +elf32_tic6x_tag_to_array_alignment (int tag) +{ + switch (tag) + { + case 0: + return 8; + + case 1: + return 4; + + case 2: + return 16; + + default: + return -1; + } +} + +/* Convert a Tag_ABI_array_object_alignment or + Tag_ABI_array_object_align_expected alignment ALIGN to a + corresponding tag value; return the tag value. */ + +static int +elf32_tic6x_array_alignment_to_tag (int align) +{ + switch (align) + { + case 8: + return 0; + + case 4: + return 1; + + case 16: + return 2; + + default: + abort (); + } +} + /* Merge attributes from IBFD and OBFD, returning TRUE if the merge succeeded, FALSE otherwise. */ static bfd_boolean elf32_tic6x_merge_attributes (bfd *ibfd, bfd *obfd) { + bfd_boolean result = TRUE; obj_attribute *in_attr; obj_attribute *out_attr; + int i; + int array_align_in, array_align_out, array_expect_in, array_expect_out; if (!elf_known_obj_attributes_proc (obfd)[0].i) { @@ -1719,21 +1780,177 @@ elf32_tic6x_merge_attributes (bfd *ibfd, bfd *obfd) /* No specification yet for handling of unknown attributes, so just ignore them and handle known ones. */ - out_attr[Tag_ISA].i - = elf32_tic6x_merge_arch_attributes (in_attr[Tag_ISA].i, - out_attr[Tag_ISA].i); - if (out_attr[Tag_ABI_DSBT].i != in_attr[Tag_ABI_DSBT].i) + if (out_attr[Tag_ABI_stack_align_preserved].i + < in_attr[Tag_ABI_stack_align_needed].i) + { + _bfd_error_handler + (_("error: %B requires more stack alignment than %B preserves"), + ibfd, obfd); + result = FALSE; + } + if (in_attr[Tag_ABI_stack_align_preserved].i + < out_attr[Tag_ABI_stack_align_needed].i) + { + _bfd_error_handler + (_("error: %B requires more stack alignment than %B preserves"), + obfd, ibfd); + result = FALSE; + } + + array_align_in = elf32_tic6x_tag_to_array_alignment + (in_attr[Tag_ABI_array_object_alignment].i); + if (array_align_in == -1) + { + _bfd_error_handler + (_("error: unknown Tag_ABI_array_object_alignment value in %B"), + ibfd); + result = FALSE; + } + array_align_out = elf32_tic6x_tag_to_array_alignment + (out_attr[Tag_ABI_array_object_alignment].i); + if (array_align_out == -1) + { + _bfd_error_handler + (_("error: unknown Tag_ABI_array_object_alignment value in %B"), + obfd); + result = FALSE; + } + array_expect_in = elf32_tic6x_tag_to_array_alignment + (in_attr[Tag_ABI_array_object_align_expected].i); + if (array_expect_in == -1) + { + _bfd_error_handler + (_("error: unknown Tag_ABI_array_object_align_expected value in %B"), + ibfd); + result = FALSE; + } + array_expect_out = elf32_tic6x_tag_to_array_alignment + (out_attr[Tag_ABI_array_object_align_expected].i); + if (array_expect_out == -1) + { + _bfd_error_handler + (_("error: unknown Tag_ABI_array_object_align_expected value in %B"), + obfd); + result = FALSE; + } + + if (array_align_out < array_expect_in) + { + _bfd_error_handler + (_("error: %B requires more array alignment than %B preserves"), + ibfd, obfd); + result = FALSE; + } + if (array_align_in < array_expect_out) { _bfd_error_handler - (_("warning: %B and %B differ in whether code is compiled for DSBT"), + (_("error: %B requires more array alignment than %B preserves"), obfd, ibfd); + result = FALSE; } + + for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) + { + switch (i) + { + case Tag_ISA: + out_attr[i].i = elf32_tic6x_merge_arch_attributes (in_attr[i].i, + out_attr[i].i); + break; + + case Tag_ABI_wchar_t: + if (out_attr[i].i == 0) + out_attr[i].i = in_attr[i].i; + if (out_attr[i].i != 0 + && in_attr[i].i != 0 + && out_attr[i].i != in_attr[i].i) + { + _bfd_error_handler + (_("warning: %B and %B differ in wchar_t size"), obfd, ibfd); + } + break; + + case Tag_ABI_stack_align_needed: + if (out_attr[i].i < in_attr[i].i) + out_attr[i].i = in_attr[i].i; + break; + + case Tag_ABI_stack_align_preserved: + if (out_attr[i].i > in_attr[i].i) + out_attr[i].i = in_attr[i].i; + break; + + case Tag_ABI_DSBT: + if (out_attr[i].i != in_attr[i].i) + { + _bfd_error_handler + (_("warning: %B and %B differ in whether code is " + "compiled for DSBT"), + obfd, ibfd); + } + break; + + case Tag_ABI_PID: + if (out_attr[i].i != in_attr[i].i) + { + _bfd_error_handler + (_("warning: %B and %B differ in position-dependence of " + "data addressing"), + obfd, ibfd); + } + break; + + case Tag_ABI_PIC: + if (out_attr[i].i != in_attr[i].i) + { + _bfd_error_handler + (_("warning: %B and %B differ in position-dependence of " + "code addressing"), + obfd, ibfd); + } + break; + + case Tag_ABI_array_object_alignment: + if (array_align_out != -1 + && array_align_in != -1 + && array_align_out > array_align_in) + out_attr[i].i + = elf32_tic6x_array_alignment_to_tag (array_align_in); + break; + + case Tag_ABI_array_object_align_expected: + if (array_expect_out != -1 + && array_expect_in != -1 + && array_expect_out < array_expect_in) + out_attr[i].i + = elf32_tic6x_array_alignment_to_tag (array_expect_in); + break; + + case Tag_ABI_conformance: + /* Merging for this attribute is not specified. As on ARM, + treat a missing attribute as no claim to conform and only + merge identical values. */ + if (out_attr[i].s == NULL + || in_attr[i].s == NULL + || strcmp (out_attr[i].s, + in_attr[i].s) != 0) + out_attr[i].s = NULL; + break; + + default: + break; + } + + if (in_attr[i].type && !out_attr[i].type) + out_attr[i].type = in_attr[i].type; + } + /* Merge Tag_ABI_compatibility attributes and any common GNU ones. */ if (!_bfd_elf_merge_object_attributes (ibfd, obfd)) return FALSE; - return TRUE; + return result; } static bfd_boolean @@ -1767,6 +1984,7 @@ elf32_tic6x_merge_private_bfd_data (bfd *ibfd, bfd *obfd) #define elf_backend_may_use_rel_p 1 #define elf_backend_may_use_rela_p 1 #define elf_backend_obj_attrs_arg_type elf32_tic6x_obj_attrs_arg_type +#define elf_backend_obj_attrs_order elf32_tic6x_obj_attrs_order #define elf_backend_obj_attrs_section ".c6xabi.attributes" #define elf_backend_obj_attrs_section_type SHT_C6000_ATTRIBUTES #define elf_backend_obj_attrs_vendor "c6xabi" diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 16404436c9a..8acf57e1d64 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,7 @@ +2010-11-02 Joseph Myers + + * readelf.c (display_tic6x_attribute): Handle more attributes. + 2010-10-30 Kai Tietz * dlltool.c (scan_drectve_symbols): Allow quoted strings for -export diff --git a/binutils/readelf.c b/binutils/readelf.c index 44feac42f48..0ed5c7c1ed4 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -10804,6 +10804,63 @@ display_tic6x_attribute (unsigned char * p) } return p; + case Tag_ABI_wchar_t: + val = read_uleb128 (p, &len); + p += len; + printf (" Tag_ABI_wchar_t: "); + switch (val) + { + case 0: + printf (_("Not used\n")); + break; + case 1: + printf (_("2 bytes\n")); + break; + case 2: + printf (_("4 bytes\n")); + break; + default: + printf ("??? (%d)\n", val); + break; + } + return p; + + case Tag_ABI_stack_align_needed: + val = read_uleb128 (p, &len); + p += len; + printf (" Tag_ABI_stack_align_needed: "); + switch (val) + { + case 0: + printf (_("8-byte\n")); + break; + case 1: + printf (_("16-byte\n")); + break; + default: + printf ("??? (%d)\n", val); + break; + } + return p; + + case Tag_ABI_stack_align_preserved: + val = read_uleb128 (p, &len); + p += len; + printf (" Tag_ABI_stack_align_preserved: "); + switch (val) + { + case 0: + printf (_("8-byte\n")); + break; + case 1: + printf (_("16-byte\n")); + break; + default: + printf ("??? (%d)\n", val); + break; + } + return p; + case Tag_ABI_DSBT: val = read_uleb128 (p, &len); p += len; @@ -10822,6 +10879,87 @@ display_tic6x_attribute (unsigned char * p) } return p; + case Tag_ABI_PID: + val = read_uleb128 (p, &len); + p += len; + printf (" Tag_ABI_PID: "); + switch (val) + { + case 0: + printf (_("Data addressing position-dependent\n")); + break; + case 1: + printf (_("Data addressing position-independent, GOT near DP\n")); + break; + case 2: + printf (_("Data addressing position-independent, GOT far from DP\n")); + break; + default: + printf ("??? (%d)\n", val); + break; + } + return p; + + case Tag_ABI_PIC: + val = read_uleb128 (p, &len); + p += len; + printf (" Tag_ABI_PIC: "); + switch (val) + { + case 0: + printf (_("Code addressing position-dependent\n")); + break; + case 1: + printf (_("Code addressing position-independent\n")); + break; + default: + printf ("??? (%d)\n", val); + break; + } + return p; + + case Tag_ABI_array_object_alignment: + val = read_uleb128 (p, &len); + p += len; + printf (" Tag_ABI_array_object_alignment: "); + switch (val) + { + case 0: + printf (_("8-byte\n")); + break; + case 1: + printf (_("4-byte\n")); + break; + case 2: + printf (_("16-byte\n")); + break; + default: + printf ("??? (%d)\n", val); + break; + } + return p; + + case Tag_ABI_array_object_align_expected: + val = read_uleb128 (p, &len); + p += len; + printf (" Tag_ABI_array_object_align_expected: "); + switch (val) + { + case 0: + printf (_("8-byte\n")); + break; + case 1: + printf (_("4-byte\n")); + break; + case 2: + printf (_("16-byte\n")); + break; + default: + printf ("??? (%d)\n", val); + break; + } + return p; + case Tag_ABI_compatibility: val = read_uleb128 (p, &len); p += len; @@ -10829,15 +10967,27 @@ display_tic6x_attribute (unsigned char * p) printf (_("flag = %d, vendor = %s\n"), val, p); p += strlen ((char *) p) + 1; return p; + + case Tag_ABI_conformance: + printf (" Tag_ABI_conformance: "); + printf ("\"%s\"\n", p); + p += strlen ((char *) p) + 1; + return p; } printf (" Tag_unknown_%d: ", tag); - /* No general documentation of handling unknown attributes, treat as - ULEB128 for now. */ - val = read_uleb128 (p, &len); - p += len; - printf ("%d (0x%x)\n", val, val); + if (tag & 1) + { + printf ("\"%s\"\n", p); + p += strlen ((char *) p) + 1; + } + else + { + val = read_uleb128 (p, &len); + p += len; + printf ("%d (0x%x)\n", val, val); + } return p; } diff --git a/gas/ChangeLog b/gas/ChangeLog index d294525b99d..17ce85a1da5 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,16 @@ +2010-11-02 Joseph Myers + + * config/tc-tic6x.c (OPTION_MPID, OPTION_MPIC, OPTION_MNO_PIC): + New enum values. + (md_longopts): Add options mpid, mpic and mno-pic. + (tic6x_pid_type, tic6x_pid, tic6x_pic, tic6x_pid_type_table, + tic6x_pid_types, tic6x_use_pid): New. + (md_parse_option): Handle new options. + (md_show_usage): Output help text for new options. + (tic6x_set_attributes): Set PID and PIC attributes. + * doc/as.texinfo: Document -mpid=, -mpic and -mno-pic. + * doc/c-tic6x.texi (TIC6X Options): Likewise. + 2010-11-01 Maciej W. Rozycki * config/tc-mips.c (macro)[M_LD_OB, M_SD_OB]: Use the offset diff --git a/gas/config/tc-tic6x.c b/gas/config/tc-tic6x.c index 2f51466c830..c5095ebe8af 100644 --- a/gas/config/tc-tic6x.c +++ b/gas/config/tc-tic6x.c @@ -52,6 +52,9 @@ enum OPTION_MLITTLE_ENDIAN, OPTION_MDSBT, OPTION_MNO_DSBT, + OPTION_MPID, + OPTION_MPIC, + OPTION_MNO_PIC, OPTION_MGENERATE_REL }; @@ -64,6 +67,9 @@ struct option md_longopts[] = { "mlittle-endian", no_argument, NULL, OPTION_MLITTLE_ENDIAN }, { "mdsbt", no_argument, NULL, OPTION_MDSBT }, { "mno-dsbt", no_argument, NULL, OPTION_MNO_DSBT }, + { "mpid", required_argument, NULL, OPTION_MPID }, + { "mpic", no_argument, NULL, OPTION_MPIC }, + { "mno-pic", no_argument, NULL, OPTION_MNO_PIC }, { "mgenerate-rel", no_argument, NULL, OPTION_MGENERATE_REL }, { NULL, no_argument, NULL, 0 } }; @@ -120,6 +126,21 @@ static bfd_boolean tic6x_generate_rela = TRUE; /* Whether the code uses DSBT addressing. */ static bfd_boolean tic6x_dsbt; +/* Types of position-independent data (attribute values for + Tag_ABI_PID). */ +typedef enum + { + tic6x_pid_no = 0, + tic6x_pid_near = 1, + tic6x_pid_far = 2 + } tic6x_pid_type; + +/* The type of data addressing used in this code. */ +static tic6x_pid_type tic6x_pid; + +/* Whether the code uses position-independent code. */ +static bfd_boolean tic6x_pic; + /* Table of supported architecture variants. */ typedef struct { @@ -171,6 +192,36 @@ tic6x_use_arch (const char *arch) as_bad (_("unknown architecture '%s'"), arch); } +/* Table of supported -mpid arguments. */ +typedef struct +{ + const char *arg; + tic6x_pid_type attr; +} tic6x_pid_type_table; +static const tic6x_pid_type_table tic6x_pid_types[] = + { + { "no", tic6x_pid_no }, + { "near", tic6x_pid_near }, + { "far", tic6x_pid_far } + }; + +/* Handle -mpid=ARG. */ + +static void +tic6x_use_pid (const char *arg) +{ + unsigned int i; + + for (i = 0; i < ARRAY_SIZE (tic6x_pid_types); i++) + if (strcmp (arg, tic6x_pid_types[i].arg) == 0) + { + tic6x_pid = tic6x_pid_types[i].attr; + return; + } + + as_bad (_("unknown -mpid= argument '%s'"), arg); +} + /* Parse a target-specific option. */ int @@ -206,6 +257,18 @@ md_parse_option (int c, char *arg) tic6x_dsbt = 0; break; + case OPTION_MPID: + tic6x_use_pid (arg); + break; + + case OPTION_MPIC: + tic6x_pic = 1; + break; + + case OPTION_MNO_PIC: + tic6x_pic = 0; + break; + case OPTION_MGENERATE_REL: tic6x_generate_rela = FALSE; break; @@ -230,6 +293,13 @@ md_show_usage (FILE *stream ATTRIBUTE_UNUSED) fprintf (stream, _(" -mlittle-endian generate little-endian code\n")); fprintf (stream, _(" -mdsbt code uses DSBT addressing\n")); fprintf (stream, _(" -mno-dsbt code does not use DSBT addressing\n")); + fprintf (stream, _(" -mpid=no code uses position-dependent data addressing\n")); + fprintf (stream, _(" -mpid=near code uses position-independent data addressing,\n" + " GOT accesses use near DP addressing\n")); + fprintf (stream, _(" -mpid=far code uses position-independent data addressing,\n" + " GOT accesses use far DP addressing\n")); + fprintf (stream, _(" -mpic code addressing is position-independent\n")); + fprintf (stream, _(" -mno-pic code addressing is position-dependent\n")); /* -mgenerate-rel is only for testsuite use and is deliberately undocumented. */ @@ -3915,6 +3985,8 @@ tic6x_set_attributes (void) tic6x_set_attribute_int (Tag_ISA, tic6x_arch_attribute); tic6x_set_attribute_int (Tag_ABI_DSBT, tic6x_dsbt); + tic6x_set_attribute_int (Tag_ABI_PID, tic6x_pid); + tic6x_set_attribute_int (Tag_ABI_PIC, tic6x_pic); } /* Do machine-dependent manipulations of the frag chains after all diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo index 0c4662bd2dd..6a3fc813041 100644 --- a/gas/doc/as.texinfo +++ b/gas/doc/as.texinfo @@ -477,6 +477,7 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}. @emph{Target TIC6X options:} [@b{-march=@var{arch}}] [@b{-matomic}|@b{-mno-atomic}] [@b{-mbig-endian}|@b{-mlittle-endian}] [@b{-mdsbt}|@b{-mno-dsbt}] + [@b{-mpid=no}|@b{-mpid=near}|@b{-mpid=far}] [@b{-mpic}|@b{-mno-pic}] @end ifset @ifset Z80 @@ -1294,6 +1295,29 @@ default, causes the tag to have a value of 0, indicating that the code does not use DSBT addressing. The linker will emit a warning if objects of different type (DSBT and non-DSBT) are linked together. +@item -mpid=no +@itemx -mpid=near +@itemx -mpid=far +The @option{-mpid=} option causes the assembler to generate the +@code{Tag_ABI_PID} attribute with a value indicating the form of data +addressing used by the code. @option{-mpid=no}, the default, +indicates position-dependent data addressing, @option{-mpid=near} +indicates position-independent addressing with GOT accesses using near +DP addressing, and @option{-mpid=far} indicates position-independent +addressing with GOT accesses using far DP addressing. The linker will +emit a warning if objects built with different settings of this option +are linked together. + +@item -mpic +@itemx -mno-pic +The @option{-mpic} option causes the assembler to generate the +@code{Tag_ABI_PIC} attribute with a value of 1, indicating that the +code is using position-independent code addressing, The +@code{-mno-pic} option, the default, causes the tag to have a value of +0, indicating position-dependent code addressing. The linker will +emit a warning if objects of different type (position-dependent and +position-independent) are linked together. + @item -mbig-endian @itemx -mlittle-endian Generate code for the specified endianness. The default is diff --git a/gas/doc/c-tic6x.texi b/gas/doc/c-tic6x.texi index cd8be230217..72c873bfd98 100644 --- a/gas/doc/c-tic6x.texi +++ b/gas/doc/c-tic6x.texi @@ -59,6 +59,32 @@ default, causes the tag to have a value of 0, indicating that the code does not use DSBT addressing. The linker will emit a warning if objects of different type (DSBT and non-DSBT) are linked together. +@cindex @code{-mpid=} command line option, TIC6X +@item -mpid=no +@itemx -mpid=near +@itemx -mpid=far +The @option{-mpid=} option causes the assembler to generate the +@code{Tag_ABI_PID} attribute with a value indicating the form of data +addressing used by the code. @option{-mpid=no}, the default, +indicates position-dependent data addressing, @option{-mpid=near} +indicates position-independent addressing with GOT accesses using near +DP addressing, and @option{-mpid=far} indicates position-independent +addressing with GOT accesses using far DP addressing. The linker will +emit a warning if objects built with different settings of this option +are linked together. + +@cindex @code{-mpic} command line option, TIC6X +@cindex @code{-mno-pic} command line option, TIC6X +@item -mpic +@itemx -mno-pic +The @option{-mpic} option causes the assembler to generate the +@code{Tag_ABI_PIC} attribute with a value of 1, indicating that the +code is using position-independent code addressing, The +@code{-mno-pic} option, the default, causes the tag to have a value of +0, indicating position-dependent code addressing. The linker will +emit a warning if objects of different type (position-dependent and +position-independent) are linked together. + @cindex TIC6X big-endian output @cindex TIC6X little-endian output @cindex big-endian output, TIC6X @@ -125,7 +151,13 @@ These have the same effects as @option{-matomic} and Set the C6000 EABI build attribute @var{tag} to @var{value}. The @var{tag} is either an attribute number or one of -@code{Tag_ISA}, @code{Tag_ABI_DSBT} and @code{Tag_ABI_compatibility}. The +@code{Tag_ISA}, @code{Tag_ABI_wchar_t}, +@code{Tag_ABI_stack_align_needed}, +@code{Tag_ABI_stack_align_preserved}, @code{Tag_ABI_DSBT}, +@code{Tag_ABI_PID}, @code{Tag_ABI_PIC}, +@code{TAG_ABI_array_object_alignment}, +@code{TAG_ABI_array_object_align_expected}, +@code{Tag_ABI_compatibility} and @code{Tag_ABI_conformance}. The @var{value} is either a @code{number}, @code{"string"}, or @code{number, "string"} depending on the tag. diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 72e26339253..e7936f6c990 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,38 @@ +2010-11-02 Joseph Myers + + * gas/tic6x/attr-array-directive-1.d, + gas/tic6x/attr-array-directive-1.s, + gas/tic6x/attr-array-directive-2.d, + gas/tic6x/attr-array-directive-2.s, + gas/tic6x/attr-array-directive-3.d, + gas/tic6x/attr-array-directive-3.s, + gas/tic6x/attr-array-directive-4.d, + gas/tic6x/attr-array-directive-4.s, + gas/tic6x/attr-conformance-directive-1.d, + gas/tic6x/attr-conformance-directive-1.s, + gas/tic6x/attr-conformance-directive-2.d, + gas/tic6x/attr-conformance-directive-2.s, + gas/tic6x/attr-pic-directive-1.d, + gas/tic6x/attr-pic-directive-1.s, + gas/tic6x/attr-pic-directive-2.d, + gas/tic6x/attr-pic-directive-2.s, + gas/tic6x/attr-pic-opts-mno-pic.d, gas/tic6x/attr-pic-opts-mpic.d, + gas/tic6x/attr-pid-directive-1.d, + gas/tic6x/attr-pid-directive-1.s, + gas/tic6x/attr-pid-directive-2.d, + gas/tic6x/attr-pid-directive-2.s, + gas/tic6x/attr-pid-opts-mpid-far.d, + gas/tic6x/attr-pid-opts-mpid-near.d, + gas/tic6x/attr-pid-opts-mpid-no.d, + gas/tic6x/attr-stack-directive-1.d, + gas/tic6x/attr-stack-directive-1.s, + gas/tic6x/attr-stack-directive-2.d, + gas/tic6x/attr-stack-directive-2.s, + gas/tic6x/attr-wchar-directive-1.d, + gas/tic6x/attr-wchar-directive-1.s, + gas/tic6x/attr-wchar-directive-2.d, + gas/tic6x/attr-wchar-directive-2.s: New tests. + 2010-10-29 Joseph Myers * gas/tic6x/attr-compatibility-directive-1.d, diff --git a/gas/testsuite/gas/tic6x/attr-array-directive-1.d b/gas/testsuite/gas/tic6x/attr-array-directive-1.d new file mode 100644 index 00000000000..dadcf772bf7 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-array-directive-1.d @@ -0,0 +1,9 @@ +#readelf: -A +#name: C6X array alignment attributes, directives 1 +#as: +#source: attr-array-directive-1.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_alignment: 4-byte diff --git a/gas/testsuite/gas/tic6x/attr-array-directive-1.s b/gas/testsuite/gas/tic6x/attr-array-directive-1.s new file mode 100644 index 00000000000..5f9929b20c8 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-array-directive-1.s @@ -0,0 +1 @@ +.c6xabi_attribute Tag_ABI_array_object_alignment, 1 diff --git a/gas/testsuite/gas/tic6x/attr-array-directive-2.d b/gas/testsuite/gas/tic6x/attr-array-directive-2.d new file mode 100644 index 00000000000..7b56735f167 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-array-directive-2.d @@ -0,0 +1,9 @@ +#readelf: -A +#name: C6X array alignment attributes, directives 2 +#as: +#source: attr-array-directive-2.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_alignment: 16-byte diff --git a/gas/testsuite/gas/tic6x/attr-array-directive-2.s b/gas/testsuite/gas/tic6x/attr-array-directive-2.s new file mode 100644 index 00000000000..73538f6823d --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-array-directive-2.s @@ -0,0 +1 @@ +.c6xabi_attribute 18, 2 diff --git a/gas/testsuite/gas/tic6x/attr-array-directive-3.d b/gas/testsuite/gas/tic6x/attr-array-directive-3.d new file mode 100644 index 00000000000..0b74f2e6e4c --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-array-directive-3.d @@ -0,0 +1,9 @@ +#readelf: -A +#name: C6X array alignment attributes, directives 3 +#as: +#source: attr-array-directive-3.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_align_expected: 4-byte diff --git a/gas/testsuite/gas/tic6x/attr-array-directive-3.s b/gas/testsuite/gas/tic6x/attr-array-directive-3.s new file mode 100644 index 00000000000..b4bf4019bf6 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-array-directive-3.s @@ -0,0 +1 @@ +.c6xabi_attribute Tag_ABI_array_object_align_expected, 1 diff --git a/gas/testsuite/gas/tic6x/attr-array-directive-4.d b/gas/testsuite/gas/tic6x/attr-array-directive-4.d new file mode 100644 index 00000000000..13d9e4160a1 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-array-directive-4.d @@ -0,0 +1,9 @@ +#readelf: -A +#name: C6X array alignment attributes, directives 4 +#as: +#source: attr-array-directive-4.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_align_expected: 16-byte diff --git a/gas/testsuite/gas/tic6x/attr-array-directive-4.s b/gas/testsuite/gas/tic6x/attr-array-directive-4.s new file mode 100644 index 00000000000..484e54da0a2 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-array-directive-4.s @@ -0,0 +1 @@ +.c6xabi_attribute 20, 2 diff --git a/gas/testsuite/gas/tic6x/attr-conformance-directive-1.d b/gas/testsuite/gas/tic6x/attr-conformance-directive-1.d new file mode 100644 index 00000000000..cd91758d419 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-conformance-directive-1.d @@ -0,0 +1,9 @@ +#readelf: -A +#name: C6X conformance attribute, directives 1 +#as: +#source: attr-conformance-directive-1.s + +Attribute Section: c6xabi +File Attributes + Tag_ABI_conformance: "1.0" + Tag_ISA: C674x diff --git a/gas/testsuite/gas/tic6x/attr-conformance-directive-1.s b/gas/testsuite/gas/tic6x/attr-conformance-directive-1.s new file mode 100644 index 00000000000..29640849669 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-conformance-directive-1.s @@ -0,0 +1 @@ +.c6xabi_attribute Tag_ABI_conformance, "1.0" diff --git a/gas/testsuite/gas/tic6x/attr-conformance-directive-2.d b/gas/testsuite/gas/tic6x/attr-conformance-directive-2.d new file mode 100644 index 00000000000..6f130028ec9 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-conformance-directive-2.d @@ -0,0 +1,9 @@ +#readelf: -A +#name: C6X conformance attribute, directives 2 +#as: +#source: attr-conformance-directive-2.s + +Attribute Section: c6xabi +File Attributes + Tag_ABI_conformance: "1.0" + Tag_ISA: C674x diff --git a/gas/testsuite/gas/tic6x/attr-conformance-directive-2.s b/gas/testsuite/gas/tic6x/attr-conformance-directive-2.s new file mode 100644 index 00000000000..a112b7bbf20 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-conformance-directive-2.s @@ -0,0 +1 @@ +.c6xabi_attribute 67, "1.0" diff --git a/gas/testsuite/gas/tic6x/attr-pic-directive-1.d b/gas/testsuite/gas/tic6x/attr-pic-directive-1.d new file mode 100644 index 00000000000..d453ddd8e51 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pic-directive-1.d @@ -0,0 +1,9 @@ +#readelf: -A +#name: C6X PIC attribute, directives 1 +#as: +#source: attr-pic-directive-1.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_PIC: Code addressing position-independent diff --git a/gas/testsuite/gas/tic6x/attr-pic-directive-1.s b/gas/testsuite/gas/tic6x/attr-pic-directive-1.s new file mode 100644 index 00000000000..2bab373a955 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pic-directive-1.s @@ -0,0 +1 @@ +.c6xabi_attribute Tag_ABI_PIC, 1 diff --git a/gas/testsuite/gas/tic6x/attr-pic-directive-2.d b/gas/testsuite/gas/tic6x/attr-pic-directive-2.d new file mode 100644 index 00000000000..40c3eec376a --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pic-directive-2.d @@ -0,0 +1,9 @@ +#readelf: -A +#name: C6X PIC attribute, directives 2 +#as: +#source: attr-pic-directive-2.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_PIC: Code addressing position-independent diff --git a/gas/testsuite/gas/tic6x/attr-pic-directive-2.s b/gas/testsuite/gas/tic6x/attr-pic-directive-2.s new file mode 100644 index 00000000000..7a034d616c6 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pic-directive-2.s @@ -0,0 +1 @@ +.c6xabi_attribute 16, 1 diff --git a/gas/testsuite/gas/tic6x/attr-pic-opts-mno-pic.d b/gas/testsuite/gas/tic6x/attr-pic-opts-mno-pic.d new file mode 100644 index 00000000000..8cd2addea04 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pic-opts-mno-pic.d @@ -0,0 +1,8 @@ +#readelf: -A +#name: C6X PIC attribute, -mno-pic +#as: -mno-pic +#source: dummy.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/gas/testsuite/gas/tic6x/attr-pic-opts-mpic.d b/gas/testsuite/gas/tic6x/attr-pic-opts-mpic.d new file mode 100644 index 00000000000..f5d371b6e82 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pic-opts-mpic.d @@ -0,0 +1,9 @@ +#readelf: -A +#name: C6X PIC attribute, -mpic +#as: -mpic +#source: dummy.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_PIC: Code addressing position-independent diff --git a/gas/testsuite/gas/tic6x/attr-pid-directive-1.d b/gas/testsuite/gas/tic6x/attr-pid-directive-1.d new file mode 100644 index 00000000000..f4a23877a18 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pid-directive-1.d @@ -0,0 +1,9 @@ +#readelf: -A +#name: C6X PID attribute, directives 1 +#as: +#source: attr-pid-directive-1.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_PID: Data addressing position-independent, GOT near DP diff --git a/gas/testsuite/gas/tic6x/attr-pid-directive-1.s b/gas/testsuite/gas/tic6x/attr-pid-directive-1.s new file mode 100644 index 00000000000..b9731774dbf --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pid-directive-1.s @@ -0,0 +1 @@ +.c6xabi_attribute Tag_ABI_PID, 1 diff --git a/gas/testsuite/gas/tic6x/attr-pid-directive-2.d b/gas/testsuite/gas/tic6x/attr-pid-directive-2.d new file mode 100644 index 00000000000..46abb9e5ded --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pid-directive-2.d @@ -0,0 +1,9 @@ +#readelf: -A +#name: C6X PID attribute, directives 2 +#as: +#source: attr-pid-directive-2.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_PID: Data addressing position-independent, GOT far from DP diff --git a/gas/testsuite/gas/tic6x/attr-pid-directive-2.s b/gas/testsuite/gas/tic6x/attr-pid-directive-2.s new file mode 100644 index 00000000000..c392edaee51 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pid-directive-2.s @@ -0,0 +1 @@ +.c6xabi_attribute 14, 2 diff --git a/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-far.d b/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-far.d new file mode 100644 index 00000000000..7a4212102a6 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-far.d @@ -0,0 +1,9 @@ +#readelf: -A +#name: C6X PID attribute, -mpid=far +#as: -mpid=far +#source: dummy.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_PID: Data addressing position-independent, GOT far from DP diff --git a/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-near.d b/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-near.d new file mode 100644 index 00000000000..3e3aad8e0b3 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-near.d @@ -0,0 +1,9 @@ +#readelf: -A +#name: C6X PID attribute, -mpid=near +#as: -mpid=near +#source: dummy.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_PID: Data addressing position-independent, GOT near DP diff --git a/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-no.d b/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-no.d new file mode 100644 index 00000000000..e70555ab7fd --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-pid-opts-mpid-no.d @@ -0,0 +1,8 @@ +#readelf: -A +#name: C6X PID attribute, -mpid=no +#as: -mpid=no +#source: dummy.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/gas/testsuite/gas/tic6x/attr-stack-directive-1.d b/gas/testsuite/gas/tic6x/attr-stack-directive-1.d new file mode 100644 index 00000000000..ea371f39477 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-stack-directive-1.d @@ -0,0 +1,9 @@ +#readelf: -A +#name: C6X stack alignment attributes, directives 1 +#as: +#source: attr-stack-directive-1.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_stack_align_preserved: 16-byte diff --git a/gas/testsuite/gas/tic6x/attr-stack-directive-1.s b/gas/testsuite/gas/tic6x/attr-stack-directive-1.s new file mode 100644 index 00000000000..46295d267ec --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-stack-directive-1.s @@ -0,0 +1,2 @@ +.c6xabi_attribute Tag_ABI_stack_align_needed, 0 +.c6xabi_attribute Tag_ABI_stack_align_preserved, 1 diff --git a/gas/testsuite/gas/tic6x/attr-stack-directive-2.d b/gas/testsuite/gas/tic6x/attr-stack-directive-2.d new file mode 100644 index 00000000000..8fc8714bee5 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-stack-directive-2.d @@ -0,0 +1,10 @@ +#readelf: -A +#name: C6X stack alignment attributes, directives 2 +#as: +#source: attr-stack-directive-2.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_stack_align_needed: 16-byte + Tag_ABI_stack_align_preserved: 16-byte diff --git a/gas/testsuite/gas/tic6x/attr-stack-directive-2.s b/gas/testsuite/gas/tic6x/attr-stack-directive-2.s new file mode 100644 index 00000000000..3c1c6949fa8 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-stack-directive-2.s @@ -0,0 +1,2 @@ +.c6xabi_attribute 8, 1 +.c6xabi_attribute 10, 1 diff --git a/gas/testsuite/gas/tic6x/attr-wchar-directive-1.d b/gas/testsuite/gas/tic6x/attr-wchar-directive-1.d new file mode 100644 index 00000000000..ec0fca6bc43 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-wchar-directive-1.d @@ -0,0 +1,9 @@ +#readelf: -A +#name: C6X wchar_t attribute, directives 1 +#as: +#source: attr-wchar-directive-1.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_wchar_t: 2 bytes diff --git a/gas/testsuite/gas/tic6x/attr-wchar-directive-1.s b/gas/testsuite/gas/tic6x/attr-wchar-directive-1.s new file mode 100644 index 00000000000..69d11861839 --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-wchar-directive-1.s @@ -0,0 +1 @@ +.c6xabi_attribute Tag_ABI_wchar_t, 1 diff --git a/gas/testsuite/gas/tic6x/attr-wchar-directive-2.d b/gas/testsuite/gas/tic6x/attr-wchar-directive-2.d new file mode 100644 index 00000000000..a590682411b --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-wchar-directive-2.d @@ -0,0 +1,9 @@ +#readelf: -A +#name: C6X wchar_t attribute, directives 2 +#as: +#source: attr-wchar-directive-2.s + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_wchar_t: 4 bytes diff --git a/gas/testsuite/gas/tic6x/attr-wchar-directive-2.s b/gas/testsuite/gas/tic6x/attr-wchar-directive-2.s new file mode 100644 index 00000000000..8e3830c8e4b --- /dev/null +++ b/gas/testsuite/gas/tic6x/attr-wchar-directive-2.s @@ -0,0 +1 @@ +.c6xabi_attribute 6, 2 diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog index de57262e9f7..39de1ff9fea 100644 --- a/include/elf/ChangeLog +++ b/include/elf/ChangeLog @@ -1,3 +1,10 @@ +2010-11-02 Joseph Myers + + * tic6x-attrs.h (Tag_ABI_wchar_t, Tag_ABI_stack_align_needed, + Tag_ABI_stack_align_preserved, Tag_ABI_PID, Tag_ABI_PIC, + Tag_ABI_array_object_alignment, + Tag_ABI_array_object_align_expected, Tag_ABI_conformance): Define. + 2010-10-29 Joseph Myers * tic6x-attrs.h (Tag_ABI_compatibility): Define. diff --git a/include/elf/tic6x-attrs.h b/include/elf/tic6x-attrs.h index c8d8332d6ed..21ce1e4f536 100644 --- a/include/elf/tic6x-attrs.h +++ b/include/elf/tic6x-attrs.h @@ -23,5 +23,13 @@ name and value. */ TAG(Tag_ISA, 4) +TAG(Tag_ABI_wchar_t, 6) +TAG(Tag_ABI_stack_align_needed, 8) +TAG(Tag_ABI_stack_align_preserved, 10) TAG(Tag_ABI_DSBT, 12) +TAG(Tag_ABI_PID, 14) +TAG(Tag_ABI_PIC, 16) +TAG(Tag_ABI_array_object_alignment, 18) +TAG(Tag_ABI_array_object_align_expected, 20) TAG(Tag_ABI_compatibility, 32) +TAG(Tag_ABI_conformance, 67) diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 8ec2ab81c57..8d49e4ab8a7 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,59 @@ +2010-11-02 Joseph Myers + + * ld-tic6x/attr-array-16-16.d, ld-tic6x/attr-array-16-4.d, + ld-tic6x/attr-array-16-416.d, ld-tic6x/attr-array-16-48.d, + ld-tic6x/attr-array-16-8.d, ld-tic6x/attr-array-16-816.d, + ld-tic6x/attr-array-16.s, ld-tic6x/attr-array-4-16.d, + ld-tic6x/attr-array-4-4.d, ld-tic6x/attr-array-4-416.d, + ld-tic6x/attr-array-4-48.d, ld-tic6x/attr-array-4-8.d, + ld-tic6x/attr-array-4-816.d, ld-tic6x/attr-array-4.s, + ld-tic6x/attr-array-416-16.d, ld-tic6x/attr-array-416-4.d, + ld-tic6x/attr-array-416-416.d, ld-tic6x/attr-array-416-48.d, + ld-tic6x/attr-array-416-8.d, ld-tic6x/attr-array-416-816.d, + ld-tic6x/attr-array-416.s, ld-tic6x/attr-array-48-16.d, + ld-tic6x/attr-array-48-4.d, ld-tic6x/attr-array-48-416.d, + ld-tic6x/attr-array-48-48.d, ld-tic6x/attr-array-48-8.d, + ld-tic6x/attr-array-48-816.d, ld-tic6x/attr-array-48.s, + ld-tic6x/attr-array-8-16.d, ld-tic6x/attr-array-8-4.d, + ld-tic6x/attr-array-8-416.d, ld-tic6x/attr-array-8-48.d, + ld-tic6x/attr-array-8-8.d, ld-tic6x/attr-array-8-816.d, + ld-tic6x/attr-array-8.s, ld-tic6x/attr-array-816-16.d, + ld-tic6x/attr-array-816-4.d, ld-tic6x/attr-array-816-416.d, + ld-tic6x/attr-array-816-48.d, ld-tic6x/attr-array-816-8.d, + ld-tic6x/attr-array-816-816.d, ld-tic6x/attr-array-816.s, + ld-tic6x/attr-conformance-10-10.d, + ld-tic6x/attr-conformance-10-11.d, + ld-tic6x/attr-conformance-10-none.d, + ld-tic6x/attr-conformance-10.s, ld-tic6x/attr-conformance-11-10.d, + ld-tic6x/attr-conformance-11-11.d, + ld-tic6x/attr-conformance-11-none.d, + ld-tic6x/attr-conformance-11.s, + ld-tic6x/attr-conformance-none-10.d, + ld-tic6x/attr-conformance-none-11.d, + ld-tic6x/attr-conformance-none-none.d, + ld-tic6x/attr-conformance-none.s, ld-tic6x/attr-pic-0.s, + ld-tic6x/attr-pic-00.d, ld-tic6x/attr-pic-01.d, + ld-tic6x/attr-pic-1.s, ld-tic6x/attr-pic-10.d, + ld-tic6x/attr-pic-11.d, ld-tic6x/attr-pid-0.s, + ld-tic6x/attr-pid-00.d, ld-tic6x/attr-pid-01.d, + ld-tic6x/attr-pid-02.d, ld-tic6x/attr-pid-1.s, + ld-tic6x/attr-pid-10.d, ld-tic6x/attr-pid-11.d, + ld-tic6x/attr-pid-12.d, ld-tic6x/attr-pid-2.s, + ld-tic6x/attr-pid-20.d, ld-tic6x/attr-pid-21.d, + ld-tic6x/attr-pid-22.d, ld-tic6x/attr-stack-16-16.d, + ld-tic6x/attr-stack-16-8.d, ld-tic6x/attr-stack-16-816.d, + ld-tic6x/attr-stack-16.s, ld-tic6x/attr-stack-8-16.d, + ld-tic6x/attr-stack-8-8.d, ld-tic6x/attr-stack-8-816.d, + ld-tic6x/attr-stack-8.s, ld-tic6x/attr-stack-816-16.d, + ld-tic6x/attr-stack-816-8.d, ld-tic6x/attr-stack-816-816.d, + ld-tic6x/attr-stack-816.s, ld-tic6x/attr-wchar-0.s, + ld-tic6x/attr-wchar-00.d, ld-tic6x/attr-wchar-01.d, + ld-tic6x/attr-wchar-02.d, ld-tic6x/attr-wchar-1.s, + ld-tic6x/attr-wchar-10.d, ld-tic6x/attr-wchar-11.d, + ld-tic6x/attr-wchar-12.d, ld-tic6x/attr-wchar-2.s, + ld-tic6x/attr-wchar-20.d, ld-tic6x/attr-wchar-21.d, + ld-tic6x/attr-wchar-22.d: New tests. + 2010-11-02 H.J. Lu * ld-elf/compress1a.d: Also check MIPS_DWARF. diff --git a/ld/testsuite/ld-tic6x/attr-array-16-16.d b/ld/testsuite/ld-tic6x/attr-array-16-16.d new file mode 100644 index 00000000000..d39e045b740 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-16-16.d @@ -0,0 +1,12 @@ +#name: C6X array attribute merging, 16 16 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-16.s +#source: attr-array-16.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_alignment: 16-byte + Tag_ABI_array_object_align_expected: 16-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-16-4.d b/ld/testsuite/ld-tic6x/attr-array-16-4.d new file mode 100644 index 00000000000..1d38f2afaf3 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-16-4.d @@ -0,0 +1,6 @@ +#name: C6X array attribute merging, 16 4 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-16.s +#source: attr-array-4.s +#error: .*requires more array alignment than .* preserves diff --git a/ld/testsuite/ld-tic6x/attr-array-16-416.d b/ld/testsuite/ld-tic6x/attr-array-16-416.d new file mode 100644 index 00000000000..ec74ed58e06 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-16-416.d @@ -0,0 +1,12 @@ +#name: C6X array attribute merging, 16 416 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-16.s +#source: attr-array-416.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_alignment: 16-byte + Tag_ABI_array_object_align_expected: 16-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-16-48.d b/ld/testsuite/ld-tic6x/attr-array-16-48.d new file mode 100644 index 00000000000..5ef29089db8 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-16-48.d @@ -0,0 +1,6 @@ +#name: C6X array attribute merging, 16 48 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-16.s +#source: attr-array-48.s +#error: .*requires more array alignment than .* preserves diff --git a/ld/testsuite/ld-tic6x/attr-array-16-8.d b/ld/testsuite/ld-tic6x/attr-array-16-8.d new file mode 100644 index 00000000000..e8228f05280 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-16-8.d @@ -0,0 +1,6 @@ +#name: C6X array attribute merging, 16 8 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-16.s +#source: attr-array-8.s +#error: .*requires more array alignment than .* preserves diff --git a/ld/testsuite/ld-tic6x/attr-array-16-816.d b/ld/testsuite/ld-tic6x/attr-array-16-816.d new file mode 100644 index 00000000000..14bc98463a6 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-16-816.d @@ -0,0 +1,12 @@ +#name: C6X array attribute merging, 16 816 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-16.s +#source: attr-array-816.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_alignment: 16-byte + Tag_ABI_array_object_align_expected: 16-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-16.s b/ld/testsuite/ld-tic6x/attr-array-16.s new file mode 100644 index 00000000000..70401ff418d --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-16.s @@ -0,0 +1,2 @@ +.c6xabi_attribute Tag_ABI_array_object_align_expected, 2 +.c6xabi_attribute Tag_ABI_array_object_alignment, 2 diff --git a/ld/testsuite/ld-tic6x/attr-array-4-16.d b/ld/testsuite/ld-tic6x/attr-array-4-16.d new file mode 100644 index 00000000000..3c2c1382202 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-4-16.d @@ -0,0 +1,6 @@ +#name: C6X array attribute merging, 4 16 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-4.s +#source: attr-array-16.s +#error: .*requires more array alignment than .* preserves diff --git a/ld/testsuite/ld-tic6x/attr-array-4-4.d b/ld/testsuite/ld-tic6x/attr-array-4-4.d new file mode 100644 index 00000000000..920ff103f04 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-4-4.d @@ -0,0 +1,12 @@ +#name: C6X array attribute merging, 4 4 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-4.s +#source: attr-array-4.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_alignment: 4-byte + Tag_ABI_array_object_align_expected: 4-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-4-416.d b/ld/testsuite/ld-tic6x/attr-array-4-416.d new file mode 100644 index 00000000000..1b5e516c34f --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-4-416.d @@ -0,0 +1,12 @@ +#name: C6X array attribute merging, 4 416 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-4.s +#source: attr-array-416.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_alignment: 4-byte + Tag_ABI_array_object_align_expected: 4-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-4-48.d b/ld/testsuite/ld-tic6x/attr-array-4-48.d new file mode 100644 index 00000000000..e9981624fb7 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-4-48.d @@ -0,0 +1,12 @@ +#name: C6X array attribute merging, 4 48 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-4.s +#source: attr-array-48.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_alignment: 4-byte + Tag_ABI_array_object_align_expected: 4-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-4-8.d b/ld/testsuite/ld-tic6x/attr-array-4-8.d new file mode 100644 index 00000000000..d8b41c79b21 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-4-8.d @@ -0,0 +1,6 @@ +#name: C6X array attribute merging, 4 8 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-4.s +#source: attr-array-8.s +#error: .*requires more array alignment than .* preserves diff --git a/ld/testsuite/ld-tic6x/attr-array-4-816.d b/ld/testsuite/ld-tic6x/attr-array-4-816.d new file mode 100644 index 00000000000..a4dcc01453f --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-4-816.d @@ -0,0 +1,6 @@ +#name: C6X array attribute merging, 4 816 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-4.s +#source: attr-array-816.s +#error: .*requires more array alignment than .* preserves diff --git a/ld/testsuite/ld-tic6x/attr-array-4.s b/ld/testsuite/ld-tic6x/attr-array-4.s new file mode 100644 index 00000000000..abaa25f31d3 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-4.s @@ -0,0 +1,2 @@ +.c6xabi_attribute Tag_ABI_array_object_align_expected, 1 +.c6xabi_attribute Tag_ABI_array_object_alignment, 1 diff --git a/ld/testsuite/ld-tic6x/attr-array-416-16.d b/ld/testsuite/ld-tic6x/attr-array-416-16.d new file mode 100644 index 00000000000..81686589ec6 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-416-16.d @@ -0,0 +1,12 @@ +#name: C6X array attribute merging, 416 16 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-416.s +#source: attr-array-16.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_alignment: 16-byte + Tag_ABI_array_object_align_expected: 16-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-416-4.d b/ld/testsuite/ld-tic6x/attr-array-416-4.d new file mode 100644 index 00000000000..53d4bc7f1c6 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-416-4.d @@ -0,0 +1,12 @@ +#name: C6X array attribute merging, 416 4 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-416.s +#source: attr-array-4.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_alignment: 4-byte + Tag_ABI_array_object_align_expected: 4-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-416-416.d b/ld/testsuite/ld-tic6x/attr-array-416-416.d new file mode 100644 index 00000000000..9ca864db345 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-416-416.d @@ -0,0 +1,12 @@ +#name: C6X array attribute merging, 416 416 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-416.s +#source: attr-array-416.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_alignment: 16-byte + Tag_ABI_array_object_align_expected: 4-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-416-48.d b/ld/testsuite/ld-tic6x/attr-array-416-48.d new file mode 100644 index 00000000000..760a0234c14 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-416-48.d @@ -0,0 +1,11 @@ +#name: C6X array attribute merging, 416 48 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-416.s +#source: attr-array-48.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_align_expected: 4-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-416-8.d b/ld/testsuite/ld-tic6x/attr-array-416-8.d new file mode 100644 index 00000000000..58a43258986 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-416-8.d @@ -0,0 +1,10 @@ +#name: C6X array attribute merging, 416 8 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-416.s +#source: attr-array-8.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-array-416-816.d b/ld/testsuite/ld-tic6x/attr-array-416-816.d new file mode 100644 index 00000000000..12b4abc82b8 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-416-816.d @@ -0,0 +1,11 @@ +#name: C6X array attribute merging, 416 816 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-416.s +#source: attr-array-816.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_alignment: 16-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-416.s b/ld/testsuite/ld-tic6x/attr-array-416.s new file mode 100644 index 00000000000..a9cba9da21d --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-416.s @@ -0,0 +1,2 @@ +.c6xabi_attribute Tag_ABI_array_object_align_expected, 1 +.c6xabi_attribute Tag_ABI_array_object_alignment, 2 diff --git a/ld/testsuite/ld-tic6x/attr-array-48-16.d b/ld/testsuite/ld-tic6x/attr-array-48-16.d new file mode 100644 index 00000000000..68fa058f58c --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-48-16.d @@ -0,0 +1,6 @@ +#name: C6X array attribute merging, 48 16 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-48.s +#source: attr-array-16.s +#error: .*requires more array alignment than .* preserves diff --git a/ld/testsuite/ld-tic6x/attr-array-48-4.d b/ld/testsuite/ld-tic6x/attr-array-48-4.d new file mode 100644 index 00000000000..76faefacc43 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-48-4.d @@ -0,0 +1,12 @@ +#name: C6X array attribute merging, 48 4 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-48.s +#source: attr-array-4.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_alignment: 4-byte + Tag_ABI_array_object_align_expected: 4-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-48-416.d b/ld/testsuite/ld-tic6x/attr-array-48-416.d new file mode 100644 index 00000000000..c02d8f94f69 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-48-416.d @@ -0,0 +1,11 @@ +#name: C6X array attribute merging, 48 416 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-48.s +#source: attr-array-416.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_align_expected: 4-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-48-48.d b/ld/testsuite/ld-tic6x/attr-array-48-48.d new file mode 100644 index 00000000000..9801173250c --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-48-48.d @@ -0,0 +1,11 @@ +#name: C6X array attribute merging, 48 48 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-48.s +#source: attr-array-48.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_align_expected: 4-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-48-8.d b/ld/testsuite/ld-tic6x/attr-array-48-8.d new file mode 100644 index 00000000000..cd706047e4d --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-48-8.d @@ -0,0 +1,10 @@ +#name: C6X array attribute merging, 48 8 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-48.s +#source: attr-array-8.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-array-48-816.d b/ld/testsuite/ld-tic6x/attr-array-48-816.d new file mode 100644 index 00000000000..795d839a9e0 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-48-816.d @@ -0,0 +1,10 @@ +#name: C6X array attribute merging, 48 816 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-48.s +#source: attr-array-816.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-array-48.s b/ld/testsuite/ld-tic6x/attr-array-48.s new file mode 100644 index 00000000000..a1cb22aeedb --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-48.s @@ -0,0 +1,2 @@ +.c6xabi_attribute Tag_ABI_array_object_align_expected, 1 +.c6xabi_attribute Tag_ABI_array_object_alignment, 0 diff --git a/ld/testsuite/ld-tic6x/attr-array-8-16.d b/ld/testsuite/ld-tic6x/attr-array-8-16.d new file mode 100644 index 00000000000..0d6bafb876c --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-8-16.d @@ -0,0 +1,6 @@ +#name: C6X array attribute merging, 8 16 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-8.s +#source: attr-array-16.s +#error: .*requires more array alignment than .* preserves diff --git a/ld/testsuite/ld-tic6x/attr-array-8-4.d b/ld/testsuite/ld-tic6x/attr-array-8-4.d new file mode 100644 index 00000000000..c7a60337898 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-8-4.d @@ -0,0 +1,6 @@ +#name: C6X array attribute merging, 8 4 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-8.s +#source: attr-array-4.s +#error: .*requires more array alignment than .* preserves diff --git a/ld/testsuite/ld-tic6x/attr-array-8-416.d b/ld/testsuite/ld-tic6x/attr-array-8-416.d new file mode 100644 index 00000000000..f5f526173db --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-8-416.d @@ -0,0 +1,10 @@ +#name: C6X array attribute merging, 8 416 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-8.s +#source: attr-array-416.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-array-8-48.d b/ld/testsuite/ld-tic6x/attr-array-8-48.d new file mode 100644 index 00000000000..506ec4c1af2 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-8-48.d @@ -0,0 +1,10 @@ +#name: C6X array attribute merging, 8 48 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-8.s +#source: attr-array-48.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-array-8-8.d b/ld/testsuite/ld-tic6x/attr-array-8-8.d new file mode 100644 index 00000000000..86329f33d4a --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-8-8.d @@ -0,0 +1,10 @@ +#name: C6X array attribute merging, 8 8 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-8.s +#source: attr-array-8.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-array-8-816.d b/ld/testsuite/ld-tic6x/attr-array-8-816.d new file mode 100644 index 00000000000..ecb93740386 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-8-816.d @@ -0,0 +1,10 @@ +#name: C6X array attribute merging, 8 816 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-8.s +#source: attr-array-816.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-array-8.s b/ld/testsuite/ld-tic6x/attr-array-8.s new file mode 100644 index 00000000000..2d696871175 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-8.s @@ -0,0 +1,2 @@ +.c6xabi_attribute Tag_ABI_array_object_align_expected, 0 +.c6xabi_attribute Tag_ABI_array_object_alignment, 0 diff --git a/ld/testsuite/ld-tic6x/attr-array-816-16.d b/ld/testsuite/ld-tic6x/attr-array-816-16.d new file mode 100644 index 00000000000..2ef2f8ec972 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-816-16.d @@ -0,0 +1,12 @@ +#name: C6X array attribute merging, 816 16 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-816.s +#source: attr-array-16.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_alignment: 16-byte + Tag_ABI_array_object_align_expected: 16-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-816-4.d b/ld/testsuite/ld-tic6x/attr-array-816-4.d new file mode 100644 index 00000000000..bd06a2db480 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-816-4.d @@ -0,0 +1,6 @@ +#name: C6X array attribute merging, 816 4 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-816.s +#source: attr-array-4.s +#error: .*requires more array alignment than .* preserves diff --git a/ld/testsuite/ld-tic6x/attr-array-816-416.d b/ld/testsuite/ld-tic6x/attr-array-816-416.d new file mode 100644 index 00000000000..9563f7e2741 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-816-416.d @@ -0,0 +1,11 @@ +#name: C6X array attribute merging, 816 416 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-816.s +#source: attr-array-416.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_alignment: 16-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-816-48.d b/ld/testsuite/ld-tic6x/attr-array-816-48.d new file mode 100644 index 00000000000..e9656432efb --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-816-48.d @@ -0,0 +1,10 @@ +#name: C6X array attribute merging, 816 48 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-816.s +#source: attr-array-48.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-array-816-8.d b/ld/testsuite/ld-tic6x/attr-array-816-8.d new file mode 100644 index 00000000000..7a29cc5705f --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-816-8.d @@ -0,0 +1,10 @@ +#name: C6X array attribute merging, 816 8 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-816.s +#source: attr-array-8.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-array-816-816.d b/ld/testsuite/ld-tic6x/attr-array-816-816.d new file mode 100644 index 00000000000..0888eae24d5 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-816-816.d @@ -0,0 +1,11 @@ +#name: C6X array attribute merging, 816 816 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-array-816.s +#source: attr-array-816.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_array_object_alignment: 16-byte diff --git a/ld/testsuite/ld-tic6x/attr-array-816.s b/ld/testsuite/ld-tic6x/attr-array-816.s new file mode 100644 index 00000000000..49ac9481388 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-array-816.s @@ -0,0 +1,2 @@ +.c6xabi_attribute Tag_ABI_array_object_align_expected, 0 +.c6xabi_attribute Tag_ABI_array_object_alignment, 2 diff --git a/ld/testsuite/ld-tic6x/attr-conformance-10-10.d b/ld/testsuite/ld-tic6x/attr-conformance-10-10.d new file mode 100644 index 00000000000..a16e503be26 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-conformance-10-10.d @@ -0,0 +1,11 @@ +#name: C6X conformance attribute merging, 10 10 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-conformance-10.s +#source: attr-conformance-10.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ABI_conformance: "1.0" + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-conformance-10-11.d b/ld/testsuite/ld-tic6x/attr-conformance-10-11.d new file mode 100644 index 00000000000..94993d91e81 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-conformance-10-11.d @@ -0,0 +1,10 @@ +#name: C6X conformance attribute merging, 10 11 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-conformance-10.s +#source: attr-conformance-11.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-conformance-10-none.d b/ld/testsuite/ld-tic6x/attr-conformance-10-none.d new file mode 100644 index 00000000000..2de2b5086d7 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-conformance-10-none.d @@ -0,0 +1,10 @@ +#name: C6X conformance attribute merging, 10 none +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-conformance-10.s +#source: attr-conformance-none.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-conformance-10.s b/ld/testsuite/ld-tic6x/attr-conformance-10.s new file mode 100644 index 00000000000..29640849669 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-conformance-10.s @@ -0,0 +1 @@ +.c6xabi_attribute Tag_ABI_conformance, "1.0" diff --git a/ld/testsuite/ld-tic6x/attr-conformance-11-10.d b/ld/testsuite/ld-tic6x/attr-conformance-11-10.d new file mode 100644 index 00000000000..34ebd26dd54 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-conformance-11-10.d @@ -0,0 +1,10 @@ +#name: C6X conformance attribute merging, 11 10 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-conformance-11.s +#source: attr-conformance-10.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-conformance-11-11.d b/ld/testsuite/ld-tic6x/attr-conformance-11-11.d new file mode 100644 index 00000000000..43ff4a2c70c --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-conformance-11-11.d @@ -0,0 +1,11 @@ +#name: C6X conformance attribute merging, 11 11 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-conformance-11.s +#source: attr-conformance-11.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ABI_conformance: "1.1" + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-conformance-11-none.d b/ld/testsuite/ld-tic6x/attr-conformance-11-none.d new file mode 100644 index 00000000000..ad5c58ea2b0 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-conformance-11-none.d @@ -0,0 +1,10 @@ +#name: C6X conformance attribute merging, 11 none +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-conformance-11.s +#source: attr-conformance-none.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-conformance-11.s b/ld/testsuite/ld-tic6x/attr-conformance-11.s new file mode 100644 index 00000000000..d33640c5a8a --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-conformance-11.s @@ -0,0 +1 @@ +.c6xabi_attribute Tag_ABI_conformance, "1.1" diff --git a/ld/testsuite/ld-tic6x/attr-conformance-none-10.d b/ld/testsuite/ld-tic6x/attr-conformance-none-10.d new file mode 100644 index 00000000000..94bf8db1a31 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-conformance-none-10.d @@ -0,0 +1,10 @@ +#name: C6X conformance attribute merging, none 10 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-conformance-none.s +#source: attr-conformance-10.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-conformance-none-11.d b/ld/testsuite/ld-tic6x/attr-conformance-none-11.d new file mode 100644 index 00000000000..e9ff4c87ff3 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-conformance-none-11.d @@ -0,0 +1,10 @@ +#name: C6X conformance attribute merging, none 11 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-conformance-none.s +#source: attr-conformance-11.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-conformance-none-none.d b/ld/testsuite/ld-tic6x/attr-conformance-none-none.d new file mode 100644 index 00000000000..68563550112 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-conformance-none-none.d @@ -0,0 +1,10 @@ +#name: C6X conformance attribute merging, none none +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-conformance-none.s +#source: attr-conformance-none.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-conformance-none.s b/ld/testsuite/ld-tic6x/attr-conformance-none.s new file mode 100644 index 00000000000..ffd9c71a7c1 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-conformance-none.s @@ -0,0 +1 @@ +# No conformance attribute. diff --git a/ld/testsuite/ld-tic6x/attr-pic-0.s b/ld/testsuite/ld-tic6x/attr-pic-0.s new file mode 100644 index 00000000000..64b8ec9361b --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pic-0.s @@ -0,0 +1 @@ +.c6xabi_attribute Tag_ABI_PIC, 0 diff --git a/ld/testsuite/ld-tic6x/attr-pic-00.d b/ld/testsuite/ld-tic6x/attr-pic-00.d new file mode 100644 index 00000000000..b8b3f525fb8 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pic-00.d @@ -0,0 +1,10 @@ +#name: C6X PIC attribute merging, 0 0 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-pic-0.s +#source: attr-pic-0.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-pic-01.d b/ld/testsuite/ld-tic6x/attr-pic-01.d new file mode 100644 index 00000000000..a04713f8b7f --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pic-01.d @@ -0,0 +1,6 @@ +#name: C6X PIC attribute merging, 0 1 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-pic-0.s +#source: attr-pic-1.s +#warning: .*differ in position-dependence of code addressing diff --git a/ld/testsuite/ld-tic6x/attr-pic-1.s b/ld/testsuite/ld-tic6x/attr-pic-1.s new file mode 100644 index 00000000000..2bab373a955 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pic-1.s @@ -0,0 +1 @@ +.c6xabi_attribute Tag_ABI_PIC, 1 diff --git a/ld/testsuite/ld-tic6x/attr-pic-10.d b/ld/testsuite/ld-tic6x/attr-pic-10.d new file mode 100644 index 00000000000..bc781c4b78d --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pic-10.d @@ -0,0 +1,6 @@ +#name: C6X PIC attribute merging, 1 0 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-pic-1.s +#source: attr-pic-0.s +#warning: .*differ in position-dependence of code addressing diff --git a/ld/testsuite/ld-tic6x/attr-pic-11.d b/ld/testsuite/ld-tic6x/attr-pic-11.d new file mode 100644 index 00000000000..6fd720d01d1 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pic-11.d @@ -0,0 +1,11 @@ +#name: C6X PIC attribute merging, 1 1 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-pic-1.s +#source: attr-pic-1.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_PIC: Code addressing position-independent diff --git a/ld/testsuite/ld-tic6x/attr-pid-0.s b/ld/testsuite/ld-tic6x/attr-pid-0.s new file mode 100644 index 00000000000..d2ea7ad8a4e --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pid-0.s @@ -0,0 +1 @@ +.c6xabi_attribute Tag_ABI_PID, 0 diff --git a/ld/testsuite/ld-tic6x/attr-pid-00.d b/ld/testsuite/ld-tic6x/attr-pid-00.d new file mode 100644 index 00000000000..573cfda3dbc --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pid-00.d @@ -0,0 +1,10 @@ +#name: C6X PID attribute merging, 0 0 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-pid-0.s +#source: attr-pid-0.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-pid-01.d b/ld/testsuite/ld-tic6x/attr-pid-01.d new file mode 100644 index 00000000000..5c32e15b9cd --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pid-01.d @@ -0,0 +1,6 @@ +#name: C6X PID attribute merging, 0 1 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-pid-0.s +#source: attr-pid-1.s +#warning: .*differ in position-dependence of data addressing diff --git a/ld/testsuite/ld-tic6x/attr-pid-02.d b/ld/testsuite/ld-tic6x/attr-pid-02.d new file mode 100644 index 00000000000..d155b561570 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pid-02.d @@ -0,0 +1,6 @@ +#name: C6X PID attribute merging, 0 2 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-pid-0.s +#source: attr-pid-2.s +#warning: .*differ in position-dependence of data addressing diff --git a/ld/testsuite/ld-tic6x/attr-pid-1.s b/ld/testsuite/ld-tic6x/attr-pid-1.s new file mode 100644 index 00000000000..b9731774dbf --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pid-1.s @@ -0,0 +1 @@ +.c6xabi_attribute Tag_ABI_PID, 1 diff --git a/ld/testsuite/ld-tic6x/attr-pid-10.d b/ld/testsuite/ld-tic6x/attr-pid-10.d new file mode 100644 index 00000000000..edb8a659cfd --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pid-10.d @@ -0,0 +1,6 @@ +#name: C6X PID attribute merging, 1 0 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-pid-1.s +#source: attr-pid-0.s +#warning: .*differ in position-dependence of data addressing diff --git a/ld/testsuite/ld-tic6x/attr-pid-11.d b/ld/testsuite/ld-tic6x/attr-pid-11.d new file mode 100644 index 00000000000..74982825295 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pid-11.d @@ -0,0 +1,11 @@ +#name: C6X PID attribute merging, 1 1 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-pid-1.s +#source: attr-pid-1.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_PID: Data addressing position-independent, GOT near DP diff --git a/ld/testsuite/ld-tic6x/attr-pid-12.d b/ld/testsuite/ld-tic6x/attr-pid-12.d new file mode 100644 index 00000000000..138ae8889a9 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pid-12.d @@ -0,0 +1,6 @@ +#name: C6X PID attribute merging, 1 2 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-pid-1.s +#source: attr-pid-2.s +#warning: .*differ in position-dependence of data addressing diff --git a/ld/testsuite/ld-tic6x/attr-pid-2.s b/ld/testsuite/ld-tic6x/attr-pid-2.s new file mode 100644 index 00000000000..f556188867a --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pid-2.s @@ -0,0 +1 @@ +.c6xabi_attribute Tag_ABI_PID, 2 diff --git a/ld/testsuite/ld-tic6x/attr-pid-20.d b/ld/testsuite/ld-tic6x/attr-pid-20.d new file mode 100644 index 00000000000..ce319bd6175 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pid-20.d @@ -0,0 +1,6 @@ +#name: C6X PID attribute merging, 2 0 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-pid-2.s +#source: attr-pid-0.s +#warning: .*differ in position-dependence of data addressing diff --git a/ld/testsuite/ld-tic6x/attr-pid-21.d b/ld/testsuite/ld-tic6x/attr-pid-21.d new file mode 100644 index 00000000000..7097db67577 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pid-21.d @@ -0,0 +1,6 @@ +#name: C6X PID attribute merging, 2 1 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-pid-2.s +#source: attr-pid-1.s +#warning: .*differ in position-dependence of data addressing diff --git a/ld/testsuite/ld-tic6x/attr-pid-22.d b/ld/testsuite/ld-tic6x/attr-pid-22.d new file mode 100644 index 00000000000..7a3fe471428 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-pid-22.d @@ -0,0 +1,11 @@ +#name: C6X PID attribute merging, 2 2 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-pid-2.s +#source: attr-pid-2.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_PID: Data addressing position-independent, GOT far from DP diff --git a/ld/testsuite/ld-tic6x/attr-stack-16-16.d b/ld/testsuite/ld-tic6x/attr-stack-16-16.d new file mode 100644 index 00000000000..8eb94bd1229 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-stack-16-16.d @@ -0,0 +1,12 @@ +#name: C6X stack attribute merging, 16 16 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-stack-16.s +#source: attr-stack-16.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_stack_align_needed: 16-byte + Tag_ABI_stack_align_preserved: 16-byte diff --git a/ld/testsuite/ld-tic6x/attr-stack-16-8.d b/ld/testsuite/ld-tic6x/attr-stack-16-8.d new file mode 100644 index 00000000000..291a368272e --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-stack-16-8.d @@ -0,0 +1,6 @@ +#name: C6X stack attribute merging, 16 8 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-stack-16.s +#source: attr-stack-8.s +#error: .*requires more stack alignment than .* preserves diff --git a/ld/testsuite/ld-tic6x/attr-stack-16-816.d b/ld/testsuite/ld-tic6x/attr-stack-16-816.d new file mode 100644 index 00000000000..cbd384f23ab --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-stack-16-816.d @@ -0,0 +1,12 @@ +#name: C6X stack attribute merging, 16 816 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-stack-16.s +#source: attr-stack-816.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_stack_align_needed: 16-byte + Tag_ABI_stack_align_preserved: 16-byte diff --git a/ld/testsuite/ld-tic6x/attr-stack-16.s b/ld/testsuite/ld-tic6x/attr-stack-16.s new file mode 100644 index 00000000000..b1e492abe39 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-stack-16.s @@ -0,0 +1,2 @@ +.c6xabi_attribute Tag_ABI_stack_align_needed, 1 +.c6xabi_attribute Tag_ABI_stack_align_preserved, 1 diff --git a/ld/testsuite/ld-tic6x/attr-stack-8-16.d b/ld/testsuite/ld-tic6x/attr-stack-8-16.d new file mode 100644 index 00000000000..9e52e92a4d9 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-stack-8-16.d @@ -0,0 +1,6 @@ +#name: C6X stack attribute merging, 8 16 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-stack-8.s +#source: attr-stack-16.s +#error: .*requires more stack alignment than .* preserves diff --git a/ld/testsuite/ld-tic6x/attr-stack-8-8.d b/ld/testsuite/ld-tic6x/attr-stack-8-8.d new file mode 100644 index 00000000000..1a8cb62f8bf --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-stack-8-8.d @@ -0,0 +1,10 @@ +#name: C6X stack attribute merging, 8 8 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-stack-8.s +#source: attr-stack-8.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-stack-8-816.d b/ld/testsuite/ld-tic6x/attr-stack-8-816.d new file mode 100644 index 00000000000..89a0740cc4e --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-stack-8-816.d @@ -0,0 +1,10 @@ +#name: C6X stack attribute merging, 8 816 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-stack-8.s +#source: attr-stack-816.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-stack-8.s b/ld/testsuite/ld-tic6x/attr-stack-8.s new file mode 100644 index 00000000000..ce63951b31e --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-stack-8.s @@ -0,0 +1,2 @@ +.c6xabi_attribute Tag_ABI_stack_align_needed, 0 +.c6xabi_attribute Tag_ABI_stack_align_preserved, 0 diff --git a/ld/testsuite/ld-tic6x/attr-stack-816-16.d b/ld/testsuite/ld-tic6x/attr-stack-816-16.d new file mode 100644 index 00000000000..da8ca3b1826 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-stack-816-16.d @@ -0,0 +1,12 @@ +#name: C6X stack attribute merging, 816 16 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-stack-816.s +#source: attr-stack-16.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_stack_align_needed: 16-byte + Tag_ABI_stack_align_preserved: 16-byte diff --git a/ld/testsuite/ld-tic6x/attr-stack-816-8.d b/ld/testsuite/ld-tic6x/attr-stack-816-8.d new file mode 100644 index 00000000000..fe8630ea14b --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-stack-816-8.d @@ -0,0 +1,10 @@ +#name: C6X stack attribute merging, 816 8 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-stack-816.s +#source: attr-stack-8.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-stack-816-816.d b/ld/testsuite/ld-tic6x/attr-stack-816-816.d new file mode 100644 index 00000000000..0ab01ac94e1 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-stack-816-816.d @@ -0,0 +1,11 @@ +#name: C6X stack attribute merging, 816 816 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-stack-816.s +#source: attr-stack-816.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_stack_align_preserved: 16-byte diff --git a/ld/testsuite/ld-tic6x/attr-stack-816.s b/ld/testsuite/ld-tic6x/attr-stack-816.s new file mode 100644 index 00000000000..46295d267ec --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-stack-816.s @@ -0,0 +1,2 @@ +.c6xabi_attribute Tag_ABI_stack_align_needed, 0 +.c6xabi_attribute Tag_ABI_stack_align_preserved, 1 diff --git a/ld/testsuite/ld-tic6x/attr-wchar-0.s b/ld/testsuite/ld-tic6x/attr-wchar-0.s new file mode 100644 index 00000000000..54271031a08 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-wchar-0.s @@ -0,0 +1 @@ +.c6xabi_attribute Tag_ABI_wchar_t, 0 diff --git a/ld/testsuite/ld-tic6x/attr-wchar-00.d b/ld/testsuite/ld-tic6x/attr-wchar-00.d new file mode 100644 index 00000000000..3f5feaed8b0 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-wchar-00.d @@ -0,0 +1,10 @@ +#name: C6X wchar_t attribute merging, 0 0 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-wchar-0.s +#source: attr-wchar-0.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x diff --git a/ld/testsuite/ld-tic6x/attr-wchar-01.d b/ld/testsuite/ld-tic6x/attr-wchar-01.d new file mode 100644 index 00000000000..e32ded651c8 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-wchar-01.d @@ -0,0 +1,11 @@ +#name: C6X wchar_t attribute merging, 0 1 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-wchar-0.s +#source: attr-wchar-1.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_wchar_t: 2 bytes diff --git a/ld/testsuite/ld-tic6x/attr-wchar-02.d b/ld/testsuite/ld-tic6x/attr-wchar-02.d new file mode 100644 index 00000000000..57ed66b25db --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-wchar-02.d @@ -0,0 +1,11 @@ +#name: C6X wchar_t attribute merging, 0 2 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-wchar-0.s +#source: attr-wchar-2.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_wchar_t: 4 bytes diff --git a/ld/testsuite/ld-tic6x/attr-wchar-1.s b/ld/testsuite/ld-tic6x/attr-wchar-1.s new file mode 100644 index 00000000000..69d11861839 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-wchar-1.s @@ -0,0 +1 @@ +.c6xabi_attribute Tag_ABI_wchar_t, 1 diff --git a/ld/testsuite/ld-tic6x/attr-wchar-10.d b/ld/testsuite/ld-tic6x/attr-wchar-10.d new file mode 100644 index 00000000000..c4768593436 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-wchar-10.d @@ -0,0 +1,11 @@ +#name: C6X wchar_t attribute merging, 1 0 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-wchar-1.s +#source: attr-wchar-0.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_wchar_t: 2 bytes diff --git a/ld/testsuite/ld-tic6x/attr-wchar-11.d b/ld/testsuite/ld-tic6x/attr-wchar-11.d new file mode 100644 index 00000000000..5105d19c40c --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-wchar-11.d @@ -0,0 +1,11 @@ +#name: C6X wchar_t attribute merging, 1 1 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-wchar-1.s +#source: attr-wchar-1.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_wchar_t: 2 bytes diff --git a/ld/testsuite/ld-tic6x/attr-wchar-12.d b/ld/testsuite/ld-tic6x/attr-wchar-12.d new file mode 100644 index 00000000000..a0d3bd887b0 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-wchar-12.d @@ -0,0 +1,6 @@ +#name: C6X wchar_t attribute merging, 1 2 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-wchar-1.s +#source: attr-wchar-2.s +#warning: .*differ in wchar_t size diff --git a/ld/testsuite/ld-tic6x/attr-wchar-2.s b/ld/testsuite/ld-tic6x/attr-wchar-2.s new file mode 100644 index 00000000000..cf87e4cd6f3 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-wchar-2.s @@ -0,0 +1 @@ +.c6xabi_attribute Tag_ABI_wchar_t, 2 diff --git a/ld/testsuite/ld-tic6x/attr-wchar-20.d b/ld/testsuite/ld-tic6x/attr-wchar-20.d new file mode 100644 index 00000000000..9a2b356a3ee --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-wchar-20.d @@ -0,0 +1,11 @@ +#name: C6X wchar_t attribute merging, 2 0 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-wchar-2.s +#source: attr-wchar-0.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_wchar_t: 4 bytes diff --git a/ld/testsuite/ld-tic6x/attr-wchar-21.d b/ld/testsuite/ld-tic6x/attr-wchar-21.d new file mode 100644 index 00000000000..60d06f17907 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-wchar-21.d @@ -0,0 +1,6 @@ +#name: C6X wchar_t attribute merging, 2 1 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-wchar-2.s +#source: attr-wchar-1.s +#warning: .*differ in wchar_t size diff --git a/ld/testsuite/ld-tic6x/attr-wchar-22.d b/ld/testsuite/ld-tic6x/attr-wchar-22.d new file mode 100644 index 00000000000..7500a31cf12 --- /dev/null +++ b/ld/testsuite/ld-tic6x/attr-wchar-22.d @@ -0,0 +1,11 @@ +#name: C6X wchar_t attribute merging, 2 2 +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: attr-wchar-2.s +#source: attr-wchar-2.s +#readelf: -A + +Attribute Section: c6xabi +File Attributes + Tag_ISA: C674x + Tag_ABI_wchar_t: 4 bytes -- 2.39.5