sim: drop weak func attrs on module inits
authorMike Frysinger <vapier@gentoo.org>
Mon, 27 Sep 2021 04:13:56 +0000 (00:13 -0400)
committerMike Frysinger <vapier@gentoo.org>
Tue, 28 Sep 2021 05:51:38 +0000 (01:51 -0400)
When I first wrote this, I was thinking we'd scan all source files
that existed and generate a complete init list.  That means for any
particular build, we'd probably have a few functions that didn't
exist, so weak attributes was necessary.  What I ended up scanning
though was only the source files that went into a particular build.

There was another concern too: a source file might be included, but
the build settings would cause all of its contents to be skipped
(via CPP defines).  So scanning via naive grep would pick up names
not actually available.  A check of the source tree shows that we
never do this, and it's pretty easy to institute a policy that we
don't start (by at the very least including a stub init func).

The use of weak symbols ends up causing a problem in practice: for
a few modules (like profiling), nothing else pulls it in, so the
linker omits it entirely, which leads to the profiling module never
being available.  So drop the weak markings since we know all these
funcs will be available.

sim/common/Make-common.in

index 8c2cacea1e569a20e666bb73e8bd400d97ed8eb5..c9ea08f3ccb81a8a9c1b70e8c7ff9ee0c87df9ea 100644 (file)
@@ -443,7 +443,7 @@ stamp-modules: Makefile $(SIM_OBJS:.o=.c)
        echo '/* It is created automatically by the Makefile.  */'; \
        echo '#include "libiberty.h"'; \
        echo '#include "sim-module.h"'; \
-       sed -e 's:\(.*\):extern __attribute__((__weak__)) MODULE_INIT_FN \1;:' $@.l-tmp; \
+       sed -e 's:\(.*\):extern MODULE_INIT_FN \1;:' $@.l-tmp; \
        echo 'MODULE_INSTALL_FN * const sim_modules_detected[] = {'; \
        sed -e 's:\(.*\):  \1,:' $@.l-tmp; \
        echo '};'; \