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 @@ -695,6 +695,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 @@ -442,6 +442,8 @@ def plugin_opt_thinlto_index_only_eq: J<"plugin-opt=thinlto-index-only=">; def plugin_opt_thinlto_object_suffix_replace_eq: J<"plugin-opt=thinlto-object-suffix-replace=">; def plugin_opt_thinlto_prefix_replace_eq: J<"plugin-opt=thinlto-prefix-replace=">; +def plugin_opt_dwo_dir_eq: J<"plugin-opt=dwo_dir=">, + HelpText<"Diretory to store .dwo files when LTO and debug fission are used">; // Ignore LTO plugin-related options. // clang -flto passes -plugin and -plugin-opt to the linker. This is required