[llvm] Add --dump-offload-bundle option to llvm-objcopy (PR #143347)

Joseph Huber via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 9 11:15:42 PDT 2025


================
@@ -727,34 +734,45 @@ objcopy::parseObjcopyOptions(ArrayRef<const char *> ArgsArr,
 
   SmallVector<const char *, 2> Positional;
 
+  ConfigManager ConfigMgr;
+  CommonConfig &Config = ConfigMgr.Common;
+  COFFConfig &COFFConfig = ConfigMgr.COFF;
+  ELFConfig &ELFConfig = ConfigMgr.ELF;
+  MachOConfig &MachOConfig = ConfigMgr.MachO;
+
+  if (InputArgs.hasArg(OBJCOPY_dump_offload_bundle))
+    Config.NeedPositional = false;
+
   for (auto *Arg : InputArgs.filtered(OBJCOPY_UNKNOWN))
     return createStringError(errc::invalid_argument, "unknown argument '%s'",
                              Arg->getAsString(InputArgs).c_str());
 
   for (auto *Arg : InputArgs.filtered(OBJCOPY_INPUT))
     Positional.push_back(Arg->getValue());
 
-  if (Positional.empty())
+  if (Positional.empty() && Config.NeedPositional)
     return createStringError(errc::invalid_argument, "no input file specified");
 
-  if (Positional.size() > 2)
+  if (Positional.size() > 2 && Config.NeedPositional)
     return createStringError(errc::invalid_argument,
                              "too many positional arguments");
 
-  ConfigManager ConfigMgr;
-  CommonConfig &Config = ConfigMgr.Common;
-  COFFConfig &COFFConfig = ConfigMgr.COFF;
-  ELFConfig &ELFConfig = ConfigMgr.ELF;
-  MachOConfig &MachOConfig = ConfigMgr.MachO;
-  Config.InputFilename = Positional[0];
-  Config.OutputFilename = Positional[Positional.size() == 1 ? 0 : 1];
-  if (InputArgs.hasArg(OBJCOPY_target) &&
-      (InputArgs.hasArg(OBJCOPY_input_target) ||
-       InputArgs.hasArg(OBJCOPY_output_target)))
-    return createStringError(
-        errc::invalid_argument,
-        "--target cannot be used with --input-target or --output-target");
+  if (Arg *A = InputArgs.getLastArg(OBJCOPY_dump_offload_bundle)) {
+    for (StringRef URIStr : llvm::split(A->getValue(), ",")) {
+      llvm::objcopy::parseDumpOffloadBundle(URIStr);
+    }
----------------
jhuber6 wrote:

```suggestion
    for (StringRef URIStr : llvm::split(A->getValue(), ","))
      llvm::objcopy::parseDumpOffloadBundle(URIStr);
```

https://github.com/llvm/llvm-project/pull/143347


More information about the llvm-commits mailing list