Med: qblog.h: better explanation + behaviour of QB_LOG_INIT_DATA
Med: qblog.h: better explanation + behaviour of QB_LOG_INIT_DATA

Based on better understanding how link-time callsite collection works,
put a better description for the macro.  Also based on poor user
experience in case that feature does not work well, say because
the linker deliberately changes the previously settled visibility
of the section boundary symbols (happened in ld from binutils-2.29,
fix is forthcoming), tweak the assertion message a bit, together
with an extension of the general intro to point that macro out.
Also play fair, include the <assert.h> header, which this macro
requires.

- use case:
  /usr/sbin/pacemakerd --features

- before:
  pacemakerd: utils.c:69: common:
  Assertion `0' failed

- after:
  pacemakerd: utils.c:69: common:
  Assertion `"non-empty implicit callsite section" && QB_ATTR_SECTION_START != QB_ATTR_SECTION_STOP' failed.

Restructuring of the assertion inspired by the suggestion of Ferenc
Wágner (for the subsequent commit, actually).

And regarding:
> as a side effect, it can ensure the boundary-denoting symbols for
> the target collection area are kept alive with some otherwise unkind
> linkers
this was actually empirically discovered in one particular combination
with ld.bfd @ binutils 2.29, and extensively with 2.29.1 (placing here
a forward reference for the following commits that elaborate on the
libqb-target cross-combination matrix and the findings).

Signed-off-by: Jan Pokorný <f06ec55ecfb6704a26166905f43ade3ead1f75d3@redhat.com>

ClusterLabs/libqb,ClusterLabs/libqb,kgaillot/libqb,kgaillot/libqb,kgaillot/libqb,ClusterLabs/libqb