Skip to content

Commit 2ff34a2

Browse files
authored
[NFC] Stub out llvm::sys::fs::detail::directory_iterator_destruct for GCC 16 (#8559)
That appears to instantiate the llvm::sys::fsdirectory_iterator destructor from llvm/Support/FileSystem.h even when the type is not actively used. That destructor calls llvm::sys::fs::detail::directory_iterator_destruct, which is defined in Unix/Path.inc, but which is #if'ed out, causing builds to fail with > [ 87%] Linking CXX shared library lib/libbinaryen.so > /usr/bin/ld.bfd: third_party/llvm-project/CMakeFiles/llvm_dwarf.dir/DWARFUnit.cpp.o: in function `std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() [clone .part.0]': > DWARFUnit.cpp:(.text+0x2665): undefined reference to `llvm::sys::fs::detail::directory_iterator_destruct(llvm::sys::fs::detail::DirIterState&)' > /usr/bin/ld.bfd: DWARFUnit.cpp:(.text+0x2855): undefined reference to `llvm::sys::fs::detail::directory_iterator_destruct(llvm::sys::fs::detail::DirIterState&)' > /usr/bin/ld.bfd: third_party/llvm-project/CMakeFiles/llvm_dwarf.dir/DWARFUnit.cpp.o: in function `llvm::DWARFUnit::~DWARFUnit()': > DWARFUnit.cpp:(.text+0x2c13): undefined reference to `llvm::sys::fs::detail::directory_iterator_destruct(llvm::sys::fs::detail::DirIterState&)' > /usr/bin/ld.bfd: DWARFUnit.cpp:(.text+0x2e2c): undefined reference to `llvm::sys::fs::detail::directory_iterator_destruct(llvm::sys::fs::detail::DirIterState&)' > /usr/bin/ld.bfd: DWARFUnit.cpp:(.text+0x2ff2): undefined reference to `llvm::sys::fs::detail::directory_iterator_destruct(llvm::sys::fs::detail::DirIterState&)' > /usr/bin/ld.bfd: third_party/llvm-project/CMakeFiles/llvm_dwarf.dir/DWARFUnit.cpp.o:DWARFUnit.cpp:(.text+0x4d39): more undefined references to `llvm::sys::fs::detail::directory_iterator_destruct(llvm::sys::fs::detail::DirIterState&)' follow Provide a trivial stub to make the build succeed.
1 parent 8242d19 commit 2ff34a2

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

third_party/llvm-project/Path.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1079,6 +1079,14 @@ ErrorOr<perms> getPermissions(const Twine &Path) {
10791079
#if defined(_WIN32)
10801080
#include "Windows/Path.inc"
10811081
#endif
1082+
#else
1083+
// Stub out directory_iterator_destruct, which at least GCC 16 instantiates from
1084+
// llvm/Support/FileSystem.h even though binaryen never uses it:
1085+
namespace llvm { namespace sys { namespace fs { namespace detail {
1086+
std::error_code directory_iterator_destruct(DirIterState &) {
1087+
return std::error_code();
1088+
}
1089+
}}}}
10821090
#endif
10831091

10841092
#if 0 // XXX BINARYEN

0 commit comments

Comments
 (0)