[gem5-dev] Change in gem5/gem5[develop]: sim: Add some methods to create derived symbol tables.

2020-05-19 Thread Gabe Black (Gerrit) via gem5-dev
Gabe Black has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/24786 )


Change subject: sim: Add some methods to create derived symbol tables.
..

sim: Add some methods to create derived symbol tables.

These tables are based on passing the symbols in the current table
through some sort of operator function which can chose to add those
symbols, modified versions of those symbols, or nothing at all into a
new symbol table.

The new table is returned as a shared_ptr so its memory will be
managed automatically.

Change-Id: I8809336e2fc2fda63b16a0400536116ca852ca13
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/24786
Reviewed-by: Gabe Black 
Maintainer: Gabe Black 
Tested-by: kokoro 
---
M src/base/loader/symtab.hh
1 file changed, 78 insertions(+), 0 deletions(-)

Approvals:
  Gabe Black: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/base/loader/symtab.hh b/src/base/loader/symtab.hh
index 30f0a4f..1e99fec 100644
--- a/src/base/loader/symtab.hh
+++ b/src/base/loader/symtab.hh
@@ -29,8 +29,10 @@
 #ifndef __SYMTAB_HH__
 #define __SYMTAB_HH__

+#include 
 #include 
 #include 
+#include 
 #include 
 #include 

@@ -56,6 +58,9 @@

 class SymbolTable
 {
+  public:
+typedef std::shared_ptr SymbolTablePtr;
+
   private:
 typedef std::vector SymbolVector;
 // Map addresses to an index into the symbol vector.
@@ -80,6 +85,39 @@
 return true;
 }

+typedef std::function SymTabOp;
+SymbolTablePtr
+operate(SymTabOp op) const
+{
+SymbolTablePtr symtab(new SymbolTable);
+for (const auto &symbol: symbols)
+op(*symtab, symbol);
+return symtab;
+}
+
+typedef std::function SymTabFilter;
+SymbolTablePtr
+filter(SymTabFilter filter) const
+{
+SymTabOp apply_filter =
+[filter](SymbolTable &symtab, const Symbol &symbol) {
+if (filter(symbol)) {
+symtab.insert(symbol);
+}
+};
+return operate(apply_filter);
+}
+
+SymbolTablePtr
+filterByBinding(Symbol::Binding binding) const
+{
+auto filt = [binding](const Symbol &symbol) {
+return symbol.binding == binding;
+};
+return filter(filt);
+}
+
   public:
 typedef SymbolVector::iterator iterator;
 typedef SymbolVector::const_iterator const_iterator;
@@ -95,6 +133,46 @@
 bool load(const std::string &file);
 bool empty() const { return symbols.empty(); }

+SymbolTablePtr
+offset(Addr by) const
+{
+SymTabOp op = [by](SymbolTable &symtab, const Symbol &symbol) {
+Symbol sym = symbol;
+sym.address += by;
+symtab.insert(sym);
+};
+return operate(op);
+}
+
+SymbolTablePtr
+mask(Addr m) const
+{
+SymTabOp op = [m](SymbolTable &symtab, const Symbol &symbol) {
+Symbol sym = symbol;
+sym.address &= m;
+symtab.insert(sym);
+};
+return operate(op);
+}
+
+SymbolTablePtr
+globals() const
+{
+return filterByBinding(Symbol::Binding::Global);
+}
+
+SymbolTablePtr
+locals() const
+{
+return filterByBinding(Symbol::Binding::Local);
+}
+
+SymbolTablePtr
+weaks() const
+{
+return filterByBinding(Symbol::Binding::Weak);
+}
+
 void serialize(const std::string &base, CheckpointOut &cp) const;
 void unserialize(const std::string &base, CheckpointIn &cp,
  Symbol::Binding  
default_binding=Symbol::Binding::Global);


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/24786
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I8809336e2fc2fda63b16a0400536116ca852ca13
Gerrit-Change-Number: 24786
Gerrit-PatchSet: 33
Gerrit-Owner: Gabe Black 
Gerrit-Reviewer: Bobby R. Bruce 
Gerrit-Reviewer: Bradford Beckmann 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-dev] Change in gem5/gem5[release-staging-v20.0.0.0]: mem-ruby: Added M5_CLASS_VAR_USED to m_id in OutputUnit

2020-05-19 Thread Bobby R. Bruce (Gerrit) via gem5-dev
Bobby R. Bruce has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/29304 )


Change subject: mem-ruby: Added M5_CLASS_VAR_USED to m_id in OutputUnit
..

mem-ruby: Added M5_CLASS_VAR_USED to m_id in OutputUnit

Clang 9 throws an error that 'm_id' is unused (encountered when
compiling X86.fast). M5_CLASS_VAR_USED has been added to avoid this
error.

Change-Id: I722edd1429a074ff484b5ebbdc431af0089561b5
Issue-on: https://gem5.atlassian.net/browse/GEM5-560
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29304
Maintainer: Bobby R. Bruce 
Reviewed-by: Jason Lowe-Power 
Tested-by: kokoro 
---
M src/mem/ruby/network/garnet2.0/OutputUnit.hh
1 file changed, 2 insertions(+), 1 deletion(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved
  Bobby R. Bruce: Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/ruby/network/garnet2.0/OutputUnit.hh  
b/src/mem/ruby/network/garnet2.0/OutputUnit.hh

index c720888..dbb35ee 100644
--- a/src/mem/ruby/network/garnet2.0/OutputUnit.hh
+++ b/src/mem/ruby/network/garnet2.0/OutputUnit.hh
@@ -35,6 +35,7 @@
 #include 
 #include 

+#include "base/compiler.hh"
 #include "mem/ruby/common/Consumer.hh"
 #include "mem/ruby/network/garnet2.0/CommonTypes.hh"
 #include "mem/ruby/network/garnet2.0/NetworkLink.hh"
@@ -91,7 +92,7 @@

   private:
 Router *m_router;
-int m_id;
+int M5_CLASS_VAR_USED m_id;
 PortDirection m_direction;
 int m_vc_per_vnet;
 NetworkLink *m_out_link;

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/29304
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: release-staging-v20.0.0.0
Gerrit-Change-Id: I722edd1429a074ff484b5ebbdc431af0089561b5
Gerrit-Change-Number: 29304
Gerrit-PatchSet: 3
Gerrit-Owner: Bobby R. Bruce 
Gerrit-Reviewer: Bobby R. Bruce 
Gerrit-Reviewer: Hoa Nguyen 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Srikant Bharadwaj 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-dev] Change in gem5/gem5[develop]: mem-garnet: Remove extraneous loop in Router resetStats.

2020-05-19 Thread Polydoros Petrakis (Gerrit) via gem5-dev
Polydoros Petrakis has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/29254 )



Change subject: mem-garnet: Remove extraneous loop in Router resetStats.
..

mem-garnet: Remove extraneous loop in Router resetStats.

This outer loop makes no sense.

Change-Id: Ibe4b8b50c5843fba2119906f59ea1cb6c1d8c762
---
M src/mem/ruby/network/garnet2.0/Router.cc
1 file changed, 1 insertion(+), 3 deletions(-)



diff --git a/src/mem/ruby/network/garnet2.0/Router.cc  
b/src/mem/ruby/network/garnet2.0/Router.cc

index 14c0e84..73b7dce 100644
--- a/src/mem/ruby/network/garnet2.0/Router.cc
+++ b/src/mem/ruby/network/garnet2.0/Router.cc
@@ -215,10 +215,8 @@
 void
 Router::resetStats()
 {
-for (int j = 0; j < m_virtual_networks; j++) {
-for (int i = 0; i < m_input_unit.size(); i++) {
+for (int i = 0; i < m_input_unit.size(); i++) {
 m_input_unit[i]->resetStats();
-}
 }

 crossbarSwitch.resetStats();

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/29254
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ibe4b8b50c5843fba2119906f59ea1cb6c1d8c762
Gerrit-Change-Number: 29254
Gerrit-PatchSet: 1
Gerrit-Owner: Polydoros Petrakis 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-dev] Change in gem5/gem5[develop]: mem-garnet,mem-ruby: Properly reset garnet2.0 statistics.

2020-05-19 Thread Polydoros Petrakis (Gerrit) via gem5-dev
Polydoros Petrakis has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/29253 )



Change subject: mem-garnet,mem-ruby: Properly reset garnet2.0 statistics.
..

mem-garnet,mem-ruby: Properly reset garnet2.0 statistics.

Statistics for crossbar activity, and link related statistics were not  
getting reset when using m5_reset_stats.


Change-Id: Ib84c55200e4a86c6f9190de28498112bd43dde9d
---
M src/mem/ruby/network/garnet2.0/GarnetNetwork.cc
M src/mem/ruby/network/garnet2.0/GarnetNetwork.hh
M src/mem/ruby/system/RubySystem.cc
3 files changed, 13 insertions(+), 0 deletions(-)



diff --git a/src/mem/ruby/network/garnet2.0/GarnetNetwork.cc  
b/src/mem/ruby/network/garnet2.0/GarnetNetwork.cc

index 1eff921..83ec4a1 100644
--- a/src/mem/ruby/network/garnet2.0/GarnetNetwork.cc
+++ b/src/mem/ruby/network/garnet2.0/GarnetNetwork.cc
@@ -415,6 +415,17 @@
 }

 void
+GarnetNetwork::resetStats()
+{
+for (int i = 0; i < m_routers.size(); i++) {
+m_routers[i]->resetStats();
+}
+for (int i = 0; i < m_networklinks.size(); i++) {
+m_networklinks[i]->resetStats();
+}
+}
+
+void
 GarnetNetwork::print(ostream& out) const
 {
 out << "[GarnetNetwork]";
diff --git a/src/mem/ruby/network/garnet2.0/GarnetNetwork.hh  
b/src/mem/ruby/network/garnet2.0/GarnetNetwork.hh

index 9acbeef..3821dd8 100644
--- a/src/mem/ruby/network/garnet2.0/GarnetNetwork.hh
+++ b/src/mem/ruby/network/garnet2.0/GarnetNetwork.hh
@@ -101,6 +101,7 @@
 // Stats
 void collateStats();
 void regStats();
+void resetStats();
 void print(std::ostream& out) const;

 // increment counters
diff --git a/src/mem/ruby/system/RubySystem.cc  
b/src/mem/ruby/system/RubySystem.cc

index 57d4966..2aeff8c 100644
--- a/src/mem/ruby/system/RubySystem.cc
+++ b/src/mem/ruby/system/RubySystem.cc
@@ -407,6 +407,7 @@
 RubySystem::resetStats()
 {
 m_start_cycle = curCycle();
+m_network->resetStats();
 }

 bool

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/29253
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ib84c55200e4a86c6f9190de28498112bd43dde9d
Gerrit-Change-Number: 29253
Gerrit-PatchSet: 1
Gerrit-Owner: Polydoros Petrakis 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-dev] Change in gem5/gem5[develop]: arch,base,cpu,sim: Statically allocate debugSymbolTable.

2020-05-19 Thread Gabe Black (Gerrit) via gem5-dev
Gabe Black has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/24785 )


Change subject: arch,base,cpu,sim: Statically allocate debugSymbolTable.
..

arch,base,cpu,sim: Statically allocate debugSymbolTable.

This singleton object is used thruoughout the simulator. There is
really no reason not to have it statically allocated, except that
whether it was allocated seems to sometimes be used as a signal that
something already put symbols in it, specifically in SE mode.

To keep that functionality for the moment, this change adds an "empty"
method to the SymbolTable class to make it easy to check if the symbol
table is empty, or if someone already populated it.

Change-Id: Ia93510082d3f9809fc504bc5803254d8c308d572
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/24785
Reviewed-by: Giacomo Travaglini 
Maintainer: Giacomo Travaglini 
Tested-by: kokoro 
---
M src/arch/arm/freebsd/fs_workload.cc
M src/arch/arm/fs_workload.cc
M src/arch/arm/linux/fs_workload.cc
M src/arch/x86/faults.cc
M src/base/cp_annotate.cc
M src/base/loader/symtab.cc
M src/base/loader/symtab.hh
M src/cpu/base.cc
M src/cpu/exetrace.cc
M src/mem/abstract_mem.cc
M src/sim/kernel_workload.cc
M src/sim/process.cc
M src/sim/pseudo_inst.cc
M src/sim/syscall_emul.hh
14 files changed, 27 insertions(+), 32 deletions(-)

Approvals:
  Giacomo Travaglini: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/arch/arm/freebsd/fs_workload.cc  
b/src/arch/arm/freebsd/fs_workload.cc

index ea99b42..e3660d9 100644
--- a/src/arch/arm/freebsd/fs_workload.cc
+++ b/src/arch/arm/freebsd/fs_workload.cc
@@ -83,7 +83,7 @@
 if (params()->early_kernel_symbols) {
 kernelObj->loadGlobalSymbols(kernelSymtab, 0, 0, _loadAddrMask);
 kernelObj->loadGlobalSymbols(
-Loader::debugSymbolTable, 0, 0, _loadAddrMask);
+&Loader::debugSymbolTable, 0, 0, _loadAddrMask);
 }

 // Check if the kernel image has a symbol that tells us it supports
diff --git a/src/arch/arm/fs_workload.cc b/src/arch/arm/fs_workload.cc
index 09c7bb2..4c654b8 100644
--- a/src/arch/arm/fs_workload.cc
+++ b/src/arch/arm/fs_workload.cc
@@ -91,7 +91,7 @@
  "Can't find a matching boot loader / kernel combination!");

 if (bootldr)
-bootldr->loadGlobalSymbols(Loader::debugSymbolTable);
+bootldr->loadGlobalSymbols(&Loader::debugSymbolTable);
 }

 void
diff --git a/src/arch/arm/linux/fs_workload.cc  
b/src/arch/arm/linux/fs_workload.cc

index 9ebb117..7f0853f 100644
--- a/src/arch/arm/linux/fs_workload.cc
+++ b/src/arch/arm/linux/fs_workload.cc
@@ -78,7 +78,7 @@
 if (params()->early_kernel_symbols) {
 kernelObj->loadGlobalSymbols(kernelSymtab, 0, 0, _loadAddrMask);
 kernelObj->loadGlobalSymbols(
-Loader::debugSymbolTable, 0, 0, _loadAddrMask);
+&Loader::debugSymbolTable, 0, 0, _loadAddrMask);
 }

 // Setup boot data structure
diff --git a/src/arch/x86/faults.cc b/src/arch/x86/faults.cc
index 98bd107..0754da3 100644
--- a/src/arch/x86/faults.cc
+++ b/src/arch/x86/faults.cc
@@ -169,7 +169,7 @@
 panic("Tried to %s unmapped address %#x.\nPC: %#x,  
Instr: %s",

   modeStr, addr, tc->pcState().pc(),
   inst->disassemble(tc->pcState().pc(),
-  Loader::debugSymbolTable));
+  &Loader::debugSymbolTable));
 }
 }
 }
diff --git a/src/base/cp_annotate.cc b/src/base/cp_annotate.cc
index c886e39..159e6e0 100644
--- a/src/base/cp_annotate.cc
+++ b/src/base/cp_annotate.cc
@@ -163,7 +163,7 @@
 Addr junk;
 char sm[50];
 if (!TheISA::inUserMode(tc))
-Loader::debugSymbolTable->findNearestSymbol(
+Loader::debugSymbolTable.findNearestSymbol(
 tc->readIntReg(ReturnAddressReg), st, junk);

 tc->getVirtProxy().readString(sm, sm_string, 50);
@@ -337,7 +337,7 @@
 Addr sym_addr = 0;

 if (!TheISA::inUserMode(tc)) {
-Loader::debugSymbolTable->findNearestSymbol(next_pc, sym,  
sym_addr);

+Loader::debugSymbolTable.findNearestSymbol(next_pc, sym, sym_addr);
 } else {
 Linux::ThreadInfo ti(tc);
 string app = ti.curTaskName();
@@ -390,7 +390,7 @@
 std::string st;
 Addr junk;
 if (!TheISA::inUserMode(tc))
-Loader::debugSymbolTable->findNearestSymbol(
+Loader::debugSymbolTable.findNearestSymbol(
 tc->readIntReg(ReturnAddressReg), st, junk);
 System *sys = tc->getSystemPtr();
 StringWrap name(sys->name());
diff --git a/src/base/loader/symtab.cc b/src/base/loader/symtab.cc
index a8e1a15..eaada22 100644
--- a/src/base/loader/symtab.cc
+++ b/src/base/loader/symtab.cc
@@ -44,7 +44,7 @@
 namespace Loader
 {

-SymbolTable *debugSymbolTable = NULL;
+SymbolTable debugSymbolTable;

 void
 Symbol

[gem5-dev] Change in gem5/gem5[develop]: arch,base,cpu,kern,sim: Encapsulate symbols in a class.

2020-05-19 Thread Gabe Black (Gerrit) via gem5-dev
Gabe Black has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/24784 )


Change subject: arch,base,cpu,kern,sim: Encapsulate symbols in a class.
..

arch,base,cpu,kern,sim: Encapsulate symbols in a class.

The SymbolTable class had been tracking symbols as two independent
pieces, a name and an address, and acted as a way to translate between
them. Symbols can be more complex than that, and so this change
encapsulates the information associated with a symbol in a new class.

As a step towards simplifying the API for reading symbols from a
binary, this change also adds a "binding" field to that class so that
global, local and weak symbols can all go in the same table and be
differentiated later as needed. That should unify the current API
which has a method for each symbol type.

While the innards of SymbolTable were being reworked, this change
also makes that class more STL like by adding iterators, and begin
and end methods. These iterate over a new vector which holds all the
symbols. The address and name keyed maps now hold indexes into that
vector instead of the other half of the symbol.

Change-Id: I8084f86fd737f697ec041bac86a635a315fd1194
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/24784
Reviewed-by: Giacomo Travaglini 
Maintainer: Gabe Black 
Tested-by: kokoro 
---
M src/arch/arm/freebsd/fs_workload.cc
M src/arch/arm/insts/static_inst.cc
M src/arch/arm/linux/fs_workload.cc
M src/arch/arm/stacktrace.cc
M src/arch/generic/linux/threadinfo.hh
M src/arch/mips/isa/formats/branch.isa
M src/arch/power/insts/branch.cc
M src/arch/riscv/bare_metal/fs_workload.hh
M src/arch/sparc/fs_workload.hh
M src/arch/sparc/insts/branch.cc
M src/arch/x86/stacktrace.cc
M src/base/loader/elf_object.cc
M src/base/loader/symtab.cc
M src/base/loader/symtab.hh
M src/cpu/base.cc
M src/cpu/exetrace.cc
M src/cpu/profile.cc
M src/kern/linux/helpers.cc
M src/sim/kernel_workload.hh
M src/sim/pseudo_inst.cc
M src/sim/workload.hh
M src/unittest/nmtest.cc
M src/unittest/symtest.cc
23 files changed, 274 insertions(+), 239 deletions(-)

Approvals:
  Giacomo Travaglini: Looks good to me, approved
  Gabe Black: Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/arch/arm/freebsd/fs_workload.cc  
b/src/arch/arm/freebsd/fs_workload.cc

index 91a1d89..ea99b42 100644
--- a/src/arch/arm/freebsd/fs_workload.cc
+++ b/src/arch/arm/freebsd/fs_workload.cc
@@ -88,8 +88,7 @@

 // Check if the kernel image has a symbol that tells us it supports
 // device trees.
-Addr addr;
-fatal_if(!kernelSymtab->findAddress("fdt_get_range", addr),
+fatal_if(kernelSymtab->find("fdt_get_range") == kernelSymtab->end(),
  "Kernel must have fdt support.");
 fatal_if(params()->dtb_filename == "", "dtb file is not specified.");

diff --git a/src/arch/arm/insts/static_inst.cc  
b/src/arch/arm/insts/static_inst.cc

index 70e5fb9..9c686f6 100644
--- a/src/arch/arm/insts/static_inst.cc
+++ b/src/arch/arm/insts/static_inst.cc
@@ -393,18 +393,19 @@
 ArmStaticInst::printTarget(std::ostream &os, Addr target,
const Loader::SymbolTable *symtab) const
 {
-Addr symbolAddr;
-std::string symbol;
-
-if (symtab && symtab->findNearestSymbol(target, symbol, symbolAddr)) {
-ccprintf(os, "<%s", symbol);
-if (symbolAddr != target)
-ccprintf(os, "+%d>", target - symbolAddr);
-else
-ccprintf(os, ">");
-} else {
-ccprintf(os, "%#x", target);
+if (symtab) {
+auto it = symtab->findNearest(target);
+if (it != symtab->end()) {
+ccprintf(os, "<%s", it->name);
+Addr delta = target - it->address;
+if (delta)
+ccprintf(os, "+%d>", delta);
+else
+ccprintf(os, ">");
+return;
+}
 }
+ccprintf(os, "%#x", target);
 }

 void
@@ -477,13 +478,14 @@
   const Addr addr,
   const std::string &suffix) const
 {
-Addr symbolAddr;
-std::string symbol;
-if (symtab && symtab->findNearestSymbol(addr, symbol, symbolAddr)) {
-ccprintf(os, "%s%s", prefix, symbol);
-if (symbolAddr != addr)
-ccprintf(os, "+%d", addr - symbolAddr);
-ccprintf(os, suffix);
+if (symtab) {
+auto it = symtab->findNearest(addr);
+if (it != symtab->end()) {
+ccprintf(os, "%s%s", prefix, it->name);
+if (it->address != addr)
+ccprintf(os, "+%d", addr - it->address);
+ccprintf(os, suffix);
+}
 }
 }

diff --git a/src/arch/arm/linux/fs_workload.cc  
b/src/arch/arm/linux/fs_workload.cc

index cc28193..9ebb117 100644
--- a/src/arch/arm/linux/fs_workload.cc
+++ b/src/arch/arm/linux/fs_workload.cc
@@ -82,11 +82,10 @@
 }

 // Setup boot data structure
-Addr addr;
 /

[gem5-dev] Change in gem5/gem5[release-staging-v20.0.0.0]: misc: Tagged API methods in sim/drain.hh

2020-05-19 Thread Bobby R. Bruce (Gerrit) via gem5-dev
Bobby R. Bruce has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/27988 )


Change subject: misc: Tagged API methods in sim/drain.hh
..

misc: Tagged API methods in sim/drain.hh

Change-Id: Id584d0be027048064d5f650ae0f2ea5a7f075a47
Issue-on: https://gem5.atlassian.net/browse/GEM5-172
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/27988
Reviewed-by: Bobby R. Bruce 
Maintainer: Bobby R. Bruce 
Tested-by: kokoro 
---
A src/doxygen/group_definitions.hh
M src/sim/drain.hh
2 files changed, 38 insertions(+), 3 deletions(-)

Approvals:
  Bobby R. Bruce: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/doxygen/group_definitions.hh  
b/src/doxygen/group_definitions.hh

new file mode 100644
index 000..8b3e14c
--- /dev/null
+++ b/src/doxygen/group_definitions.hh
@@ -0,0 +1,5 @@
+/**
+ * @defgroup api_drain The Drain API.
+ *
+ * These methods relate to the "Drainable" interface.
+ */
diff --git a/src/sim/drain.hh b/src/sim/drain.hh
index a775c06..0d74923 100644
--- a/src/sim/drain.hh
+++ b/src/sim/drain.hh
@@ -65,6 +65,8 @@
  * the world through Drainable::getState()) could be used to determine
  * if all objects have entered the Drained state, the protocol is
  * actually a bit more elaborate. See Drainable::drain() for details.
+ *
+ * @ingroup api_drain
  */
 enum class DrainState {
 Running,  /** Running normally */
@@ -113,11 +115,15 @@
  *
  * @return true if all objects were drained successfully, false if
  * more simulation is needed.
+ *
+ * @ingroup api_drain
  */
 bool tryDrain();

 /**
  * Resume normal simulation in a Drained system.
+ *
+ * @ingroup api_drain
  */
 void resume();

@@ -131,18 +137,30 @@
  * state since the state isn't stored in checkpoints. This method
  * performs state fixups on all Drainable objects and the
  * DrainManager itself.
+ *
+ * @ingroup api_drain
  */
 void preCheckpointRestore();

-/** Check if the system is drained */
+/**
+ * Check if the system is drained
+ *
+ * @ingroup api_drain
+ */
 bool isDrained() const { return _state == DrainState::Drained; }

-/** Get the simulators global drain state */
+/**
+ * Get the simulators global drain state
+ *
+ * @ingroup api_drain
+ */
 DrainState state() const { return _state; }

 /**
  * Notify the DrainManager that a Drainable object has finished
  * draining.
+ *
+ * @ingroup api_drain
  */
 void signalDrainDone();

@@ -246,11 +264,15 @@
  * @return DrainState::Drained if the object is drained at this
  * point in time, DrainState::Draining if it needs further
  * simulation.
+ *
+ * @ingroup api_drain
  */
 virtual DrainState drain() = 0;

 /**
  * Resume execution after a successful drain.
+ *
+ * @ingroup api_drain
  */
 virtual void drainResume() {};

@@ -261,6 +283,8 @@
  * into a state where it is ready to be drained. The method is
  * safe to call multiple times and there is no need to check that
  * draining has been requested before calling this method.
+ *
+ * @ingroup api_drain
  */
 void signalDrainDone() const {
 switch (_drainState) {
@@ -276,7 +300,11 @@
 }

   public:
-/** Return the current drain state of an object. */
+/**
+ * Return the current drain state of an object.
+ *
+ * @ingroup api_drain
+ */
 DrainState drainState() const { return _drainState; }

 /**
@@ -290,6 +318,8 @@
  *
  * This method is only called in the child of the fork. The call
  * takes place in a drained system.
+ *
+ * @ingroup api_drain
  */
 virtual void notifyFork() {};


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/27988
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: release-staging-v20.0.0.0
Gerrit-Change-Id: Id584d0be027048064d5f650ae0f2ea5a7f075a47
Gerrit-Change-Number: 27988
Gerrit-PatchSet: 7
Gerrit-Owner: Bobby R. Bruce 
Gerrit-Reviewer: Alec Roelke 
Gerrit-Reviewer: Ali Saidi 
Gerrit-Reviewer: Anthony Gutierrez 
Gerrit-Reviewer: Bobby R. Bruce 
Gerrit-Reviewer: Bradford Beckmann 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Matt Sinclair 
Gerrit-Reviewer: Matthew Poremba 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-dev] Change in gem5/gem5[release-staging-v20.0.0.0]: misc,sim: Tagged API methods in sim/serialize.hh

2020-05-19 Thread Bobby R. Bruce (Gerrit) via gem5-dev
Bobby R. Bruce has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/27989 )


Change subject: misc,sim: Tagged API methods in sim/serialize.hh
..

misc,sim: Tagged API methods in sim/serialize.hh

Within this some light refactoring has been carried out to avoid
accessing member variable directly and removing some unused/unneeded
ones from the codebase.

Change-Id: I458494f6466628b213816c81f6a8ce42fb91dc3f
Issue-on: https://gem5.atlassian.net/browse/GEM5-172
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/27989
Reviewed-by: Bobby R. Bruce 
Maintainer: Bobby R. Bruce 
Tested-by: kokoro 
---
M src/dev/storage/disk_image.cc
M src/doxygen/group_definitions.hh
M src/mem/physical.cc
M src/mem/ruby/system/RubySystem.cc
M src/sim/serialize.cc
M src/sim/serialize.hh
6 files changed, 232 insertions(+), 28 deletions(-)

Approvals:
  Bobby R. Bruce: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/dev/storage/disk_image.cc b/src/dev/storage/disk_image.cc
index 1578ea3..319bccf 100644
--- a/src/dev/storage/disk_image.cc
+++ b/src/dev/storage/disk_image.cc
@@ -444,7 +444,7 @@
 {
 string cowFilename;
 UNSERIALIZE_SCALAR(cowFilename);
-cowFilename = cp.cptDir + "/" + cowFilename;
+cowFilename = cp.getCptDir() + "/" + cowFilename;
 open(cowFilename);
 }

diff --git a/src/doxygen/group_definitions.hh  
b/src/doxygen/group_definitions.hh

index 8b3e14c..e8a1cd9 100644
--- a/src/doxygen/group_definitions.hh
+++ b/src/doxygen/group_definitions.hh
@@ -3,3 +3,9 @@
  *
  * These methods relate to the "Drainable" interface.
  */
+
+/**
+ * @defgroup api_serialize The Serialize API.
+ *
+ * These methods related to the "Serialize" interface.
+ */
diff --git a/src/mem/physical.cc b/src/mem/physical.cc
index b4246a3..4bd812c 100644
--- a/src/mem/physical.cc
+++ b/src/mem/physical.cc
@@ -401,7 +401,7 @@

 string filename;
 UNSERIALIZE_SCALAR(filename);
-string filepath = cp.cptDir + "/" + filename;
+string filepath = cp.getCptDir() + "/" + filename;

 // mmap memoryfile
 gzFile compressed_mem = gzopen(filepath.c_str(), "rb");
diff --git a/src/mem/ruby/system/RubySystem.cc  
b/src/mem/ruby/system/RubySystem.cc

index 57d4966..c28f880 100644
--- a/src/mem/ruby/system/RubySystem.cc
+++ b/src/mem/ruby/system/RubySystem.cc
@@ -331,7 +331,7 @@

 UNSERIALIZE_SCALAR(cache_trace_file);
 UNSERIALIZE_SCALAR(cache_trace_size);
-cache_trace_file = cp.cptDir + "/" + cache_trace_file;
+cache_trace_file = cp.getCptDir() + "/" + cache_trace_file;

 readCompressedTrace(cache_trace_file, uncompressed_trace,
 cache_trace_size);
diff --git a/src/sim/serialize.cc b/src/sim/serialize.cc
index 6a71dd2..4bb2ab5 100644
--- a/src/sim/serialize.cc
+++ b/src/sim/serialize.cc
@@ -66,9 +66,9 @@

 using namespace std;

-int Serializable::ckptMaxCount = 0;
-int Serializable::ckptCount = 0;
-int Serializable::ckptPrevCount = -1;
+int ckptMaxCount = 0;
+int ckptCount = 0;
+int ckptPrevCount = -1;
 std::stack Serializable::path;

 /
@@ -266,9 +266,9 @@
 }

 CheckpointIn::CheckpointIn(const string &cpt_dir, SimObjectResolver  
&resolver)

-: db(new IniFile), objNameResolver(resolver), cptDir(setDir(cpt_dir))
+: db(new IniFile), objNameResolver(resolver), _cptDir(setDir(cpt_dir))
 {
-string filename = cptDir + "/" + CheckpointIn::baseFilename;
+string filename = getCptDir() + "/" + CheckpointIn::baseFilename;
 if (!db->load(filename)) {
 fatal("Can't load checkpoint file '%s'\n", filename);
 }
diff --git a/src/sim/serialize.hh b/src/sim/serialize.hh
index 92b14a9..1f31dd2 100644
--- a/src/sim/serialize.hh
+++ b/src/sim/serialize.hh
@@ -72,11 +72,17 @@

 SimObjectResolver &objNameResolver;

+const std::string _cptDir;
+
   public:
 CheckpointIn(const std::string &cpt_dir, SimObjectResolver &resolver);
 ~CheckpointIn();

-const std::string cptDir;
+/**
+ * @ingroup api_serialize
+ * @{
+ */
+const std::string getCptDir() { return _cptDir; }

 bool find(const std::string §ion, const std::string &entry,
   std::string &value);
@@ -84,9 +90,9 @@
 bool findObj(const std::string §ion, const std::string &entry,
  SimObject *&value);

-
 bool entryExists(const std::string §ion, const std::string &entry);
 bool sectionExists(const std::string §ion);
+/** @}*/ //end of api_checkout group

 // The following static functions have to do with checkpoint
 // creation rather than restoration.  This class makes a handy
@@ -99,16 +105,28 @@
 // current directory we're serializing into.
 static std::string currentDirectory;

+
   public:
-// Set the current directory.  This function takes care of
-// inserting curTick() if there's a '%d' in the argument, and
-// appe

[gem5-dev] Change in gem5/gem5[release-staging-v20.0.0.0]: misc,sim: Tagged API methods and variables in eventq.hh

2020-05-19 Thread Bobby R. Bruce (Gerrit) via gem5-dev
Bobby R. Bruce has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/28388 )


Change subject: misc,sim: Tagged API methods and variables in eventq.hh
..

misc,sim: Tagged API methods and variables in eventq.hh

Change-Id: I76018d4aa08f9bd42a152ec7e0222a0385d3b895
Issue-on: https://gem5.atlassian.net/browse/GEM5-172
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28388
Tested-by: kokoro 
Reviewed-by: Bobby R. Bruce 
Maintainer: Bobby R. Bruce 
---
M src/doxygen/group_definitions.hh
M src/sim/eventq.hh
2 files changed, 276 insertions(+), 50 deletions(-)

Approvals:
  Bobby R. Bruce: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/doxygen/group_definitions.hh  
b/src/doxygen/group_definitions.hh

index e8a1cd9..c0599bb 100644
--- a/src/doxygen/group_definitions.hh
+++ b/src/doxygen/group_definitions.hh
@@ -9,3 +9,9 @@
  *
  * These methods related to the "Serialize" interface.
  */
+
+/**
+ * @defgroup api_eventq The Event Queue API.
+ *
+ * These methods relate to the event queue interface.
+ */
diff --git a/src/sim/eventq.hh b/src/sim/eventq.hh
index 2976e11..522b394 100644
--- a/src/sim/eventq.hh
+++ b/src/sim/eventq.hh
@@ -111,6 +111,9 @@
 static const FlagsType InitMask  = 0xffc0; // mask for init bits

   public:
+/**
+ * @ingroup api_eventq
+ */
 typedef int8_t Priority;

 /// Event priorities, to provide tie-breakers for events scheduled
@@ -118,61 +121,117 @@
 /// priority; these values are used to control events that need to
 /// be ordered within a cycle.

-/// Minimum priority
+/**
+ * Minimum priority
+ *
+ * @ingroup api_eventq
+ */
 static const Priority Minimum_Pri =  SCHAR_MIN;

-/// If we enable tracing on a particular cycle, do that as the
-/// very first thing so we don't miss any of the events on
-/// that cycle (even if we enter the debugger).
+/**
+ * If we enable tracing on a particular cycle, do that as the
+ * very first thing so we don't miss any of the events on
+ * that cycle (even if we enter the debugger).
+ *
+ * @ingroup api_eventq
+ */
 static const Priority Debug_Enable_Pri =  -101;

-/// Breakpoints should happen before anything else (except
-/// enabling trace output), so we don't miss any action when
-/// debugging.
+/**
+ * Breakpoints should happen before anything else (except
+ * enabling trace output), so we don't miss any action when
+ * debugging.
+ *
+ * @ingroup api_eventq
+ */
 static const Priority Debug_Break_Pri =   -100;

-/// CPU switches schedule the new CPU's tick event for the
-/// same cycle (after unscheduling the old CPU's tick event).
-/// The switch needs to come before any tick events to make
-/// sure we don't tick both CPUs in the same cycle.
+/**
+ * CPU switches schedule the new CPU's tick event for the
+ * same cycle (after unscheduling the old CPU's tick event).
+ * The switch needs to come before any tick events to make
+ * sure we don't tick both CPUs in the same cycle.
+ *
+ * @ingroup api_eventq
+ */
 static const Priority CPU_Switch_Pri = -31;

-/// For some reason "delayed" inter-cluster writebacks are
-/// scheduled before regular writebacks (which have default
-/// priority).  Steve?
+/**
+ * For some reason "delayed" inter-cluster writebacks are
+ * scheduled before regular writebacks (which have default
+ * priority).  Steve?
+ *
+ * @ingroup api_eventq
+ */
 static const Priority Delayed_Writeback_Pri =   -1;

-/// Default is zero for historical reasons.
+/**
+ * Default is zero for historical reasons.
+ *
+ * @ingroup api_eventq
+ */
 static const Priority Default_Pri =  0;

-/// DVFS update event leads to stats dump therefore given a lower  
priority

-/// to ensure all relevant states have been updated
+/**
+ * DVFS update event leads to stats dump therefore given a lower  
priority

+ * to ensure all relevant states have been updated
+ *
+ * @ingroup api_eventq
+ */
 static const Priority DVFS_Update_Pri = 31;

-/// Serailization needs to occur before tick events also, so
-/// that a serialize/unserialize is identical to an on-line
-/// CPU switch.
+/**
+ * Serailization needs to occur before tick events also, so
+ * that a serialize/unserialize is identical to an on-line
+ * CPU switch.
+ *
+ * @ingroup api_eventq
+ */
 static const Priority Serialize_Pri =   32;

-/// CPU ticks must come after other associated CPU events
-/// (such as writebacks).
+/**
+ * CPU ticks must come after other associated CPU events
+ 

[gem5-dev] Change in gem5/gem5[release-staging-v20.0.0.0]: misc,sim: Tagged API methods in sim/simobject.hh

2020-05-19 Thread Bobby R. Bruce (Gerrit) via gem5-dev
Bobby R. Bruce has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/28407 )


Change subject: misc,sim: Tagged API methods in sim/simobject.hh
..

misc,sim: Tagged API methods in sim/simobject.hh

Change-Id: I1d4f5b67828e3bef64d781831cec4b25d6fcb6b9
Issue-on: https://gem5.atlassian.net/browse/GEM5-172
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28407
Tested-by: kokoro 
Reviewed-by: Bobby R. Bruce 
Maintainer: Bobby R. Bruce 
---
M src/doxygen/group_definitions.hh
M src/sim/sim_object.hh
2 files changed, 46 insertions(+), 2 deletions(-)

Approvals:
  Bobby R. Bruce: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/doxygen/group_definitions.hh  
b/src/doxygen/group_definitions.hh

index e6e39b7..40069e0 100644
--- a/src/doxygen/group_definitions.hh
+++ b/src/doxygen/group_definitions.hh
@@ -21,3 +21,9 @@
  *
  * These methods relate to the statistics I/O interface.
  */
+
+/**
+ * @defgroup api_simobject The SimObject API.
+ *
+ * These methods relate to the SimObject interface.
+ */
diff --git a/src/sim/sim_object.hh b/src/sim/sim_object.hh
index 05c1b3e..de89fbf 100644
--- a/src/sim/sim_object.hh
+++ b/src/sim/sim_object.hh
@@ -103,17 +103,29 @@
 ProbeManager *probeManager;

   protected:
-/** Cached copy of the object parameters. */
+/**
+ * Cached copy of the object parameters.
+ *
+ * @ingroup api_simobject
+ */
 const SimObjectParams *_params;

   public:
 typedef SimObjectParams Params;
+/**
+ * @ingroup api_simobject
+ * @{
+ */
 const Params *params() const { return _params; }
 SimObject(const Params *_params);
+/** @}*/ //end of the api_simobject group
 virtual ~SimObject();

   public:

+/**
+ * @ingroup api_simobject
+ */
 virtual const std::string name() const { return params()->name; }

 /**
@@ -121,6 +133,8 @@
  * all ports are connected.  Initializations that are independent
  * of unserialization but rely on a fully instantiated and
  * connected SimObject graph should be done here.
+ *
+ * @ingroup api_simobject
  */
 virtual void init();

@@ -134,6 +148,8 @@
  * found.
  *
  * @param cp Checkpoint to restore the state from.
+ *
+ * @ingroup api_serialize
  */
 virtual void loadState(CheckpointIn &cp);

@@ -141,21 +157,29 @@
  * initState() is called on each SimObject when *not* restoring
  * from a checkpoint.  This provides a hook for state
  * initializations that are only required for a "cold start".
+ *
+ * @ingroup api_serialize
  */
 virtual void initState();

 /**
  * Register probe points for this object.
+ *
+ * @ingroup api_simobject
  */
 virtual void regProbePoints();

 /**
  * Register probe listeners for this object.
+ *
+ * @ingroup api_simobject
  */
 virtual void regProbeListeners();

 /**
  * Get the probe manager for this object.
+ *
+ * @ingroup api_simobject
  */
 ProbeManager *getProbeManager();

@@ -167,6 +191,8 @@
  * @param idx Index in the case of a VectorPort
  *
  * @return A reference to the given port
+ *
+ * @ingroup api_simobject
  */
 virtual Port &getPort(const std::string &if_name,
   PortID idx=InvalidPortID);
@@ -176,6 +202,8 @@
  * All state is initialized (including unserialized state, if any,
  * such as the curTick() value), so this is the appropriate place to
  * schedule initial event(s) for objects that need them.
+ *
+ * @ingroup api_simobject
  */
 virtual void startup();

@@ -192,6 +220,8 @@
  * written all its dirty data back to memory. This method is
  * typically used to prepare a system with caches for
  * checkpointing.
+ *
+ * @ingroup api_simobject
  */
 virtual void memWriteback() {};

@@ -205,6 +235,8 @@
  *
  * @warn This does not cause any dirty state to be written
  * back to memory.
+ *
+ * @ingroup api_simobject
  */
 virtual void memInvalidate() {};

@@ -226,6 +258,8 @@
  * Find the SimObject with the given name and return a pointer to
  * it.  Primarily used for interactive debugging.  Argument is
  * char* rather than std::string to make it callable from gdb.
+ *
+ * @ingroup api_simobject
  */
 static SimObject *find(const char *name);
 };
@@ -241,7 +275,11 @@
   public:
 virtual ~SimObjectResolver() { }

-// Find a SimObject given a full path name
+/**
+ * Find a SimObject given a full path name
+ *
+ * @ingroup api_serialize
+ */
 virtual SimObject *resolveSimObject(const std::string &name) = 0;
 };


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/28407
To unsubscribe, or for help writing mail filt

[gem5-dev] Change in gem5/gem5[release-staging-v20.0.0.0]: misc,base,stats: Tagged API methods in base/stats/group.hh

2020-05-19 Thread Bobby R. Bruce (Gerrit) via gem5-dev
Bobby R. Bruce has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/28390 )


Change subject: misc,base,stats: Tagged API methods in base/stats/group.hh
..

misc,base,stats: Tagged API methods in base/stats/group.hh

Change-Id: I61693884d719025f3b1f385793c7a71de0937e79
Issue-on: https://gem5.atlassian.net/browse/GEM5-172
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28390
Tested-by: kokoro 
Reviewed-by: Bobby R. Bruce 
Maintainer: Bobby R. Bruce 
---
M src/base/stats/group.hh
M src/doxygen/group_definitions.hh
2 files changed, 27 insertions(+), 0 deletions(-)

Approvals:
  Bobby R. Bruce: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/base/stats/group.hh b/src/base/stats/group.hh
index 4fd9e79..985bf61 100644
--- a/src/base/stats/group.hh
+++ b/src/base/stats/group.hh
@@ -83,9 +83,14 @@
 class Group
 {
   public:
+/**
+ * @ingroup api_stats
+ * @{
+ */
 Group() = delete;
 Group(const Group &) = delete;
 Group &operator=(const Group &) = delete;
+/** @}*/ //end of api_stats

 /**
  * Construct a new statistics group.
@@ -104,6 +109,8 @@
  * @param parent Parent group to associate this object to.
  * @param name Name of this group, can be NULL to merge this group
  * with the parent group.
+ *
+ * @ingroup api_stats
  */
 Group(Group *parent, const char *name = nullptr);

@@ -117,11 +124,15 @@
  * description. Stat names and descriptions should typically be
  * set from the constructor usingo from the constructor using the
  * ADD_STAT macro.
+ *
+ * @ingroup api_stats
  */
 virtual void regStats();

 /**
  * Callback to reset stats.
+ *
+ * @ingroup api_stats
  */
 virtual void resetStats();

@@ -129,22 +140,30 @@
  * Callback before stats are dumped. This can be overridden by
  * objects that need to perform calculations in addition to the
  * capabiltiies implemented in the stat framework.
+ *
+ * @ingroup api_stats
  */
 virtual void preDumpStats();

 /**
  * Register a stat with this group. This method is normally called
  * automatically when a stat is instantiated.
+ *
+ * @ingroup api_stats
  */
 void addStat(Stats::Info *info);

 /**
  * Get all child groups associated with this object.
+ *
+ * @ingroup api_stats
  */
 const std::map &getStatGroups() const;

 /**
  * Get all stats associated with this object.
+ *
+ * @ingroup api_stats
  */
 const std::vector &getStats() const;

@@ -154,6 +173,8 @@
  * This method may only be called from a Group constructor or from
  * regStats. It's typically only called explicitly from Python
  * when setting up the SimObject hierarchy.
+ *
+ * @ingroup api_stats
  */
 void addStatGroup(const char *name, Group *block);

diff --git a/src/doxygen/group_definitions.hh  
b/src/doxygen/group_definitions.hh

index c0599bb..e6e39b7 100644
--- a/src/doxygen/group_definitions.hh
+++ b/src/doxygen/group_definitions.hh
@@ -15,3 +15,9 @@
  *
  * These methods relate to the event queue interface.
  */
+
+/**
+ * @defgroup api_stats The Stats API.
+ *
+ * These methods relate to the statistics I/O interface.
+ */

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/28390
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: release-staging-v20.0.0.0
Gerrit-Change-Id: I61693884d719025f3b1f385793c7a71de0937e79
Gerrit-Change-Number: 28390
Gerrit-PatchSet: 6
Gerrit-Owner: Bobby R. Bruce 
Gerrit-Reviewer: Alec Roelke 
Gerrit-Reviewer: Ali Saidi 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Anthony Gutierrez 
Gerrit-Reviewer: Bobby R. Bruce 
Gerrit-Reviewer: Bradford Beckmann 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Matt Sinclair 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-dev] Change in gem5/gem5[release-staging-v20.0.0.0]: misc: Added src/doxygen/html to .gitignore

2020-05-19 Thread Bobby R. Bruce (Gerrit) via gem5-dev
Bobby R. Bruce has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/28389 )


Change subject: misc: Added src/doxygen/html to .gitignore
..

misc: Added src/doxygen/html to .gitignore

Previously `src/doxygen` was ignored, but `src/doxygen` contains some
"source" for creating the doxygen html. Therefore this .gitignore entry
has been removed and replaced with one that only ignores the generated
`src/doxygen/html`.

Change-Id: I5add9fe839a00ad9d216d2082beda637ad0ea87d
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28389
Tested-by: kokoro 
Reviewed-by: Bobby R. Bruce 
Maintainer: Bobby R. Bruce 
---
M .gitignore
1 file changed, 1 insertion(+), 1 deletion(-)

Approvals:
  Bobby R. Bruce: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/.gitignore b/.gitignore
index b851a23..a195609 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,7 +8,7 @@
 .*.swp
 .*.swo
 m5out
-/src/doxygen
+/src/doxygen/html
 /ext/dramsim2/DRAMSim2
 /ext/mcpat/regression/*/*.out
 /util/m5/*.o

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/28389
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: release-staging-v20.0.0.0
Gerrit-Change-Id: I5add9fe839a00ad9d216d2082beda637ad0ea87d
Gerrit-Change-Number: 28389
Gerrit-PatchSet: 6
Gerrit-Owner: Bobby R. Bruce 
Gerrit-Reviewer: Alec Roelke 
Gerrit-Reviewer: Ali Saidi 
Gerrit-Reviewer: Anthony Gutierrez 
Gerrit-Reviewer: Bobby R. Bruce 
Gerrit-Reviewer: Bradford Beckmann 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jared Barocsi 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Matt Sinclair 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-dev] Re: Debugging application inside gem5 (m5term)

2020-05-19 Thread Pouya Fotouhi via gem5-dev
Hi Gaurav,

As Ciro mentioned, I think what you need is add-symbol-file (to keep the
existing symbol). To make my life easier, I would still rely on lx-symbols
to load symbols for kernel modules as they are loaded, and only use
add-symbol-file for the binary you want to debug along with the driver
(possibly even after you are done loading kernel modules).

Best,

On Tue, May 19, 2020 at 1:25 PM Ciro Santilli via gem5-dev <
gem5-dev@gem5.org> wrote:

> For the gdbserver approach, I haven't found a guest to host networking
> possibility in gem5 yet:
>
> https://stackoverflow.com/questions/48941494/how-to-do-port-forwarding-from-guest-to-host-and-vice-versa-in-gem5
> but maybe I missed it.
>
> For a non-gdbserver approach, have you tried add-symbol-file as
> mentioned at
> https://stackoverflow.com/questions/26271901/is-it-possible-to-use-gdb-and-qemu-to-debug-linux-user-space-programs-and-kernel/46636070#46636070
> and
> https://stackoverflow.com/questions/20380204/how-to-load-multiple-symbol-files-in-gdb
>
> BTW, have a look into lx-symbols to help with kernel modules in case
> you are not using it yet:
>
> https://cirosantilli.com/linux-kernel-module-cheat/#gdb-step-debug-kernel-module
>
> BTW2 Dealing with userland apps perfectly from gem5 GDB stub
> (including multiple userland programs with same address) asked at:
>
> https://stackoverflow.com/questions/9561546/thread-aware-gdb-for-the-linux-kernel
>
> On Tue, May 19, 2020 at 8:03 PM GAURAV JAIN via gem5-dev
>  wrote:
> >
> > Hi All,
> >
> > We are trying to debug an application running inside gem5 full system.
> >
> > After running gem5, we are using 'gdb vmlinux' to attach to it so as to
> be able to debug the kernel modules.
> >
> > One approach we tried was using the 'file' command to load the symbol
> table for the application and continue. But then that approach would
> overwrite the existing symbol table (for the kernel modules) with that of
> the application which is not what we desire.
> >
> > The second approach we tried was running 'gdbserver' inside m5term and
> then connect to it through a gdb instance running on the host.
> >
> > We did - 'gdbserver localhost:1234 ./app', which seemed to be successful
> in launching a process and Listening on the port 1234.
> >
> > On the host, we did - 'gdb ./app' and from inside it, 'target remote
> :1234'.
> > Doing this did not work and we got the generic error - 'remote:1234
> connection timed out'
> >
> > It'd be great if someone could provide pointers on how can we debug an
> application running in gem5 full system and if either of the two approaches
> mentioned above would work.
> >
> > Thanks,
> > Gaurav
> > ___
> > gem5-dev mailing list -- gem5-dev@gem5.org
> > To unsubscribe send an email to gem5-dev-le...@gem5.org
> > %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
> ___
> gem5-dev mailing list -- gem5-dev@gem5.org
> To unsubscribe send an email to gem5-dev-le...@gem5.org
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
>


-- 
Pouya Fotouhi
PhD Candidate
Department of Electrical and Computer Engineering
University of California, Davis
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-dev] Change in gem5/gem5[release-staging-v20.0.0.0]: misc: Fixed GCN3_X86/HSAIL_X86 compilation errors

2020-05-19 Thread Matthew Poremba (Gerrit) via gem5-dev
Matthew Poremba has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/29305 )



Change subject: misc: Fixed GCN3_X86/HSAIL_X86 compilation errors
..

misc: Fixed GCN3_X86/HSAIL_X86 compilation errors

GCN3_X86 and HSAIL_X86 fail to compile. This patch enables compilation.

Issue-on: https://gem5.atlassian.net/browse/GEM5-556
  https://gem5.atlassian.net/browse/GEM5-561

Change-Id: Ib0882dcc013ac097d0d5ab9c0ca401ea00391616
---
M src/dev/hsa/hsa_device.cc
M src/dev/hsa/hsa_driver.cc
M src/dev/hsa/hsa_packet_processor.cc
3 files changed, 5 insertions(+), 31 deletions(-)



diff --git a/src/dev/hsa/hsa_device.cc b/src/dev/hsa/hsa_device.cc
index c23639e..78ec8e8 100644
--- a/src/dev/hsa/hsa_device.cc
+++ b/src/dev/hsa/hsa_device.cc
@@ -102,9 +102,8 @@
  * grab context zero.
  */
 auto process = sys->getThreadContext(0)->getProcessPtr();
-auto mem_state = process->memState;

-if (!mem_state->translate(vaddr, paddr)) {
+if (!process->pTable->translate(vaddr, paddr)) {
 fatal("failed translation: vaddr 0x%x\n", vaddr);
 }
 }
