# Expect script for ld-plugin LTO tests
#   Copyright (C) 2011-2015 Free Software Foundation, Inc.
#
# This file is part of the GNU Binutils.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
# MA 02110-1301, USA.

# These tests require plugin and LTO.
if { ![check_plugin_api_available]
     || ![check_lto_available] } {
    return
}

global CFLAGS
global CXXFLAGS
set saved_CFLAGS "$CFLAGS"
set saved_CXXFLAGS "$CXXFLAGS"
regsub -all "(\\-Wp,)?-D_FORTIFY_SOURCE=\[0-9\]+" $CFLAGS "" CFLAGS
regsub -all "(\\-Wp,)?-D_FORTIFY_SOURCE=\[0-9\]+" $CXXFLAGS "" CXXFLAGS

proc restore_notify { } {
  global saved_CFLAGS
  global saved_CXXFLAGS
  set CFLAGS "$saved_CFLAGS"
  set CXXFLAGS "$saved_CXXFLAGS"
}

set plugin_names {
    liblto_plugin.so
    liblto_plugin-0.dll
    cyglto_plugin-0.dll
}
set plug_opt ""
foreach plug $plugin_names {
    set plug_so [run_host_cmd $CC "--print-prog-name $plug"]
    if { $plug_so eq $plug } then {
	set plug_so [run_host_cmd $CC "--print-file-name $plug"]
    }
    if { $plug_so ne $plug } then {
	set plug_opt "--plugin $plug_so"
	break
    }
}
set lto_fat ""
if { [check_lto_fat_available] } {
  set lto_fat "-ffat-lto-objects"
}

