diff --git a/llvm/test/tools/llvm-elfabi/fail-file-write-windows.test b/llvm/test/tools/llvm-elfabi/fail-file-write-windows.test --- a/llvm/test/tools/llvm-elfabi/fail-file-write-windows.test +++ b/llvm/test/tools/llvm-elfabi/fail-file-write-windows.test @@ -3,7 +3,7 @@ # REQUIRES: system-windows # RUN: touch %t.TestFile # RUN: chmod 400 %t.TestFile -# RUN: not llvm-elfabi %s --output-target=elf64-little %t.TestFile 2>&1 | FileCheck %s --check-prefix=ERR +# RUN: not llvm-elfabi %s --output-target=elf64-little %t.TestFile 2>&1 | FileCheck -DMSG=%errc_EACCES %s --check-prefix=ERR # RUN: chmod 777 %t.TestFile # RUN: rm -rf %t.TestFile @@ -13,4 +13,4 @@ Symbols: {} ... -# ERR: error: permission denied +# ERR: error: [[MSG]] diff --git a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubnames.yaml b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubnames.yaml --- a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubnames.yaml +++ b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubnames.yaml @@ -225,7 +225,7 @@ ## h) Test that yaml2obj emits an error if 'Descriptor' is missing. -# RUN: not yaml2obj --docnum=8 %s -o %t8.o 2>&1 | FileCheck -DMSG=%errc_EINVAL %s --check-prefix=MISSING-KEY --ignore-case +# RUN: not yaml2obj --docnum=8 %s -o %t8.o 2>&1 | FileCheck -DMSG=%errc_EINVAL %s --check-prefix=MISSING-KEY # MISSING-KEY: YAML:{{.*}}:9: error: missing required key 'Descriptor' # MISSING-KEY-NEXT: - DieOffset: 0x12345678 diff --git a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubtypes.yaml b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubtypes.yaml --- a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubtypes.yaml +++ b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubtypes.yaml @@ -225,12 +225,12 @@ ## h) Test that yaml2obj emits an error if 'Descriptor' is missing. -# RUN: not yaml2obj --docnum=8 %s -o %t8.o 2>&1 | FileCheck %s --check-prefix=MISSING-KEY --ignore-case +# RUN: not yaml2obj --docnum=8 %s -o %t8.o 2>&1 | FileCheck -DMSG=%errc_EINVAL %s --check-prefix=MISSING-KEY # MISSING-KEY: YAML:{{.*}}:9: error: missing required key 'Descriptor' # MISSING-KEY-NEXT: - DieOffset: 0x12345678 # MISSING-KEY-NEXT: ^ -# MISSING-KEY-NEXT: yaml2obj: error: failed to parse YAML input: Invalid argument +# MISSING-KEY-NEXT: yaml2obj: error: failed to parse YAML input: [[MSG]] --- !ELF FileHeader: diff --git a/llvm/utils/lit/lit/llvm/config.py b/llvm/utils/lit/lit/llvm/config.py --- a/llvm/utils/lit/lit/llvm/config.py +++ b/llvm/utils/lit/lit/llvm/config.py @@ -4,6 +4,7 @@ import re import subprocess import sys +import errno import lit.util from lit.llvm.subst import FindTool @@ -346,21 +347,19 @@ return True def add_err_msg_substitutions(self): - if (sys.platform == 'zos'): - self.config.substitutions.append(('%errc_ENOENT', '\'EDC5129I No such file or directory.\'')) - self.config.substitutions.append(('%errc_EISDIR', '\'EDC5123I Is a directory.\'')) - self.config.substitutions.append(('%errc_EINVAL', '\'EDC5121I Invalid argument.\'')) - self.config.substitutions.append(('%errc_EACCES', '\'EDC5111I Permission denied.\'')) - elif (sys.platform == 'win32'): + host_cxx = getattr(self.config, 'host_cxx', '') + # On Windows, python's os.strerror() does not emit the same spelling as the C++ std::error_code. + # As a workaround, hardcode the Windows error message. + if (sys.platform == 'win32' and 'MSYS' not in host_cxx): self.config.substitutions.append(('%errc_ENOENT', '\'no such file or directory\'')) self.config.substitutions.append(('%errc_EISDIR', '\'is a directory\'')) self.config.substitutions.append(('%errc_EINVAL', '\'invalid argument\'')) self.config.substitutions.append(('%errc_EACCES', '\'permission denied\'')) else: - self.config.substitutions.append(('%errc_ENOENT', '\'No such file or directory\'')) - self.config.substitutions.append(('%errc_EISDIR', '\'Is a directory\'')) - self.config.substitutions.append(('%errc_EINVAL', '\'Invalid argument\'')) - self.config.substitutions.append(('%errc_EACCES', '\'Permission denied\'')) + self.config.substitutions.append(('%errc_ENOENT', '\'' + os.strerror(errno.ENOENT) + '\'')) + self.config.substitutions.append(('%errc_EISDIR', '\'' + os.strerror(errno.EISDIR) + '\'')) + self.config.substitutions.append(('%errc_EINVAL', '\'' + os.strerror(errno.EINVAL) + '\'')) + self.config.substitutions.append(('%errc_EACCES', '\'' + os.strerror(errno.EACCES) + '\'')) def use_default_substitutions(self): tool_patterns = [