diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2025-11-17 07:50:27 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2025-11-17 08:54:02 +0000 |
| commit | cbc18b106abc7ee5cbca73a11b24265328d29516 (patch) | |
| tree | ca8b40d3bd1ca4129c0026d3abfaf2394eed891d /tools | |
| parent | dc0208ace3f6b22d70ffc54092feec2ea83c7e20 (diff) | |
tools/syz-declextract: update clangtool to the latest clang
Fix some minor API changes.
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/syz-declextract/README.md | 2 | ||||
| -rw-r--r-- | tools/syz-declextract/clangtool/declextract.cpp | 11 |
2 files changed, 6 insertions, 7 deletions
diff --git a/tools/syz-declextract/README.md b/tools/syz-declextract/README.md index f68c358e0..cab9b5e8a 100644 --- a/tools/syz-declextract/README.md +++ b/tools/syz-declextract/README.md @@ -17,7 +17,7 @@ make CC=clang -j`nproc` # kernel has to be built at least once for the script to LLVM=$PWD/llvm-project git clone https://github.com/llvm/llvm-project.git $LLVM cd $LLVM -git checkout d28b4d89166fb705577a2d3a329006f0c0e0aacc # In case of any breaking changes, this commit works +git checkout d9dfe7540f81663f75350bb5ceb66d2f94dac078 # In case of any breaking changes, this commit works echo ' set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-c++20-designator -Wno-missing-designated-field-initializers") add_clang_executable(syz-declextract syz-declextract/declextract.cpp) diff --git a/tools/syz-declextract/clangtool/declextract.cpp b/tools/syz-declextract/clangtool/declextract.cpp index e026b3788..d7230a578 100644 --- a/tools/syz-declextract/clangtool/declextract.cpp +++ b/tools/syz-declextract/clangtool/declextract.cpp @@ -281,6 +281,8 @@ FieldType Extractor::extractRecord(QualType QT, const RecordType* Typ, const std assert(!StructDedup[BackupName]); Name = BackupName; } + if (Name.find("struct ") == 0) + Name = Name.substr(strlen("struct ")); if (StructDedup[Name]) return Name; StructDedup[Name] = true; @@ -336,12 +338,9 @@ std::string Extractor::extractEnum(QualType QT, const EnumDecl* Decl) { if (Name.empty()) { // This is an unnamed enum declared with a typedef: // typedef enum {...} enum_name; - auto Elaborated = dyn_cast<ElaboratedType>(QT.getTypePtr()); - if (Elaborated) { - auto Typedef = dyn_cast<TypedefType>(Elaborated->getNamedType().getTypePtr()); - if (Typedef) - Name = Typedef->getDecl()->getNameAsString(); - } + auto Typedef = dyn_cast<TypedefType>(QT.getTypePtr()); + if (Typedef) + Name = Typedef->getDecl()->getNameAsString(); if (Name.empty()) { QT.dump(); llvm::report_fatal_error("enum with empty name"); |
