* Daniel P. Berrangé (berra...@redhat.com) wrote: > Functions marked with __attribute__((__constructor__)) will be > invoked in linker order. In theory this is well defined, but > in practice, it is hard to determine what this order will be > with the layers of indirection through meson, ninja and the > static libraries QEMU builds. > > Notably, the order currently appears different between Linux > and Windows (as tested with Wine on Linux). This can cause > problems when certain QEMU constructors have a dependancy on > other QEMU constructors. > > To address this define a QEMU_CONSTRUCTOR_EARLY constant which > provides a priority value that will run before other default > constructors. This is to be used for QEMU constructors that > are themselves self-contained, but may be relied upon by other > constructors. > > Signed-off-by: Daniel P. Berrangé <berra...@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <d...@treblig.org> > --- > include/qemu/compiler.h | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h > index 1c2b673c05..4c49f52eb0 100644 > --- a/include/qemu/compiler.h > +++ b/include/qemu/compiler.h > @@ -194,6 +194,14 @@ > # define QEMU_USED > #endif > > +/* > + * A priority for __attribute__((constructor(...))) that > + * will run earlier than the default constructors. Must > + * only be used for functions that have no dependency > + * on global initialization of other QEMU subsystems. > + */ > +#define QEMU_CONSTRUCTOR_EARLY 101 > + > /* > * Disable -ftrivial-auto-var-init on a local variable. > * > -- > 2.50.1 > -- -----Open up your eyes, open up your mind, open up your code ------- / Dr. David Alan Gilbert | Running GNU/Linux | Happy \ \ dave @ treblig.org | | In Hex / \ _________________________|_____ http://www.treblig.org |_______/