Index: ELF/Config.h =================================================================== --- ELF/Config.h +++ ELF/Config.h @@ -80,6 +80,7 @@ llvm::StringMap SectionStartMap; llvm::StringRef Chroot; llvm::StringRef DynamicLinker; + llvm::StringRef DwoDir; llvm::StringRef Entry; llvm::StringRef Emulation; llvm::StringRef Fini; Index: ELF/Driver.cpp =================================================================== --- ELF/Driver.cpp +++ ELF/Driver.cpp @@ -727,6 +727,7 @@ Config->Demangle = Args.hasFlag(OPT_demangle, OPT_no_demangle, true); Config->DisableVerify = Args.hasArg(OPT_disable_verify); Config->Discard = getDiscard(Args); + Config->DwoDir = Args.getLastArgValue(OPT_plugin_opt_dwo_dir_eq); Config->DynamicLinker = getDynamicLinker(Args); Config->EhFrameHdr = Args.hasFlag(OPT_eh_frame_hdr, OPT_no_eh_frame_hdr, false); Index: ELF/LTO.cpp =================================================================== --- ELF/LTO.cpp +++ ELF/LTO.cpp @@ -99,6 +99,7 @@ C.SampleProfile = Config->LTOSampleProfile; C.UseNewPM = Config->LTONewPassManager; C.DebugPassManager = Config->LTODebugPassManager; + C.DwoDir = Config->DwoDir; if (Config->SaveTemps) checkError(C.addSaveTemps(Config->OutputFile.str() + ".", Index: ELF/Options.td =================================================================== --- ELF/Options.td +++ ELF/Options.td @@ -432,6 +432,8 @@ def: F<"plugin-opt=debug-pass-manager">, Alias, HelpText<"Alias for -lto-debug-pass-manager">; def: F<"plugin-opt=disable-verify">, Alias, HelpText<"Alias for -disable-verify">; +def plugin_opt_dwo_dir_eq: J<"plugin-opt=dwo_dir=">, + HelpText<"Directory to store .dwo files when LTO and debug fission are used">; def: J<"plugin-opt=jobs=">, Alias, HelpText<"Alias for -thinlto-jobs">; def: J<"plugin-opt=lto-partitions=">, Alias, HelpText<"Alias for -lto-partitions">; def plugin_opt_mcpu_eq: J<"plugin-opt=mcpu=">;