systemc: Get sc_main to work even when dynamically linked.
authorGabe Black <gabeblack@google.com>
Fri, 22 Jun 2018 21:15:28 +0000 (14:15 -0700)
committerGabe Black <gabeblack@google.com>
Wed, 5 Sep 2018 06:00:58 +0000 (06:00 +0000)
commit97018a3b20c129a3413011d205f18189dd1a75c9
tree2fcad74bfdd46403f35773090fce30cc13da0d56
parent642fa515b822aca10839e0382e3a5d94eca20dd2
systemc: Get sc_main to work even when dynamically linked.

Unfortunately multiply defined weak symbols don't work like they're
supposed to when the different versions are across dynamic linking
boundaries.

Fortunately, a weak symbol with no definition at all will still
consistently evaluate as 0, and a singularly defined weak symbol will
still resolve correctly.

Instead of relying on a weak version of sc_main being overridden by a
strong/non-default definition, this change leaves it as undefined and
detects at run time whether the symbol resolves to 0 or to an actual
code location.

Change-Id: I31c4ff769b0c52277c6cf4845ca3f85000009583
Reviewed-on: https://gem5-review.googlesource.com/11610
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
src/systemc/core/sc_main.cc