diff --git a/add-ulp-section.diff b/add-ulp-section.diff index be24842..71ae369 100644 --- a/add-ulp-section.diff +++ b/add-ulp-section.diff @@ -67,7 +67,7 @@ diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c index 62d516aab8d..c0fb718d85c 100644 --- a/bfd/elfxx-x86.c +++ b/bfd/elfxx-x86.c -@@ -31,6 +31,8 @@ +@@ -29,6 +29,8 @@ #define ELF64_DYNAMIC_INTERPRETER "/lib/ld64.so.1" #define ELFX32_DYNAMIC_INTERPRETER "/lib/ldx32.so.1" @@ -173,14 +173,14 @@ diff --git a/bfd/elfxx-x86.h b/bfd/elfxx-x86.h index db11327e96f..89f51382216 100644 --- a/bfd/elfxx-x86.h +++ b/bfd/elfxx-x86.h -@@ -456,6 +456,7 @@ struct elf_x86_link_hash_table +@@ -607,6 +607,7 @@ struct elf_x86_link_hash_table asection *plt_second_eh_frame; asection *plt_got; asection *plt_got_eh_frame; + asection *ulp; - /* Parameters describing PLT generation, lazy or non-lazy. */ - struct elf_x86_plt_layout plt; + sframe_encoder_ctx *plt_cfe_ctx; + asection *plt_sframe; @@ -694,6 +695,12 @@ extern void _bfd_x86_elf_link_report_relative_reloc (struct bfd_link_info *, asection *, struct elf_link_hash_entry *, Elf_Internal_Sym *, const char *, const void *); diff --git a/binutils-2.39-branch.diff.gz b/binutils-2.39-branch.diff.gz deleted file mode 100644 index c1e0234..0000000 --- a/binutils-2.39-branch.diff.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:81ef9886060e3102ca3e5e827ef596bdeef410f29f1f74b8e969061b1cef0e10 -size 9372 diff --git a/binutils-2.39.tar.bz2 b/binutils-2.39.tar.bz2 deleted file mode 100644 index 2a51849..0000000 --- a/binutils-2.39.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:da24a84fef220102dd24042df06fdea851c2614a5377f86effa28f33b7b16148 -size 36782148 diff --git a/binutils-2.39.tar.bz2.sig b/binutils-2.39.tar.bz2.sig deleted file mode 100644 index 1040ecd..0000000 --- a/binutils-2.39.tar.bz2.sig +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCAAdFiEEOiS8Ho+0CfqfFDcYE/zvid2ePE8FAmLs/gQACgkQE/zvid2e -PE9wrxAAxf8d1+H0074382KhVZFuP+MhLiXKx32gXt32I/nhXyRN4pARVW4qONgo -dsuTs9aLtSYFFh/X0BqO3tQVpqcR6im9T1XNCmrwanCj8m1U9qrCENJNLTzNSZTE -pWghplTbP4niLtQHDS6SQyoilfXnj2RxkrLMIkxC3doEkUjtJsuyuqSMB1V0Mi/Y -LEuIBKP2IicSU8W02L3gnakrW9XTtHf73MJPbYXfnTlXRYVZNzXAsA+YG3mwiKnb -f+ra+W2J6XM/P4aF1Q2+wGrv9yHoihFAxx9cbpGAMC6qp1kAkyS+LKeI+tLQXbOT -LFYUs/18otoqMePS5XOvO4BIsriYBQVgb8GHXiuCN/yHJik6JZt2Gk9IYW9syOEH -XKNtaW3R0GlVQ0g49B+VOnP3aG8VVqwgBoDKLdwWVZOkSmki9xh8SJ2cdC9iX5qk -AZi0ML9KTtmaL1yMLkQL/tHHyWw7S9w/+ztc/otOunYH4/NrP6Gc0QgsLm2vGprh -qgyUOE1+bFL6v51XB9Gjo4UtFYcBHU+GXPIhSqbRR8v3UfSfcJfrN1w1X/yk9o1u -gP3AzabAtAs7YzOGFM3m2yzDn010LXeL0R7CooOLfViHonJlct0qjM3P37E231NV -4M4EP7ncH2Fu+t0jxwZMD+YAS+LkvgEGSNQmDkKM7CumqtnrPBs= -=zoHx ------END PGP SIGNATURE----- diff --git a/binutils-2.40-branch.diff.gz b/binutils-2.40-branch.diff.gz new file mode 100644 index 0000000..b0293c5 --- /dev/null +++ b/binutils-2.40-branch.diff.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1a665aafb3325126cb862188e5463d477739cdd059aba73f3a7bedb8c22a015 +size 554 diff --git a/binutils-2.40.tar.bz2 b/binutils-2.40.tar.bz2 new file mode 100644 index 0000000..e8acc73 --- /dev/null +++ b/binutils-2.40.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8298eb153a4b37d112e945aa5cb2850040bcf26a3ea65b5a715c83afe05e48a +size 35227554 diff --git a/binutils-2.40.tar.bz2.sig b/binutils-2.40.tar.bz2.sig new file mode 100644 index 0000000..c9197b3 --- /dev/null +++ b/binutils-2.40.tar.bz2.sig @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEEOiS8Ho+0CfqfFDcYE/zvid2ePE8FAmPCvWIACgkQE/zvid2e +PE9Gtw/7BAYpMkL9WtPz07g6stVHQl2ZDKruNJt1mXo36RgBVjHPcemh8GQcVC5Q +EJ/fK83F6XTG7oiXr/EQxt8HXqbG3rLjfnS3IAXnjizVX6yujgf/XvUcqs00pzsk +Oiyxh7BO4YtKiuj7d7Yrl21iv103kQE6+UIChzCduQfSAD9RqtbINUZOoWklxjff +8zFfgAEA+7dij9LpACRmWSgnfn77kzdviHgscpIMsHC0mjyAZrIHuZy3BUeqmRY6 +TkHgQ3cl6ORieM0FN2eh9FN0Di+FwA+BVXijU6vNy26RveOtntK/Si1HC0R08z3g +1NJ2C8sL+LnmT3hFmmbFTbGA1haXlt6g1zPvQS8GVbeVoZQEn2Q7KH3I1KUaFRWQ +fzdpqR7oM2mG3RHytrNtDWKB7V9VY3FWNo9D1/5iBoX4IkXY0HsJQdl5geZR1vyr +SoL5MVwO8IfTKMZbQuC1fhllB2kL5ABa9pcm+VaWFzWccypffs5Us5sLDl3wug07 +2slVb76syHGkVsJgcNo1OhkfbvGGshMHoicN1InyjEVng2ml9/Ha86QUQEbhRjg1 +suFRfMmEAANSAwpkum6szYfE3EBz81VtMmPRjGxyYWsyU1W8LVxyiP9NlxkxYcdI +i4xZG9Q5AJQUcTsA3C9G6YZxSij1IQvDUIXQmFnLJpink7KAYNc= +=hWD9 +-----END PGP SIGNATURE----- diff --git a/binutils-pr29482.diff b/binutils-pr29482.diff deleted file mode 100644 index 49cafb6..0000000 --- a/binutils-pr29482.diff +++ /dev/null @@ -1,33 +0,0 @@ -PR29482 aka CVE-2022-38533 - -From ef186fe54aa6d281a3ff8a9528417e5cc614c797 Mon Sep 17 00:00:00 2001 -From: Alan Modra -Date: Sat, 13 Aug 2022 15:32:47 +0930 -Subject: [PATCH 1/1] PR29482 - strip: heap-buffer-overflow - - PR 29482 - * coffcode.h (coff_set_section_contents): Sanity check _LIB. ---- - bfd/coffcode.h | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -Index: binutils-2.39/bfd/coffcode.h -=================================================================== ---- binutils-2.39.orig/bfd/coffcode.h 2022-07-08 11:46:47.000000000 +0200 -+++ binutils-2.39/bfd/coffcode.h 2022-08-26 15:23:58.749610670 +0200 -@@ -4284,10 +4284,13 @@ coff_set_section_contents (bfd * abfd, - - rec = (bfd_byte *) location; - recend = rec + count; -- while (rec < recend) -+ while (recend - rec >= 4) - { -+ size_t len = bfd_get_32 (abfd, rec); -+ if (len == 0 || len > (size_t) (recend - rec) / 4) -+ break; -+ rec += len * 4; - ++section->lma; -- rec += bfd_get_32 (abfd, rec) * 4; - } - - BFD_ASSERT (rec == recend); diff --git a/binutils-revert-plt32-in-branches.diff b/binutils-revert-plt32-in-branches.diff index e0e5498..9848bf0 100644 --- a/binutils-revert-plt32-in-branches.diff +++ b/binutils-revert-plt32-in-branches.diff @@ -336,23 +336,6 @@ index 7d2c994ce26..58ad424badb 100644 [ ]*[a-f0-9]+: ff 14 25 00 00 00 00 call \*0x0 3d: R_X86_64_32S xxx [ ]*[a-f0-9]+: ff d7 call \*%rdi [ ]*[a-f0-9]+: ff 17 call \*\(%rdi\) -diff --git a/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d b/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d -index 795f3fdacc4..1d692e8f04d 100644 ---- a/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d -+++ b/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d -@@ -23,9 +23,9 @@ Disassembly of section .text: - [ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd call 34 - - 0+34 : --[ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmp 3a 36: R_X86_64_PLT32 foo-0x4 --[ ]*[a-f0-9]+: f2 0f 82 00 00 00 00 bnd jb 41 3d: R_X86_64_PLT32 foo-0x4 --[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd call 47 43: R_X86_64_PLT32 foo-0x4 -+[ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmp 3a 36: R_X86_64_PC32 foo-0x4 -+[ ]*[a-f0-9]+: f2 0f 82 00 00 00 00 bnd jb 41 3d: R_X86_64_PC32 foo-0x4 -+[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd call 47 43: R_X86_64_PC32 foo-0x4 - [ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmp 4d 49: R_X86_64_PLT32 foo-0x4 - [ ]*[a-f0-9]+: f2 0f 82 00 00 00 00 bnd jb 54 50: R_X86_64_PLT32 foo-0x4 - [ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd call 5a 56: R_X86_64_PLT32 foo-0x4 diff --git a/gas/testsuite/gas/i386/x86-64-nop-3.d b/gas/testsuite/gas/i386/x86-64-nop-3.d index 1975481cc59..436487b5a99 100644 --- a/gas/testsuite/gas/i386/x86-64-nop-3.d @@ -427,15 +410,6 @@ index 01df9ef340e..d16e6a55395 100644 0+1f : [ ]*[a-f0-9]+: c3 ret -diff --git a/ld/testsuite/ld-x86-64/mpx1c.rd b/ld/testsuite/ld-x86-64/mpx1c.rd -index d66524c8834..d3b292cbdc1 100644 ---- a/ld/testsuite/ld-x86-64/mpx1c.rd -+++ b/ld/testsuite/ld-x86-64/mpx1c.rd -@@ -1,3 +1,3 @@ - #... --[0-9a-f ]+R_X86_64_PLT32 +0+ +.* -+[0-9a-f ]+R_X86_64_PC32 +0+ +.* - #... diff --git a/ld/testsuite/ld-x86-64/pr22791-1.err b/ld/testsuite/ld-x86-64/pr22791-1.err deleted file mode 100644 index 8c5565992e7..00000000000 diff --git a/binutils.changes b/binutils.changes index f0d4607..c2c5e8f 100644 --- a/binutils.changes +++ b/binutils.changes @@ -3,6 +3,66 @@ Tue Jan 24 12:52:49 UTC 2023 - Richard Biener - Remove broken arm32-avoid-copyreloc.patch to fix [gcc#108515] +------------------------------------------------------------------- +Mon Jan 16 08:34:07 UTC 2023 - Martin Liška + +- Update to version 2.40: +* Objdump has a new command line option --show-all-symbols which will make it + display all symbols that match a given address when disassembling. (Normally + only the first symbol that matches an address is shown). +* Add --enable-colored-disassembly configure time option to enable colored + disassembly output by default, if the output device is a terminal. Note, + this configure option is disabled by default. +* DCO signed contributions are now accepted. +* objcopy --decompress-debug-sections now supports zstd compressed debug + sections. The new option --compress-debug-sections=zstd compresses debug + sections with zstd. +* addr2line and objdump --dwarf now support zstd compressed debug sections. +* The dlltool program now accepts --deterministic-libraries and + --non-deterministic-libraries as command line options to control whether or + not it generates deterministic output libraries. If neither of these options + are used the default is whatever was set when the binutils were configured. +* readelf and objdump now have a newly added option --sframe which dumps the + SFrame section. +* Add support for Intel RAO-INT instructions. +* Add support for Intel AVX-NE-CONVERT instructions. +* Add support for Intel MSRLIST instructions. +* Add support for Intel WRMSRNS instructions. +* Add support for Intel CMPccXADD instructions. +* Add support for Intel AVX-VNNI-INT8 instructions. +* Add support for Intel AVX-IFMA instructions. +* Add support for Intel PREFETCHI instructions. +* Add support for Intel AMX-FP16 instructions. +* gas now supports --compress-debug-sections=zstd to compress + debug sections with zstd. +* Add --enable-default-compressed-debug-sections-algorithm={zlib,zstd} + that selects the default compression algorithm + for --enable-compressed-debug-sections. +* Add support for various T-Head extensions (XTheadBa, XTheadBb, XTheadBs, + XTheadCmo, XTheadCondMov, XTheadFMemIdx, XTheadFmv, XTheadInt, XTheadMemIdx, + XTheadMemPair, XTheadMac, and XTheadSync) from version 2.0 of the T-Head + ISA manual, which are implemented in the Allwinner D1. +* Add support for the RISC-V Zawrs extension, version 1.0-rc4. +* Add support for Cortex-X1C for Arm. +* New command line option --gsframe to generate SFrame unwind information + on x86_64 and aarch64 targets. +* The linker has a new command line option to suppress the generation of any + warning or error messages. This can be useful when there is a need to create + a known non-working binary. The option is -w or --no-warnings. +* ld now supports zstd compressed debug sections. The new option + --compress-debug-sections=zstd compresses debug sections with zstd. +* Add --enable-default-compressed-debug-sections-algorithm={zlib,zstd} + that selects the default compression algorithm + for --enable-compressed-debug-sections. +* Remove support for -z bndplt (MPX prefix instructions). +- Rebased patches: add-ulp-section.diff, ld-relro.diff, binutils-revert-plt32-in-branches.diff, + cross-avr-size.patch. +- Removed patch: binutils-pr29482.diff. +- New patch: extensa-gcc-4_3-fix.diff. +- Includes fixes for these CVEs: + * bnc#1206080 aka CVE-2022-4285 aka PR29699 +- Enable by default: --enable-colored-disassembly. + ------------------------------------------------------------------- Sat Dec 10 10:00:56 UTC 2022 - Dirk Müller diff --git a/binutils.spec b/binutils.spec index de5734f..c486496 100644 --- a/binutils.spec +++ b/binutils.spec @@ -61,7 +61,7 @@ BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif -Version: 2.39 +Version: 2.40 Release: 0 # disable libalternatives for now until it's changed to not @@ -117,7 +117,7 @@ Source: binutils-%{version}.tar.bz2 Source2: binutils-%{version}.tar.bz2.sig Source3: binutils.keyring Source4: baselibs.conf -Patch1: binutils-2.39-branch.diff.gz +Patch1: binutils-2.40-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch @@ -139,8 +139,7 @@ Patch41: binutils-fix-relax.diff Patch42: binutils-compat-old-behaviour.diff Patch43: binutils-revert-hlasm-insns.diff Patch44: binutils-revert-rela.diff -Patch45: binutils-pr29482.diff -Patch46: binutils-maxpagesize.diff +Patch45: extensa-gcc-4_3-fix.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch @@ -263,9 +262,8 @@ cp ld/ldgram.y ld/ldgram.y.orig %patch42 -p1 %patch43 -p1 %patch44 -p1 -%endif %patch45 -p1 -%patch46 -p1 +%endif %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h @@ -365,6 +363,7 @@ cd build-dir --enable-shared \ %if %{suse_version} > 1500 --enable-pgo-build=lto \ + --enable-colored-disassembly \ %endif %if %{suse_version} <= 1500 --disable-gprofng \ @@ -644,6 +643,7 @@ fi; %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts +%{_libdir}/libsframe.so.* %dir %{_libdir}/bfd-plugins %{_libdir}/bfd-plugins/libdep.so %{_bindir}/* @@ -686,6 +686,7 @@ fi; %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so +%{_libdir}/libsframe.so %files -n libctf0 %defattr(-,root,root) diff --git a/cross-avr-size.patch b/cross-avr-size.patch index 8d63750..5cda820 100644 --- a/cross-avr-size.patch +++ b/cross-avr-size.patch @@ -1,5 +1,5 @@ diff --git a/binutils/size.c b/binutils/size.c -index 479a464887..971156ccbe 100644 +index 8e9adcd1caa..a10d6f49601 100644 --- a/binutils/size.c +++ b/binutils/size.c @@ -51,6 +51,7 @@ enum output_format @@ -266,8 +266,8 @@ index 479a464887..971156ccbe 100644 + --mcu= MCU name for AVR format only\n\ -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n\ -t --totals Display the total sizes (Berkeley only)\n\ - --common Display total size for *COM* syms\n\ -@@ -113,6 +355,7 @@ usage (FILE *stream, int status) + -f Ignored.\n\ +@@ -114,6 +356,7 @@ usage (FILE *stream, int status) #define OPTION_FORMAT (200) #define OPTION_RADIX (OPTION_FORMAT + 1) #define OPTION_TARGET (OPTION_RADIX + 1) @@ -275,7 +275,7 @@ index 479a464887..971156ccbe 100644 static struct option long_options[] = { -@@ -120,6 +363,7 @@ static struct option long_options[] = +@@ -121,6 +364,7 @@ static struct option long_options[] = {"format", required_argument, 0, OPTION_FORMAT}, {"radix", required_argument, 0, OPTION_RADIX}, {"target", required_argument, 0, OPTION_TARGET}, @@ -283,7 +283,7 @@ index 479a464887..971156ccbe 100644 {"totals", no_argument, &show_totals, 1}, {"version", no_argument, &show_version, 1}, {"help", no_argument, &show_help, 1}, -@@ -153,13 +397,17 @@ main (int argc, char **argv) +@@ -152,13 +396,17 @@ main (int argc, char **argv) fatal (_("fatal error: libbfd ABI mismatch")); set_default_bfd_target (); @@ -302,7 +302,7 @@ index 479a464887..971156ccbe 100644 case 'B': case 'b': selected_output_format = FORMAT_BERKLEY; -@@ -178,6 +426,10 @@ main (int argc, char **argv) +@@ -177,6 +425,10 @@ main (int argc, char **argv) } break; @@ -313,7 +313,7 @@ index 479a464887..971156ccbe 100644 case OPTION_TARGET: target = optarg; break; -@@ -211,6 +463,9 @@ main (int argc, char **argv) +@@ -210,6 +462,9 @@ main (int argc, char **argv) case 'B': selected_output_format = FORMAT_BERKLEY; break; @@ -323,7 +323,7 @@ index 479a464887..971156ccbe 100644 case 'G': selected_output_format = FORMAT_GNU; break; -@@ -648,13 +903,115 @@ print_sysv_format (bfd *file) +@@ -649,13 +904,115 @@ print_sysv_format (bfd *file) printf ("\n\n"); } diff --git a/extensa-gcc-4_3-fix.diff b/extensa-gcc-4_3-fix.diff new file mode 100644 index 0000000..a5c4bfa --- /dev/null +++ b/extensa-gcc-4_3-fix.diff @@ -0,0 +1,20 @@ +# This fixes: +# +# [ 146s] In file included from ../../bfd/xtensa-isa.c:26: +# [ 146s] ../../bfd/../include/xtensa-dynconfig.h:107: error: redefinition of typedef 'xtensa_isa_internal' +# [ 146s] ../../bfd/../include/xtensa-isa-internal.h:227: error: previous declaration of 'xtensa_isa_internal' was here +# +# which is a strange issue with GCC 4.3 + +diff --git a/include/xtensa-dynconfig.h b/include/xtensa-dynconfig.h +index bb72d6ab22d..9c66ac4416d 100644 +--- a/include/xtensa-dynconfig.h ++++ b/include/xtensa-dynconfig.h +@@ -104,7 +104,6 @@ struct xtensa_config_v2 + int xtensa_march_earliest; + }; + +-typedef struct xtensa_isa_internal_struct xtensa_isa_internal; + + extern const void *xtensa_load_config (const char *name, + const void *no_plugin_def, diff --git a/ld-relro.diff b/ld-relro.diff index 8954078..219613d 100644 --- a/ld-relro.diff +++ b/ld-relro.diff @@ -25,15 +25,15 @@ Index: ld/testsuite/config/default.exp } if ![info exists as] then { -@@ -60,7 +60,7 @@ if {![file isdirectory tmpdir/ld]} then - catch "exec ln -s ld tmpdir/ld/collect-ld" status - catch "exec ln -s ../../../gas/as-new tmpdir/ld/as" status +@@ -70,7 +70,7 @@ if {[info exists ld_testsuite_bindir]} { + catch "exec ln -s ld tmpdir/ld/collect-ld" status + catch "exec ln -s ../../../gas/as-new tmpdir/ld/as" status + } +- set gcc_B_opt "-B[pwd]/tmpdir/ld/" ++ set gcc_B_opt "-B[pwd]/tmpdir/ld/ -Wl,-z,norelro" } --set gcc_B_opt "-B[pwd]/tmpdir/ld/" -+set gcc_B_opt "-B[pwd]/tmpdir/ld/ -Wl,-z,norelro" # load the linker path - set ld_L_opt "" @@ -272,7 +272,7 @@ if ![info exists READELFFLAGS] then { } @@ -47,17 +47,17 @@ Index: ld/testsuite/ld-bootstrap/bootstrap.exp =================================================================== --- ld/testsuite/ld-bootstrap/bootstrap.exp.orig 2014-10-14 17:43:07.000000000 +0200 +++ ld/testsuite/ld-bootstrap/bootstrap.exp 2014-10-14 17:43:26.000000000 +0200 -@@ -78,7 +78,12 @@ foreach flags $test_flags { +@@ -106,7 +106,12 @@ foreach flags $test_flags { # This test can only be run if we have the ld build directory, # since we need the object files. -- if {$ld != "$objdir/ld-new"} { +- if {[file normalize $ld] != [file normalize $objdir/ld-new]} { + set ldexe $ld + set ldparm [string first " " $ld] + if { $ldparm > 0 } then { + set ldexe [string range $ld 0 $ldparm] + } -+ if {$ldexe != "$objdir/ld-new"} { ++ if {[file normalize $ldexe] != [file normalize $objdir/ld-new]} { untested $testname continue }