Test build failed due to UCLIBC_INTERNAL header rework

Denys Vlasenko vda.linux at googlemail.com
Wed Jun 11 15:58:08 UTC 2008

On Wednesday 11 June 2008 09:29, Carmelo AMOROSO wrote:
> Denys Vlasenko wrote:
> > On Tuesday 10 June 2008 16:27, Carmelo AMOROSO wrote:
> >   
> >> Hello,
> >> recent change on libc_hidden_proto brakes test and utils build.
> >>     
> >
> > Please send your .config
> >
> > I never did "make utils" before, possibly because I usually do static builds...
> > --
> > vda
> >   
> but you should build test at least.. hopefully.

Yes, I do this. It progresses farther than your failure
point (TEST_LINK crypt/ md5c-test), and eventually fails
in TEST_EXEC inet/ tst-network_glibc:

  TEST_EXEC args/ arg_test
  TEST_DIFF args/ arg_test.out arg_test.out.good
  TEST_EXEC args/ arg_test_glibc
  TEST_DIFF args/ arg_test_glibc.out arg_test_glibc.out.good
  TEST_EXEC assert/ assert
  TEST_EXEC assert/ assert_glibc
  TEST_EXEC build/ shell_check_config_options
  TEST_EXEC build/ shell_check_config_options
  TEST_EXEC crypt/ crypt
  TEST_DIFF crypt/ crypt.out crypt.out.good
  TEST_EXEC crypt/ md5c-test
  TEST_EXEC crypt/ crypt_glibc
  TEST_DIFF crypt/ crypt_glibc.out crypt.out.good
  TEST_EXEC crypt/ md5c-test_glibc
  TEST_EXEC ctype/ ctype
  TEST_EXEC ctype/ ctype_glibc
  TEST_EXEC inet/ bug-if1
  TEST_EXEC inet/ gethost_r-align
  TEST_EXEC inet/ if_nameindex
  TEST_EXEC inet/ tst-aton
  TEST_EXEC inet/ tst-ethers-line
  TEST_EXEC inet/ tst-ethers
  TEST_EXEC inet/ tst-network
  TEST_EXEC inet/ tst-ntoa
  TEST_EXEC inet/ bug-if1_glibc
  TEST_EXEC inet/ gethost_r-align_glibc
  TEST_EXEC inet/ if_nameindex_glibc
  TEST_EXEC inet/ tst-aton_glibc
  TEST_EXEC inet/ tst-ethers-line_glibc
  TEST_EXEC inet/ tst-ethers_glibc
  TEST_EXEC inet/ tst-network_glibc
ret == 1 ; expected_ret == 0
Testing: 1.0.0
Testing: 1.0
Testing: 1
Testing: 1410
Testing: 1.1410
Testing: 1.1410.
Testing: 1.1410
Testing: 141.76.1111
Testing: 141.76.1111.
Testing: 0x12
Testing: 127.1
Testing: 0x123456
Testing: 0x12.0x34
Testing: 0x12.0x345
Testing: 1..3.4
Testing: .
Testing: 1.
Testing: .1
Testing: x
Testing: 0x
Test failed for inet_network ("0x"):
Expected return value 4294967295 (0xffffffff) but got 0 (0x0).
Testing: 0
Testing: 0x0
Testing: 0x1.23.045.0
Testing: bar
Testing: 1.2bar
Testing: 1.
Testing: йцукен
Testing: x
Testing: 0X12
Testing: 078
Testing: 1 bar
Test failed for inet_network ("1 bar"):
Expected return value 4294967295 (0xffffffff) but got 1 (0x1).
Testing: 127.0xfff
make[2]: *** [tst-network_glibc.exe] Error 1
make[1]: *** [_dirrun_inet] Error 2
make: *** [test] Error 2

> So now that string.h has been changed again, how is UCLIBC_INTERNALS 
> maco used ?

It is used whenever you want to have something in a header file to be there
only when you build the library, but want to physically remove it
in installed headers (not just logically by #ifdef'ing it out).

The implementation was stolen from linux kernel's "header sanitization step".

libc_hidden_proto was projected to be a big user of it, but then Bernd
came up with even more maintainable way to deal with that one.

Now UCLIBC_INTERNALS is used for printf.h (there existed an ad-hoc solution
which was doing basically the same, but only for this file) and other places.

More information about the uClibc mailing list