# Simple LTO tests and generate input files for complex LTO tests.
set lto_link_tests [list \
  [list "LTO 1" \
   "-O2 -flto -fuse-linker-plugin" "-flto -fuse-linker-plugin" \
   {lto-1a.c lto-1b.c} {} "lto-1.exe"] \
  [list "Compile 2" \
   "" "-O2 -flto -fuse-linker-plugin" \
   {lto-2.c} {} ""] \
  [list "LTO 2" \
   "-static -O2 -flto -fuse-linker-plugin tmpdir/lto-2.o -lm" "" \
   {dummy.c} {} "lto-2.exe"] \
  [list "Compile 3a" \
   "" "-flto" \
   {lto-3a.c} {} ""] \
  [list "Compile 3c" \
   "" "-O2" \
   {lto-3c.c} {} ""] \
  [list "Build liblto-3.a" \
   "" "-flto $lto_fat" \
   {lto-3b.c} {} "liblto-3.a"] \
  [list "Compile 4a" \
   "" "-flto $lto_fat" \
   {lto-4a.c} {} ""] \
  [list "Compile 4b" \
   "" "-O2" \
   {lto-4b.c} {} ""] \
  [list "Compile 4c" \
   "" "-O2" \
   {lto-4c.c} {} ""] \
  [list "Compile 5a" \
   "" "-flto $lto_fat" \
   {lto-5a.c} {} ""] \
  [list "Compile 5b" \
   "" "-flto $lto_fat" \
   {lto-5b.c} {} ""] \
  [list "LTO 6" \
   "-O2 -flto -fuse-linker-plugin" "" \
   {lto-6.c} {} "lto-6.exe" "c"] \
  [list "Compile PR ld/12365" \
   "" "-flto -O2 $lto_fat" \
   {pr12365a.c pr12365b.c pr12365c.c} {} ""] \
  [list "Compile 9" \
   "" "-O2 -finline -flto" \
   {lto-9.cc} {} "" "c++"] \
  [list "Compile 10a" \
   "" "-O2" \
   {lto-10a.c} {} ""] \
  [list "Compile 10b" \
   "" "-O2 -flto $lto_fat" \
   {lto-10b.c} {} ""] \
  [list "Compile 11a" \
   "" "-O -flto" \
   {lto-11a.c} {} ""] \
  [list "Compile 11b" \
   "" "-O -flto" \
   {lto-11b.c} {} ""] \
  [list "Compile 11c" \
   "" "-O" \
   {lto-11c.c} {} ""] \
  [list "Build liblto-12.a" \
   "$plug_opt" "-O2 -flto" \
   {lto-12c.c} {} "liblto-12.a"] \
  [list "Compile 12" \
   "" "-O2 -flto" \
   {lto-12a.c lto-12b.c} {} ""] \
  [list "Compile 13" \
   "" "-O2 -flto" \
   {lto-13a.c lto-13b.c} {} ""] \
  [list "Build liblto-13.a" \
   "" "-O2" \
   {lto-13c.c} {} "liblto-13.a"] \
  [list "Compile 14a" \
   "" "-flto" \
   {lto-14a.c lto-14b.c} {} ""] \
  [list "Build liblto-14.a" \
   "$plug_opt" "-flto" \
   {lto-14c.c} {} "liblto-14.a"] \
  [list "Compile 15a" \
   "" "-flto" \
   {lto-15a.c} {} ""] \
  [list "Build liblto-15.a" \
   "$plug_opt" "-flto" \
   {lto-15b.c} {} "liblto-15.a"] \
  [list "PR ld/12696" \
   "-O2 -flto -fuse-linker-plugin -r -nostdlib" "-O2 -flto" \
   {pr12696-1.cc} {} "pr12696-1r.o" "c++"] \
  [list "Compile PR ld/12758" \
   "" "" \
   {pr12758a.s} {} ""] \
  [list "Build libpr12758.a" \
   "" "-flto -O2 $lto_fat" \
   {pr12758b.c} {} "libpr12758.a"] \
  [list "PR ld/12758" \
   "-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12758a.o -Wl,--start-group tmpdir/libpr12758.a -Wl,--end-group" "" \
   {dummy.c} {} "pr12758.exe"] \
  [list "Compile PR ld/12760" \
   "" "-g -O0" \
   {pr12760a.c} {} ""] \
  [list "Build libpr12760.a" \
   "" "-flto -O2 $lto_fat" \
   {pr12760b.c} {} "libpr12760.a"] \
  [list "PR ld/12760" \
   "-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12760a.o -Wl,--start-group tmpdir/libpr12760.a -Wl,--end-group" "" \
   {dummy.c} {} "pr12760.exe" "c" "pr12760a.c:6: warning: Bad bar"] \
  [list "Build libpr13183.a" \
   "-T" "-flto -O2 $lto_fat" \
   {pr13183a.c} {} "libpr13183.a"] \
  [list "Compile PR ld/13183" \
   "" "-flto -O2" \
   {pr13183b.c} {} ""] \
  [list "Compile PR ld/13201" \
   "" "-flto -O2" \
   {pr13201.c} {} ""] \
  [list "PR ld/13287" \
   "-flto -fuse-linker-plugin -Wl,--as-needed" "-flto" \
   {pr13287.cc} {} "pr13287.exe" "c++"] \
  [list "PR ld/15323" \
   "" "-O2" \
   {pr15323a.c} {} "" "c"] \
  [list "Compile(1) PR ld/pr16846" \
   "" "-flto" \
   {pr16846a.c pr16846b.c} {} ""] \
  [list "Compile(2) PR ld/pr16846" \
   "" "" \
   {pr16846c.c} {} ""] \
  [list "PR ld/pr16846(1)" \
   "-flto -fuse-linker-plugin tmpdir/pr16846a.o tmpdir/pr16846b.o tmpdir/pr16846c.o" "" \
   {dummy.c} {} "pr16846a.exe"] \
  [list "PR ld/pr16846(2)" \
   "-flto -fuse-linker-plugin tmpdir/pr16846a.o tmpdir/pr16846c.o tmpdir/pr16846b.o" "" \
   {dummy.c} {} "pr16846b.exe"] \
]

if { [at_least_gcc_version 4 7] } {
    set lto_link_tests [concat $lto_link_tests [list \
      [list "Compile PR ld/12942 (1)" \
       "" "-flto -O2" \
       {pr12942a.cc pr12942c.cc} {} "" "c++"] \
      [list "Compile PR ld/12942 (2)" \
       "" "-O0" \
       {pr12942b.cc} {} "" "c++"] \
    ]]
}

