Fixes Asan warnings about odr-violations (default with current gcc-10, or with
ASAN_OPTIONS='use_odr_indicator=true detect_odr_violation=2').
It may also complete commit
f2e9bf81aebf9a0d39563c3f955fc24e9270d74f
"Explicit instanciation of Extendable<simgrid::s4u::Host>".
#include <simgrid/kernel/routing/NetZoneImpl.hpp>
namespace simgrid {
+
+extern template class XBT_PUBLIC xbt::Extendable<kernel::routing::NetPoint>;
+
namespace kernel {
namespace routing {
#ifdef __cplusplus
namespace simgrid {
+
+extern template class XBT_PUBLIC xbt::Extendable<s4u::File>;
+
namespace s4u {
/** @brief A simulated file
#include <unordered_map>
namespace simgrid {
+
+extern template class XBT_PUBLIC xbt::Extendable<s4u::Actor>;
+
namespace s4u {
/** An actor is an independent stream of execution in your distributed application.
#include <unordered_map>
namespace simgrid {
+
+extern template class XBT_PUBLIC xbt::Extendable<s4u::Disk>;
+
namespace s4u {
/** Disk represent the disk resources associated to a host
namespace simgrid {
-namespace xbt {
-extern template class XBT_PUBLIC Extendable<s4u::Host>;
-} // namespace xbt
+extern template class XBT_PUBLIC xbt::Extendable<s4u::Host>;
namespace s4u {
/** @ingroup s4u_api
***********/
namespace simgrid {
+
+extern template class XBT_PUBLIC xbt::Extendable<s4u::Link>;
+
namespace s4u {
/** @brief A Link represents the network facilities between [hosts](@ref simgrid::s4u::Host) */
class XBT_PUBLIC Link : public xbt::Extendable<Link> {
#include <unordered_map>
namespace simgrid {
+
+extern template class XBT_PUBLIC xbt::Extendable<s4u::Storage>;
+
namespace s4u {
/** Storage represent the disk resources, usually associated to a given host
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route, surf, "Routing part of surf");
namespace simgrid {
+
+template class xbt::Extendable<kernel::routing::NetPoint>;
+
namespace kernel {
namespace routing {
/**************** datatypes **********************************/
namespace simgrid {
+
+extern template class XBT_PUBLIC xbt::Extendable<msg::Task>;
+
namespace msg {
class Task : public xbt::Extendable<Task> {
std::string name_ = "";
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_task, msg, "Logging specific to MSG (task)");
namespace simgrid {
+
+template class xbt::Extendable<msg::Task>;
+
namespace msg {
Task::Task(const std::string& name, double flops_amount, double bytes_amount, void* data)
*/
namespace simgrid {
+
+template class xbt::Extendable<s4u::File>;
+
namespace s4u {
simgrid::xbt::Extension<Disk, FileSystemDiskExt> FileSystemDiskExt::EXTENSION_ID;
simgrid::xbt::Extension<Storage, FileSystemStorageExt> FileSystemStorageExt::EXTENSION_ID;
}
namespace simgrid {
+
+template class xbt::Extendable<vm::VirtualMachineImpl>;
+
namespace vm {
/*************
* Callbacks *
#define VM_INTERFACE_HPP_
namespace simgrid {
+
+extern template class XBT_PUBLIC xbt::Extendable<vm::VirtualMachineImpl>;
+
namespace vm {
/************
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(s4u_actor, s4u, "S4U actors");
namespace simgrid {
+
+template class xbt::Extendable<s4u::Actor>;
+
namespace s4u {
xbt::signal<void(Actor&)> s4u::Actor::on_creation;
#include "src/kernel/resource/DiskImpl.hpp"
namespace simgrid {
-namespace xbt {
-template class Extendable<s4u::Disk>;
-} // namespace xbt
+
+template class xbt::Extendable<s4u::Disk>;
namespace s4u {
XBT_LOG_EXTERNAL_CATEGORY(surf_route);
namespace simgrid {
-namespace xbt {
-template class Extendable<s4u::Host>;
-} // namespace xbt
+
+template class xbt::Extendable<s4u::Host>;
namespace s4u {
#include "xbt/log.h"
namespace simgrid {
+
+template class xbt::Extendable<s4u::Link>;
+
namespace s4u {
xbt::signal<void(Link&)> Link::on_creation;
#include "src/surf/StorageImpl.hpp"
namespace simgrid {
-namespace xbt {
-template class Extendable<s4u::Storage>;
-} // namespace xbt
+
+template class xbt::Extendable<s4u::Storage>;
namespace s4u {