diff options
author | Denis Shienkov <denis.shienkov@gmail.com> | 2020-08-07 20:36:22 +0300 |
---|---|---|
committer | Denis Shienkov <denis.shienkov@gmail.com> | 2020-08-08 16:33:20 +0000 |
commit | 6eec3bde9860fdff2bd09b319d63f63e63d23cc1 (patch) | |
tree | d122e066555b39c280ea95437debe18cb3d82247 | |
parent | 534794963986ca37d39461db6dbdafb94048a5e3 (diff) |
baremetal: Fix linker MAP file generation for KEIL C51/C251/C166
1. We need to use the {NO}PRINT linker options:
* https://www.keil.com/support/man/docs/bl51/bl51_noprint.htm
2. The KEIL C251 should generate the linker MAP file with the *.map
extension.
Change-Id: Ibc1f362c7010a1c2812c21382b617e246c81e100
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
-rw-r--r-- | share/qbs/modules/cpp/keil.js | 17 | ||||
-rw-r--r-- | tests/auto/blackbox/tst_blackboxbaremetal.cpp | 2 |
2 files changed, 15 insertions, 4 deletions
diff --git a/share/qbs/modules/cpp/keil.js b/share/qbs/modules/cpp/keil.js index efbecb582..f66fd4bb2 100644 --- a/share/qbs/modules/cpp/keil.js +++ b/share/qbs/modules/cpp/keil.js @@ -39,8 +39,17 @@ var TemporaryDir = require("qbs.TemporaryDir"); var TextFile = require("qbs.TextFile"); var Utilities = require("qbs.Utilities"); +function isMcs51Architecture(architecture) { + return architecture === "mcs51"; +} + +function isMcs251Architecture(architecture) { + return architecture === "mcs251"; +} + function isMcsArchitecture(architecture) { - return architecture === "mcs51" || architecture === "mcs251"; + return isMcs51Architecture(architecture) + || isMcs251Architecture(architecture); } function isC166Architecture(architecture) { @@ -156,7 +165,7 @@ function objectSuffix(qbs) { function mapFileSuffix(qbs) { var architecture = qbs.architecture; - if (isMcsArchitecture(architecture)) + if (isMcs51Architecture(architecture)) return ".m51"; if (isC166Architecture(architecture)) return ".m66"; @@ -1049,7 +1058,9 @@ function linkerFlags(project, product, inputs, outputs) { // Map file generation flag. if (!product.cpp.generateLinkerMapFile) - args.push("NOMAP"); + args.push("NOPRINT"); + else + args.push("PRINT(" + FileInfo.toWindowsSeparators(outputs.mem_map[0].filePath) + ")"); } else if (isArmArchitecture(architecture)) { // Inputs. if (inputs.obj) diff --git a/tests/auto/blackbox/tst_blackboxbaremetal.cpp b/tests/auto/blackbox/tst_blackboxbaremetal.cpp index 50be987a2..969de6299 100644 --- a/tests/auto/blackbox/tst_blackboxbaremetal.cpp +++ b/tests/auto/blackbox/tst_blackboxbaremetal.cpp @@ -59,7 +59,7 @@ static QByteArray unsupportedToolsetMessage(const QByteArray &output) static QString linkerMapFileExtension(const QByteArray &toolchain, const QByteArray &architecture) { if (toolchain == "keil") { - if (architecture == "mcs51" || architecture == "mcs251") + if (architecture == "mcs51") return QStringLiteral(".m51"); if (architecture == "c166") return QStringLiteral(".m66"); |