# Generate input files for complex LTO tests for ELF.
set lto_link_elf_tests [list \
  [list "Compile 7" \
   "" "-flto -O2" \
   {lto-7a.c lto-7b.c lto-7c.c} {} ""] \
  [list "Build liblto-7.so" \
   "-shared" "-O2 -fpic" \
   {lto-7d.c} {} "liblto-7.so" "c"] \
  [list "Compile 8a" \
   "" "-O2" \
   {lto-8a.c} {} ""] \
  [list "Compile 8b" \
   "" "-flto -O2" \
   {lto-8b.c} {} ""] \
  [list "Build liblto-17a.so" \
   "-shared -O2 -fpic -flto -fuse-linker-plugin" "-O2 -fpic -flto" \
   {lto-17a.c} {{"nm" {} "lto-17a.d"}} "liblto-17a.so" "c"] \
  [list "Build liblto-17b.so 1" \
   "-shared -O2 -fpic -flto -fuse-linker-plugin tmpdir/lto-17a.o" "-O2 -fpic -flto" \
   {lto-17b.c} {{"nm" {} "lto-17b-1.d"}} "liblto-17b.so"] \
  [list "Build liblto-17b.so 2" \
   "-shared -O2 -fpic -flto -fuse-linker-plugin tmpdir/lto-17a.o" "-O2 -fpic -flto" \
   {lto-17b.c} {{"nm" {} "lto-17b-2.d"}} "liblto-17b.so"] \
  [list "PR ld/12982" \
   "-O2 -flto -fuse-linker-plugin" "-O2 -flto" \
   {pr12982.c} {{"readelf" {-l --wide} "pr12982.d"}} "pr12982.exe"] \
  [list "PR ld/12975" \
   "-shared -O2 -fPIC -flto -fuse-linker-plugin -nostdlib -Wl,-version-script,pr12975.t" "-O2 -flto" \
   {pr12975.c} {{"readelf" {-s --wide} "pr12975.d"}} "pr12975.so" "c"] \
  [list "PR ld/13229" \
   "-shared -O2 -fPIC -flto -fuse-linker-plugin -nostdlib" "-O2 -finline -fno-early-inlining -flto" \
   {pr13229.cc} {{"readelf" {-s --wide} "pr13229.d"}} "pr13229.so" "c++"] \
  [list "PR ld/13244" \
   "-shared -O2 -fPIC -flto -fuse-linker-plugin -nostdlib" "-O2 -fno-early-inlining -flto" \
   {pr13244.c} {{"readelf" {-s --wide} "pr13244.d"}} "pr13244.so" "c"] \
  [list "Build libpr15146a.a" \
   "$plug_opt" "-flto -O2" \
   {pr15146a.c} {} "lib15146a.a"] \
  [list "Build pr15146b.so" \
   "-shared" "-O2 -fpic" \
   {pr15146b.c} {} "pr15146b.so" "c"] \
  [list "Build pr15146c.so" \
   "-shared -Wl,--no-as-needed tmpdir/pr15146b.so" "-O2 -fpic" \
   {pr15146c.c} {} "pr15146c.so" "c"] \
  [list "PR ld/15146 (1)" \
   "-O2 -flto -fuse-linker-plugin -Wl,-rpath-link,. -Wl,--no-copy-dt-needed-entries -Wl,--no-as-needed tmpdir/pr15146a.o tmpdir/pr15146c.so" "" \
   {dummy.c} {{"readelf" {-d} "pr15146.d"}} "pr15146a.exe"] \
  [list "Build libpr15146d.a" \
   "$plug_opt" "-flto -O2" \
   {pr15146d.c} {} "lib15146d.a"] \
  [list "Build libpr16746a.a" \
   "" "" \
   {pr16746a.c pr16746b.c} {} "lib15146a.a"] \
  [list "Build libpr16746b.a" \
   "$plug_opt" "-O2 -flto" \
   {pr16746c.c pr16746d.c} {} "lib15146b.a"] \
  [list "PR ld/16746 (1)" \
   "-O2 -flto -fuse-linker-plugin tmpdir/pr16746a.o tmpdir/pr16746c.o" "-O2 -flto" \
   {dummy.c} {} "pr16746a.exe"] \
  [list "PR ld/16746 (2)" \
   "-O2 -flto -fuse-linker-plugin tmpdir/pr16746c.o tmpdir/pr16746a.o" "-O2 -flto" \
   {dummy.c} {} "pr16746b.exe"] \
  [list "PR ld/14918" \
   "-flto" "-flto" \
   {pr14918.c} {{"readelf" {-d --wide} "pr14918.d"}} "pr14918.exe" "c"] \
]

