diff options
Diffstat (limited to 'source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp')
| -rw-r--r-- | source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp | 341 | 
1 files changed, 130 insertions, 211 deletions
diff --git a/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp b/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp index a49a7029e0d2..f4457fc1b740 100644 --- a/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp +++ b/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp @@ -180,98 +180,20 @@ ClangExpressionDeclMap::TargetInfo ClangExpressionDeclMap::GetTargetInfo() {    return ret;  } -namespace { -/// This class walks an AST and ensures that all DeclContexts defined inside the -/// current source file are properly complete. -/// -/// This is used to ensure that persistent types defined in the current source -/// file migrate completely to the persistent AST context before they are -/// reused.  If that didn't happen, it would be impoossible to complete them -/// because their origin would be gone. -/// -/// The stragtegy used by this class is to check the SourceLocation (to be -/// specific, the FileID) and see if it's the FileID for the current expression. -/// Alternate strategies could include checking whether an ExternalASTMerger, -/// set up to not have the current context as a source, can find an original for -/// the type. -class Completer : public clang::RecursiveASTVisitor<Completer> { -private: -  clang::ASTImporter &m_exporter;             /// Used to import Decl contents -  clang::FileID m_file;                       /// The file that's going away -  llvm::DenseSet<clang::Decl *> m_completed;  /// Visited Decls, to avoid cycles - -  bool ImportAndCheckCompletable(clang::Decl *decl) { -    (void)m_exporter.Import(decl); -    if (m_completed.count(decl)) -      return false; -    if (!llvm::isa<DeclContext>(decl)) -      return false; -    const clang::SourceLocation loc = decl->getLocation(); -    if (!loc.isValid()) -      return false; -    const clang::FileID file = -        m_exporter.getFromContext().getSourceManager().getFileID(loc); -    if (file != m_file) -      return false; -    // We are assuming the Decl was parsed in this very expression, so it -    // should not have external storage. -    lldbassert(!llvm::cast<DeclContext>(decl)->hasExternalLexicalStorage()); -    return true; -  } - -  void Complete(clang::Decl *decl) { -    m_completed.insert(decl); -    auto *decl_context = llvm::cast<DeclContext>(decl); -    (void)m_exporter.Import(decl); -    m_exporter.CompleteDecl(decl); -    for (Decl *child : decl_context->decls()) -      if (ImportAndCheckCompletable(child)) -        Complete(child); -  } - -  void MaybeComplete(clang::Decl *decl) { -    if (ImportAndCheckCompletable(decl)) -      Complete(decl); -  } - -public: -  Completer(clang::ASTImporter &exporter, clang::FileID file) -      : m_exporter(exporter), m_file(file) {} -   -  // Implements the RecursiveASTVisitor's core API.  It is called on each Decl -  // that the RecursiveASTVisitor encounters, and returns true if the traversal -  // should continue. -  bool VisitDecl(clang::Decl *decl) { -    MaybeComplete(decl); -    return true; -  } -}; -} - -static void CompleteAllDeclContexts(clang::ASTImporter &exporter, -                                    clang::FileID file, -                                    clang::QualType root) { -  clang::QualType canonical_type = root.getCanonicalType(); -  if (clang::TagDecl *tag_decl = canonical_type->getAsTagDecl()) { -    Completer(exporter, file).TraverseDecl(tag_decl); -  } else if (auto interface_type = llvm::dyn_cast<ObjCInterfaceType>( -                 canonical_type.getTypePtr())) { -    Completer(exporter, file).TraverseDecl(interface_type->getDecl()); -  } else { -    Completer(exporter, file).TraverseType(canonical_type); -  } -} -  static clang::QualType ExportAllDeclaredTypes( -    clang::ExternalASTMerger &merger, +    clang::ExternalASTMerger &parent_merger, clang::ExternalASTMerger &merger,      clang::ASTContext &source, clang::FileManager &source_file_manager,      const clang::ExternalASTMerger::OriginMap &source_origin_map,      clang::FileID file, clang::QualType root) { -  clang::ExternalASTMerger::ImporterSource importer_source = -      { source, source_file_manager, source_origin_map }; +  // Mark the source as temporary to make sure all declarations from the +  // AST are exported. Also add the parent_merger as the merger into the +  // source AST so that the merger can track back any declarations from +  // the persistent ASTs we used as sources. +  clang::ExternalASTMerger::ImporterSource importer_source( +      source, source_file_manager, source_origin_map, /*Temporary*/ true, +      &parent_merger);    merger.AddSources(importer_source);    clang::ASTImporter &exporter = merger.ImporterForOrigin(source); -  CompleteAllDeclContexts(exporter, file, root);    llvm::Expected<clang::QualType> ret_or_error = exporter.Import(root);    merger.RemoveSources(importer_source);    if (ret_or_error) { @@ -286,10 +208,10 @@ static clang::QualType ExportAllDeclaredTypes(  TypeFromUser ClangExpressionDeclMap::DeportType(ClangASTContext &target,                                                  ClangASTContext &source,                                                  TypeFromParser parser_type) { -  assert (&target == m_target->GetScratchClangASTContext()); -  assert ((TypeSystem*)&source == parser_type.GetTypeSystem()); -  assert (source.getASTContext() == m_ast_context); -   +  assert(&target == m_target->GetScratchClangASTContext()); +  assert((TypeSystem *)&source == parser_type.GetTypeSystem()); +  assert(source.getASTContext() == m_ast_context); +    if (m_ast_importer_sp) {      return TypeFromUser(m_ast_importer_sp->DeportType(                              target.getASTContext(), source.getASTContext(), @@ -299,13 +221,12 @@ TypeFromUser ClangExpressionDeclMap::DeportType(ClangASTContext &target,      clang::FileID source_file =          source.getASTContext()->getSourceManager().getFileID(              source.getASTContext()->getTranslationUnitDecl()->getLocation()); -    auto scratch_ast_context = static_cast<ClangASTContextForExpressions*>( +    auto scratch_ast_context = static_cast<ClangASTContextForExpressions *>(          m_target->GetScratchClangASTContext());      clang::QualType exported_type = ExportAllDeclaredTypes( -        scratch_ast_context->GetMergerUnchecked(), +        *m_merger_up.get(), scratch_ast_context->GetMergerUnchecked(),          *source.getASTContext(), *source.getFileManager(), -        m_merger_up->GetOrigins(), -        source_file, +        m_merger_up->GetOrigins(), source_file,          clang::QualType::getFromOpaquePtr(parser_type.GetOpaqueQualType()));      return TypeFromUser(exported_type.getAsOpaquePtr(), &target);    } else { @@ -375,8 +296,7 @@ bool ClangExpressionDeclMap::AddPersistentVariable(const NamedDecl *decl,    TypeFromUser user_type = DeportType(*context, *ast, parser_type);    if (!user_type.GetOpaqueQualType()) { -    if (log) -      log->Printf("Persistent variable's type wasn't copied successfully"); +    LLDB_LOGF(log, "Persistent variable's type wasn't copied successfully");      return false;    } @@ -415,8 +335,7 @@ bool ClangExpressionDeclMap::AddPersistentVariable(const NamedDecl *decl,      var->m_flags |= ClangExpressionVariable::EVKeepInTarget;    } -  if (log) -    log->Printf("Created persistent variable with flags 0x%hx", var->m_flags); +  LLDB_LOGF(log, "Created persistent variable with flags 0x%hx", var->m_flags);    var->EnableParserVars(GetParserID()); @@ -458,10 +377,9 @@ bool ClangExpressionDeclMap::AddValueToStruct(const NamedDecl *decl,    if (!var)      return false; -  if (log) -    log->Printf("Adding value for (NamedDecl*)%p [%s - %s] to the structure", -                static_cast<const void *>(decl), name.GetCString(), -                var->GetName().GetCString()); +  LLDB_LOGF(log, "Adding value for (NamedDecl*)%p [%s - %s] to the structure", +            static_cast<const void *>(decl), name.GetCString(), +            var->GetName().GetCString());    // We know entity->m_parser_vars is valid because we used a parser variable    // to find it @@ -475,9 +393,8 @@ bool ClangExpressionDeclMap::AddValueToStruct(const NamedDecl *decl,            llvm::cast<ClangExpressionVariable>(var)->GetJITVars(GetParserID())) {      // We already laid this out; do not touch -    if (log) -      log->Printf("Already placed at 0x%llx", -                  (unsigned long long)jit_vars->m_offset); +    LLDB_LOGF(log, "Already placed at 0x%llx", +              (unsigned long long)jit_vars->m_offset);    }    llvm::cast<ClangExpressionVariable>(var)->EnableJITVars(GetParserID()); @@ -512,8 +429,7 @@ bool ClangExpressionDeclMap::AddValueToStruct(const NamedDecl *decl,      if (!err.Success())        return false; -    if (log) -      log->Printf("Placed at 0x%llx", (unsigned long long)offset); +    LLDB_LOGF(log, "Placed at 0x%llx", (unsigned long long)offset);      jit_vars->m_offset =          offset; // TODO DoStructLayout() should not change this. @@ -779,7 +695,7 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(    if (GetImportInProgress()) {      if (log && log->GetVerbose()) -      log->Printf("Ignoring a query during an import"); +      LLDB_LOGF(log, "Ignoring a query during an import");      return;    } @@ -788,20 +704,23 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(    if (log) {      if (!context.m_decl_context) -      log->Printf("ClangExpressionDeclMap::FindExternalVisibleDecls[%u] for " -                  "'%s' in a NULL DeclContext", -                  current_id, name.GetCString()); +      LLDB_LOGF(log, +                "ClangExpressionDeclMap::FindExternalVisibleDecls[%u] for " +                "'%s' in a NULL DeclContext", +                current_id, name.GetCString());      else if (const NamedDecl *context_named_decl =                   dyn_cast<NamedDecl>(context.m_decl_context)) -      log->Printf("ClangExpressionDeclMap::FindExternalVisibleDecls[%u] for " -                  "'%s' in '%s'", -                  current_id, name.GetCString(), -                  context_named_decl->getNameAsString().c_str()); +      LLDB_LOGF(log, +                "ClangExpressionDeclMap::FindExternalVisibleDecls[%u] for " +                "'%s' in '%s'", +                current_id, name.GetCString(), +                context_named_decl->getNameAsString().c_str());      else -      log->Printf("ClangExpressionDeclMap::FindExternalVisibleDecls[%u] for " -                  "'%s' in a '%s'", -                  current_id, name.GetCString(), -                  context.m_decl_context->getDeclKindName()); +      LLDB_LOGF(log, +                "ClangExpressionDeclMap::FindExternalVisibleDecls[%u] for " +                "'%s' in a '%s'", +                current_id, name.GetCString(), +                context.m_decl_context->getDeclKindName());    }    if (const NamespaceDecl *namespace_context = @@ -828,7 +747,7 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(        log->Printf("  CEDM::FEVD[%u] Inspecting (NamespaceMap*)%p (%d entries)",                    current_id, static_cast<void *>(namespace_map.get()),                    (int)namespace_map->size()); -     +      for (ClangASTImporter::NamespaceMap::iterator i = namespace_map->begin(),                                                    e = namespace_map->end();           i != e; ++i) { @@ -848,7 +767,7 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(      FindExternalVisibleDecls(context, lldb::ModuleSP(), namespace_decl,                               current_id);    } -   +    ClangASTSource::FindExternalVisibleDecls(context);  } @@ -922,9 +841,8 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(          MaybeRegisterFunctionBody(parser_function_decl);        } -      if (log) -        log->Printf("  CEDM::FEVD[%u] Found persistent decl %s", current_id, -                    name.GetCString()); +      LLDB_LOGF(log, "  CEDM::FEVD[%u] Found persistent decl %s", current_id, +                name.GetCString());        context.AddNamedDecl(parser_named_decl);      } while (false); @@ -979,8 +897,8 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(          if (log) {            ASTDumper ast_dumper(class_qual_type); -          log->Printf("  CEDM::FEVD[%u] Adding type for $__lldb_class: %s", -                      current_id, ast_dumper.GetCString()); +          LLDB_LOGF(log, "  CEDM::FEVD[%u] Adding type for $__lldb_class: %s", +                    current_id, ast_dumper.GetCString());          }          AddThisType(context, class_user_type, current_id); @@ -1024,8 +942,8 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(            if (pointee_type.IsValid()) {              if (log) {                ASTDumper ast_dumper(pointee_type); -              log->Printf("  FEVD[%u] Adding type for $__lldb_class: %s", -                          current_id, ast_dumper.GetCString()); +              LLDB_LOGF(log, "  FEVD[%u] Adding type for $__lldb_class: %s", +                        current_id, ast_dumper.GetCString());              }              AddThisType(context, pointee_type, current_id); @@ -1048,7 +966,7 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(            return;          AddOneType(context, TypeFromUser(m_ctx_obj->GetCompilerType()), -                    current_id); +                   current_id);          m_struct_vars->m_object_pointer_type =              TypeFromUser(ctx_obj_ptr->GetCompilerType()); @@ -1096,8 +1014,8 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(          if (log) {            ASTDumper ast_dumper(interface_type); -          log->Printf("  FEVD[%u] Adding type for $__lldb_objc_class: %s", -                      current_id, ast_dumper.GetCString()); +          LLDB_LOGF(log, "  FEVD[%u] Adding type for $__lldb_objc_class: %s", +                    current_id, ast_dumper.GetCString());          }          AddOneType(context, class_user_type, current_id); @@ -1157,8 +1075,9 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(              if (log) {                ASTDumper ast_dumper(self_type->GetFullCompilerType()); -              log->Printf("  FEVD[%u] Adding type for $__lldb_objc_class: %s", -                          current_id, ast_dumper.GetCString()); +              LLDB_LOGF(log, +                        "  FEVD[%u] Adding type for $__lldb_objc_class: %s", +                        current_id, ast_dumper.GetCString());              }              TypeFromUser class_user_type(self_clang_type); @@ -1222,9 +1141,8 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(                reg_name));        if (reg_info) { -        if (log) -          log->Printf("  CEDM::FEVD[%u] Found register %s", current_id, -                      reg_info->name); +        LLDB_LOGF(log, "  CEDM::FEVD[%u] Found register %s", current_id, +                  reg_info->name);          AddOneRegister(context, reg_info, current_id);        } @@ -1298,14 +1216,12 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(      }      const bool include_inlines = false; -    const bool append = false; - +    sc_list.Clear();      if (namespace_decl && module_sp) {        const bool include_symbols = false;        module_sp->FindFunctions(name, &namespace_decl, eFunctionNameTypeBase, -                               include_symbols, include_inlines, append, -                               sc_list); +                               include_symbols, include_inlines, sc_list);      } else if (target && !namespace_decl) {        const bool include_symbols = true; @@ -1314,7 +1230,7 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(        target->GetImages().FindFunctions(name, eFunctionNameTypeFull,                                          include_symbols, include_inlines, -                                        append, sc_list); +                                        sc_list);      }      // If we found more than one function, see if we can use the frame's decl @@ -1511,9 +1427,10 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(            if (llvm::isa<clang::FunctionDecl>(decl_from_modules)) {              if (log) { -              log->Printf("  CAS::FEVD[%u] Matching function found for " -                          "\"%s\" in the modules", -                          current_id, name.GetCString()); +              LLDB_LOGF(log, +                        "  CAS::FEVD[%u] Matching function found for " +                        "\"%s\" in the modules", +                        current_id, name.GetCString());              }              clang::Decl *copied_decl = CopyDecl(decl_from_modules); @@ -1522,10 +1439,10 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(                              : nullptr;              if (!copied_function_decl) { -              if (log) -                log->Printf("  CAS::FEVD[%u] - Couldn't export a function " -                            "declaration from the modules", -                            current_id); +              LLDB_LOGF(log, +                        "  CAS::FEVD[%u] - Couldn't export a function " +                        "declaration from the modules", +                        current_id);                break;              } @@ -1538,9 +1455,10 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(              context.m_found.function = true;            } else if (llvm::isa<clang::VarDecl>(decl_from_modules)) {              if (log) { -              log->Printf("  CAS::FEVD[%u] Matching variable found for " -                          "\"%s\" in the modules", -                          current_id, name.GetCString()); +              LLDB_LOGF(log, +                        "  CAS::FEVD[%u] Matching variable found for " +                        "\"%s\" in the modules", +                        current_id, name.GetCString());              }              clang::Decl *copied_decl = CopyDecl(decl_from_modules); @@ -1549,10 +1467,10 @@ void ClangExpressionDeclMap::FindExternalVisibleDecls(                              : nullptr;              if (!copied_var_decl) { -              if (log) -                log->Printf("  CAS::FEVD[%u] - Couldn't export a variable " -                            "declaration from the modules", -                            current_id); +              LLDB_LOGF(log, +                        "  CAS::FEVD[%u] - Couldn't export a variable " +                        "declaration from the modules", +                        current_id);                break;              } @@ -1647,8 +1565,7 @@ bool ClangExpressionDeclMap::GetVariableValue(VariableSP &var,                             const_value_extractor.GetByteSize());        var_location.SetValueType(Value::eValueTypeHostAddress);      } else { -      if (log) -        log->Printf("Error evaluating constant variable: %s", err.AsCString()); +      LLDB_LOGF(log, "Error evaluating constant variable: %s", err.AsCString());        return false;      }    } @@ -1656,9 +1573,8 @@ bool ClangExpressionDeclMap::GetVariableValue(VariableSP &var,    CompilerType type_to_use = GuardedCopyType(var_clang_type);    if (!type_to_use) { -    if (log) -      log->Printf( -          "Couldn't copy a variable's type into the parser's AST context"); +    LLDB_LOGF(log, +              "Couldn't copy a variable's type into the parser's AST context");      return false;    } @@ -1751,9 +1667,10 @@ void ClangExpressionDeclMap::AddOneVariable(NameSearchContext &context,    if (log) {      ASTDumper orig_dumper(ut.GetOpaqueQualType());      ASTDumper ast_dumper(var_decl); -    log->Printf("  CEDM::FEVD[%u] Found variable %s, returned %s (original %s)", -                current_id, decl_name.c_str(), ast_dumper.GetCString(), -                orig_dumper.GetCString()); +    LLDB_LOGF(log, +              "  CEDM::FEVD[%u] Found variable %s, returned %s (original %s)", +              current_id, decl_name.c_str(), ast_dumper.GetCString(), +              orig_dumper.GetCString());    }  } @@ -1768,9 +1685,8 @@ void ClangExpressionDeclMap::AddOneVariable(NameSearchContext &context,    TypeFromParser parser_type(GuardedCopyType(user_type));    if (!parser_type.GetOpaqueQualType()) { -    if (log) -      log->Printf("  CEDM::FEVD[%u] Couldn't import type for pvar %s", -                  current_id, pvar_sp->GetName().GetCString()); +    LLDB_LOGF(log, "  CEDM::FEVD[%u] Couldn't import type for pvar %s", +              current_id, pvar_sp->GetName().GetCString());      return;    } @@ -1789,8 +1705,8 @@ void ClangExpressionDeclMap::AddOneVariable(NameSearchContext &context,    if (log) {      ASTDumper ast_dumper(var_decl); -    log->Printf("  CEDM::FEVD[%u] Added pvar %s, returned %s", current_id, -                pvar_sp->GetName().GetCString(), ast_dumper.GetCString()); +    LLDB_LOGF(log, "  CEDM::FEVD[%u] Added pvar %s, returned %s", current_id, +              pvar_sp->GetName().GetCString(), ast_dumper.GetCString());    }  } @@ -1848,8 +1764,8 @@ void ClangExpressionDeclMap::AddOneGenericVariable(NameSearchContext &context,    if (log) {      ASTDumper ast_dumper(var_decl); -    log->Printf("  CEDM::FEVD[%u] Found variable %s, returned %s", current_id, -                decl_name.c_str(), ast_dumper.GetCString()); +    LLDB_LOGF(log, "  CEDM::FEVD[%u] Found variable %s, returned %s", +              current_id, decl_name.c_str(), ast_dumper.GetCString());    }  } @@ -1858,7 +1774,7 @@ bool ClangExpressionDeclMap::ResolveUnknownTypes() {    Target *target = m_parser_vars->m_exe_ctx.GetTargetPtr();    ClangASTContextForExpressions *scratch_ast_context = -      static_cast<ClangASTContextForExpressions*>( +      static_cast<ClangASTContextForExpressions *>(            target->GetScratchClangASTContext());    for (size_t index = 0, num_entities = m_found_entities.GetSize(); @@ -1874,15 +1790,14 @@ bool ClangExpressionDeclMap::ResolveUnknownTypes() {        const VarDecl *var_decl = dyn_cast<VarDecl>(named_decl);        if (!var_decl) { -        if (log) -          log->Printf("Entity of unknown type does not have a VarDecl"); +        LLDB_LOGF(log, "Entity of unknown type does not have a VarDecl");          return false;        }        if (log) {          ASTDumper ast_dumper(const_cast<VarDecl *>(var_decl)); -        log->Printf("Variable of unknown type now has Decl %s", -                    ast_dumper.GetCString()); +        LLDB_LOGF(log, "Variable of unknown type now has Decl %s", +                  ast_dumper.GetCString());        }        QualType var_type = var_decl->getType(); @@ -1897,18 +1812,17 @@ bool ClangExpressionDeclMap::ResolveUnknownTypes() {              var_type.getAsOpaquePtr());        } else if (HasMerger()) {          copied_type = CopyTypeWithMerger( -            var_decl->getASTContext(), -            scratch_ast_context->GetMergerUnchecked(), -            var_type).getAsOpaquePtr(); +                          var_decl->getASTContext(), +                          scratch_ast_context->GetMergerUnchecked(), var_type) +                          .getAsOpaquePtr();        } else {          lldbassert(0 && "No mechanism to copy a resolved unknown type!");          return false;        }        if (!copied_type) { -        if (log) -          log->Printf("ClangExpressionDeclMap::ResolveUnknownType - Couldn't " -                      "import the type for a variable"); +        LLDB_LOGF(log, "ClangExpressionDeclMap::ResolveUnknownType - Couldn't " +                       "import the type for a variable");          return (bool)lldb::ExpressionVariableSP();        } @@ -1939,9 +1853,8 @@ void ClangExpressionDeclMap::AddOneRegister(NameSearchContext &context,            m_ast_context, reg_info->encoding, reg_info->byte_size * 8);    if (!clang_type) { -    if (log) -      log->Printf("  Tried to add a type for %s, but couldn't get one", -                  context.m_decl_name.getAsString().c_str()); +    LLDB_LOGF(log, "  Tried to add a type for %s, but couldn't get one", +              context.m_decl_name.getAsString().c_str());      return;    } @@ -1969,9 +1882,9 @@ void ClangExpressionDeclMap::AddOneRegister(NameSearchContext &context,    if (log) {      ASTDumper ast_dumper(var_decl); -    log->Printf("  CEDM::FEVD[%d] Added register %s, returned %s", current_id, -                context.m_decl_name.getAsString().c_str(), -                ast_dumper.GetCString()); +    LLDB_LOGF(log, "  CEDM::FEVD[%d] Added register %s, returned %s", +              current_id, context.m_decl_name.getAsString().c_str(), +              ast_dumper.GetCString());    }  } @@ -2016,24 +1929,24 @@ void ClangExpressionDeclMap::AddOneFunction(NameSearchContext &context,            if (copied_function_template) {              if (log) {                ASTDumper ast_dumper((clang::Decl *)copied_function_template); -               +                StreamString ss; -               +                function->DumpSymbolContext(&ss); -               +                log->Printf("  CEDM::FEVD[%u] Imported decl for function template"                            " %s (description %s), returned %s",                            current_id,                            copied_function_template->getNameAsString().c_str(),                            ss.GetData(), ast_dumper.GetCString());              } -             +              context.AddNamedDecl(copied_function_template);            }          } else if (src_function_decl) {            if (clang::FunctionDecl *copied_function_decl =                    llvm::dyn_cast_or_null<clang::FunctionDecl>( -                       CopyDecl(src_function_decl))) { +                      CopyDecl(src_function_decl))) {              if (log) {                ASTDumper ast_dumper((clang::Decl *)copied_function_decl); @@ -2041,19 +1954,20 @@ void ClangExpressionDeclMap::AddOneFunction(NameSearchContext &context,                function->DumpSymbolContext(&ss); -              log->Printf("  CEDM::FEVD[%u] Imported decl for function %s " -                          "(description %s), returned %s", -                          current_id, -                          copied_function_decl->getNameAsString().c_str(), -                          ss.GetData(), ast_dumper.GetCString()); +              LLDB_LOGF(log, +                        "  CEDM::FEVD[%u] Imported decl for function %s " +                        "(description %s), returned %s", +                        current_id, +                        copied_function_decl->getNameAsString().c_str(), +                        ss.GetData(), ast_dumper.GetCString());              }              context.AddNamedDecl(copied_function_decl);              return;            } else {              if (log) { -              log->Printf("  Failed to import the function decl for '%s'", -                          src_function_decl->getName().str().c_str()); +              LLDB_LOGF(log, "  Failed to import the function decl for '%s'", +                        src_function_decl->getName().str().c_str());              }            }          } @@ -2082,7 +1996,8 @@ void ClangExpressionDeclMap::AddOneFunction(NameSearchContext &context,        if (!function_decl) {          if (log) { -          log->Printf( +          LLDB_LOGF( +              log,                "  Failed to create a function decl for '%s' {0x%8.8" PRIx64 "}",                function_type->GetName().GetCString(), function_type->GetID());          } @@ -2092,10 +2007,11 @@ void ClangExpressionDeclMap::AddOneFunction(NameSearchContext &context,      } else {        // We failed to copy the type we found        if (log) { -        log->Printf("  Failed to import the function type '%s' {0x%8.8" PRIx64 -                    "} into the expression parser AST contenxt", -                    function_type->GetName().GetCString(), -                    function_type->GetID()); +        LLDB_LOGF(log, +                  "  Failed to import the function type '%s' {0x%8.8" PRIx64 +                  "} into the expression parser AST contenxt", +                  function_type->GetName().GetCString(), +                  function_type->GetID());        }        return; @@ -2154,7 +2070,8 @@ void ClangExpressionDeclMap::AddOneFunction(NameSearchContext &context,                       m_parser_vars->m_exe_ctx.GetBestExecutionContextScope(),                       Address::DumpStyleResolvedDescription); -    log->Printf( +    LLDB_LOGF( +        log,          "  CEDM::FEVD[%u] Found %s function %s (description %s), returned %s",          current_id, (function ? "specific" : "generic"), decl_name.c_str(),          ss.GetData(), function_str.c_str()); @@ -2170,7 +2087,8 @@ void ClangExpressionDeclMap::AddThisType(NameSearchContext &context,    if (!copied_clang_type) {      if (log) -      log->Printf( +      LLDB_LOGF( +          log,            "ClangExpressionDeclMap::AddThisType - Couldn't import the type");      return; @@ -2203,9 +2121,10 @@ void ClangExpressionDeclMap::AddThisType(NameSearchContext &context,        ASTDumper method_ast_dumper((clang::Decl *)method_decl);        ASTDumper type_ast_dumper(copied_clang_type); -      log->Printf("  CEDM::AddThisType Added function $__lldb_expr " -                  "(description %s) for this type %s", -                  method_ast_dumper.GetCString(), type_ast_dumper.GetCString()); +      LLDB_LOGF(log, +                "  CEDM::AddThisType Added function $__lldb_expr " +                "(description %s) for this type %s", +                method_ast_dumper.GetCString(), type_ast_dumper.GetCString());      }    } @@ -2244,8 +2163,8 @@ void ClangExpressionDeclMap::AddOneType(NameSearchContext &context,      Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS));      if (log) -      log->Printf( -          "ClangExpressionDeclMap::AddOneType - Couldn't import the type"); +      LLDB_LOGF( +          log, "ClangExpressionDeclMap::AddOneType - Couldn't import the type");      return;    }  | 
