old-cross-binutils/ld/testsuite/ld-sh/rd-sh.exp

72 lines
2.6 KiB
Text
Raw Normal View History

# Expect script for run_dump_test based ld-sh tests.
2009-09-02 07:25:43 +00:00
# Copyright 2001, 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
#
2007-07-06 14:09:45 +00:00
# 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
2007-07-06 14:09:45 +00:00
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
2007-07-06 14:09:45 +00:00
#
# 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.
2007-07-06 14:09:45 +00:00
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
2007-07-06 14:09:45 +00:00
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
# MA 02110-1301, USA.
#
# Written by Hans-Peter Nilsson (hp@bitrange.com)
#
# This file is kept separate from sh.exp, because having it separate
# simplifies selective testing, like in "make check-ld
# RUNTESTFLAGS=rd-sh.exp=shared-1". It is assumed that sh.exp is a place
# for constructs where the name of the test is harder to extract and
# select than here.
if ![istarget sh*-*-*] {
return
}
global ASFLAGS
[ld] * emulparams/shelf32_nbsd.sh (OTHER_SECTIONS): Redefine. [ld/testsuite] * ld-sh/rd-sh.exp (LDFLAGS): Define appropriately for each sh64/sh5 targets. * ld-sh/sh.exp: Don't do relaxing test for sh64*-*-* and sh5*-*-* targets. * ld-sh/sh64/relax.exp (emul32): Set to shelf32_nbsd for netbsd. * ld-sh/sh64/relfail.exp: Set parameters for netbsd. * ld-sh/sh64/sh64.exp: Skip this for netbsd. Trim the section numbers for crangerel1 and crengerel2 tests. * ld-sh/sh64/abi32.sd: Update. * ld-sh/sh64/abi32.xd: Likewise. * ld-sh/sh64/abi64.sd: Likewise. * ld-sh/sh64/abi64.xd: Likewise. * ld-sh/sh64/abixx-noexp.sd: Likewise. * ld-sh/sh64/cmpct1.sd: Likewise. * ld-sh/sh64/cmpct1.xd: Likewise. * ld-sh/sh64/crange1.rd: Likewise. * ld-sh/sh64/crange2.rd: Likewise. * ld-sh/sh64/crange3-cmpct.rd: Likewise. * ld-sh/sh64/crange3-media.rd: Likewise. * ld-sh/sh64/crange3.rd: Likewise. * ld-sh/sh64/crangerel1.rd: Likewise. * ld-sh/sh64/crangerel2.rd: Likewise. * ld-sh/sh64/dlsection.sd: Likewise. * ld-sh/sh64/endian.sbd: Likewise. * ld-sh/sh64/endian.sld: Likewise. * ld-sh/sh64/gotplt.d: Likewise. * ld-sh/sh64/init-cmpct.d: Likewise. * ld-sh/sh64/init-media.d: Likewise. * ld-sh/sh64/init.s: Align functions. * ld-sh/sh64/init64.d: Update. * ld-sh/sh64/mix1-noexp.sd: Likewise. * ld-sh/sh64/mix1.sd: Likewise. * ld-sh/sh64/mix1.xd: Likewise. * ld-sh/sh64/mix2-noexp.sd: Likewise. * ld-sh/sh64/mix2.sd: Likewise. * ld-sh/sh64/mix2.xd:Likewise. * ld-sh/sh64/rel32.xd: Likewise. * ld-sh/sh64/rel64.xd: Likewise. * ld-sh/sh64/reldl32.rd: Likewise. * ld-sh/sh64/reldl64.rd: Likewise. * ld-sh/sh64/shdl32.xd: Update. * ld-sh/sh64/shdl64.sd: Likewise. * ld-sh/sh64/shdl64.xd: Likewise. * ld-sh/shared-1.d: Add -z nocombreloc to ld option. Update. * ld-sh/sub2l-1.d: Make file format match with elf32-sh.*. * ld-sh/weak1.d: Likewise.
2003-10-13 05:09:21 +00:00
global LDFLAGS
set asflags_save "$ASFLAGS"
[ld] * emulparams/shelf32_nbsd.sh (OTHER_SECTIONS): Redefine. [ld/testsuite] * ld-sh/rd-sh.exp (LDFLAGS): Define appropriately for each sh64/sh5 targets. * ld-sh/sh.exp: Don't do relaxing test for sh64*-*-* and sh5*-*-* targets. * ld-sh/sh64/relax.exp (emul32): Set to shelf32_nbsd for netbsd. * ld-sh/sh64/relfail.exp: Set parameters for netbsd. * ld-sh/sh64/sh64.exp: Skip this for netbsd. Trim the section numbers for crangerel1 and crengerel2 tests. * ld-sh/sh64/abi32.sd: Update. * ld-sh/sh64/abi32.xd: Likewise. * ld-sh/sh64/abi64.sd: Likewise. * ld-sh/sh64/abi64.xd: Likewise. * ld-sh/sh64/abixx-noexp.sd: Likewise. * ld-sh/sh64/cmpct1.sd: Likewise. * ld-sh/sh64/cmpct1.xd: Likewise. * ld-sh/sh64/crange1.rd: Likewise. * ld-sh/sh64/crange2.rd: Likewise. * ld-sh/sh64/crange3-cmpct.rd: Likewise. * ld-sh/sh64/crange3-media.rd: Likewise. * ld-sh/sh64/crange3.rd: Likewise. * ld-sh/sh64/crangerel1.rd: Likewise. * ld-sh/sh64/crangerel2.rd: Likewise. * ld-sh/sh64/dlsection.sd: Likewise. * ld-sh/sh64/endian.sbd: Likewise. * ld-sh/sh64/endian.sld: Likewise. * ld-sh/sh64/gotplt.d: Likewise. * ld-sh/sh64/init-cmpct.d: Likewise. * ld-sh/sh64/init-media.d: Likewise. * ld-sh/sh64/init.s: Align functions. * ld-sh/sh64/init64.d: Update. * ld-sh/sh64/mix1-noexp.sd: Likewise. * ld-sh/sh64/mix1.sd: Likewise. * ld-sh/sh64/mix1.xd: Likewise. * ld-sh/sh64/mix2-noexp.sd: Likewise. * ld-sh/sh64/mix2.sd: Likewise. * ld-sh/sh64/mix2.xd:Likewise. * ld-sh/sh64/rel32.xd: Likewise. * ld-sh/sh64/rel64.xd: Likewise. * ld-sh/sh64/reldl32.rd: Likewise. * ld-sh/sh64/reldl64.rd: Likewise. * ld-sh/sh64/shdl32.xd: Update. * ld-sh/sh64/shdl64.sd: Likewise. * ld-sh/sh64/shdl64.xd: Likewise. * ld-sh/shared-1.d: Add -z nocombreloc to ld option. Update. * ld-sh/sub2l-1.d: Make file format match with elf32-sh.*. * ld-sh/weak1.d: Likewise.
2003-10-13 05:09:21 +00:00
set ldflags_save "$LDFLAGS"
if {[istarget sh64*-*-*] || [istarget sh5*-*-*]} then {
set ASFLAGS "$ASFLAGS -isa=SHcompact"
[ld] * emulparams/shelf32_nbsd.sh (OTHER_SECTIONS): Redefine. [ld/testsuite] * ld-sh/rd-sh.exp (LDFLAGS): Define appropriately for each sh64/sh5 targets. * ld-sh/sh.exp: Don't do relaxing test for sh64*-*-* and sh5*-*-* targets. * ld-sh/sh64/relax.exp (emul32): Set to shelf32_nbsd for netbsd. * ld-sh/sh64/relfail.exp: Set parameters for netbsd. * ld-sh/sh64/sh64.exp: Skip this for netbsd. Trim the section numbers for crangerel1 and crengerel2 tests. * ld-sh/sh64/abi32.sd: Update. * ld-sh/sh64/abi32.xd: Likewise. * ld-sh/sh64/abi64.sd: Likewise. * ld-sh/sh64/abi64.xd: Likewise. * ld-sh/sh64/abixx-noexp.sd: Likewise. * ld-sh/sh64/cmpct1.sd: Likewise. * ld-sh/sh64/cmpct1.xd: Likewise. * ld-sh/sh64/crange1.rd: Likewise. * ld-sh/sh64/crange2.rd: Likewise. * ld-sh/sh64/crange3-cmpct.rd: Likewise. * ld-sh/sh64/crange3-media.rd: Likewise. * ld-sh/sh64/crange3.rd: Likewise. * ld-sh/sh64/crangerel1.rd: Likewise. * ld-sh/sh64/crangerel2.rd: Likewise. * ld-sh/sh64/dlsection.sd: Likewise. * ld-sh/sh64/endian.sbd: Likewise. * ld-sh/sh64/endian.sld: Likewise. * ld-sh/sh64/gotplt.d: Likewise. * ld-sh/sh64/init-cmpct.d: Likewise. * ld-sh/sh64/init-media.d: Likewise. * ld-sh/sh64/init.s: Align functions. * ld-sh/sh64/init64.d: Update. * ld-sh/sh64/mix1-noexp.sd: Likewise. * ld-sh/sh64/mix1.sd: Likewise. * ld-sh/sh64/mix1.xd: Likewise. * ld-sh/sh64/mix2-noexp.sd: Likewise. * ld-sh/sh64/mix2.sd: Likewise. * ld-sh/sh64/mix2.xd:Likewise. * ld-sh/sh64/rel32.xd: Likewise. * ld-sh/sh64/rel64.xd: Likewise. * ld-sh/sh64/reldl32.rd: Likewise. * ld-sh/sh64/reldl64.rd: Likewise. * ld-sh/sh64/shdl32.xd: Update. * ld-sh/sh64/shdl64.sd: Likewise. * ld-sh/sh64/shdl64.xd: Likewise. * ld-sh/shared-1.d: Add -z nocombreloc to ld option. Update. * ld-sh/sub2l-1.d: Make file format match with elf32-sh.*. * ld-sh/weak1.d: Likewise.
2003-10-13 05:09:21 +00:00
if [istarget sh64*-*-linux*] {
set LDFLAGS "$LDFLAGS -mshlelf32_linux"
} elseif { [istarget sh64*-*-netbsd*] || [istarget sh5*-*-netbsd*] } {
set LDFLAGS "$LDFLAGS -mshlelf32_nbsd -e_start"
} else {
set LDFLAGS "$LDFLAGS -mshlelf32"
}
}
set rd_test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]]
foreach shtest $rd_test_list {
# We need to strip the ".d", but can leave the dirname.
verbose [file rootname $shtest]
bfd/ 2006-08-02 Richard Sandiford <richard@codesourcery.com> Kazu Hirata <kazu@codesourcery.com> Phil Edwards <phil@codesourcery.com> Nathan Sidwell <nathan@codesourcery.com> * config.bfd (sh-*-vxworks): Use bfd_elf32_shvxworks_vec and bfd_elf32_shlvxworks_vec. * configure.in (bfd_elf32_sh64_vec): Add elf-vxworks.lo. (bfd_elf32_sh64l_vec, bfd_elf32_sh64lin_vec): Likewise. (bfd_elf32_sh64blin_vec, bfd_elf32_sh64lnbsd_vec): Likewise. (bfd_elf32_sh64nbsd_vec, bfd_elf32_sh_vec): Likewise. (bfd_elf32_shblin_vec, bfd_elf32_shl_vec): Likewise. (bfd_elf32_shl_symbian_vec, bfd_elf32_shlin_vec): Likewise. (bfd_elf32_shlnbsd_vec, bfd_elf32_shnbsd_vec): Likewise. (bfd_elf32_shlvxworks_vec, bfd_elf32_shvxworks_vec): New stanzas. * configure: Regenerate. * Makefile.am: Regenerate dependencies. * Makefile.in: Regenerate. * elf-vxworks.c (elf_vxworks_gott_symbol_p): New function. (elf_vxworks_add_symbol_hook): Use it. (elf_vxworks_link_output_symbol_hook): Likewise. Use the hash table entry to check for weak undefined symbols and to obtain the original bfd. (elf_vxworks_emit_relocs): Use target_index instead of this_idx. * elf32-sh-relocs.h: New file, split from elf32-sh.c. (R_SH_DIR32): Use SH_PARTIAL32 for the partial_inplace field, SH_SRC_MASK32 for the src_mask field, and SH_ELF_RELOC for the special_function field. (R_SH_REL32): Use SH_PARTIAL32 and SH_SRC_MASK32 here too. (R_SH_REL32, R_SH_TLS_GD_32, R_SH_TLS_LD_32): Likewise. (R_SH_TLS_LDO_32, R_SH_TLS_IE_32, R_SH_TLS_LE_32): Likewise. (R_SH_TLS_DTPMOD32, R_SH_TLS_DTPOFF32, R_SH_TLS_TPOFF32): Likewise. (R_SH_GOT32, R_SH_PLT32, R_SH_COPY, R_SH_GLOB_DAT): Likewise. (R_SH_JMP_SLOT, R_SH_RELATIVE, R_SH_GOTOFF, R_SH_GOTPC): Likewise. (SH_PARTIAL32, SH_SRC_MASK32, SH_ELF_RELOC): Undefine at end of file. * elf32-sh.c: Include elf32-vxworks.h. (MINUS_ONE): Define. (sh_elf_howto_table): Include elf32-sh-relocs.h with SH_PARTIAL32 set to TRUE, SH_SRC_MASK32 set to 0xffffffff, and SH_ELF_RELOC set to sh_elf_reloc. (sh_vxworks_howto_table): New variable. Include elf32-sh-relocs.h with SH_PARTIAL32 set to FALSE, SH_SRC_MASK32 set to 0, and SH_ELF_RELOC set to bfd_elf_generic_reloc. (vxworks_object_p, get_howto_table): New functions. (sh_elf_reloc_type_lookup): Fix typo. Use get_howto_table. (sh_elf_info_to_howto): Use get_howto_table. (sh_elf_relax_section): Honor the partial_inplace field of the R_SH_DIR32 howto. (sh_elf_relax_delete_bytes): Likewise. (elf_sh_plt_info): New structure. (PLT_ENTRY_SIZE): Replace both definitions with... (ELF_PLT_ENTRY_SIZE): ...this new macro, with separate definitions for INCLUDE_SHMEDIA and !INCLUDE_SHMEDIA. (elf_sh_plt0_entry_be): Update sizes of both definitions accordingly. (elf_sh_plt0_entry_le): Likewise. (elf_sh_plt_entry_be, elf_sh_plt_entry_le): Likewise. (elf_sh_pic_plt_entry_be, elf_sh_pic_plt_entry_le): Likewise. (elf_sh_plts): New structure, with separate definitions for INCLUDE_SHMEDIA and !INCLUDE_SHMEDIA. (elf_sh_plt0_entry): Delete both definitions. (elf_sh_plt_entry, elf_sh_pic_plt_entry): Likewise. (elf_sh_sizeof_plt, elf_sh_plt_plt0_offset): Likewise. (elf_sh_plt_temp_offset, elf_sh_plt_symbol_offset): Likewise. (elf_sh_plt_reloc_offset): Likewise. (movi_shori_putval): Delete in favor of... (install_plt_field): ...this new function, with separate definitions for INCLUDE_SHMEDIA and !INCLUDE_SHMEDIA. (get_plt_info): New function, with separate definitions for INCLUDE_SHMEDIA and !INCLUDE_SHMEDIA. (elf_sh_plt0_linker_offset, elf_sh_plt0_gotid_offset): Delete. (VXWORKS_PLT_HEADER_SIZE, VXWORKS_PLT_ENTRY_SIZE): New macros. (vxworks_sh_plt0_entry_be, vxworks_sh_plt0_entry_le): New constants. (vxworks_sh_plt_entry_be, vxworks_sh_plt_entry_le): Likewise. (vxworks_sh_pic_plt_entry_be, vxworks_sh_pic_plt_entry_le): Likewise. (get_plt_index, get_plt_offset): New functions. (elf_sh_link_hash_table): Add srelplt2, plt_info and vxworks_p fields. (sh_elf_link_hash_table_create): Initialize them. (sh_elf_create_dynamic_sections): Call elf_vxworks_create_dynamic_sections for VxWorks. (allocate_dynrelocs): Use htab->plt_info to get the size of PLT entries. Allocate relocation entries in .rela.plt.unloaded if generating a VxWorks executable. (sh_elf_always_size_sections): New function. (sh_elf_size_dynamic_sections): Extend .rela.plt handling to .rela.plt.unloaded. (sh_elf_relocate_section): Use get_howto_table. Honor partial_inplace when calculating the addend for dynamic relocations. Use get_plt_index. (sh_elf_finish_dynamic_symbol): Use get_plt_index, install_plt_field and htab->plt_info. Fill in the bra .plt offset for VxWorks executables. Populate .rela.plt.unloaded. Do not make _GLOBAL_OFFSET_TABLE_ absolute on VxWorks. (sh_elf_finish_dynamic_sections): Use install_plt_field and htab->plt_info. Handle cases where there is no special PLT header. Populate the first relocation in .rela.plt.unloaded and fix up the remaining entries. (sh_elf_plt_sym_val): Use get_plt_info. (elf_backend_always_size_sections): Define. (TARGET_BIG_SYM, TARGET_BIG_NAME): Override for VxWorks. (TARGET_LITTLE_SYM, TARGET_BIG_SYM): Likewise. (elf32_bed, elf_backend_want_plt_sym): Likewise. (elf_symbol_leading_char, elf_backend_want_got_underscore): Likewise. (elf_backend_grok_prstatus, elf_backend_grok_psinfo): Likewise. (elf_backend_add_symbol_hook): Likewise. (elf_backend_link_output_symbol_hook): Likewise. (elf_backend_emit_relocs): Likewise. (elf_backend_final_write_processing): Likewise. (ELF_MAXPAGESIZE, ELF_COMMONPAGESIZE): Likewise. * targets.c (bfd_elf32_shlvxworks_vec): Declare. (bfd_elf32_shvxworks_vec): Likewise. (_bfd_target_vector): Include bfd_elf32_shlvxworks_vec and bfd_elf32_shvxworks_vec. gas/ * config/tc-sh.c (apply_full_field_fix): New function. (md_apply_fix): Use it instead of md_number_to_chars. Do not fill in fx_addnumber for BFD_RELOC_32_PLT_PCREL. (tc_gen_reloc): Use fx_addnumber rather than 0 as the default case. * config/tc-sh.h (TARGET_FORMAT): Override for TE_VXWORKS. ld/ 2006-08-02 Richard Sandiford <richard@codesourcery.com> Kazu Hirata <kazu@codesourcery.com> Phil Edwards <phil@codesourcery.com> * Makefile.am (ALL_EMULATIONS): Add eshelf_vxworks.o and eshlelf_vxworks.o. (eshelf_vxworks.c, eshlelf_vxworks.c): New rules. * Makefile.in: Regenerate. * configure.tgt (sh-*-vxworks): Use shelf_vxworks and shlelf_vxworks. * emulparams/shelf_vxworks.sh: New file. * emulparams/shlelf_vxworks.sh: Likewise. * emulparams/vxworks.sh (FINI): Prefix _etext with ${SYMPREFIX}. (OTHER_END_SYMBOLS): Likewise _ehdr. (DATA_END_SYMBOLS): Likewise _edata. * emultempl/vxworks.em (vxworks_after_open): Check whether output_bfd is indeed an ELF file before dealing with --force-dynamic. ld/testsuite/ * ld-sh/rd-sh.exp: Treat vxworks1-static.d specially. * ld-sh/sh-vxworks.exp: New file. * ld-sh/sh.exp: Extend sh-linux SIZEOF_HEADERS handling to sh-*-vxworks. * ld-sh/vxworks1-le.dd, ld-sh/vxworks1-lib-le.dd, * ld-sh/vxworks1-lib.dd, ld-sh/vxworks1-lib.nd, * ld-sh/vxworks1-lib.rd, ld-sh/vxworks1-lib.s, * ld-sh/vxworks1-static.d, ld-sh/vxworks1.dd, * ld-sh/vxworks1.ld, ld-sh/vxworks1.rd, ld-sh/vxworks1.s, * ld-sh/vxworks2-static.sd, ld-sh/vxworks2.s, * ld-sh/vxworks2.sd, ld-sh/vxworks3-le.dd, * ld-sh/vxworks3-lib-le.dd, ld-sh/vxworks3-lib.dd, * ld-sh/vxworks3-lib.s, ld-sh/vxworks3.dd, ld-sh/vxworks3.s, * ld-sh/vxworks4.d, ld-sh/vxworks4a.s, ld-sh/vxworks4b.s, * ld-sh/reloc1.s, ld-sh/reloc1.d: New tests.
2006-08-04 13:13:56 +00:00
# vxworks-static.d relies on files created by sh-vxworks.exp.
# We run it there instead of here.
if { [file tail $shtest] != "vxworks1-static.d" } {
run_dump_test [file rootname $shtest]
}
if [string match $srcdir/$subdir/*-dso.d $shtest] {
# Copy the output of the DSO-createing test to .so file.
# Notice that a DSO-creating test must preceed the tests
# which need that DSO in sort-order by name.
set cmd "cp tmpdir/dump tmpdir/[file rootname [file tail $shtest]].so"
send_log "$cmd\n"
set cmdret [catch "exec $cmd" comp_output]
send_log "$comp_output\n"
# FIXME: What if it fails? Need we do something?
}
}
set ASFLAGS "$asflags_save"
[ld] * emulparams/shelf32_nbsd.sh (OTHER_SECTIONS): Redefine. [ld/testsuite] * ld-sh/rd-sh.exp (LDFLAGS): Define appropriately for each sh64/sh5 targets. * ld-sh/sh.exp: Don't do relaxing test for sh64*-*-* and sh5*-*-* targets. * ld-sh/sh64/relax.exp (emul32): Set to shelf32_nbsd for netbsd. * ld-sh/sh64/relfail.exp: Set parameters for netbsd. * ld-sh/sh64/sh64.exp: Skip this for netbsd. Trim the section numbers for crangerel1 and crengerel2 tests. * ld-sh/sh64/abi32.sd: Update. * ld-sh/sh64/abi32.xd: Likewise. * ld-sh/sh64/abi64.sd: Likewise. * ld-sh/sh64/abi64.xd: Likewise. * ld-sh/sh64/abixx-noexp.sd: Likewise. * ld-sh/sh64/cmpct1.sd: Likewise. * ld-sh/sh64/cmpct1.xd: Likewise. * ld-sh/sh64/crange1.rd: Likewise. * ld-sh/sh64/crange2.rd: Likewise. * ld-sh/sh64/crange3-cmpct.rd: Likewise. * ld-sh/sh64/crange3-media.rd: Likewise. * ld-sh/sh64/crange3.rd: Likewise. * ld-sh/sh64/crangerel1.rd: Likewise. * ld-sh/sh64/crangerel2.rd: Likewise. * ld-sh/sh64/dlsection.sd: Likewise. * ld-sh/sh64/endian.sbd: Likewise. * ld-sh/sh64/endian.sld: Likewise. * ld-sh/sh64/gotplt.d: Likewise. * ld-sh/sh64/init-cmpct.d: Likewise. * ld-sh/sh64/init-media.d: Likewise. * ld-sh/sh64/init.s: Align functions. * ld-sh/sh64/init64.d: Update. * ld-sh/sh64/mix1-noexp.sd: Likewise. * ld-sh/sh64/mix1.sd: Likewise. * ld-sh/sh64/mix1.xd: Likewise. * ld-sh/sh64/mix2-noexp.sd: Likewise. * ld-sh/sh64/mix2.sd: Likewise. * ld-sh/sh64/mix2.xd:Likewise. * ld-sh/sh64/rel32.xd: Likewise. * ld-sh/sh64/rel64.xd: Likewise. * ld-sh/sh64/reldl32.rd: Likewise. * ld-sh/sh64/reldl64.rd: Likewise. * ld-sh/sh64/shdl32.xd: Update. * ld-sh/sh64/shdl64.sd: Likewise. * ld-sh/sh64/shdl64.xd: Likewise. * ld-sh/shared-1.d: Add -z nocombreloc to ld option. Update. * ld-sh/sub2l-1.d: Make file format match with elf32-sh.*. * ld-sh/weak1.d: Likewise.
2003-10-13 05:09:21 +00:00
set LDFLAGS "$ldflags_save"