[LTP] [RFC] [PATCH] lib: Fix undefined reference to `mq_open' build failures
Cyril Hrubis
chrubis@suse.cz
Wed Apr 5 19:29:06 CEST 2017
Hi!
> > +mqd_t __attribute__((weak)) mq_open(const char *name __attribute__((unused)),
> > + int oflag __attribute__((unused)), ...)
> > +{
> > + tst_brk(TBROK, "mq_open() stub called!");
>
> Maybe expand this to "mq_open() stub called! Add -lrt to linker flags".
Good idea, I will add a hint that -lr is probably missing in LDFLAGS to
the message.
> If we start stubbing a lot of functions then we could have a TST_STUB macro
> which takes the function name, arguments and linker switch (e.g. -lrt) and
> produces a stub.
That could end up quite complicated fast. For instance adding
__attribute__((unused)) to each of the parametes would either need
different version of the macro for each number of arguments or load of
macro trickery...
Let's keep it simple for now.
> > + return 0;
> > +}
> > +
> > int safe_mq_open(const char *file, const int lineno, const char *pathname,
> > int oflags, ...)
> > {
>
> I ran into this problem and the stub fixed it. I wonder why a test which never
> calls SAFE_MQ_OPEN triggers it and others do not and why it does not happen
> consistently. Perhaps the linker tries to do some relocation at a stage when
> the library is not available and whether it tries to do the relocation is
> effected by whatever libraries are available in the environment. I can't think
> why else it would only try to resolve it some of the time?
I do not understand why the problem manifests only rarely either, but I
fear that understanding it would require a few days of research...
--
Cyril Hrubis
chrubis@suse.cz
More information about the ltp
mailing list