================ @@ -47,6 +76,59 @@ static llvm::cl::opt<bool> OptHostSupportsJit("host-supports-jit", static llvm::cl::list<std::string> OptInputs(llvm::cl::Positional, llvm::cl::desc("[code to run]")); +static llvm::Error sanitizeOopArguments(const char *ArgV0) { + // Only one of -oop-executor and -oop-executor-connect can be used. + if (!!OOPExecutor.getNumOccurrences() && + !!OOPExecutorConnect.getNumOccurrences()) + return llvm::make_error<llvm::StringError>( + "Only one of -" + OOPExecutor.ArgStr + " and -" + + OOPExecutorConnect.ArgStr + " can be specified", + llvm::inconvertibleErrorCode()); + + // If -slab-allocate is passed, check that we're not trying to use it in + // -oop-executor or -oop-executor-connect mode. + // + // FIXME: Remove once we enable remote slab allocation. + if (SlabAllocateSizeString != "") { + if (OOPExecutor.getNumOccurrences() || + OOPExecutorConnect.getNumOccurrences()) + return llvm::make_error<llvm::StringError>( + "-slab-allocate cannot be used with -oop-executor or " + "-oop-executor-connect", + llvm::inconvertibleErrorCode()); + } + + // Out-of-process executors must run with the ORC runtime for destructor + // support. + if (OrcRuntimePath.empty() && (OOPExecutor.getNumOccurrences() || + OOPExecutorConnect.getNumOccurrences())) { + llvm::SmallString<256> OrcPath(llvm::sys::fs::getMainExecutable( + ArgV0, reinterpret_cast<void *>(&sanitizeOopArguments))); + llvm::sys::path::remove_filename(OrcPath); // Remove clang-repl filename. + llvm::sys::path::remove_filename(OrcPath); // Remove ./bin directory. + llvm::Triple SystemTriple(llvm::sys::getProcessTriple()); + llvm::StringRef Path; + if (SystemTriple.isOSBinFormatELF()) + Path = "lib/clang/20/lib/x86_64-unknown-linux-gnu/liborc_rt.a"; + else if (SystemTriple.isOSBinFormatMachO()) + Path = "lib/clang/20/lib/darwin/liborc_rt_osx.a"; ---------------- lhames wrote:
Ok -- Do we expect this relative path to work there in general? This definitely isn't a blocker for this patch landing, but probably worth adding a TODO for: "Make sure this works with installed toolchains". https://github.com/llvm/llvm-project/pull/110418 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits