diff --git a/ld/scripttempl/elf_chaos.sc b/ld/scripttempl/elf_chaos.sc
deleted file mode 100644
index 69ab6eaa9bf..00000000000
--- a/ld/scripttempl/elf_chaos.sc
+++ /dev/null
@@ -1,339 +0,0 @@
-# Copyright (C) 2014-2024 Free Software Foundation, Inc.
-#
-# Copying and distribution of this file, with or without modification,
-# are permitted in any medium without royalty provided the copyright
-# notice and this notice are preserved.
-#
-# Unusual variables checked by this code:
-#	NOP - four byte opcode for no-op (defaults to 0)
-#	NO_SMALL_DATA - no .sbss/.sbss2/.sdata/.sdata2 sections if not
-#		empty.
-#	DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
-#	INITIAL_READONLY_SECTIONS - at start of text segment
-#	OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
-#		(e.g., .PARISC.milli)
-#	OTHER_TEXT_SECTIONS - these get put in .text when relocating
-#	OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
-#		(e.g., .PARISC.global)
-#	ATTRS_SECTIONS - at the end
-#	OTHER_SECTIONS - at the end
-#	EXECUTABLE_SYMBOLS - symbols that must be defined for an
-#		executable (e.g., _DYNAMIC_LINK)
-#	TEXT_START_SYMBOLS - symbols that appear at the start of the
-#		.text section.
-#	DATA_START_SYMBOLS - symbols that appear at the start of the
-#		.data section.
-#	OTHER_GOT_SYMBOLS - symbols defined just before .got.
-#	OTHER_GOT_SECTIONS - sections just after .got.
-#	OTHER_SDATA_SECTIONS - sections just after .sdata.
-#	OTHER_BSS_SYMBOLS - symbols that appear at the start of the
-#		.bss section besides __bss_start.
-#	DATA_PLT - .plt should be in data segment, not text segment.
-#	BSS_PLT - .plt should be in bss segment
-#	TEXT_DYNAMIC - .dynamic in text segment, not data segment.
-#	EMBEDDED - whether this is for an embedded system.
-#	SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
-#		start address of shared library.
-#	INPUT_FILES - INPUT command of files to always include
-#	WRITABLE_RODATA - if set, the .rodata section should be writable
-#	INIT_START, INIT_END -  statements just before and just after
-#	combination of .init sections.
-#	FINI_START, FINI_END - statements just before and just after
-#	combination of .fini sections.
-#	STACK_ADDR - start of a .stack section.
-#	OTHER_SYMBOLS - symbols to place right at the end of the script.
-#
-# When adding sections, do note that the names of some sections are used
-# when specifying the start address of the next.
-#
-
-#  Many sections come in three flavours.  There is the 'real' section,
-#  like ".data".  Then there are the per-procedure or per-variable
-#  sections, generated by -ffunction-sections and -fdata-sections in GCC,
-#  and useful for --gc-sections, which for a variable "foo" might be
-#  ".data.foo".  Then there are the linkonce sections, for which the linker
-#  eliminates duplicates, which are named like ".gnu.linkonce.d.foo".
-#  The exact correspondences are:
-#
-#  Section	Linkonce section
-#  .text	.gnu.linkonce.t.foo
-#  .rodata	.gnu.linkonce.r.foo
-#  .data	.gnu.linkonce.d.foo
-#  .bss		.gnu.linkonce.b.foo
-#  .sdata	.gnu.linkonce.s.foo
-#  .sbss	.gnu.linkonce.sb.foo
-#  .sdata2	.gnu.linkonce.s2.foo
-#  .sbss2	.gnu.linkonce.sb2.foo
-#  .debug_info	.gnu.linkonce.wi.foo
-#
-#  Each of these can also have corresponding .rel.* and .rela.* sections.
-
-test -z "$ENTRY" && ENTRY=_start
-test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
-test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
-if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
-test -z "${ELFSIZE}" && ELFSIZE=32
-test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
-test -z "$ATTRS_SECTIONS" && ATTRS_SECTIONS=".gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }"
-test "$LD_FLAG" = "N" && DATA_ADDR=.
-INTERP=".interp       ${RELOCATING-0} : { *(.interp) }"
-PLT=".plt          ${RELOCATING-0} : { *(.plt) }"
-DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
-RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
-if test -z "${NO_SMALL_DATA}"; then
-  SBSS=".sbss         ${RELOCATING-0} :
-  {
-    ${RELOCATING+PROVIDE (__sbss_start = .);}
-    ${RELOCATING+PROVIDE (___sbss_start = .);}
-    *(.dynsbss)
-    *(.sbss${RELOCATING+ .sbss.* .gnu.linkonce.sb.*})
-    *(.scommon)
-    ${RELOCATING+PROVIDE (__sbss_end = .);}
-    ${RELOCATING+PROVIDE (___sbss_end = .);}
-  }"
-  SBSS2=".sbss2        ${RELOCATING-0} : { *(.sbss2${RELOCATING+ .sbss2.* .gnu.linkonce.sb2.*}) }"
-  SDATA="/* We want the small data sections together, so single-instruction offsets
-     can access them all, and initialized data all before uninitialized, so
-     we can shorten the on-disk segment size.  */
-  .sdata        ${RELOCATING-0} :
-  {
-    ${RELOCATING+${SDATA_START_SYMBOLS}}
-    *(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
-  }"
-  SDATA2=".sdata2       ${RELOCATING-0} : { *(.sdata2${RELOCATING+ .sdata2.* .gnu.linkonce.s2.*}) }"
-  REL_SDATA=".rel.sdata    ${RELOCATING-0} : { *(.rel.sdata${RELOCATING+ .rel.sdata.* .rel.gnu.linkonce.s.*}) }
-  .rela.sdata   ${RELOCATING-0} : { *(.rela.sdata${RELOCATING+ .rela.sdata.* .rela.gnu.linkonce.s.*}) }"
-  REL_SBSS=".rel.sbss     ${RELOCATING-0} : { *(.rel.sbss${RELOCATING+ .rel.sbss.* .rel.gnu.linkonce.sb.*}) }
-  .rela.sbss    ${RELOCATING-0} : { *(.rela.sbss${RELOCATING+ .rela.sbss.* .rela.gnu.linkonce.sb.*}) }"
-  REL_SDATA2=".rel.sdata2   ${RELOCATING-0} : { *(.rel.sdata2${RELOCATING+ .rel.sdata2.* .rel.gnu.linkonce.s2.*}) }
-  .rela.sdata2  ${RELOCATING-0} : { *(.rela.sdata2${RELOCATING+ .rela.sdata2.* .rela.gnu.linkonce.s2.*}) }"
-  REL_SBSS2=".rel.sbss2    ${RELOCATING-0} : { *(.rel.sbss2${RELOCATING+ .rel.sbss2.* .rel.gnu.linkonce.sb2.*}) }
-  .rela.sbss2   ${RELOCATING-0} : { *(.rela.sbss2${RELOCATING+ .rela.sbss2.* .rela.gnu.linkonce.sb2.*}) }"
-fi
-CTOR="
-    ${CONSTRUCTING+${CTOR_START}}
-    /* gcc uses crtbegin.o to find the start of
-       the constructors, so we make sure it is
-       first.  Because this is a wildcard, it
-       doesn't matter if the user does not
-       actually link against crtbegin.o; the
-       linker won't look for a file to match a
-       wildcard.  The wildcard also means that it
-       doesn't matter which directory crtbegin.o
-       is in.  */
-
-    KEEP (*crtbegin.o(.ctors))
-    KEEP (*crtbegin?.o(.ctors))
-
-    /* We don't want to include the .ctor section from
-       the crtend.o file until after the sorted ctors.
-       The .ctor section from the crtend file contains the
-       end of ctors marker and it must be last */
-
-    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .ctors))
-    KEEP (*(SORT(.ctors.*)))
-    KEEP (*(.ctors))
-    ${CONSTRUCTING+${CTOR_END}}
-"
-DTOR="
-    ${CONSTRUCTING+${DTOR_START}}
-    KEEP (*crtbegin.o(.dtors))
-    KEEP (*crtbegin?.o(.dtors))
-    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .dtors))
-    KEEP (*(SORT(.dtors.*)))
-    KEEP (*(.dtors))
-    ${CONSTRUCTING+${DTOR_END}}
-"
-STACK="  .stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
-  {
-    ${RELOCATING+_stack = .;}
-    *(.stack)
-  }"
-
-test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}"
-
-cat <<EOF
-/* Copyright (C) 2014-2024 Free Software Foundation, Inc.
-
-   Copying and distribution of this script, with or without modification,
-   are permitted in any medium without royalty provided the copyright
-   notice and this notice are preserved.  */
-
-OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
-	      "${LITTLE_OUTPUT_FORMAT}")
-OUTPUT_ARCH(${OUTPUT_ARCH})
-${RELOCATING+ENTRY(${ENTRY})}
-
-${RELOCATING+${LIB_SEARCH_DIRS}}
-${RELOCATING+/* Do we need any of these for elf?
-   __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}}  */}
-${RELOCATING+${EXECUTABLE_SYMBOLS}}
-${RELOCATING+${INPUT_FILES}}
-${RELOCATING- /* For some reason, the Solaris linker makes bad executables
-  if gld -r is used and the intermediate file has sections starting
-  at non-zero addresses.  Could be a Solaris ld bug, could be a GNU ld
-  bug.  But for now assigning the zero vmas works.  */}
-
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  ${CREATE_SHLIB-${RELOCATING+. = ${TEXT_BASE_ADDRESS};}}
-  ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0};}}
-  ${CREATE_SHLIB-${INTERP}}
-  ${INITIAL_READONLY_SECTIONS}
-  ${TEXT_DYNAMIC+${DYNAMIC}}
-  .hash         ${RELOCATING-0} : { *(.hash) }
-  .dynsym       ${RELOCATING-0} : { *(.dynsym) }
-  .dynstr       ${RELOCATING-0} : { *(.dynstr) }
-  .gnu.version  ${RELOCATING-0} : { *(.gnu.version) }
-  .gnu.version_d ${RELOCATING-0}: { *(.gnu.version_d) }
-  .gnu.version_r ${RELOCATING-0}: { *(.gnu.version_r) }
-
-EOF
-if [ "x$COMBRELOC" = x ]; then
-  COMBRELOCCAT=cat
-else
-  COMBRELOCCAT="cat > $COMBRELOC"
-fi
-eval $COMBRELOCCAT <<EOF
-  .rel.init     ${RELOCATING-0} : { *(.rel.init) }
-  .rela.init    ${RELOCATING-0} : { *(.rela.init) }
-  .rel.text     ${RELOCATING-0} : { *(.rel.text${RELOCATING+ .rel.text.* .rel.gnu.linkonce.t.*}) }
-  .rela.text    ${RELOCATING-0} : { *(.rela.text${RELOCATING+ .rela.text.* .rela.gnu.linkonce.t.*}) }
-  .rel.fini     ${RELOCATING-0} : { *(.rel.fini) }
-  .rela.fini    ${RELOCATING-0} : { *(.rela.fini) }
-  .rel.rodata   ${RELOCATING-0} : { *(.rel.rodata${RELOCATING+ .rel.rodata.* .rel.gnu.linkonce.r.*}) }
-  .rela.rodata  ${RELOCATING-0} : { *(.rela.rodata${RELOCATING+ .rela.rodata.* .rela.gnu.linkonce.r.*}) }
-  ${OTHER_READONLY_RELOC_SECTIONS}
-  .rel.data     ${RELOCATING-0} : { *(.rel.data${RELOCATING+ .rel.data.* .rel.gnu.linkonce.d.*}) }
-  .rela.data    ${RELOCATING-0} : { *(.rela.data${RELOCATING+ .rela.data.* .rela.gnu.linkonce.d.*}) }
-  .rel.ctors    ${RELOCATING-0} : { *(.rel.ctors) }
-  .rela.ctors   ${RELOCATING-0} : { *(.rela.ctors) }
-  .rel.dtors    ${RELOCATING-0} : { *(.rel.dtors) }
-  .rela.dtors   ${RELOCATING-0} : { *(.rela.dtors) }
-  .rel.got      ${RELOCATING-0} : { *(.rel.got) }
-  .rela.got     ${RELOCATING-0} : { *(.rela.got) }
-  ${OTHER_GOT_RELOC_SECTIONS}
-  ${REL_SDATA}
-  ${REL_SBSS}
-  ${REL_SDATA2}
-  ${REL_SBSS2}
-  .rel.bss      ${RELOCATING-0} : { *(.rel.bss${RELOCATING+ .rel.bss.* .rel.gnu.linkonce.b.*}) }
-  .rela.bss     ${RELOCATING-0} : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) }
-EOF
-if [ -n "$COMBRELOC" ]; then
-cat <<EOF
-  .rel.dyn      ${RELOCATING-0} :
-    {
-EOF
-sed -e '/^[	 ]*[{}][	 ]*$/d;/:[	 ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/      \1/' $COMBRELOC
-cat <<EOF
-    }
-  .rela.dyn     ${RELOCATING-0} :
-    {
-EOF
-sed -e '/^[	 ]*[{}][	 ]*$/d;/:[	 ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/      \1/' $COMBRELOC
-cat <<EOF
-    }
-EOF
-fi
-cat <<EOF
-  ${RELOCATING+. = ALIGN(0x1000);}
-  .rel.plt      ${RELOCATING-0} : { *(.rel.plt) }
-  .rela.plt     ${RELOCATING-0} : { *(.rela.plt) }
-  ${OTHER_PLT_RELOC_SECTIONS}
-  ${DATA_PLT-${BSS_PLT-${PLT}}}
-  .text         ${RELOCATING-0} :
-  {
-    ${RELOCATING+${TEXT_START_SYMBOLS}}
-    *(.text .stub${RELOCATING+ .text.* .gnu.linkonce.t.*})
-    /* .gnu.warning sections are handled specially by elf.em.  */
-    *(.gnu.warning)
-    ${RELOCATING+${OTHER_TEXT_SECTIONS}}
-  } =${NOP-0}
-  .init         ${RELOCATING-0} :
-  {
-    ${RELOCATING+${INIT_START}}
-    KEEP (*(SORT_NONE(.init)))
-    ${RELOCATING+${INIT_END}}
-  } =${NOP-0}
-  .fini         ${RELOCATING-0} :
-  {
-    ${RELOCATING+${FINI_START}}
-    KEEP (*(SORT_NONE(.fini)))
-    ${RELOCATING+${FINI_END}}
-  } =${NOP-0}
-  ${RELOCATING+PROVIDE (__etext = .);}
-  ${RELOCATING+PROVIDE (_etext = .);}
-  ${RELOCATING+PROVIDE (etext = .);}
-  ${RELOCATING+. = ALIGN(0x1000);}
-  ${CREATE_SHLIB-${SDATA2}}
-  ${CREATE_SHLIB-${SBSS2}}
-  ${OTHER_READONLY_SECTIONS}
-  .eh_frame_hdr ${RELOCATING-0} : { *(.eh_frame_hdr) }
-
-  ${RELOCATING+. = ALIGN(0x1000);}
-  .data         ${RELOCATING-0} :
-  {
-    ${RELOCATING+*(.rodata .rodata.*)
-    *(.rodata1)
-    *(.gnu.linkonce.r.*)
-    ${DATA_START_SYMBOLS}}
-    *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
-    ${CONSTRUCTING+SORT(CONSTRUCTORS)}
-    ${RELOCATING+KEEP (*(.eh_frame))
-    *(.gcc_except_table)
-    ${CTOR}
-    ${DTOR}
-    KEEP (*(.jcr))}
-  }
-  .data1        ${RELOCATING-0} : { *(.data1) }
-  ${RELOCATING+. = ALIGN(0x1000);}
-  .gcc_except_table ${RELOCATING-0} : { *(.gcc_except_table) }
-  ${WRITABLE_RODATA+${RODATA}}
-  ${OTHER_READWRITE_SECTIONS}
-  ${TEXT_DYNAMIC-${DYNAMIC}}
-  ${DATA_PLT+${PLT}}
-  ${RELOCATING+${OTHER_GOT_SYMBOLS}}
-  .got          ${RELOCATING-0} : {${RELOCATING+ *(.got.plt)} *(.got) }
-  ${OTHER_GOT_SECTIONS}
-  ${CREATE_SHLIB+${SDATA2}}
-  ${CREATE_SHLIB+${SBSS2}}
-  ${SDATA}
-  ${OTHER_SDATA_SECTIONS}
-  ${RELOCATING+_edata = .;}
-  ${RELOCATING+PROVIDE (edata = .);}
-  ${RELOCATING+. = ALIGN(ALIGNOF(NEXT_SECTION));}
-  ${RELOCATING+__bss_start = .;}
-  ${RELOCATING+${OTHER_BSS_SYMBOLS}}
-  ${SBSS}
-  ${BSS_PLT+${PLT}}
-  ${RELOCATING+. = ALIGN(0x1000);}
-  .bss          ${RELOCATING-0} :
-  {
-   ${RELOCATING+*(.dynbss)}
-   *(.bss${RELOCATING+ .bss.* .gnu.linkonce.b.*})
-   ${RELOCATING+*(COMMON)
-   /* Align here to ensure that the .bss section occupies space up to
-      _end.  Align after .bss to ensure correct alignment even if the
-      .bss section disappears because there are no input sections.  */
-   . = ALIGN(${ALIGNMENT});}
-  }
-  ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
-  ${RELOCATING+. = ALIGN(${ALIGNMENT});}
-  ${RELOCATING+${OTHER_END_SYMBOLS}}
-  ${RELOCATING+_end = .;}
-  ${RELOCATING+PROVIDE (end = .);}
-  ${STACK_ADDR+${STACK}}
-
-EOF
-
-source_sh $srcdir/scripttempl/misc-sections.sc
-source_sh $srcdir/scripttempl/DWARF.sc
-
-cat <<EOF
-  ${ATTRS_SECTIONS}
-  ${OTHER_SECTIONS}
-  ${RELOCATING+${OTHER_SYMBOLS}}
-}
-EOF
