[llvm] Add --dump-offload-bundle option to llvm-objcopy (PR #143347)
David Salinas via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 11 08:22:20 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);
+ }
----------------
david-salinas wrote:
ok
https://github.com/llvm/llvm-project/pull/143347
More information about the llvm-commits
mailing list