* scripttempl/mmo.sc: For relocateable links, set $OUTPUT_FORMAT to
authorHans-Peter Nilsson <hp@axis.com>
Wed, 29 Jul 2009 00:25:22 +0000 (00:25 +0000)
committerHans-Peter Nilsson <hp@axis.com>
Wed, 29 Jul 2009 00:25:22 +0000 (00:25 +0000)
the new $RELOCATEABLE_OUTPUT_FORMAT, if set.
(OUTPUT_FORMAT): Use the variable $OUTPUT_FORMAT.
(ENTRY): Don't emit for relocateable links.
(/DISCARD/): Don't discard .gnu.warning.* for relocateable links.
* emulparams/mmo.sh (RELOCATEABLE_OUTPUT_FORMAT): Set, to
elf64-mmix.
* emulparams/elf64mmix.sh (OTHER_TEXT_SECTIONS): Empty, don't
provide "Main" or set "_start.", for relocateable links.

ld/ChangeLog
ld/emulparams/elf64mmix.sh
ld/emulparams/mmo.sh
ld/scripttempl/mmo.sc

index 89c4632..d9ec3ba 100644 (file)
@@ -1,3 +1,15 @@
+2009-07-29  Hans-Peter Nilsson  <hp@bitrange.com>
+
+       * scripttempl/mmo.sc: For relocateable links, set $OUTPUT_FORMAT to
+       the new $RELOCATEABLE_OUTPUT_FORMAT, if set.
+       (OUTPUT_FORMAT): Use the variable $OUTPUT_FORMAT.
+       (ENTRY): Don't emit for relocateable links.
+       (/DISCARD/): Don't discard .gnu.warning.* for relocateable links.
+       * emulparams/mmo.sh (RELOCATEABLE_OUTPUT_FORMAT): Set, to
+       elf64-mmix.
+       * emulparams/elf64mmix.sh (OTHER_TEXT_SECTIONS): Empty, don't
+       provide "Main" or set "_start.", for relocateable links.
+
 2009-07-27  Nick Clifton  <nickc@redhat.com>
 
        * (po/fi.po): Updated Finnish translation.
index 787b50d..bdb5d0a 100644 (file)
@@ -35,11 +35,14 @@ EXTRA_EM_FILE=mmixelf
 # DEFINED wouldn't find the symbol if it was at the top; presumably
 # before the definition, if the definition is not in the first file.
 # FIXME: Arguably a linker bug.
-OTHER_TEXT_SECTIONS='
+# Only do this for a final link, or else we'll mess up e.g. error
+# messages.
+OTHER_TEXT_SECTIONS="
+${RELOCATING+
  _start. = (DEFINED (_start) ? _start
             : (DEFINED (Main) ? Main : (DEFINED (.text) ? .text : 0)));
  PROVIDE (Main = DEFINED (Main) ? Main : (DEFINED (_start) ? _start : _start.));
-'
+}"
 
 OTHER_SECTIONS='
  .MMIX.reg_contents :
index e0a8798..ca98013 100644 (file)
@@ -5,6 +5,7 @@ TARGET_PAGE_SIZE=256
 TEXT_START_ADDR='DEFINED (__.MMIX.start..text) ? __.MMIX.start..text : 0'
 DATA_ADDR='DEFINED (__.MMIX.start..data) ? __.MMIX.start..data : 0x2000000000000000'
 OUTPUT_FORMAT=mmo
+RELOCATEABLE_OUTPUT_FORMAT=elf64-mmix
 ARCH=mmix
 COMPILE_IN=yes
 EXTRA_EM_FILE=mmo
index 599db83..3380884 100644 (file)
@@ -1,7 +1,11 @@
+# MMO is not a relocateable format, and we don't want to require an
+# explicit (e.g.) "-m elf64mmix" when -r is used.
+test -z $RELOCATEABLE_OUTPUT_FORMAT && RELOCATEABLE_OUTPUT_FORMAT=$OUTPUT_FORMAT
+test -z ${RELOCATING+0} && OUTPUT_FORMAT=$RELOCATEABLE_OUTPUT_FORMAT
 cat <<EOF
-OUTPUT_FORMAT("mmo")
+OUTPUT_FORMAT("$OUTPUT_FORMAT")
 OUTPUT_ARCH(mmix)
-ENTRY(Main)
+${RELOCATING+ENTRY(Main)}
 SECTIONS
 {
   .text ${RELOCATING+ ${TEXT_START_ADDR}}:
@@ -128,6 +132,6 @@ SECTIONS
   /* Unfortunately, stabs are not mappable from ELF to MMO.
      It can probably be fixed with some amount of work.  */
   /DISCARD/ :
-  { *(.gnu.warning.*); }
+  { ${RELOCATING+ *(.gnu.warning.*);} }
 }
 EOF