# Check final symbols in executables.
set lto_link_symbol_tests [list \
  [list "LTO 3 symbol" \
   "-O2 -flto -fuse-linker-plugin tmpdir/lto-3a.o tmpdir/lto-3c.o tmpdir/liblto-3.a" "" \
   {dummy.c} {{"nm" {} "lto-3.d"}} "lto-3.exe" "c"] \
  [list "LTO 5 symbol" \
   "-O2 -flto -fuse-linker-plugin tmpdir/lto-5.o" "" \
   {dummy.c} {{"nm" {} "lto-5.d"}} "lto-5.exe" "c"] \
  [list "LTO 9 symbol" \
   "-O2 -flto -fuse-linker-plugin tmpdir/lto-9.o" "" \
   {dummy.c} {{"nm" {-C} "lto-9.d"}} "lto-9.exe" "c++"] \
  [list "LTO 16a symbol" \
   "-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin" "-flto" \
   {lto-16a.c} {{"nm" {} "lto-16a.d"}} "lto-16.exe" "c"] \
  [list "LTO 16b symbol" \
   "-O2 -Wl,-e,foo -u bar -nostdlib -flto -fuse-linker-plugin" "-flto" \
   {lto-16a.c lto-16b.c} {{"nm" {} "lto-16b.d"}} "lto-16b.exe" "c"] \
  [list "PR ld/13183" \
   "-O2 -flto -fuse-linker-plugin tmpdir/pr13183b.o tmpdir/libpr13183.a" "" \
   {dummy.c} {{"nm" {} "pr13183.d"}} "pr13183.exe" "c"] \
]

# LTO run-time tests.
set lto_run_tests [list \
  [list "LTO 3a" \
   "-O2 -flto -fuse-linker-plugin tmpdir/lto-3a.o tmpdir/lto-3c.o tmpdir/liblto-3.a" "" \
   {dummy.c} "lto-3b.exe" "lto-3.out" "" "c"] \
  [list "LTO 3b" \
   "-O2 -flto -fuse-linker-plugin tmpdir/lto-3a.o tmpdir/lto-3c.o tmpdir/lto-3.o" "" \
   {dummy.c} "lto-3c.exe" "lto-3.out" "" "c"] \
  [list "LTO 3c" \
   "-O2 -flto -fuse-linker-plugin tmpdir/lto-3a.o tmpdir/lto-3c.o -Wl,--whole-archive tmpdir/liblto-3.a -Wl,--no-whole-archive tmpdir/liblto-3.a" "" \
   {dummy.c} "lto-3d.exe" "lto-3.out" "" "c"] \
  [list "LTO 4a" \
   "-O2 -flto -fuse-linker-plugin tmpdir/lto-4r-a.o" "" \
   {dummy.c} "lto-4a.exe" "lto-4.out" "" "c"] \
  [list "LTO 4c" \
   "-O2 -flto -fuse-linker-plugin tmpdir/lto-4r-c.o" "" \
   {dummy.c} "lto-4c.exe" "lto-4.out" "" "c"] \
  [list "LTO 4d" \
   "-O2 -flto -fuse-linker-plugin tmpdir/lto-4r-d.o" "" \
   {dummy.c} "lto-4d.exe" "lto-4.out" "" "c"] \
  [list "LTO 5" \
   "-O2 -flto -fuse-linker-plugin tmpdir/lto-5.o" "" \
   {dummy.c} "lto-5.exe" "lto-5.out" "" "c"] \
  [list "LTO 10" \
   "-O2 -flto -fuse-linker-plugin tmpdir/lto-10.o" "" \
   {dummy.c} "lto-10.exe" "lto-10.out" "" "c"] \
  [list "LTO 11" \
   "-O -flto -fuse-linker-plugin tmpdir/liblto-11.a" "" \
   {dummy.c} "lto-11.exe" "lto-11.out" "" "c"] \
  [list "LTO 12a" \
   "-O -flto -fuse-linker-plugin tmpdir/lto-12a.o tmpdir/liblto-12.a tmpdir/lto-12b.o" "" \
   {dummy.c} "lto-12a.exe" "lto-12.out" "" "c"] \
  [list "LTO 12b" \
   "-O -flto -fuse-linker-plugin tmpdir/lto-12a.o tmpdir/lto-12b.o tmpdir/liblto-12.a" "" \
   {dummy.c} "lto-12b.exe" "lto-12.out" "" "c"] \
  [list "LTO 13" \
   "-O -flto -fuse-linker-plugin tmpdir/lto-13a.o tmpdir/liblto-13.a tmpdir/lto-13b.o" "" \
   {dummy.c} "lto-13.exe" "lto-13.out" "" "c"] \
  [list "LTO 14" \
   "-O2 -flto -fuse-linker-plugin tmpdir/lto-14a.o -Wl,--whole-archive tmpdir/liblto-14.a -Wl,--no-whole-archive tmpdir/lto-14b.o" "" \
   {dummy.c} "lto-14.exe" "lto-14.out" "" "c"] \
  [list "LTO 15" \
   "-O2 -flto -fuse-linker-plugin -Wl,--start-group tmpdir/liblto-15.a tmpdir/lto-15a.o -Wl,--end-group" "" \
   {dummy.c} "lto-15.exe" "lto-15.out" "" "c"] \
  [list "PR ld/13066" \
   "-O2 -flto -fuse-linker-plugin" "" \
   {pr13066.cc} "pr13066.exe" "pr13066.out" "" "c++"] \
  [list "PR ld/13201" \
   "-O2 -flto -fuse-linker-plugin -Wl,--as-needed tmpdir/pr13201.o -lm" "" \
   {dummy.c} "pr13201.exe" "pr13201.out" "" "c"] \
  [list "PR ld/15323" \
   "-O2 -flto -fuse-linker-plugin tmpdir/pr15323a.o" "" \
   {pr15323b.c} "pr15323.exe" "pr15323.out" "-flto -O2" "c"] \
]

