diff options
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"); |
