diff --git a/lld/MinGW/Driver.cpp b/lld/MinGW/Driver.cpp --- a/lld/MinGW/Driver.cpp +++ b/lld/MinGW/Driver.cpp @@ -216,6 +216,8 @@ add("-base:" + StringRef(a->getValue())); if (auto *a = args.getLastArg(OPT_map)) add("-lldmap:" + StringRef(a->getValue())); + if (auto *a = args.getLastArg(OPT_reproduce)) + add("-reproduce:" + StringRef(a->getValue())); if (auto *a = args.getLastArg(OPT_o)) add("-out:" + StringRef(a->getValue())); diff --git a/lld/MinGW/Options.td b/lld/MinGW/Options.td --- a/lld/MinGW/Options.td +++ b/lld/MinGW/Options.td @@ -63,6 +63,7 @@ HelpText<"Omit all symbol information from the output binary">; def strip_debug: F<"strip-debug">, HelpText<"Omit all debug information, but keep symbol information">; +defm reproduce: Eq<"reproduce", "Write a tar file containing input files and command line options to reproduce link">; defm undefined: Eq<"undefined", "Include symbol in the link, if available">; def whole_archive: F<"whole-archive">, HelpText<"Include all object files for following archives">; diff --git a/lld/test/MinGW/driver.test b/lld/test/MinGW/driver.test --- a/lld/test/MinGW/driver.test +++ b/lld/test/MinGW/driver.test @@ -189,6 +189,9 @@ RUN: ld.lld -### -m i386pep foo.o -Llibpath | FileCheck -check-prefix LIBPATH %s LIBPATH: -libpath:libpath +RUN: ld.lld -### -m i386pep foo.o --reproduce=foo.tar | FileCheck -check-prefix REPRO %s +REPRO: -reproduce:foo.tar + RUN: ld.lld -### -m i386pep foo.o --no-insert-timestamp | FileCheck -check-prefix NOTIMESTAMP %s RUN: ld.lld -### -m i386pep foo.o --insert-timestamp --no-insert-timestamp | FileCheck -check-prefix NOTIMESTAMP %s NOTIMESTAMP: -timestamp:0