Gnu Toolchain/GLIBC/FAQ

From Devpit
Jump to: navigation, search


Q: When compiling my application why do I get the following warning?

*** glibc detected *** /usr/local/bin/oprofiled: malloc(): memory corruption: 0x

A: Are you doing a malloc() between a fork() and an exec()? Don't! And this means don't call any functions which do a malloc() at this time.

GLIBC configure FAQ

Q: Why does glibc give me the following warning when configuring?

#error "glibc cannot be compiled without optimization

A: Read the explanation given by Carlos O'Donell and Ulrich Drepper. Then configure GLIBC with -O2 optimization.

Q: Why does glibc give me the following error when configuring?

*** It seems that you're using an old `crypt' add-on.  crypt is now
*** part of glibc and using the old add-on will not work with this
*** release.  Start again with fresh sources and without the old
*** `crypt' add-on.

A: Without an --enable-add-ons option, configure will search for subdirectories containing add-ons to enable by default. This search includes the outdated crypt add-on. Specify the add-ons you want to enable using the --enable-add-ons option.

GLIBC make check FAQ

Q: When I added the following test to the file:

TEST_f_l (llround, 0x1.0000000000001p+52,4503599627370497LL);

and ran make check I got the following warning:

libm-test.c:4390: warning: overflow in implicit constant conversion

But when I made a test program using the exact same values I didn't get this warning. What's going on?

A: You're using the wrong TEST_ macro for the return type. You're telling the test framework that the return type is type 'long' when it is actually type 'long long'. Use TEST_f_L, e.g.

TEST_f_L (llround, 0x1.0000000000001p+52,4503599627370497LL);

Q: After I added a new test to the libm-tests Makefile variable the math testsuite tests are no longer being executed. What is happening?

A: If you added to the libm-tests Makefile variable like in the following example:

ifeq ($(subdir),math)
libm-tests = test-powerpc-fenv

You NEED to make sure you aren't overwriting the variable, which is what happens when you use =, rather than appending to it with +=, e.g.:

ifeq ($(subdir),math)
libm-tests += test-powerpc-fenv