From 6eec3bde9860fdff2bd09b319d63f63e63d23cc1 Mon Sep 17 00:00:00 2001 From: Denis Shienkov Date: Fri, 7 Aug 2020 20:36:22 +0300 Subject: 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 --- share/qbs/modules/cpp/keil.js | 17 ++++++++++++++--- 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"); -- cgit v1.2.3