https://github.com/c-rhodes updated 
https://github.com/llvm/llvm-project/pull/176338

>From 58027ec087f49c6a26458e63832e62642882415b Mon Sep 17 00:00:00 2001
From: Davide Cunial <[email protected]>
Date: Fri, 16 Jan 2026 11:15:18 +0100
Subject: [PATCH] [clang] Fix options handling in ClangExtDefMapGen.cpp
 (#176116)

Also, remove some unused includes.

Fixes https://github.com/llvm/llvm-project/issues/176118

Now, running `clang-extdef-mapping` with no options results in the
following error message:

```sh
error: clang-extdef-mapping: Not enough positional command line arguments 
specified!
Must specify at least 1 positional argument: See: 
./build/Debug/bin/clang-extdef-mapping --help
```

(cherry picked from commit 0a26d907ceec0a64596d334848fa7ec8b163a59e)
---
 clang/test/Tooling/clang-extdef-mapping-no-args.cpp    | 3 +++
 clang/test/Tooling/clang-extdef-mapping.cpp            | 4 ++++
 clang/tools/clang-extdef-mapping/ClangExtDefMapGen.cpp | 7 +++----
 3 files changed, 10 insertions(+), 4 deletions(-)
 create mode 100644 clang/test/Tooling/clang-extdef-mapping-no-args.cpp
 create mode 100644 clang/test/Tooling/clang-extdef-mapping.cpp

diff --git a/clang/test/Tooling/clang-extdef-mapping-no-args.cpp 
b/clang/test/Tooling/clang-extdef-mapping-no-args.cpp
new file mode 100644
index 0000000000000..751faa5488613
--- /dev/null
+++ b/clang/test/Tooling/clang-extdef-mapping-no-args.cpp
@@ -0,0 +1,3 @@
+// RUN: not clang-extdef-mapping 2>&1 | FileCheck %s
+
+// CHECK: Not enough positional command line arguments specified!
diff --git a/clang/test/Tooling/clang-extdef-mapping.cpp 
b/clang/test/Tooling/clang-extdef-mapping.cpp
new file mode 100644
index 0000000000000..31756e3bd6237
--- /dev/null
+++ b/clang/test/Tooling/clang-extdef-mapping.cpp
@@ -0,0 +1,4 @@
+// RUN: clang-extdef-mapping "%s" 2>&1 | FileCheck %s
+
+// CHECK: 8:c:@F@foo {{.*}}clang-extdef-mapping.cpp
+extern "C" int foo() { return 0; }
diff --git a/clang/tools/clang-extdef-mapping/ClangExtDefMapGen.cpp 
b/clang/tools/clang-extdef-mapping/ClangExtDefMapGen.cpp
index 6d8f86b13fa36..308a421f964a9 100644
--- a/clang/tools/clang-extdef-mapping/ClangExtDefMapGen.cpp
+++ b/clang/tools/clang-extdef-mapping/ClangExtDefMapGen.cpp
@@ -17,15 +17,14 @@
 #include "clang/Basic/SourceManager.h"
 #include "clang/CrossTU/CrossTranslationUnit.h"
 #include "clang/Frontend/CompilerInstance.h"
-#include "clang/Frontend/FrontendActions.h"
 #include "clang/Frontend/TextDiagnosticPrinter.h"
 #include "clang/Tooling/CommonOptionsParser.h"
 #include "clang/Tooling/Tooling.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Signals.h"
 #include "llvm/Support/TargetSelect.h"
+#include "llvm/Support/WithColor.h"
 #include <optional>
-#include <sstream>
 #include <string>
 
 using namespace llvm;
@@ -211,9 +210,9 @@ int main(int argc, const char **argv) {
                          "with compile database or .ast files that are "
                          "created from clang's -emit-ast option.\n";
   auto ExpectedParser = CommonOptionsParser::create(
-      argc, argv, ClangExtDefMapGenCategory, cl::ZeroOrMore, Overview);
+      argc, argv, ClangExtDefMapGenCategory, cl::OneOrMore, Overview);
   if (!ExpectedParser) {
-    llvm::errs() << ExpectedParser.takeError();
+    llvm::WithColor::error() << llvm::toString(ExpectedParser.takeError());
     return 1;
   }
   CommonOptionsParser &OptionsParser = ExpectedParser.get();

_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to