diff --git a/src/dev/hsa/hsa_driver.cc b/src/dev/hsa/hsa_driver.cc
index 08e1db3..3f5c8eb 100644
--- a/src/dev/hsa/hsa_driver.cc
+++ b/src/dev/hsa/hsa_driver.cc
@@ -87,32 +87,8 @@
  * Now map this virtual address to our PIO doorbell interface
  * in the page tables (non-cacheable).
  */
-mem_state->map(start, device->hsaPacketProc().pioAddr, length, false);
+process->pTable->map(start, device->hsaPacketProc().pioAddr,
+ length, false);
 DPRINTF(HSADriver, "amdkfd doorbell mapped to %xp\n", start);
 return start;
 }
-
-/**
- * Forward relevant parameters to packet processor; queueID
- * is used to link doorbell. The queueIDs are not re-used
- * in current implementation, and we allocate only one page
- * (4096 bytes) for doorbells, so check if this queue ID can
- * be mapped into that page.
- */
-void
-HSADriver::allocateQueue(const SETranslatingPortProxy &mem_proxy, Addr  
ioc_buf)

-{
-TypedBufferArg args(ioc_buf);
-args.copyIn(mem_proxy);
-
-if (VOID_PTR_ADD32(0, queueId) >= (void*)0x1000) {
-fatal("%s: Exceeded maximum number of HSA queues allowed\n",  
name());

-}
-
-args->queue_id = queueId++;
-auto &hsa_pp = device->hsaPacketProc();
-hsa_pp.setDeviceQueueDesc(args->read_pointer_address,
-  args->ring_base_address, args->queue_id,
-  args->ring_size);
-args.copyOut(mem_proxy);
-}
diff --git a/src/dev/hsa/hsa_packet_processor.cc  
b/src/dev/hsa/hsa_packet_processor.cc

index ad59de5..5fa0fbe 100644
--- a/src/dev/hsa/hsa_packet_processor.cc
+++ b/src/dev/hsa/hsa_packet_processor.cc
@@ -127,7 +127,7 @@
   "%s: write of size %d to reg-offset %d (0x%x)\n",
   __FUNCTION__, pkt->getSize(), daddr, daddr);

-uint32_t doorbell_reg = pkt->get();
+uint32_t doorbell_reg = pkt->getLE();

 DPRINTF(HSAPacketProcessor,
 "%s: write data 0x%x to offset %d (0x%x)\n",
@@ -152,9 +152,8 @@
 // new extensions, it will likely be wrong to just arbitrarily grab  
context

 // zero.
 auto process = sys->getThreadContext(0)->getProcessPtr();
-auto mem_state = process->memState;

-if (!mem_state->translate(vaddr, paddr))
+if (!process->pTable->translate(vaddr, paddr))
 fatal("failed translation: vaddr 0x%x\n", vaddr);
 }


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/29305
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: release-staging-v20.0.0.0
Gerrit-Change-Id: Ib0882dcc013ac097d0d5ab9c0ca401ea00391616
Gerrit-Change-Number: 29305
Gerrit-PatchSet: 1
Gerrit-Owner: Matthew Poremba 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-dev] Re: Debugging application inside gem5 (m5term)

2020-05-19 Thread Ciro Santilli via gem5-dev
For the gdbserver approach, I haven't found a guest to host networking
possibility in gem5 yet:
https://stackoverflow.com/questions/48941494/how-to-do-port-forwarding-from-guest-to-host-and-vice-versa-in-gem5
but maybe I missed it.

For a non-gdbserver approach, have you tried add-symbol-file as
mentioned at 
https://stackoverflow.com/questions/26271901/is-it-possible-to-use-gdb-and-qemu-to-debug-linux-user-space-programs-and-kernel/46636070#46636070
and 
https://stackoverflow.com/questions/20380204/how-to-load-multiple-symbol-files-in-gdb

BTW, have a look into lx-symbols to help with kernel modules in case
you are not using it yet:
https://cirosantilli.com/linux-kernel-module-cheat/#gdb-step-debug-kernel-module

BTW2 Dealing with userland apps perfectly from gem5 GDB stub
(including multiple userland programs with same address) asked at:
https://stackoverflow.com/questions/9561546/thread-aware-gdb-for-the-linux-kernel

On Tue, May 19, 2020 at 8:03 PM GAURAV JAIN via gem5-dev
 wrote:
>
> Hi All,
>
> We are trying to debug an application running inside gem5 full system.
>
> After running gem5, we are using 'gdb vmlinux' to attach to it so as to be 
> able to debug the kernel modules.
>
> One approach we tried was using the 'file' command to load the symbol table 
> for the application and continue. But then that approach would overwrite the 
> existing symbol table (for the kernel modules) with that of the application 
> which is not what we desire.
>
> The second approach we tried was running 'gdbserver' inside m5term and then 
> connect to it through a gdb instance running on the host.
>
> We did - 'gdbserver localhost:1234 ./app', which seemed to be successful in 
> launching a process and Listening on the port 1234.
>
> On the host, we did - 'gdb ./app' and from inside it, 'target remote :1234'.
> Doing this did not work and we got the generic error - 'remote:1234 
> connection timed out'
>
> It'd be great if someone could provide pointers on how can we debug an 
> application running in gem5 full system and if either of the two approaches 
> mentioned above would work.
>
> Thanks,
> Gaurav
> ___
> gem5-dev mailing list -- gem5-dev@gem5.org
> To unsubscribe send an email to gem5-dev-le...@gem5.org
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-dev] Debugging application inside gem5 (m5term)

2020-05-19 Thread GAURAV JAIN via gem5-dev
Hi All,

We are trying to debug an application running inside gem5 full system.

After running gem5, we are using 'gdb vmlinux' to attach to it so as to be able 
to debug the kernel modules.

One approach we tried was using the 'file' command to load the symbol table for 
the application and continue. But then that approach would overwrite the 
existing symbol table (for the kernel modules) with that of the application 
which is not what we desire.

The second approach we tried was running 'gdbserver' inside m5term and then 
connect to it through a gdb instance running on the host.

We did - 'gdbserver localhost:1234 ./app', which seemed to be successful in 
launching a process and Listening on the port 1234.

On the host, we did - 'gdb ./app' and from inside it, 'target remote :1234'.
Doing this did not work and we got the generic error - 'remote:1234 connection 
timed out'

It'd be great if someone could provide pointers on how can we debug an 
application running in gem5 full system and if either of the two approaches 
mentioned above would work.

Thanks,
Gaurav
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-dev] Change in gem5/gem5[release-staging-v20.0.0.0]: mem-ruby: Added M5_VAR_USED to m_id in OutputUnit

2020-05-19 Thread Bobby R. Bruce (Gerrit) via gem5-dev
Bobby R. Bruce has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/29304 )



Change subject: mem-ruby: Added M5_VAR_USED to m_id in OutputUnit
..

mem-ruby: Added M5_VAR_USED to m_id in OutputUnit

Clang 9 throws an error that 'm_id' is unused (encountered when
compiling X86.fast). M5_VAR_USED has been added to avoid this error.

Change-Id: I722edd1429a074ff484b5ebbdc431af0089561b5
Issue-on: https://gem5.atlassian.net/browse/GEM5-560
---
M src/mem/ruby/network/garnet2.0/OutputUnit.hh
1 file changed, 2 insertions(+), 1 deletion(-)



diff --git a/src/mem/ruby/network/garnet2.0/OutputUnit.hh  
b/src/mem/ruby/network/garnet2.0/OutputUnit.hh

index c720888..d1009d2 100644
--- a/src/mem/ruby/network/garnet2.0/OutputUnit.hh
+++ b/src/mem/ruby/network/garnet2.0/OutputUnit.hh
@@ -35,6 +35,7 @@
 #include 
 #include 

+#include "base/compiler.hh"
 #include "mem/ruby/common/Consumer.hh"
 #include "mem/ruby/network/garnet2.0/CommonTypes.hh"
 #include "mem/ruby/network/garnet2.0/NetworkLink.hh"
@@ -91,7 +92,7 @@

   private:
 Router *m_router;
-int m_id;
+int M5_VAR_USED m_id;
 PortDirection m_direction;
 int m_vc_per_vnet;
 NetworkLink *m_out_link;

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/29304
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: release-staging-v20.0.0.0
Gerrit-Change-Id: I722edd1429a074ff484b5ebbdc431af0089561b5
Gerrit-Change-Number: 29304
Gerrit-PatchSet: 1
Gerrit-Owner: Bobby R. Bruce 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-dev] Change in gem5/gem5[develop]: cpu: fixed unused variable on fast binary

2020-05-19 Thread Andrea Mondelli (Gerrit) via gem5-dev
Andrea Mondelli has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/29252 )


Change subject: cpu: fixed unused variable on fast binary
..

cpu: fixed unused variable on fast binary

When gem5.fast is compiled, an error on a variable
used only for debug purposes is raised:

