Skip to content

Commit c3eb13c

Browse files
[projmgr] Increase severity of missing specified regions header and unknown access sequence warnings
1 parent 4aa8899 commit c3eb13c

File tree

7 files changed

+48
-18
lines changed

7 files changed

+48
-18
lines changed

tools/projmgr/include/ProjMgrWorker.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -864,7 +864,7 @@ class ProjMgrWorker {
864864
bool ProvidedConnectionsMatch(ConnectionsCollection collection, ConnectionsList connections);
865865
StrSet GetValidSets(ContextItem& context, const std::string& clayer);
866866
void SetDefaultLinkerScript(ContextItem& context);
867-
void CheckAndGenerateRegionsHeader(ContextItem& context);
867+
bool CheckAndGenerateRegionsHeader(ContextItem& context);
868868
bool GenerateRegionsHeader(ContextItem& context, std::string& generatedRegionsFile);
869869
void ExpandAccessSequence(const ContextItem& context, const ContextItem& refContext, const std::string& sequence, const std::string& outdir, std::string& item, bool withHeadingDot);
870870
void ExpandPackDir(ContextItem& context, const std::string& pack, std::string& item);

tools/projmgr/src/ProjMgrWorker.cpp

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2013,15 +2013,10 @@ bool ProjMgrWorker::AddRequiredComponents(ContextItem& context) {
20132013
ProjMgrLogger::Get().Error(msg, context.name);
20142014
return false;
20152015
}
2016-
// Check regions header, generate it if needed
2017-
if (!context.linker.regions.empty()) {
2018-
CheckAndGenerateRegionsHeader(context);
2019-
}
2020-
20212016
return true;
20222017
}
20232018

2024-
void ProjMgrWorker::CheckAndGenerateRegionsHeader(ContextItem& context) {
2019+
bool ProjMgrWorker::CheckAndGenerateRegionsHeader(ContextItem& context) {
20252020
const string regionsHeader = RteFsUtils::MakePathCanonical(fs::path(context.directories.cprj).append(context.linker.regions).generic_string());
20262021
if (!RteFsUtils::Exists(regionsHeader)) {
20272022
string generatedRegionsFile;
@@ -2030,8 +2025,10 @@ void ProjMgrWorker::CheckAndGenerateRegionsHeader(ContextItem& context) {
20302025
}
20312026
}
20322027
if (!RteFsUtils::Exists(regionsHeader)) {
2033-
ProjMgrLogger::Get().Warn("specified regions header was not found", context.name, regionsHeader);
2028+
ProjMgrLogger::Get().Error("specified regions header was not found", context.name, regionsHeader);
2029+
return false;
20342030
}
2031+
return true;
20352032
}
20362033

20372034
string ProjMgrWorker::GetContextRteFolder(ContextItem& context) {
@@ -2577,7 +2574,7 @@ bool ProjMgrWorker::ProcessGpdsc(ContextItem& context) {
25772574
}
25782575
}
25792576
}
2580-
if (!gpdscInfos.empty()) {
2577+
if (!gpdscInfos.empty() && !context.gpdscs.empty()) {
25812578
// Update target with gpdsc model
25822579
if (!SetTargetAttributes(context, context.targetAttributes)) {
25832580
return false;
@@ -3332,8 +3329,8 @@ bool ProjMgrWorker::ProcessSequenceRelative(ContextItem& context, string& item,
33323329
}
33333330
} else {
33343331
// access sequence is unknown
3335-
ProjMgrLogger::Get().Warn("unknown access sequence: '" + sequence + "'", context.name);
3336-
continue;
3332+
ProjMgrLogger::Get().Error("unknown access sequence: '" + sequence + "'", context.name);
3333+
return false;
33373334
}
33383335
}
33393336
}
@@ -3664,6 +3661,10 @@ bool ProjMgrWorker::ProcessContext(ContextItem& context, bool loadGenFiles, bool
36643661
ret &= ProcessGpdsc(context);
36653662
ret &= ProcessGeneratedLayers(context);
36663663
}
3664+
// Check regions header, generate it if needed
3665+
if (!context.linker.regions.empty()) {
3666+
ret &= CheckAndGenerateRegionsHeader(context);
3667+
}
36673668
ret &= ProcessConfigFiles(context);
36683669
ret &= ProcessComponentFiles(context);
36693670
ret &= ProcessExecutes(context);

tools/projmgr/test/data/TestSolution/LinkerOptions/layer/linker.clayer.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ layer:
55
components:
66
- component: Board:Test:Rev1
77
- component: Device:Startup&RteTest Startup
8-
for-context: [.PriorityRegions, .PriorityDefines]
8+
for-context: [.PriorityRegions, .PriorityDefines, .Debug_GCC]
99
- component: RteTest:CORE
1010
for-context: [.PriorityRegions, .PriorityDefines]
1111

