diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp --- a/lld/COFF/Driver.cpp +++ b/lld/COFF/Driver.cpp @@ -1919,25 +1919,6 @@ if (config->mingw || config->debugDwarf) config->warnLongSectionNames = false; - config->lldmapFile = getMapFile(args, OPT_lldmap, OPT_lldmap_file); - config->mapFile = getMapFile(args, OPT_map, OPT_map_file); - - if (config->mapFile != "" && args.hasArg(OPT_map_info)) { - for (auto *arg : args.filtered(OPT_map_info)) { - std::string s = StringRef(arg->getValue()).lower(); - if (s == "exports") - config->mapInfo = true; - else - error("unknown option: /mapinfo:" + s); - } - } - - if (config->lldmapFile != "" && config->lldmapFile == config->mapFile) { - warn("/lldmap and /map have the same output file '" + config->mapFile + - "'.\n>>> ignoring /lldmap"); - config->lldmapFile.clear(); - } - if (config->incremental && args.hasArg(OPT_profile)) { warn("ignoring '/incremental' due to '/profile' specification"); config->incremental = false; @@ -2143,6 +2124,25 @@ return; } + config->lldmapFile = getMapFile(args, OPT_lldmap, OPT_lldmap_file); + config->mapFile = getMapFile(args, OPT_map, OPT_map_file); + + if (config->mapFile != "" && args.hasArg(OPT_map_info)) { + for (auto *arg : args.filtered(OPT_map_info)) { + std::string s = StringRef(arg->getValue()).lower(); + if (s == "exports") + config->mapInfo = true; + else + error("unknown option: /mapinfo:" + s); + } + } + + if (config->lldmapFile != "" && config->lldmapFile == config->mapFile) { + warn("/lldmap and /map have the same output file '" + config->mapFile + + "'.\n>>> ignoring /lldmap"); + config->lldmapFile.clear(); + } + if (shouldCreatePDB) { // Put the PDB next to the image if no /pdb flag was passed. if (config->pdbPath.empty()) { diff --git a/lld/test/COFF/map.test b/lld/test/COFF/map.test --- a/lld/test/COFF/map.test +++ b/lld/test/COFF/map.test @@ -11,6 +11,11 @@ # RUN: lld-link /out:%t.dll /dll %t-dll.obj /export:exportfn1 \ # RUN: /export:foo=exportfn2 /map /mapinfo:exports # RUN: FileCheck -check-prefix=MAPINFO -strict-whitespace %s < %t.map +# RUN: rm -rf %t && mkdir -p %t && cd %t +# RUN: cp %t.obj map.test.tmp.obj +# RUN: cp %t-dll.lib map.test.tmp-dll.lib +# RUN: lld-link /entry:main map.test.tmp.obj map.test.tmp-dll.lib /map +# RUN: FileCheck -check-prefix=MAP -strict-whitespace %s < map.test.tmp.map # MAP: {{.*}} # MAP-EMPTY: