"-cc1",
                "-triple", "bpf-pc-linux",
                "-fsyntax-only",
-               "-ferror-limit", "19",
-               "-fmessage-length", "127",
                "-O2",
                "-nostdsysteminc",
                "-nobuiltininc",
                "-x", "c"};
 
        CCArgs.append(CFlags.begin(), CFlags.end());
-       CompilerInvocation *CI = tooling::newInvocation(&Diags, CCArgs);
+       CompilerInvocation *CI = tooling::newInvocation(&Diags, CCArgs
+#if CLANG_VERSION_MAJOR >= 11
+                                                        ,/*BinaryName=*/nullptr
+#endif
+                                                        );
 
        FrontendOptions& Opts = CI->getFrontendOpts();
        Opts.Inputs.clear();
 
        legacy::PassManager PM;
        bool NotAdded;
-#if CLANG_VERSION_MAJOR < 7
-       NotAdded = TargetMachine->addPassesToEmitFile(PM, ostream,
-                                                     TargetMachine::CGFT_ObjectFile);
+       NotAdded = TargetMachine->addPassesToEmitFile(PM, ostream
+#if CLANG_VERSION_MAJOR >= 7
+                                                      , /*DwoOut=*/nullptr
+#endif
+#if CLANG_VERSION_MAJOR < 10
+                                                      , TargetMachine::CGFT_ObjectFile
 #else
-       NotAdded = TargetMachine->addPassesToEmitFile(PM, ostream, nullptr,
-                                                     TargetMachine::CGFT_ObjectFile);
+                                                      , llvm::CGFT_ObjectFile
 #endif
+                                                      );
        if (NotAdded) {
                llvm::errs() << "TargetMachine can't emit a file of this type\n";
                return std::unique_ptr<llvm::SmallVectorImpl<char>>(nullptr);