tools/projmgr/test/data/TestSolution/LinkerOptions/ref/linker.Debug_GCC+RteTest_ARMCM3.cbuild.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,29 @@ build:
4545
- file: ${CMSIS_PACK_ROOT}/ARM/RteTest_DFP/0.2.0/Device/ARM/ARMCM0/Include/ARMCM0.h
4646
category: header
4747
version: 1.1.1
48+
- component: ARM::Device:Startup&RteTest [email protected]
49+
condition: ARMCM3 RteTest
50+
from-pack: ARM::[email protected]
51+
selected-by: Device:Startup&RteTest Startup
52+
files:
53+
- file: ${CMSIS_PACK_ROOT}/ARM/RteTest_DFP/0.2.0/Device/ARM/ARMCM3/Include/ARMCM3.h
54+
category: header
55+
version: 2.0.3
56+
- file: https://arm-software.github.io/CMSIS_5/Core_A/html/startup_c_pg.html
57+
category: doc
58+
version: 2.0.3
59+
- file: ../data/TestSolution/LinkerOptions/layer/RTE/Device/RteTest_ARMCM3/gcc_arm.ld
60+
category: linkerScript
61+
attr: config
62+
version: 2.2.0
63+
- file: ../data/TestSolution/LinkerOptions/layer/RTE/Device/RteTest_ARMCM3/startup_ARMCM3.c
64+
category: sourceC
65+
attr: config
66+
version: 2.0.3
67+
- file: ../data/TestSolution/LinkerOptions/layer/RTE/Device/RteTest_ARMCM3/system_ARMCM3.c
68+
category: sourceC
69+
attr: config
70+
version: 1.2.2
4871
linker:
4972
script: ../data/TestSolution/LinkerOptions/layer/linkerScript.ld
5073
regions: ../data/TestSolution/LinkerOptions/layer/RTE/Device/RteTest_ARMCM3/regions_RteTest_ARMCM3.h
@@ -69,3 +92,4 @@ build:
6992
- pack: ARM::[email protected]
7093
components:
7194
- component: ARM::Board:Test:[email protected]
95+
- component: ARM::Device:Startup&RteTest [email protected]

tools/projmgr/test/data/TestSolution/LinkerOptions/ref/linker.Debug_GCC+RteTest_ARMCM3.cprj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@
2323

2424
<components>
2525
<component Cclass="Board" Cgroup="Test" Csub="Rev1" Cvendor="ARM" Cversion="1.1.1"/>
26+
<component Cclass="Device" Cgroup="Startup" Cvariant="RteTest Startup" Cvendor="ARM" Cversion="2.0.3" rtedir="../data/TestSolution/LinkerOptions/layer/RTE">
27+
<file attr="config" category="linkerScript" name="Device/ARM/ARMCM3/Source/GCC/gcc_arm.ld" version="2.2.0"/>
28+
<file attr="config" category="sourceC" name="Device/ARM/ARMCM3/Source/startup_ARMCM3.c" version="2.0.3"/>
29+
<file attr="config" category="sourceC" name="Device/ARM/ARMCM3/Source/system_ARMCM3.c" version="1.2.2"/>
30+
</component>
2631
</components>
2732

2833
<files>

tools/projmgr/test/src/ProjMgrUnitTests.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5389,10 +5389,10 @@ TEST_F(ProjMgrUnitTests, ExternalGenerator_WrongGenDir) {
53895389
argv[5] = (char*)"-c";
53905390
argv[6] = (char*)"core0.Debug+MultiCore";
53915391
argv[7] = (char*)"-n";
5392-
EXPECT_EQ(0, RunProjMgr(8, argv, m_envp));
5392+
EXPECT_EQ(1, RunProjMgr(8, argv, m_envp));
53935393

53945394
const string expected = "\
5395-
warning csolution: unknown access sequence: 'UnknownAccessSequence()'\n\
5395+
error csolution: unknown access sequence: 'UnknownAccessSequence()'\n\
53965396
";
53975397
auto errStr = streamRedirect.GetErrorString();
53985398
EXPECT_TRUE(errStr.find(expected) != string::npos);

tools/projmgr/test/src/ProjMgrWorkerUnitTests.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1518,10 +1518,10 @@ TEST_F(ProjMgrWorkerUnitTests, CheckAndGenerateRegionsHeader) {
15181518
// Generation fails
15191519
context.directories.cprj = testoutput_folder;
15201520
context.linker.regions = "regions_RteTest_ARMCM0.h";
1521-
CheckAndGenerateRegionsHeader(context);
1521+
EXPECT_FALSE(CheckAndGenerateRegionsHeader(context));
15221522
expectedErrStr = "\
15231523
warning csolution: regions header file generation failed\n\
1524-
.*/regions_RteTest_ARMCM0.h - warning csolution: specified regions header was not found\n\
1524+
.*/regions_RteTest_ARMCM0.h - error csolution: specified regions header was not found\n\
15251525
";
15261526
errStr = streamRedirect.GetErrorString();
15271527
EXPECT_TRUE(regex_match(errStr, regex(expectedErrStr)));
@@ -1531,9 +1531,9 @@ warning csolution: regions header file generation failed\n\
15311531
context.targetAttributes["Dname"] = "RteTest_ARMCM0";
15321532
EXPECT_TRUE(SetTargetAttributes(context, context.targetAttributes));
15331533
streamRedirect.ClearStringStreams();
1534-
CheckAndGenerateRegionsHeader(context);
1534+
EXPECT_FALSE(CheckAndGenerateRegionsHeader(context));
15351535
expectedOutStr = ".*/Device/RteTest_ARMCM0/regions_RteTest_ARMCM0.h - info csolution: regions header generated successfully\n";
1536-
expectedErrStr = ".*/regions_RteTest_ARMCM0.h - warning csolution: specified regions header was not found\n";
1536+
expectedErrStr = ".*/regions_RteTest_ARMCM0.h - error csolution: specified regions header was not found\n";
15371537
outStr = streamRedirect.GetOutString();
15381538
errStr = streamRedirect.GetErrorString();
15391539
EXPECT_TRUE(regex_match(outStr, regex(expectedOutStr)));

0 commit comments

Comments
 (0)