[llvm] 8a84a19 - [LLVM][Cygwin] Fix Signals compatibility with Cygwin API (#138117)

via llvm-commits llvm-commits at lists.llvm.org
Fri May 2 01:02:54 PDT 2025


Author: Mateusz Mikuła
Date: 2025-05-02T11:02:51+03:00
New Revision: 8a84a19cf9ccbc1d0878f51b0466dc3a3b93dbe3

URL: https://github.com/llvm/llvm-project/commit/8a84a19cf9ccbc1d0878f51b0466dc3a3b93dbe3
DIFF: https://github.com/llvm/llvm-project/commit/8a84a19cf9ccbc1d0878f51b0466dc3a3b93dbe3.diff

LOG: [LLVM][Cygwin] Fix Signals compatibility with Cygwin API (#138117)

Cygwin types sometimes do not match Linux exactly. Like in this case:
```
In file included from /h/projects/llvm-project/llvm/include/llvm/Support/Error.h:23,
                 from /h/projects/llvm-project/llvm/include/llvm/Support/FileSystem.h:34,
                 from /h/projects/llvm-project/llvm/lib/Support/Signals.cpp:22:
/h/projects/llvm-project/llvm/include/llvm/Support/Format.h: In instantiation of ‘llvm::format_object<Ts>::format_object(const char*, const Ts& ...) [with Ts = {int, char [4096]}]’:
/h/projects/llvm-project/llvm/include/llvm/Support/Format.h:126:10:   required from ‘llvm::format_object<Ts ...> llvm::format(const char*, const Ts& ...) [with Ts = {int, char [4096]}]’
/h/projects/llvm-project/llvm/lib/Support/Unix/Signals.inc:850:19:   required from here
/h/projects/llvm-project/llvm/include/llvm/Support/Format.h:106:34: error: no matching function for call to ‘std::tuple<int, char [4096]>::tuple(const int&, const char [4096])’
  106 |       : format_object_base(fmt), Vals(vals...) {
      |                                  ^~~~~~~~~~~~~
```
Casting here is safe and solves the issue.

Added: 
    

Modified: 
    llvm/lib/Support/Unix/Signals.inc

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Support/Unix/Signals.inc b/llvm/lib/Support/Unix/Signals.inc
index 30e5f40193974..691e1014f18e8 100644
--- a/llvm/lib/Support/Unix/Signals.inc
+++ b/llvm/lib/Support/Unix/Signals.inc
@@ -847,7 +847,7 @@ void llvm::sys::PrintStackTrace(raw_ostream &OS, int Depth) {
 
     const char *name = strrchr(dlinfo.dli_fname, '/');
     if (!name)
-      OS << format(" %-*s", width, dlinfo.dli_fname);
+      OS << format(" %-*s", width, static_cast<const char *>(dlinfo.dli_fname));
     else
       OS << format(" %-*s", width, name + 1);
 


        


More information about the llvm-commits mailing list