if { [at_least_gcc_version 4 7] } {
    set lto_run_tests [concat $lto_run_tests [list \
      [list "PR ld/12942 (1)" \
       "-O2 -flto -fuse-linker-plugin tmpdir/pr12942a.o tmpdir/pr12942b.o" "" \
       {dummy.c} "pr12942a.exe" "pr12942.out" "" "c++"] \
      [list "PR ld/12942 (2)" \
       "-O2 -flto -fuse-linker-plugin tmpdir/pr12942a.o tmpdir/pr12942c.o" "" \
       {dummy.c} "pr12942c.exe" "pr12942.out" "" "c++"] \
    ]]
}

# LTO run-time tests for ELF
set lto_run_elf_tests [list \
  [list "LTO 7" \
   "-O2 -flto -fuse-linker-plugin tmpdir/lto-7b.o tmpdir/lto-7c.o tmpdir/lto-7a.o -Wl,--no-as-needed tmpdir/liblto-7.so" "" \
   {dummy.c} "lto-7.exe" "lto-7.out" "" "c"] \
  [list "LTO 8" \
   "-O2 -flto -fuse-linker-plugin tmpdir/lto-8b.o tmpdir/lto-8a.o" "" \
   {dummy.c} "lto-8.exe" "lto-8.out" "" "c"] \
  [list "LTO TLS IE" \
   "-O2 -flto -fuse-linker-plugin" "" \
   {run-ie.c} "run-ie.exe" "run-ie.out" "" "c"] \
]

run_cc_link_tests $lto_link_tests

