<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">On 09/05/2014 03:36 PM, Gary Robertson
wrote:<br>
</div>
<blockquote
cite="mid:CAF7YWnxMgNYAFH9=TFJvxwumF36KH=nDnZPPUKn3iazOwh1wJA@mail.gmail.com"
type="cite">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div>Dear OE developers,<br>
</div>
<div><br>
</div>
Linaro Networking Group is building root filesystem
images containing the LTP test suite, using the current
recipe at openembedded-core/meta/recipes-extended/ltp/<a
moz-do-not-send="true" href="http://ltp_20140422.bb">ltp_20140422.bb</a>.
This build uses autoconf to probe mutex feature support
for protocol specification, priority inheritance, and
robust mutexes. The macros used for this can be found
in ltp/testcases/realtime/m4/check.m4 from the LTP git
repository.<br>
<br>
</div>
We are cross-building for the armv7a architecture using
the machine definition found in
meta-linaro/meta-linaro/conf/machine/genericarmv7a.conf.
The development host platform is an Ubuntu 12.04 x86_64
platform with all software kept regularly updated from the
Ubuntu repositories.<br>
<br>
</div>
The macros in check.m4 use the AC_TRY_COMPILE function macro
to attempt compilation of POSIX function calls utilizing the
features being probed - such that if the compilation fails
the features are deemed to be unsupported... and if
compilation succeeds the features are deemed supported.<br>
<br>
</div>
Native compilation of the same code used in the probes, and
execution of the resulting program - shows support for all the
probed mutex features on both the development host as well as
the armv7a target platform... that is when this probe code is
built on either the host or target machine and then executed
in that environment... so support is there in both
environments.<br>
<br>
</div>
Despite the presence of this support the AC_TRY_COMPILE macro is
indicating a lack of support for the probed features during the
cross-build process.<br>
<br>
I am not personally familiar with the detailed function of the
autoconf macros, and I can find no documentation about how OE
interacts with those macros in order to coerce them into
configuring for the target machine in a cross-build
environment... so I am hoping the autoconf experts at OE can
shed some light on this and at least provide some clues as to
where to look for the problem and possible resolution. Any
insight you can provide in this matter would be appreciated.<br>
</div>
</blockquote>
<br>
Any mention of "armv7a" and "mutex" points me to
<a class="moz-txt-link-freetext" href="http://cgit.openembedded.org/openembedded-core/commit/?id=0ba6ab39f187ecd4261f08e768f365f461384a3a">http://cgit.openembedded.org/openembedded-core/commit/?id=0ba6ab39f187ecd4261f08e768f365f461384a3a</a>
which fixed a problem where the compiler and runtime disagreed about
the capabilities of the target processor unless special flags were
passed to the compiler. Presence of armv7a enables mutex-related
instructions which affect what support is provided in the C runtime
system; absence of armv7 at compile-time will result in attempts to
locate alternative implementations that are not present.<br>
<br>
It's possible that a similar issue is hitting you, depending on what
options are present in the test compile and whether the libraries
linked to were built with compatible options.<br>
<br>
I tried setting up a meta-linaro + meta-linaro-toolchain build to
see if I could reproduce it, but meta-linaro appears to not be up to
date with the removal of eglibc from oe-core.<br>
<br>
The autoconf test should have left information in the config.log
file showing how it tried to build the application. Having that
information would help with diagnosis.<br>
<br>
Hope this is some help.<br>
<br>
Peter<br>
</body>
</html>