aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog14
-rw-r--r--ld/emultempl/nds32elf.em234
-rw-r--r--ld/testsuite/ld-elf/group10.d3
-rw-r--r--ld/testsuite/ld-elf/group2.d3
-rw-r--r--ld/testsuite/ld-elf/group4.d3
-rw-r--r--ld/testsuite/ld-elf/group5.d3
-rw-r--r--ld/testsuite/ld-elf/group6.d3
-rw-r--r--ld/testsuite/ld-elf/group7.d12
-rw-r--r--ld/testsuite/ld-elf/group8a.d3
-rw-r--r--ld/testsuite/ld-elf/group8b.d3
-rw-r--r--ld/testsuite/ld-elf/group9a.d4
-rw-r--r--ld/testsuite/ld-elf/group9b.d9
-rw-r--r--ld/testsuite/ld-elf/linkonce2.d2
-rw-r--r--ld/testsuite/ld-elf/merge.d2
-rw-r--r--ld/testsuite/ld-elf/relocatable.d1
-rw-r--r--ld/testsuite/ld-elfcomm/elfcomm.exp8
-rw-r--r--ld/testsuite/ld-nds32/branch.d22
-rw-r--r--ld/testsuite/ld-nds32/gp.d18
-rw-r--r--ld/testsuite/ld-nds32/imm.d8
-rw-r--r--ld/testsuite/ld-nds32/relax_jmp.d6
-rw-r--r--ld/testsuite/ld-nds32/relax_load_store.d6
21 files changed, 120 insertions, 247 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 14b5070..9d40741 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,17 @@
+2018-09-20 Nelson Chu <nelson.chu1990@gmail.com>
+
+ * emultempl/nds32elf.em (hyper_relax): New variable.
+ (nds32_elf_create_output_section_statements):
+ the parameters of bfd_elf32_nds32_set_target_option
+ (PARSE_AND_LIST_PROLOGUE, PARSE_AND_LIST_OPTIONS,
+ PARSE_AND_LIST_ARGS_CASES): Add new option --mhyper-relax.
+ * emultempl/nds32elf.em (nds32_elf_after_open): Updated.
+ * emultempl/nds32elf.em (tls_desc_trampoline): New variable.
+ * (nds32_elf_create_output_section_statements): Updated.
+ * (nds32_elf_after_parse): Disable relaxations when PIC is enable.
+ * (PARSE_AND_LIST_PROLOGUE, PARSE_AND_LIST_OPTIONS,
+ PARSE_AND_LIST_ARGS_CASES): Add new option --m[no-]tlsdesc-trampoline.
+
2018-09-19 Alan Modra <amodra@gmail.com>
PR ld/23648
diff --git a/ld/emultempl/nds32elf.em b/ld/emultempl/nds32elf.em
index eb29d04..6fb5a48 100644
--- a/ld/emultempl/nds32elf.em
+++ b/ld/emultempl/nds32elf.em
@@ -30,17 +30,10 @@ fragment <<EOF
static int relax_fp_as_gp = 1; /* --mrelax-omit-fp */
static int eliminate_gc_relocs = 0; /* --meliminate-gc-relocs */
static FILE *sym_ld_script = NULL; /* --mgen-symbol-ld-script=<file> */
+static int hyper_relax = 1; /* --mhyper-relax */
+static int tls_desc_trampoline = 0; /* --m[no]tlsdesc-trampoline. */
/* Disable if linking a dynamically linked executable. */
static int load_store_relax = 1;
-static int target_optimize = 0; /* Switch optimization. */
-static int relax_status = 0; /* Finished optimization. */
-static int relax_round = 0; /* Going optimization. */
-static FILE *ex9_export_file = NULL; /* --mexport-ex9=<file> */
-static FILE *ex9_import_file = NULL; /* --mimport-ex9=<file> */
-static int update_ex9_table = 0; /* --mupdate-ex9. */
-static int ex9_limit = 511;
-static bfd_boolean ex9_loop_aware = FALSE; /* Ignore ex9 if inside a loop. */
-static bfd_boolean ifc_loop_aware = FALSE; /* Ignore ifc if inside a loop. */
/* Save the target options into output bfd to avoid using to many global
variables. Do this after the output has been created, but before
@@ -56,42 +49,24 @@ nds32_elf_create_output_section_statements (void)
return;
}
- bfd_elf32_nds32_set_target_option (&link_info, relax_fp_as_gp,
+ bfd_elf32_nds32_set_target_option (&link_info,
+ relax_fp_as_gp,
eliminate_gc_relocs,
sym_ld_script,
- load_store_relax,
- target_optimize, relax_status, relax_round,
- ex9_export_file, ex9_import_file,
- update_ex9_table, ex9_limit,
- ex9_loop_aware, ifc_loop_aware);
+ hyper_relax,
+ tls_desc_trampoline,
+ load_store_relax);
}
static void
nds32_elf_after_parse (void)
{
- if (bfd_link_relocatable (&link_info))
+ if (bfd_link_relocatable (&link_info)
+ || bfd_link_pic (&link_info))
DISABLE_RELAXATION;
if (!RELAXATION_ENABLED)
- {
- target_optimize = target_optimize & (!NDS32_RELAX_JUMP_IFC_ON);
- target_optimize = target_optimize & (!NDS32_RELAX_EX9_ON);
- relax_fp_as_gp = 0;
- }
-
- if (ex9_import_file != NULL)
- {
- ex9_export_file = NULL;
- target_optimize = target_optimize & (!NDS32_RELAX_EX9_ON);
- }
- else
- update_ex9_table = 0;
-
- if (bfd_link_pic (&link_info))
- {
- target_optimize = target_optimize & (!NDS32_RELAX_JUMP_IFC_ON);
- target_optimize = target_optimize & (!NDS32_RELAX_EX9_ON);
- }
+ relax_fp_as_gp = 0;
gld${EMULATION_NAME}_after_parse ();
}
@@ -124,64 +99,19 @@ nds32_elf_after_open (void)
einfo (_("%F%P: %pB: ABI version of object files mismatched\n"),
abfd);
}
-
-#if defined NDS32_EX9_EXT
- /* Append .ex9.itable section in the last input object file. */
- if (abfd->link_next == NULL && (target_optimize & NDS32_RELAX_EX9_ON))
- {
- asection *itable;
- struct bfd_link_hash_entry *h;
- itable = bfd_make_section_with_flags (abfd, ".ex9.itable",
- SEC_CODE | SEC_ALLOC | SEC_LOAD
- | SEC_HAS_CONTENTS | SEC_READONLY
- | SEC_IN_MEMORY | SEC_KEEP);
- if (itable)
- {
- itable->gc_mark = 1;
- itable->alignment_power = 2;
- itable->size = 0x1000;
- itable->contents = bfd_zalloc (abfd, itable->size);
-
- /* Add a symbol in the head of ex9.itable to objdump clearly. */
- h = bfd_link_hash_lookup (link_info.hash, "_EX9_BASE_",
- FALSE, FALSE, FALSE);
- _bfd_generic_link_add_one_symbol
- (&link_info, link_info.output_bfd, "_EX9_BASE_",
- BSF_GLOBAL | BSF_WEAK, itable, 0, (const char *) NULL, FALSE,
- get_elf_backend_data (link_info.output_bfd)->collect, &h);
- }
- }
-#endif
}
/* Check object files if the target is dynamic linked executable
or shared object. */
if (elf_hash_table (&link_info)->dynamic_sections_created
- || bfd_link_pic (&link_info))
+ || bfd_link_pic (&link_info)
+ || bfd_link_pie (&link_info))
{
- for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link.next)
- {
- if (!(elf_elfheader (abfd)->e_flags & E_NDS32_HAS_PIC))
- {
- /* Non-PIC object file is used. */
- if (bfd_link_pic (&link_info))
- {
- /* For PIE or shared object, all input must be PIC. */
- einfo (_("%P: %pB: must use -fpic to compile this file "
- "for shared object or PIE\n"), abfd);
- }
- else
- {
- /* Dynamic linked executable with SDA and non-PIC.
- Turn off load/store relaxtion. */
- /* TODO: This may support in the future. */
- load_store_relax = 0 ;
- relax_fp_as_gp = 0;
- }
- }
- }
- /* Turn off relax when building shared object or PIE
- until we can support their relaxation. */
+ /* Dynamic linked executable with SDA and non-PIC.
+ Turn off load/store relaxtion. */
+ /* This may support in the future. */
+ load_store_relax = 0 ;
+ relax_fp_as_gp = 0;
}
/* Call the standard elf routine. */
@@ -210,31 +140,17 @@ PARSE_AND_LIST_PROLOGUE='
#define OPTION_REDUCE_FP_UPDATE (OPTION_BASELINE + 4)
#define OPTION_NO_REDUCE_FP_UPDATE (OPTION_BASELINE + 5)
#define OPTION_EXPORT_SYMBOLS (OPTION_BASELINE + 6)
-
-/* These are only available to ex9. */
-#if defined NDS32_EX9_EXT
-#define OPTION_EX9_BASELINE 320
-#define OPTION_EX9_TABLE (OPTION_EX9_BASELINE + 1)
-#define OPTION_NO_EX9_TABLE (OPTION_EX9_BASELINE + 2)
-#define OPTION_EXPORT_EX9 (OPTION_EX9_BASELINE + 3)
-#define OPTION_IMPORT_EX9 (OPTION_EX9_BASELINE + 4)
-#define OPTION_UPDATE_EX9 (OPTION_EX9_BASELINE + 5)
-#define OPTION_EX9_LIMIT (OPTION_EX9_BASELINE + 6)
-#define OPTION_EX9_LOOP (OPTION_EX9_BASELINE + 7)
-#endif
-
-/* These are only available to link-time ifc. */
-#if defined NDS32_IFC_EXT
-#define OPTION_IFC_BASELINE 340
-#define OPTION_JUMP_IFC (OPTION_IFC_BASELINE + 1)
-#define OPTION_NO_JUMP_IFC (OPTION_IFC_BASELINE + 2)
-#define OPTION_IFC_LOOP (OPTION_IFC_BASELINE + 3)
-#endif
+#define OPTION_HYPER_RELAX (OPTION_BASELINE + 7)
+#define OPTION_TLSDESC_TRAMPOLINE (OPTION_BASELINE + 8)
+#define OPTION_NO_TLSDESC_TRAMPOLINE (OPTION_BASELINE + 9)
'
PARSE_AND_LIST_LONGOPTS='
{ "mfp-as-gp", no_argument, NULL, OPTION_FP_AS_GP},
{ "mno-fp-as-gp", no_argument, NULL, OPTION_NO_FP_AS_GP},
{ "mexport-symbols", required_argument, NULL, OPTION_EXPORT_SYMBOLS},
+ { "mhyper-relax", required_argument, NULL, OPTION_HYPER_RELAX},
+ { "mtlsdesc-trampoline", no_argument, NULL, OPTION_TLSDESC_TRAMPOLINE},
+ { "mno-tlsdesc-trampoline", no_argument, NULL, OPTION_NO_TLSDESC_TRAMPOLINE},
/* These are deprecated options. Remove them in the future. */
{ "mrelax-reduce-fp-update", no_argument, NULL, OPTION_REDUCE_FP_UPDATE},
{ "mrelax-no-reduce-fp-update", no_argument, NULL, OPTION_NO_REDUCE_FP_UPDATE},
@@ -243,50 +159,16 @@ PARSE_AND_LIST_LONGOPTS='
{ "mrelax-omit-fp", no_argument, NULL, OPTION_FP_AS_GP},
{ "mrelax-no-omit-fp", no_argument, NULL, OPTION_NO_FP_AS_GP},
{ "mgen-symbol-ld-script", required_argument, NULL, OPTION_EXPORT_SYMBOLS},
- /* These are specific optioins for ex9-ext support. */
-#if defined NDS32_EX9_EXT
- { "mex9", no_argument, NULL, OPTION_EX9_TABLE},
- { "mno-ex9", no_argument, NULL, OPTION_NO_EX9_TABLE},
- { "mexport-ex9", required_argument, NULL, OPTION_EXPORT_EX9},
- { "mimport-ex9", required_argument, NULL, OPTION_IMPORT_EX9},
- { "mupdate-ex9", no_argument, NULL, OPTION_UPDATE_EX9},
- { "mex9-limit", required_argument, NULL, OPTION_EX9_LIMIT},
- { "mex9-loop-aware", no_argument, NULL, OPTION_EX9_LOOP},
-#endif
- /* These are specific optioins for ifc-ext support. */
-#if defined NDS32_IFC_EXT
- { "mifc", no_argument, NULL, OPTION_JUMP_IFC},
- { "mno-ifc", no_argument, NULL, OPTION_NO_JUMP_IFC},
- { "mifc-loop-aware", no_argument, NULL, OPTION_IFC_LOOP},
-#endif
'
PARSE_AND_LIST_OPTIONS='
fprintf (file, _("\
--m[no-]fp-as-gp Disable/enable fp-as-gp relaxation\n"));
fprintf (file, _("\
--mexport-symbols=FILE Exporting symbols in linker script\n"));
-
-#if defined NDS32_EX9_EXT
- fprintf (file, _("\
- --m[no-]ex9 Disable/enable link-time EX9 relaxation\n"));
fprintf (file, _("\
- --mexport-ex9=FILE Export EX9 table after linking\n"));
+ --mhyper-relax=level Adjust relax level (low|medium|high). default: medium\n"));
fprintf (file, _("\
- --mimport-ex9=FILE Import Ex9 table for EX9 relaxation\n"));
- fprintf (file, _("\
- --mupdate-ex9 Update existing EX9 table\n"));
- fprintf (file, _("\
- --mex9-limit=NUM Maximum number of entries in ex9 table\n"));
- fprintf (file, _("\
- --mex9-loop-aware Avoid generate EX9 instruction inside loop\n"));
-#endif
-
-#if defined NDS32_IFC_EXT
- fprintf (file, _("\
- --m[no-]ifc Disable/enable link-time IFC optimization\n"));
- fprintf (file, _("\
- --mifc-loop-aware Avoid generate IFC instruction inside loop\n"));
-#endif
+ --m[no-]tlsdesc-trampoline Disable/enable TLS DESC trampoline\n"));
'
PARSE_AND_LIST_ARGS_CASES='
case OPTION_BASELINE:
@@ -316,62 +198,26 @@ PARSE_AND_LIST_ARGS_CASES='
einfo (_("%F%P: cannot open map file %s: %E\n"), optarg);
}
break;
-#if defined NDS32_EX9_EXT
- case OPTION_EX9_TABLE:
- target_optimize = target_optimize | NDS32_RELAX_EX9_ON;
- break;
- case OPTION_NO_EX9_TABLE:
- target_optimize = target_optimize & (!NDS32_RELAX_EX9_ON);
- break;
- case OPTION_EXPORT_EX9:
+ case OPTION_HYPER_RELAX:
if (!optarg)
- einfo (_("%P: missing file for --mexport-ex9=<file>\n"));
-
- if(strcmp (optarg, "-") == 0)
- ex9_export_file = stdout;
+ einfo (_("%P: valid arguments to --mhyper-relax=(low|medium|high)\n"));
+
+ if (strcmp (optarg, "low") == 0)
+ hyper_relax = 0;
+ else if (strcmp (optarg, "medium") == 0)
+ hyper_relax = 1;
+ else if (strcmp (optarg, "high") == 0)
+ hyper_relax = 2;
else
- {
- ex9_export_file = fopen (optarg, "wb");
- if(ex9_export_file == NULL)
- einfo (_("%F%P: cannot open ex9 export file %s\n"), optarg);
- }
- break;
- case OPTION_IMPORT_EX9:
- if (!optarg)
- einfo (_("%P: missing file for --mimport-ex9=<file>\n"));
+ einfo (_("%P: valid arguments to --mhyper-relax=(low|medium|high)\n"));
- ex9_import_file = fopen (optarg, "rb+");
- if(ex9_import_file == NULL)
- einfo (_("%F%P: cannot open ex9 import file %s\n"), optarg);
- break;
- case OPTION_UPDATE_EX9:
- update_ex9_table = 1;
- break;
- case OPTION_EX9_LIMIT:
- if (optarg)
- {
- ex9_limit = atoi (optarg);
- if (ex9_limit > 511 || ex9_limit < 1)
- einfo (_("%F%P: the range of ex9_limit must between 1 and 511\n"));
- }
- break;
- case OPTION_EX9_LOOP:
- target_optimize = target_optimize | NDS32_RELAX_EX9_ON;
- ex9_loop_aware = 1;
- break;
-#endif
-#if defined NDS32_IFC_EXT
- case OPTION_JUMP_IFC:
- target_optimize = target_optimize | NDS32_RELAX_JUMP_IFC_ON;
- break;
- case OPTION_NO_JUMP_IFC:
- target_optimize = target_optimize & (!NDS32_RELAX_JUMP_IFC_ON);
break;
- case OPTION_IFC_LOOP:
- target_optimize = target_optimize | NDS32_RELAX_JUMP_IFC_ON;
- ifc_loop_aware = 1;
+ case OPTION_TLSDESC_TRAMPOLINE:
+ tls_desc_trampoline = 1;
break;
-#endif
+ case OPTION_NO_TLSDESC_TRAMPOLINE:
+ tls_desc_trampoline = 0;
+ break;
'
LDEMUL_AFTER_OPEN=nds32_elf_after_open
LDEMUL_AFTER_PARSE=nds32_elf_after_parse
diff --git a/ld/testsuite/ld-elf/group10.d b/ld/testsuite/ld-elf/group10.d
index 6fcf83f..6dbe49e 100644
--- a/ld/testsuite/ld-elf/group10.d
+++ b/ld/testsuite/ld-elf/group10.d
@@ -3,9 +3,10 @@
#readelf: -Sg --wide
#...
-group section \[[ 0-9]+\] `\.group' \[foo_group\] contains 4 sections:
+group section \[[ 0-9]+\] `\.group' \[foo_group\] contains . sections:
\[Index\] Name
\[[ 0-9]+\] \.text.*
+#...
\[[ 0-9]+\] \.rodata\.str.*
\[[ 0-9]+\] \.data.*
\[[ 0-9]+\] \.keepme.*
diff --git a/ld/testsuite/ld-elf/group2.d b/ld/testsuite/ld-elf/group2.d
index 664c49a..d127d4d 100644
--- a/ld/testsuite/ld-elf/group2.d
+++ b/ld/testsuite/ld-elf/group2.d
@@ -13,8 +13,9 @@
#...
\[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WAG.*
#...
-COMDAT group section \[[ 0-9]+\] `\.group' \[foo_group\] contains 2 sections:
+COMDAT group section \[[ 0-9]+\] `\.group' \[foo_group\] contains . sections:
\[Index\] Name
\[[ 0-9]+\] .text.*
+#...
\[[ 0-9]+\] .data.*
#pass
diff --git a/ld/testsuite/ld-elf/group4.d b/ld/testsuite/ld-elf/group4.d
index af4ca4d..2e400cd 100644
--- a/ld/testsuite/ld-elf/group4.d
+++ b/ld/testsuite/ld-elf/group4.d
@@ -13,8 +13,9 @@
#...
\[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WAG[ \t]+.*
#...
-COMDAT group section \[[ 0-9]+\] `.group' \[.text.foo\] contains 2 sections:
+COMDAT group section \[[ 0-9]+\] `.group' \[.text.foo\] contains . sections:
\[Index\] Name
\[[ 0-9]+\] .text.*
+#...
\[[ 0-9]+\] .data.*
#pass
diff --git a/ld/testsuite/ld-elf/group5.d b/ld/testsuite/ld-elf/group5.d
index 5102f81..b41dce6 100644
--- a/ld/testsuite/ld-elf/group5.d
+++ b/ld/testsuite/ld-elf/group5.d
@@ -13,8 +13,9 @@
#...
\[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WAG[ \t]+.*
#...
-COMDAT group section \[[ 0-9]+\] `.group' \[foo3\] contains 2 sections:
+COMDAT group section \[[ 0-9]+\] `.group' \[foo3\] contains . sections:
\[Index\] Name
\[[ 0-9]+\] .text.*
+#...
\[[ 0-9]+\] .data.*
#pass
diff --git a/ld/testsuite/ld-elf/group6.d b/ld/testsuite/ld-elf/group6.d
index 0e8441f..eef0585 100644
--- a/ld/testsuite/ld-elf/group6.d
+++ b/ld/testsuite/ld-elf/group6.d
@@ -13,8 +13,9 @@
#...
\[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WAG[ \t]+.*
#...
-COMDAT group section \[[ 0-9]+\] `.group' \[foo4\] contains 2 sections:
+COMDAT group section \[[ 0-9]+\] `.group' \[foo4\] contains . sections:
\[Index\] Name
\[[ 0-9]+\] .text.*
+#...
\[[ 0-9]+\] .data.*
#pass
diff --git a/ld/testsuite/ld-elf/group7.d b/ld/testsuite/ld-elf/group7.d
index 602a4c8..47c2b7b 100644
--- a/ld/testsuite/ld-elf/group7.d
+++ b/ld/testsuite/ld-elf/group7.d
@@ -9,23 +9,27 @@
# well with unique group sections under ld -r.
#...
-COMDAT group section \[[ 0-9]+\] `\.group' \[foo_group\] contains 2 sections:
+COMDAT group section \[[ 0-9]+\] `\.group' \[foo_group\] contains . sections:
\[Index\] Name
\[[ 0-9]+\] .text.foo
+#...
\[[ 0-9]+\] .data.foo
#...
-COMDAT group section \[[ 0-9]+\] `.group' \[.text.foo\] contains 2 sections:
+COMDAT group section \[[ 0-9]+\] `.group' \[.text.foo\] contains . sections:
\[Index\] Name
\[[ 0-9]+\] .text.foo
+#...
\[[ 0-9]+\] .data.bar
#...
-COMDAT group section \[[ 0-9]+\] `.group' \[foo3\] contains 2 sections:
+COMDAT group section \[[ 0-9]+\] `.group' \[foo3\] contains . sections:
\[Index\] Name
\[[ 0-9]+\] .text.foo3
+#...
\[[ 0-9]+\] .data.bar3
#...
-COMDAT group section \[[ 0-9]+\] `.group' \[foo4\] contains 2 sections:
+COMDAT group section \[[ 0-9]+\] `.group' \[foo4\] contains . sections:
\[Index\] Name
\[[ 0-9]+\] .text.foo4
+#...
\[[ 0-9]+\] .data.foo4
#pass
diff --git a/ld/testsuite/ld-elf/group8a.d b/ld/testsuite/ld-elf/group8a.d
index c3b1546..3033462 100644
--- a/ld/testsuite/ld-elf/group8a.d
+++ b/ld/testsuite/ld-elf/group8a.d
@@ -7,6 +7,7 @@
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
-COMDAT group section \[[ 0-9]+\] `.group' \[foo\] contains 1 sections:
+COMDAT group section \[[ 0-9]+\] `.group' \[foo\] contains . sections:
\[Index\] Name
\[[ 0-9]+\] .text.foo
+#pass
diff --git a/ld/testsuite/ld-elf/group8b.d b/ld/testsuite/ld-elf/group8b.d
index 1178b4f..bfe4b77 100644
--- a/ld/testsuite/ld-elf/group8b.d
+++ b/ld/testsuite/ld-elf/group8b.d
@@ -7,6 +7,7 @@
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
-COMDAT group section \[[ 0-9]+\] `.group' \[bar\] contains 1 sections:
+COMDAT group section \[[ 0-9]+\] `.group' \[bar\] contains . sections:
\[Index\] Name
\[[ 0-9]+\] .text.bar
+#pass
diff --git a/ld/testsuite/ld-elf/group9a.d b/ld/testsuite/ld-elf/group9a.d
index 403283c..08a1c26 100644
--- a/ld/testsuite/ld-elf/group9a.d
+++ b/ld/testsuite/ld-elf/group9a.d
@@ -7,7 +7,9 @@
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
-COMDAT group section \[[ 0-9]+\] `.group' \[foo\] contains 2 sections:
+COMDAT group section \[[ 0-9]+\] `.group' \[foo\] contains . sections:
\[Index\] Name
\[[ 0-9]+\] .text.foo
+#...
\[[ 0-9]+\] .data.foo
+#pass
diff --git a/ld/testsuite/ld-elf/group9b.d b/ld/testsuite/ld-elf/group9b.d
index c4475f7..1167699 100644
--- a/ld/testsuite/ld-elf/group9b.d
+++ b/ld/testsuite/ld-elf/group9b.d
@@ -7,12 +7,15 @@
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
-COMDAT group section \[[ 0-9]+\] `.group' \[foo\] contains 2 sections:
+COMDAT group section \[[ 0-9]+\] `.group' \[foo\] contains . sections:
\[Index\] Name
\[[ 0-9]+\] \.text\.foo
+#...
\[[ 0-9]+\] \.data\.foo
-
-COMDAT group section \[[ 0-9]+\] `.group' \[bar\] contains 2 sections:
+#...
+COMDAT group section \[[ 0-9]+\] `.group' \[bar\] contains . sections:
\[Index\] Name
\[[ 0-9]+\] \.text\.bar
+#...
\[[ 0-9]+\] \.rela?\.text\.bar
+#pass
diff --git a/ld/testsuite/ld-elf/linkonce2.d b/ld/testsuite/ld-elf/linkonce2.d
index 5a00e05..66d5534 100644
--- a/ld/testsuite/ld-elf/linkonce2.d
+++ b/ld/testsuite/ld-elf/linkonce2.d
@@ -6,7 +6,7 @@
# generic elf targets don't emit relocs
.*: file format .*
-
+#...
RELOCATION RECORDS FOR \[.debug_frame\]:
OFFSET[ ]+TYPE[ ]+VALUE[ ]*
.*(NONE|unused|UNUSED).*\*ABS\*
diff --git a/ld/testsuite/ld-elf/merge.d b/ld/testsuite/ld-elf/merge.d
index c0a8511..28c713c 100644
--- a/ld/testsuite/ld-elf/merge.d
+++ b/ld/testsuite/ld-elf/merge.d
@@ -4,7 +4,7 @@
#xfail: bfin-*-* cr16-*-* cris*-*-* crx-*-* csky-*-* d10v-*-* d30v-*-* dlx-*-*
#xfail: fr30-*-* frv-*-* ft32-*-* h8300-*-* hppa*64*-*-* ip2k-*-* iq2000-*-*
#xfail: lm32-*-* m68hc11-*-* mcore-*-* mep-*-* metag-*-* mn102*-*-* ms1-*-*
-#xfail: nios2-*-* or32-*-* pj-*-* pru-*-* s12z-*-* score-*-* tic6x-*-*
+#xfail: nds32*-*-* nios2-*-* or32-*-* pj-*-* pru-*-* s12z-*-* score-*-* tic6x-*-*
#xfail: vax-*-* xgate-*-* xstormy16-*-* xtensa*-*-*
.*: file format .*elf.*
diff --git a/ld/testsuite/ld-elf/relocatable.d b/ld/testsuite/ld-elf/relocatable.d
index 458244a..d0fba97 100644
--- a/ld/testsuite/ld-elf/relocatable.d
+++ b/ld/testsuite/ld-elf/relocatable.d
@@ -6,5 +6,6 @@
#...
\[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t]+0+800000[ \t0-9a-f]+AX.*
+#...
\[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t]+0+900000[ \t0-9a-f]+WA.*
#pass
diff --git a/ld/testsuite/ld-elfcomm/elfcomm.exp b/ld/testsuite/ld-elfcomm/elfcomm.exp
index 52b5cd2..d1f3b75 100644
--- a/ld/testsuite/ld-elfcomm/elfcomm.exp
+++ b/ld/testsuite/ld-elfcomm/elfcomm.exp
@@ -59,7 +59,7 @@ proc test_sort_common {} {
}
if { ![ld_link $ld tmpdir/sort-common.dx "--sort-common=descending tmpdir/sort-common.o"] } {
- fail "$test"
+ fail "$test (could not link)"
return 0
}
@@ -73,7 +73,7 @@ proc test_sort_common {} {
# section and large commons in a .bss section.
if { ![regexp ".*var_16.*var_8.*var_4.*var_2.*var_1.*" $exec_output]
&& ![regexp ".*sbss.*var_8.*var_4.*var_2.*var_1.*bss.*var_16.*" $exec_output] } {
- fail $test
+ fail "$test (variables in wrong order)"
} else {
pass $test
}
@@ -83,7 +83,7 @@ proc test_sort_common {} {
verbose "Check to see that --sort-common=ascending sorts in ascending alignment"
if { ![ld_link $ld tmpdir/sort-common.ax "--sort-common=ascending tmpdir/sort-common.o"] } {
- fail "$test"
+ fail "$test (could not link)"
return 0
}
@@ -91,7 +91,7 @@ proc test_sort_common {} {
set exec_output [run_host_cmd "$objdump" "--syms tmpdir/sort-common.ax | grep var | sort"]
if {![regexp ".*var_1.*var_2.*var_4.*var_8.*var_16.*" $exec_output]} {
- fail $test
+ fail "$test (variables in wrong order)"
return 0
}
diff --git a/ld/testsuite/ld-nds32/branch.d b/ld/testsuite/ld-nds32/branch.d
index 85798e9..7ce4ca0 100644
--- a/ld/testsuite/ld-nds32/branch.d
+++ b/ld/testsuite/ld-nds32/branch.d
@@ -6,19 +6,15 @@
Disassembly of section .text:
-0+0000 <[^>]*> beq \$r0, \$r1, 0000002c <main>
-0+0004 <[^>]*> bne \$r0, \$r1, 0000002c <main>
-0+0008 <[^>]*> bnez38 \$r0, 0000002c <main>
-0+000a <[^>]*> beqz38 \$r0, 0000002c <main>
-0+000c <[^>]*> bgez \$r0, 0000002c <main>
+0+0000 <[^>]*> beq[ ]+\$r0, \$r1, 00000024 <main>
+0+0004 <[^>]*> bne[ ]+\$r0, \$r1, 00000024 <main>
+0+0008 <[^>]*> beqz38[ ]+\$r0, 00000024 <main>
+0+000a <[^>]*> bnez38[ ]+\$r0, 00000024 <main>
+0+000c <[^>]*> bgez[ ]+\$r0, 00000024 <main>
.*
-0+0012 <[^>]*> bgezal \$r0, 0000002c <main>
-0+0016 <[^>]*> bgtz \$r0, 0000002c <main>
+0+0014 <[^>]*> bgtz[ ]+\$r0, 00000024 <main>
.*
-0+001c <[^>]*> blez \$r0, 0000002c <main>
+0+001c <[^>]*> bltz[ ]+\$r0, 00000024 <main>
.*
-0+0022 <[^>]*> bltz \$r0, 0000002c <main>
-0+0026 <[^>]*> srli45 \$r0, 0
-0+0028 <[^>]*> bltzal \$r0, 0000002c <main>
-0+002c <main>.*
-
+0+0024 <[^>]*> nop16
+#pass
diff --git a/ld/testsuite/ld-nds32/gp.d b/ld/testsuite/ld-nds32/gp.d
index dac6eaa..552062a 100644
--- a/ld/testsuite/ld-nds32/gp.d
+++ b/ld/testsuite/ld-nds32/gp.d
@@ -6,13 +6,13 @@
Disassembly of section .text:
-0+0000 <[^>]*> addi.gp \$r0, 8192
-0+0004 <[^>]*> lbi.gp \$r0, \[\+ 8192\]
-0+0008 <[^>]*> lbsi.gp \$r0, \[\+ 8192\]
-0+000c <[^>]*> lhi.gp \$r0, \[\+ 8192\]
-0+0010 <[^>]*> lhsi.gp \$r0, \[\+ 8192\]
-0+0014 <[^>]*> lwi.gp \$r0, \[\+ 8192\]
-0+0018 <[^>]*> sbi.gp \$r0, \[\+ 8192\]
-0+001c <[^>]*> shi.gp \$r0, \[\+ 8192\]
-0+0020 <[^>]*> swi.gp \$r0, \[\+ 8192\]
+0+0000 <[^>]*> addi.gp \$r0, .*
+0+0004 <[^>]*> lbi.gp \$r0, \[.*\]
+0+0008 <[^>]*> lbsi.gp \$r0, \[.*\]
+0+000c <[^>]*> lhi.gp \$r0, \[.*\]
+0+0010 <[^>]*> lhsi.gp \$r0, \[.*\]
+0+0014 <[^>]*> lwi.gp \$r0, \[.*\]
+0+0018 <[^>]*> sbi.gp \$r0, \[.*\]
+0+001c <[^>]*> shi.gp \$r0, \[.*\]
+0+0020 <[^>]*> swi.gp \$r0, \[.*\]
diff --git a/ld/testsuite/ld-nds32/imm.d b/ld/testsuite/ld-nds32/imm.d
index fdaacf3..730c5ad 100644
--- a/ld/testsuite/ld-nds32/imm.d
+++ b/ld/testsuite/ld-nds32/imm.d
@@ -8,8 +8,8 @@
Disassembly of section .text:
-0+1000 <[^>]*> sethi \$r0, 0x11223
-0+1004 <[^>]*> ori \$r0, \$r0, 836
-0+1008 <[^>]*> movi \$r0, 70179
-0+100c <[^>]*> movi55 \$r0, 15
+0+1000 <[^>]*> sethi \$r0, #0x11223
+0+1004 <[^>]*> ori \$r0, \$r0, #0x344
+0+1008 <[^>]*> movi \$r0, #0x11223
+0+100c <[^>]*> movi55[ ]+\$r0, #0xf
diff --git a/ld/testsuite/ld-nds32/relax_jmp.d b/ld/testsuite/ld-nds32/relax_jmp.d
index b1d2051..4b1268d 100644
--- a/ld/testsuite/ld-nds32/relax_jmp.d
+++ b/ld/testsuite/ld-nds32/relax_jmp.d
@@ -6,7 +6,7 @@
Disassembly of section .text:
-0+0000 <[^>]*> j8 00000006 <main>
-0+0002 <[^>]*> jal 00000006 <main>
-0+0006 <[^>]*> srli45 \$r0, 0
+0+0000 <[^>]*> j 00000008 <main>
+0+0004 <[^>]*> jal 00000008 <main>
+0+0008 <[^>]*> nop16
diff --git a/ld/testsuite/ld-nds32/relax_load_store.d b/ld/testsuite/ld-nds32/relax_load_store.d
index 07c4fe7..d7829f7 100644
--- a/ld/testsuite/ld-nds32/relax_load_store.d
+++ b/ld/testsuite/ld-nds32/relax_load_store.d
@@ -6,7 +6,7 @@
Disassembly of section .text:
-0+0000 <[^>]*> lwi.gp \$r0, \[\+ 0\]
-0+0004 <[^>]*> lhi.gp \$r0, \[\+ 4\]
-0+0008 <[^>]*> lbi.gp \$r0, \[\+ 6\]
+0+0000 <[^>]*> lwi.gp \$r0, \[ \+ #0\]
+0+0004 <[^>]*> lhi.gp \$r0, \[ \+ #4\]
+0+0008 <[^>]*> lbi.gp \$r0, \[ \+ #6\]