build/X86/cpu/o3/mem_dep_unit_impl.hh:262:19: error: unused  
variable 'producing_store' [-Werror=unused-variable]

 for (auto producing_store : producing_stores)

This patch remove the variable when *.fast is used.

Change-Id: Ib77c26073db39644e3525bc16edcb7d3bc871d76
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29252
Tested-by: kokoro 
Reviewed-by: Bobby R. Bruce 
Maintainer: Bobby R. Bruce 
---
M src/cpu/o3/mem_dep_unit_impl.hh
1 file changed, 1 insertion(+), 1 deletion(-)

Approvals:
  Bobby R. Bruce: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/cpu/o3/mem_dep_unit_impl.hh  
b/src/cpu/o3/mem_dep_unit_impl.hh

index 9a50341..d1eac29 100644
--- a/src/cpu/o3/mem_dep_unit_impl.hh
+++ b/src/cpu/o3/mem_dep_unit_impl.hh
@@ -259,7 +259,7 @@
 } else {
 // Otherwise make the instruction dependent on the store/barrier.
 DPRINTF(MemDepUnit, "Adding to dependency list\n");
-for (auto producing_store : producing_stores)
+for (auto M5_VAR_USED producing_store : producing_stores)
 DPRINTF(MemDepUnit, "\tinst PC %s is dependent on  
[sn:%lli].\n",

 inst->pcState(), producing_store);


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/29252
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ib77c26073db39644e3525bc16edcb7d3bc871d76
Gerrit-Change-Number: 29252
Gerrit-PatchSet: 4
Gerrit-Owner: Andrea Mondelli 
Gerrit-Reviewer: Andrea Mondelli 
Gerrit-Reviewer: Bobby R. Bruce 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-dev] Change in gem5/gem5[release-staging-v20.0.0.0]: scons: Revert LTO and partial linking for gcc >=8.1

2020-05-19 Thread Bobby R. Bruce (Gerrit) via gem5-dev
Bobby R. Bruce has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/29272 )


Change subject: scons: Revert LTO and partial linking for gcc >=8.1
..

scons: Revert LTO and partial linking for gcc >=8.1

This reverts commit f41abbdb5cf5c67233f3d730885d43517969afda,
"scons: Enable LTO and partial linking with gcc >= 8.1."

LTO and partial linking does not work on GCC 9.3 on Ubuntu 20.04 when
compiling gem5.fast. This error was exposed via the following command:

```
docker run -u $UID:$GID --volume $(pwd):/gem5 -w /gem5 --rm \
gcr.io/gem5-test/ubuntu-20.04_all-dependencies:latest scons \
build/MIPS/gem5.fast
```

The following error was received:

```
usr/bin/ld: cannot find lib.fo.partial.lto.o: No such file or directory
/usr/bin/ld: error: could not unlink output file
collect2: error: ld returned 1 exit status
scons: *** [build/MIPS/mem/ruby/system/lib.fo.partial] Error 1
```

Issue-on: https://gem5.atlassian.net/browse/GEM5-555
  https://gem5.atlassian.net/browse/GEM5-557
Change-Id: Id9e7fc81aec9f94524acc92c05aabdf96bd284cd
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29272
Reviewed-by: Jason Lowe-Power 
Maintainer: Jason Lowe-Power 
Tested-by: kokoro 
---
M SConstruct
1 file changed, 11 insertions(+), 6 deletions(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/SConstruct b/SConstruct
index 0a18c3d..82fad3b 100755
--- a/SConstruct
+++ b/SConstruct
@@ -404,22 +404,27 @@

 main['GCC_VERSION'] = gcc_version

-if compareVersions(gcc_version, '4.9') >= 0 and \
-   compareVersions(gcc_version, '8.1') < 0:
+if compareVersions(gcc_version, '4.9') >= 0:
 # Incremental linking with LTO is currently broken in gcc versions
-# 4.9 to 8.1.
+# 4.9 and above. A version where everything works completely hasn't
+# yet been identified.
 #
 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67548
-#
+main['BROKEN_INCREMENTAL_LTO'] = True
+if compareVersions(gcc_version, '6.0') >= 0:
 # gcc versions 6.0 and greater accept an -flinker-output flag which
 # selects what type of output the linker should generate. This is
 # necessary for incremental lto to work, but is also broken in
-# versions of gcc up to 8.1.
+# current versions of gcc. It may not be necessary in future
+# versions. We add it here since it might be, and as a reminder  
that

+# it exists. It's excluded if lto is being forced.
 #
 # https://gcc.gnu.org/gcc-6/changes.html
 # https://gcc.gnu.org/ml/gcc-patches/2015-11/msg03161.html
 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69866
-main['BROKEN_INCREMENTAL_LTO'] = True
+if not GetOption('force_lto'):
+main.Append(PSHLINKFLAGS='-flinker-output=rel')
+main.Append(PLINKFLAGS='-flinker-output=rel')

 disable_lto = GetOption('no_lto')
 if not disable_lto and main.get('BROKEN_INCREMENTAL_LTO', False) and \

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/29272
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: release-staging-v20.0.0.0
Gerrit-Change-Id: Id9e7fc81aec9f94524acc92c05aabdf96bd284cd
Gerrit-Change-Number: 29272
Gerrit-PatchSet: 4
Gerrit-Owner: Bobby R. Bruce 
Gerrit-Reviewer: Bobby R. Bruce 
Gerrit-Reviewer: Earl Ou 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Hoa Nguyen 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-dev] Change in gem5/gem5[release-staging-v20.0.0.0]: misc,sim: Fixed std::array bracket compiler error

2020-05-19 Thread Bobby R. Bruce (Gerrit) via gem5-dev
Bobby R. Bruce has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/29294 )


Change subject: misc,sim: Fixed std::array bracket compiler error
..

misc,sim: Fixed std::array bracket compiler error

For versions of Clang before 6.0, Clang returns an error if and
std::array initialization is not encompassed in two sets of
encompassing braces. This is a known compiler bug:
https://bugs.llvm.org/show_bug.cgi?id=21629.

As we support Clang 3.9 onwards, we are required to include these
redundant braces to ensure compilation. They do not produce any
ill-effects when using later clang compilers or with any GCC compiler
gem5 presently supports.

Change-Id: Ia512a9b9f583b1cfa28f9fc4c24f6e202e46b4cb
Issue-on: https://gem5.atlassian.net/browse/GEM5-563
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29294
Reviewed-by: Pouya Fotouhi 
Reviewed-by: Jason Lowe-Power 
Maintainer: Jason Lowe-Power 
Tested-by: kokoro 
---
M src/arch/arm/semihosting.cc
M src/sim/pseudo_inst.cc
2 files changed, 5 insertions(+), 5 deletions(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved
  Pouya Fotouhi: Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/arch/arm/semihosting.cc b/src/arch/arm/semihosting.cc
index 7711a86..a7a4d2a 100644
--- a/src/arch/arm/semihosting.cc
+++ b/src/arch/arm/semihosting.cc
@@ -581,10 +581,10 @@
 uint64_t heap_base, heap_limit, stack_base, stack_limit;
 gatherHeapInfo(tc, false, heap_base, heap_limit, stack_base,  
stack_limit);


-std::array block = {
+std::array block = {{
 (uint32_t)heap_base, (uint32_t)heap_limit,
 (uint32_t)stack_base, (uint32_t)stack_limit
-};
+}};
 portProxy(tc).write(block_addr, block, ArmISA::byteOrder(tc));

 return retOK(0);
@@ -596,9 +596,9 @@
 uint64_t heap_base, heap_limit, stack_base, stack_limit;
 gatherHeapInfo(tc, true, heap_base, heap_limit, stack_base,  
stack_limit);


-std::array block = {
+std::array block = {{
 heap_base, heap_limit, stack_base, stack_limit
-};
+}};
 portProxy(tc).write(block_addr, block, ArmISA::byteOrder(tc));

 return retOK(0);
diff --git a/src/sim/pseudo_inst.cc b/src/sim/pseudo_inst.cc
index b11a5a4..203afc0 100644
--- a/src/sim/pseudo_inst.cc
+++ b/src/sim/pseudo_inst.cc
@@ -285,7 +285,7 @@
 char key[len];
 memset(key, '\0', len);

-std::array key_regs = { key_str1, key_str2 };
+std::array key_regs = {{ key_str1, key_str2 }};
 key_regs = letoh(key_regs);
 memcpy(key, key_regs.data(), sizeof(key_regs));


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/29294
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: release-staging-v20.0.0.0
Gerrit-Change-Id: Ia512a9b9f583b1cfa28f9fc4c24f6e202e46b4cb
Gerrit-Change-Number: 29294
Gerrit-PatchSet: 3
Gerrit-Owner: Bobby R. Bruce 
Gerrit-Reviewer: Bobby R. Bruce 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Hoa Nguyen 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Pouya Fotouhi 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s