# Restrict these to ELF targets that support shared libs and PIC.
if { [is_elf_format] && [check_lto_shared_available] } {
    run_cc_link_tests $lto_link_elf_tests
    set testname "PR ld/15146 (2)"
    set exec_output [run_host_cmd "$CC" "-O2 -flto -fuse-linker-plugin -Wl,-rpath-link,. -Wl,--no-copy-dt-needed-entries -Wl,--no-as-needed tmpdir/pr15146d.o tmpdir/pr15146c.so"]
    if { [ regexp "undefined reference to symbol 'xxx'" $exec_output ] } {
	pass $testname
    } {
	fail $testname
    }
    set testname "PR ld/16746 (3)"
    set exec_output [run_host_cmd "$CC" "-O2 -flto -fuse-linker-plugin tmpdir/pr16746b.o tmpdir/pr16746d.o"]
    if { [ regexp "warning: foobar" $exec_output ] && ![ regexp "symbol from plugin" $exec_output ] } {
	pass $testname
    } {
	fail $testname
    }
    set testname "PR ld/16746 (4)"
    set exec_output [run_host_cmd "$CC" "-O2 -flto -fuse-linker-plugin tmpdir/pr16746d.o tmpdir/pr16746b.o"]
    if { [ regexp "warning: foobar" $exec_output ] && ![ regexp "symbol from plugin" $exec_output ] } {
	pass $testname
    } {
	fail $testname
    }
}

set testname "Build liblto-4.a"
remote_file host delete "tmpdir/liblto-4.a"
set catch_output [run_host_cmd "$ar" "rc tmpdir/liblto-4.a tmpdir/lto-4a.o tmpdir/lto-4b.o tmpdir/lto-4c.o"]
if {![string match "" $catch_output]} {
    unresolved $testname
    restore_notify
    return
}

set testname "Build liblto-11.a"
remote_file host delete "tmpdir/liblto-11.a"
set catch_output [run_host_cmd "$ar" "rc $plug_opt tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"]
if {![string match "" $catch_output]} {
    unresolved $testname
    restore_notify
    return
}

if { [at_least_gcc_version 4 7] } {
    # Check expected LTO linker errors.
    set testname "PR ld/12365"
    set exec_output [run_host_cmd "$CC" "-O2 -flto -flto-partition=none -fuse-linker-plugin tmpdir/pr12365a.o tmpdir/pr12365b.o tmpdir/pr12365c.o"]
    if { [ regexp "undefined reference to `my_bcopy'" $exec_output ] } {
	pass $testname
    } {
	fail $testname
    }
    set testname "PR ld/12942 (3)"
    set exec_output [run_host_cmd "$CXX" "-O2 -flto -fuse-linker-plugin tmpdir/pr12942b.o tmpdir/pr12942a.o"]
    if { [ regexp "undefined reference to `link_error\\(\\)'" $exec_output ] } {
        pass $testname
    } {
        fail $testname
    }
}

# Run "ld -r" to generate inputs for complex LTO tests.
run_dump_test "lto-3r"
remote_exec host "mv" "tmpdir/dump tmpdir/lto-3.o"
run_dump_test "lto-4r-a"
remote_exec host "mv" "tmpdir/dump tmpdir/lto-4r-a.o"
run_dump_test "lto-4r-b"
remote_exec host "mv" "tmpdir/dump tmpdir/lto-4r-b.o"
run_dump_test "lto-4r-c"
remote_exec host "mv" "tmpdir/dump tmpdir/lto-4r-c.o"
run_dump_test "lto-4r-d"
remote_exec host "mv" "tmpdir/dump tmpdir/lto-4r-d.o"
run_dump_test "lto-5r"
remote_exec host "mv" "tmpdir/dump tmpdir/lto-5.o"
run_dump_test "lto-10r"
remote_exec host "mv" "tmpdir/dump tmpdir/lto-10.o"
set testname "nm mixed object"
set lto_plugin [run_host_cmd "$CC" "-print-prog-name=liblto_plugin.so tmpdir/lto-10.o"]
if { [ regexp "liblto_plugin.so" $lto_plugin ] } {
    set exec_output [run_host_cmd "$NM" "--plugin $lto_plugin tmpdir/lto-10.o"]
    if { [ regexp "T main" $exec_output ] } {
	pass $testname
    } {
	fail $testname
    }
} {
    fail $testname
 }

run_cc_link_tests $lto_link_symbol_tests

# The following tests require running the executable generated by ld.
if ![isnative] {
    return
}

run_ld_link_exec_tests [] $lto_run_tests

if { [is_elf_format] } {
    run_ld_link_exec_tests [] $lto_run_elf_tests
}

restore_notify
