patches/uClibc/0.9.30/150-getaddrinfo-segfault-ipv6-and-ipv4.patch
author Anthony Foiani <anthony.foiani@gmail.com>
Thu May 19 23:06:16 2011 +0200 (2011-05-19)
changeset 2461 ec30b191f0e3
permissions -rw-r--r--
complibs/ppl: build only C and C++ interfaces for PPL

By default, PPL wants to build interfaces for any of a variety of
langauges it finds on the local host (python, java, possibly perl, also
more esoteric languages such as ocaml and prolog).

These extra interfaces can double the compile time for the library. For
single-process builds, I found a savings of more than 40%:

default / j1: 716s total, 143.2s avg, 0.52s stdev
just_c / j1: 406s total, 81.2s avg, 0.33s stdev
just_c_cpp / j1: 413s total, 82.6s avg, 0.22s stdev

And for multi-process builds, it approached 50%:

default / j4: 625s total, 125.0s avg, 0.57s stdev
just_c / j4: 338s total, 67.6s avg, 1.25s stdev
just_c_cpp / j4: 327s total, 65.4s avg, 0.36s stdev

Since the PPL we build within ct-ng is only used by GCC, we only need to
build the C and C++ interfaces.

Signed-Off-By: Anthony Foiani <anthony.foiani@gmail.com>
yann@1217
     1
From: Tomoyoshi ASANO <asa@lineo.co.jp>
yann@1217
     2
Message ID: <20081208073522.0AEF.22C34B8C@lineo.co.jp>
yann@1217
     3
yann@1217
     4
Hello,
yann@1217
     5
yann@1217
     6
I have SEGV at busybox's telnet with uClibc-0.9.30.
yann@1217
     7
It seem the current uClibc-trunk has the same problem.
yann@1217
     8
yann@1217
     9
Thanks,
yann@1217
    10
-- Tom
yann@1217
    11
yann@1217
    12
diff -ru uClibc-0.9.30.orig/libc/inet/getaddrinfo.c uClibc-0.9.30/libc/inet/getaddrinfo.c
yann@1217
    13
--- uClibc-0.9.30.orig/libc/inet/getaddrinfo.c	2008-10-28 17:25:10.000000000 +0100
yann@1217
    14
+++ uClibc-0.9.30/libc/inet/getaddrinfo.c	2009-02-26 14:20:06.000000000 +0100
yann@1217
    15
@@ -186,7 +186,7 @@
yann@1217
    16
 			return seen;
yann@1217
    17
 		}
yann@1217
    18
 
yann@1217
    19
-		for (runp = ifa; runp != NULL; runp = runp->ifa_next)
yann@1217
    20
+		for (runp = ifa; runp != NULL; runp = runp->ifa_next) {
yann@1217
    21
 #if defined __UCLIBC_HAS_IPV4__
yann@1217
    22
 			if (runp->ifa_addr->sa_family == PF_INET)
yann@1217
    23
 				seen |= SEEN_IPV4;
yann@1217
    24
@@ -195,7 +195,7 @@
yann@1217
    25
 			if (runp->ifa_addr->sa_family == PF_INET6)
yann@1217
    26
 				seen |= SEEN_IPV6;
yann@1217
    27
 #endif /* __UCLIBC_HAS_IPV6__ */
yann@1217
    28
-
yann@1217
    29
+                }
yann@1217
    30
 		freeifaddrs(ifa);
yann@1217
    31
 	}
yann@1217
    32
 #else