Stop the v850 linker from converting to other output formats whilst linking.
authorNick Clifton <nickc@redhat.com>
Tue, 21 Nov 2017 14:15:51 +0000 (14:15 +0000)
committerNick Clifton <nickc@redhat.com>
Tue, 21 Nov 2017 14:15:51 +0000 (14:15 +0000)
PR 22419
* emultempl/v850elf.em (v850_create_output_section_statements):
New function.  Generate an error if attempting to convert the
format of the output file.
* testsuite/ld-unique/pr21529.d: Skip for the V850.
* testsuite/ld-elf/pr21884.d: Skip for the V850.

ld/ChangeLog
ld/emultempl/v850elf.em
ld/testsuite/ld-elf/pr21884.d
ld/testsuite/ld-unique/pr21529.d

index c7d9999547b482857d3b2669552c47d183c34498..4cfcf6d8ba384b4ddd70b91df54d249b41a37ce3 100644 (file)
@@ -1,3 +1,12 @@
+2017-11-21  Nick Clifton  <nickc@redhat.com>
+
+       PR 22419
+       * emultempl/v850elf.em (v850_create_output_section_statements):
+       New function.  Generate an error if attempting to convert the
+       format of the output file.
+       * testsuite/ld-unique/pr21529.d: Skip for the V850.
+       * testsuite/ld-elf/pr21884.d: Skip for the V850.
+
 2017-11-21  Claudiu Zissulescu <claziss@synopsys.com>
 
        * testsuite/ld-arc/jli-simple.d: Update test.
index 2d590234986861aeec5b6a08702868ec793f2f94..5bc82cceeb278e92bcbe4186599394eb91b180ae 100644 (file)
@@ -49,6 +49,27 @@ v850_after_open (void)
   gld${EMULATION_NAME}_after_open ();
 }
 
+/* This is a convenient point to tell BFD about target specific flags.
+   After the output has been created, but before inputs are read.  */
+
+static void
+v850_create_output_section_statements (void)
+{
+  /* See PR 22419 for an example of why this is necessary.  */
+  if (strstr (bfd_get_target (link_info.output_bfd), "v850") == NULL)
+    {
+      /* The V850 backend needs special fields in the output hash structure.
+        These will only be created if the output format is an arm format,
+        hence we do not support linking and changing output formats at the
+        same time.  Use a link followed by objcopy to change output formats.  */
+      einfo (_("%F%X%P: error: Cannot change output format (to %s) whilst linking V850 binaries.\n"),
+            bfd_get_target (link_info.output_bfd));
+      return;
+    }
+}
+
+
 EOF
 
 LDEMUL_AFTER_OPEN=v850_after_open
+LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS=v850_create_output_section_statements
index 0de7b83b1877688a134adc7a3215b0fd43bd4e3c..2645a874bf9b9847e3f32a4a77206719c63decb2 100644 (file)
@@ -2,7 +2,7 @@
 #source: pr21884b.s
 #ld: -T pr21884.t
 #objdump: -b binary -s
-#notarget: aarch64*-*-* arm*-*-* avr-*-* hppa-*-* ia64-*-* m68hc1*-*-* nds32*-*-* score-*-*
+#notarget: aarch64*-*-* arm*-*-* avr-*-* hppa-*-* ia64-*-* m68hc1*-*-* nds32*-*-* score-*-* v850-*-*
 # Skip targets which can't change output format to binary.
 
 .*:     file format binary
index ffc1a724406b47c39813fd167b3b826e1c3944c0..655a9eff9e00ae03e5320d137ad402337a31de7d 100644 (file)
@@ -1,6 +1,6 @@
 #ld: --oformat binary -T pr21529.ld -e main
 #objdump: -s -b binary
-#notarget: aarch64*-*-* arm*-*-* avr-*-* ia64-*-* m68hc1*-*-* nds32*-*-* score-*-*
+#notarget: aarch64*-*-* arm*-*-* avr-*-* ia64-*-* m68hc1*-*-* nds32*-*-* score-*-* v850-*-*
 # Skip targets which can't change output format to binary.
 
 #pass