================ @@ -9348,11 +9348,22 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA, // Add the linker arguments to be forwarded by the wrapper. CmdArgs.push_back(Args.MakeArgString(Twine("--linker-path=") + LinkCommand->getExecutable())); - for (const char *LinkArg : LinkCommand->getArguments()) - CmdArgs.push_back(LinkArg); - addOffloadCompressArgs(Args, CmdArgs); + // We use action type to differentiate two use cases of the linker wrapper. + // TY_Image for normal linker wrapper work. + // TY_Object for HIP fno-gpu-rdc embedding device binary in a relocatable + // object. + assert(JA.getType() == types::TY_Object || JA.getType() == types::TY_Image); + if (JA.getType() == types::TY_Object) { + CmdArgs.append({"-o", Output.getFilename()}); + for (auto Input : Inputs) ---------------- yxsamliu wrote:
That would include all the arguments from the command line and the generated arguments include the system libraries, whereas we only want to link the wrapper object to the original host object through "-r". It is simpler to create the command line options from scratch and cherry-pick any relevant options from Args if necessary. So far it is working. https://github.com/llvm/llvm-project/pull/132869 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits