Bart De VOS pointed out that removing absolute paths from the libc linker scripts is plainly wrong.
It dates from dawn ages of the original crosstool code, and is not well explained. At that time, binutils might not understand the sysroot stuff, and it was necessary to remove absolute paths in that case.
/trunk/scripts/build/libc/glibc.sh | 14 2 12 0 ++------------
1 file changed, 2 insertions(+), 12 deletions(-)
1 # This file adds functions to build glibc
2 # Copyright 2007 Yann E. MORIN
3 # Licensed under the GPL v2. See COPYING in the root of this package
6 [ "${CT_LIBC}" = "glibc" ] || return 0
7 echo "glibc-${CT_LIBC_VERSION}"
8 for addon in $(do_libc_add_ons_list " "); do
9 # NPTL addon is not to be downloaded, in any case
10 [ "${addon}" = "nptl" ] && continue || true
11 echo "glibc-${addon}-${CT_LIBC_VERSION}"
17 # Ah! Not all GNU folks seem stupid. All glibc releases are in the same
18 # directory. Good. Alas, there is no snapshot there. I'll deal with them
20 CT_GetFile "${CT_LIBC_FILE}" \
21 {ftp,http}://ftp.gnu.org/gnu/glibc \
22 ftp://gcc.gnu.org/pub/glibc/releases \
23 ftp://gcc.gnu.org/pub/glibc/snapshots
26 for addon in $(do_libc_add_ons_list " "); do
27 # NPTL addon is not to be downloaded, in any case
28 [ "${addon}" = "nptl" ] && continue || true
29 CT_GetFile "${CT_LIBC}-${addon}-${CT_LIBC_VERSION}" \
30 {ftp,http}://ftp.gnu.org/gnu/glibc \
31 ftp://gcc.gnu.org/pub/glibc/releases \
32 ftp://gcc.gnu.org/pub/glibc/snapshots
40 CT_ExtractAndPatch "${CT_LIBC_FILE}"
43 for addon in $(do_libc_add_ons_list " "); do
44 # NPTL addon is not to be extracted, in any case
45 [ "${addon}" = "nptl" ] && continue || true
46 CT_ExtractAndPatch "${CT_LIBC}-${addon}-${CT_LIBC_VERSION}"
52 # There is nothing to do for glibc check config
53 do_libc_check_config() {
57 # This function installs the glibc headers needed to build the core compiler
59 # Only need to install bootstrap glibc headers for gcc-3.0 and above? Or maybe just gcc-3.3 and above?
60 # See also http://gcc.gnu.org/PR8180, which complains about the need for this step.
61 grep -q 'gcc-[34]' "${CT_SRC_DIR}/${CT_CC_FILE}/ChangeLog" 2>/dev/null || return 0
63 CT_DoStep INFO "Installing C library headers"
65 mkdir -p "${CT_BUILD_DIR}/build-libc-headers"
66 cd "${CT_BUILD_DIR}/build-libc-headers"
68 CT_DoLog EXTRA "Configuring C library"
70 # The following three things have to be done to build glibc-2.3.x, but they don't hurt older versions.
71 # 1. override CC to keep glibc's configure from using $TARGET-gcc.
72 # 2. disable linuxthreads, which needs a real cross-compiler to generate tcb-offsets.h properly
73 # 3. build with gcc 3.2 or later
74 # Compare these options with the ones used when building glibc for real below - they're different.
75 # As of glibc-2.3.2, to get this step to work for hppa-linux, you need --enable-hacker-mode
76 # so when configure checks to make sure gcc has access to the assembler you just built...
77 # Alternately, we could put ${PREFIX}/${TARGET}/bin on the path.
78 # Set --build so maybe we don't have to specify "cross-compiling=yes" below (haven't tried yet)
80 # "*** WARNING: Are you sure you do not want to use the `linuxthreads'"
82 # is ok here, since all we want are the basic headers at this point.
83 # Override libc_cv_ppc_machine so glibc-cvs doesn't complain
84 # 'a version of binutils that supports .machine "altivec" is needed'.
86 addons_config="--enable-add-ons=$(do_libc_add_ons_list ,)"
87 # We need to remove any threading addon when installing headers
88 addons_config="${addons_config//nptl/}"
89 addons_config="${addons_config//linuxthreads/}"
90 addons_config=$(echo "${addons_config}" |sed -r -e 's/^,+//; s/,+$//; s/,+/,/g;')
92 extra_config="${addons_config}"
94 case "${CT_LIBC_GLIBC_EXTRA_CONFIG}" in
96 *) if [ "${CT_LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS}" = "y" \
97 -o "${CT_LIBC_GLIBC_USE_HEADERS_MIN_KERNEL}" = "y" ]; then
98 min_kernel_config="--enable-kernel=$(echo ${CT_LIBC_GLIBC_MIN_KERNEL} |sed -r -e 's/^([^.]+\.[^.]+\.[^.]+)(|\.[^.]+)$/\1/;')"
102 extra_config="${extra_config} ${min_kernel_config}"
104 cross_cc=$(CT_Which "${CT_TARGET}-gcc")
105 CT_DoLog DEBUG "Using gcc for target: '${cross_cc}'"
106 CT_DoLog DEBUG "Extra config passed : '${extra_config}'"
108 libc_cv_ppc_machine=yes \
111 "${CT_SRC_DIR}/${CT_LIBC_FILE}/configure" \
112 --build="${CT_UNIQ_BUILD}" \
113 --host="${CT_TARGET}" \
115 --with-headers="${CT_HEADERS_DIR}" \
117 --disable-sanity-checks \
118 --enable-hacker-mode \
122 CT_DoLog EXTRA "Installing C library headers"
124 if grep -q GLIBC_2.3 "${CT_SRC_DIR}/${CT_LIBC_FILE}/ChangeLog"; then
125 # glibc-2.3.x passes cross options to $(CC) when generating errlist-compat.c,
126 # which fails without a real cross-compiler.
127 # Fortunately, we don't need errlist-compat.c, since we just need .h
128 # files, so work around this by creating a fake errlist-compat.c and
129 # satisfying its dependencies.
130 # Another workaround might be to tell configure to not use any cross
132 # The real fix would be to get install-headers to not generate
134 # Note: BOOTSTRAP_GCC is used by:
135 # patches/glibc-2.3.5/glibc-mips-bootstrap-gcc-header-install.patch
137 libc_cv_ppc_machine=yes \
139 make CFLAGS="-O -DBOOTSTRAP_GCC" \
140 OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
141 sysdeps/gnu/errlist.c
142 mkdir -p stdio-common
144 # sleep for 2 seconds for benefit of filesystems with lousy time
145 # resolution, like FAT, so make knows for sure errlist-compat.c doesn't
148 CT_DoExecLog ALL touch stdio-common/errlist-compat.c
150 # Note: BOOTSTRAP_GCC (see above)
151 libc_cv_ppc_machine=yes \
153 make cross-compiling=yes \
154 install_root=${CT_SYSROOT_DIR} \
155 CFLAGS="-O -DBOOTSTRAP_GCC" \
156 ${LIBC_SYSROOT_ARG} \
157 OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
160 # Two headers -- stubs.h and features.h -- aren't installed by install-headers,
161 # so do them by hand. We can tolerate an empty stubs.h for the moment.
162 # See e.g. http://gcc.gnu.org/ml/gcc/2002-01/msg00900.html
163 mkdir -p "${CT_HEADERS_DIR}/gnu"
164 CT_DoExecLog ALL touch "${CT_HEADERS_DIR}/gnu/stubs.h"
165 CT_DoExecLog ALL cp -v "${CT_SRC_DIR}/${CT_LIBC_FILE}/include/features.h" \
166 "${CT_HEADERS_DIR}/features.h"
168 # Building the bootstrap gcc requires either setting inhibit_libc, or
169 # having a copy of stdio_lim.h... see
170 # http://sources.redhat.com/ml/libc-alpha/2003-11/msg00045.html
171 CT_DoExecLog ALL cp -v bits/stdio_lim.h "${CT_HEADERS_DIR}/bits/stdio_lim.h"
173 # Following error building gcc-4.0.0's gcj:
174 # error: bits/syscall.h: No such file or directory
175 # solved by following copy; see http://sourceware.org/ml/crossgcc/2005-05/msg00168.html
176 # but it breaks arm, see http://sourceware.org/ml/crossgcc/2006-01/msg00091.html
177 [ "${CT_ARCH}" != "arm" ] && CT_DoExecLog ALL cp -v misc/syscall-list.h "${CT_HEADERS_DIR}/bits/syscall.h" || true
179 # Those headers are to be manually copied so gcc can build properly
180 pthread_h="${CT_SRC_DIR}/${CT_LIBC_FILE}/${CT_THREADS}/sysdeps/pthread/pthread.h"
182 case "${CT_THREADS}" in
184 # NOTE: for some archs, the pathes are different, but they are not
185 # supported by crosstool-NG right now. See original crosstool when they are.
186 pthread_h="${CT_SRC_DIR}/${CT_LIBC_FILE}/${CT_THREADS}/sysdeps/pthread/pthread.h"
187 pthreadtypes_h="${CT_SRC_DIR}/${CT_LIBC_FILE}/nptl/sysdeps/unix/sysv/linux/${CT_KERNEL_ARCH}/bits/pthreadtypes.h"
188 if [ ! -f "${pthreadtypes_h}" ]; then
189 pthreadtypes_h="${CT_SRC_DIR}/${CT_LIBC_FILE}/${CT_LIBC}-ports-${CT_LIBC_VERSION}/sysdeps/unix/sysv/linux/${CT_KERNEL_ARCH}/nptl/bits/pthreadtypes.h"
193 pthreadtypes_h="${CT_SRC_DIR}/${CT_LIBC_FILE}/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h"
200 if [ -n "${pthread_h}" ]; then
201 CT_DoExecLog ALL cp -v "${pthread_h}" "${CT_HEADERS_DIR}/pthread.h"
203 if [ -n "${pthreadtypes_h}" ]; then
204 CT_DoExecLog ALL cp -v "${pthreadtypes_h}" "${CT_HEADERS_DIR}/bits/pthreadtypes.h"
210 # Build and install start files
211 do_libc_start_files() {
212 # Needed only in the NPTL case. Otherwise, return.
213 [ "${CT_THREADS}" = "nptl" ] || return 0
215 CT_DoStep INFO "Installing C library start files"
217 mkdir -p "${CT_BUILD_DIR}/build-libc-startfiles"
218 cd "${CT_BUILD_DIR}/build-libc-startfiles"
220 CT_DoLog EXTRA "Configuring C library"
222 # Add some default glibc config options if not given by user.
225 case "${CT_LIBC_GLIBC_EXTRA_CONFIG}" in
227 *) if [ "${CT_LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS}" = "y" \
228 -o "${CT_LIBC_GLIBC_USE_HEADERS_MIN_KERNEL}" = "y" ]; then
229 min_kernel_config="--enable-kernel=$(echo ${CT_LIBC_GLIBC_MIN_KERNEL} |sed -r -e 's/^([^.]+\.[^.]+\.[^.]+)(|\.[^.]+)$/\1/;')"
233 extra_config="${extra_config} ${min_kernel_config}"
234 case "${CT_LIBC_GLIBC_EXTRA_CONFIG}" in
236 *) extra_config="${extra_config} --with-tls"
238 case "${CT_SHARED_LIBS}" in
239 y) extra_config="${extra_config} --enable-shared";;
240 *) extra_config="${extra_config} --disable-shared";;
242 case "${CT_ARCH_FLOAT_HW},${CT_ARCH_FLOAT_SW}" in
243 y,) extra_config="${extra_config} --with-fp";;
244 ,y) extra_config="${extra_config} --without-fp";;
246 # Obviously, we want threads, as we come here only for NPTL
247 extra_config="${extra_config} --with-__thread"
249 addons_config="--enable-add-ons=$(do_libc_add_ons_list ,)"
250 extra_config="${extra_config} ${addons_config}"
252 # Add some default CC args
253 glibc_version_major=$(echo ${CT_LIBC_VERSION} |sed -r -e 's/^([^\.]+)\..*/\1/')
254 glibc_version_minor=$(echo ${CT_LIBC_VERSION} |sed -r -e 's/^[^\.]+\.([^.]+).*/\1/')
255 # In case we're using a snapshot, fake a >=2.6 version.
256 if [ "${CT_LIBC_V_LATEST}" = "y" \
257 -o "${CT_LIBC_V_date}" = "y" ]; then
258 glibc_version_major=3
259 glibc_version_minor=0
261 if [ ${glibc_version_major} -eq 2 -a ${glibc_version_minor} -ge 6 \
262 -o ${glibc_version_major} -gt 2 ]; then
263 # Don't use -pipe: configure chokes on it for glibc >= 2.6.
264 CT_Test 'Removing "-pipe" for use with glibc>=2.6' "${CT_USE_PIPES}" = "y"
265 extra_cc_args="${CT_CFLAGS_FOR_HOST/-pipe}"
267 extra_cc_args="${CT_CFLAGS_FOR_HOST}"
269 extra_cc_args="${extra_cc_args} ${CT_ARCH_ENDIAN_OPT}"
271 cross_cc=$(CT_Which "${CT_TARGET}-gcc")
272 CT_DoLog DEBUG "Using gcc for target : '${cross_cc}'"
273 CT_DoLog DEBUG "Configuring with addons : '$(do_libc_add_ons_list ,)'"
274 CT_DoLog DEBUG "Extra config args passed: '${extra_config}'"
275 CT_DoLog DEBUG "Extra CC args passed : '${extra_cc_args}'"
277 # Super-H really needs to set configparms as of gcc-3.4/glibc-2.3.2
278 # note: this is awkward, doesn't work well if you need more than one
279 # line in configparms
280 echo ${CT_LIBC_GLIBC_CONFIGPARMS} > configparms
282 echo "libc_cv_forced_unwind=yes" > config.cache
283 echo "libc_cv_c_cleanup=yes" >> config.cache
285 # Please see the comment for the configure step in do_libc().
287 BUILD_CC=${CT_CC_NATIVE} \
288 CFLAGS="${CT_TARGET_CFLAGS} ${CT_LIBC_GLIBC_EXTRA_CFLAGS} -O " \
289 CC="${cross_cc} ${CT_LIBC_EXTRA_CC_ARGS} ${extra_cc_args}" \
291 RANLIB=${CT_TARGET}-ranlib \
293 "${CT_SRC_DIR}/${CT_LIBC_FILE}/configure" \
295 --build="${CT_UNIQ_BUILD}" \
296 --host=${CT_TARGET} \
301 --with-headers="${CT_HEADERS_DIR}" \
302 --cache-file=config.cache \
304 ${CT_LIBC_GLIBC_EXTRA_CONFIG}
307 #TODO: should check whether slibdir has been set in configparms to */lib64
308 # and copy the startfiles into the appropriate libdir.
309 CT_DoLog EXTRA "Building C library start files"
310 CT_DoExecLog ALL make OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" csu/subdir_lib
312 CT_DoLog EXTRA "Installing C library start files"
313 if [ "${CT_USE_SYSROOT}" = "y" ]; then
314 CT_DoExecLog ALL cp -fpv csu/crt[1in].o "${CT_SYSROOT_DIR}/usr/lib/"
316 CT_DoExecLog ALL cp -fpv csu/crt[1in].o "${CT_SYSROOT_DIR}/lib/"
322 # This function builds and install the full glibc
324 CT_DoStep INFO "Installing C library"
326 mkdir -p "${CT_BUILD_DIR}/build-libc"
327 cd "${CT_BUILD_DIR}/build-libc"
329 CT_DoLog EXTRA "Configuring C library"
331 # Add some default glibc config options if not given by user.
332 # We don't need to be conditional on wether the user did set different
333 # values, as they CT_LIBC_GLIBC_EXTRA_CONFIG is passed after extra_config
337 case "${CT_LIBC_GLIBC_EXTRA_CONFIG}" in
339 *) if [ "${CT_LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS}" = "y" \
340 -o "${CT_LIBC_GLIBC_USE_HEADERS_MIN_KERNEL}" = "y" ]; then
341 min_kernel_config="--enable-kernel=$(echo ${CT_LIBC_GLIBC_MIN_KERNEL} |sed -r -e 's/^([^.]+\.[^.]+\.[^.]+)(|\.[^.]+)$/\1/;')"
345 extra_config="${extra_config} ${min_kernel_config}"
347 case "${CT_THREADS}" in
348 nptl) extra_config="${extra_config} --with-__thread --with-tls";;
349 linuxthreads) extra_config="${extra_config} --with-__thread --without-tls --without-nptl";;
350 none) extra_config="${extra_config} --without-__thread --without-nptl"
351 case "${CT_LIBC_GLIBC_EXTRA_CONFIG}" in
353 *) extra_config="${extra_config} --without-tls";;
358 case "${CT_SHARED_LIBS}" in
359 y) extra_config="${extra_config} --enable-shared";;
360 *) extra_config="${extra_config} --disable-shared";;
363 case "${CT_ARCH_FLOAT_HW},${CT_ARCH_FLOAT_SW}" in
364 y,) extra_config="${extra_config} --with-fp";;
365 ,y) extra_config="${extra_config} --without-fp";;
368 case "$(do_libc_add_ons_list ,)" in
370 *) extra_config="${extra_config} --enable-add-ons=$(do_libc_add_ons_list ,)";;
373 # Add some default CC args
374 glibc_version_major=$(echo ${CT_LIBC_VERSION} |sed -r -e 's/^([^\.]+)\..*/\1/')
375 glibc_version_minor=$(echo ${CT_LIBC_VERSION} |sed -r -e 's/^[^\.]+\.([^.]+).*/\1/')
376 # In case we're using a snapshot, fake a >=2.6 version.
377 if [ "${CT_LIBC_V_LATEST}" = "y" \
378 -o "${CT_LIBC_V_date}" = "y" ]; then
379 glibc_version_major=3
380 glibc_version_minor=0
382 if [ ${glibc_version_major} -eq 2 -a ${glibc_version_minor} -ge 6 \
383 -o ${glibc_version_major} -gt 2 ]; then
384 # Don't use -pipe: configure chokes on it for glibc >= 2.6.
385 CT_Test 'Removing "-pipe" for use with glibc>=2.6' "${CT_USE_PIPES}" = "y"
386 extra_cc_args="${CT_CFLAGS_FOR_HOST/-pipe}"
388 extra_cc_args="${CT_CFLAGS_FOR_HOST}"
390 extra_cc_args="${extra_cc_args} ${CT_ARCH_ENDIAN_OPT}"
392 cross_cc=$(CT_Which "${CT_TARGET}-gcc")
393 CT_DoLog DEBUG "Using gcc for target : '${cross_cc}'"
394 CT_DoLog DEBUG "Configuring with addons : '$(do_libc_add_ons_list ,)'"
395 CT_DoLog DEBUG "Extra config args passed: '${extra_config}'"
396 CT_DoLog DEBUG "Extra CC args passed : '${extra_cc_args}'"
398 # sh3 and sh4 really need to set configparms as of gcc-3.4/glibc-2.3.2
399 # note: this is awkward, doesn't work well if you need more than one line in configparms
400 echo ${CT_LIBC_GLIBC_CONFIGPARMS} > configparms
402 # For glibc 2.3.4 and later we need to set some autoconf cache
403 # variables, because nptl/sysdeps/pthread/configure.in does not
404 # work when cross-compiling.
405 if [ "${CT_THREADS}" = "nptl" ]; then
406 echo libc_cv_forced_unwind=yes
407 echo libc_cv_c_cleanup=yes
410 # Configure with --prefix the way we want it on the target...
411 # There are a whole lot of settings here. You'll probably want
412 # to read up on what they all mean, and customize a bit, possibly by setting GLIBC_EXTRA_CONFIG
413 # Compare these options with the ones used when installing the glibc headers above - they're different.
414 # Adding "--without-gd" option to avoid error "memusagestat.c:36:16: gd.h: No such file or directory"
415 # See also http://sources.redhat.com/ml/libc-alpha/2000-07/msg00024.html.
416 # Set BUILD_CC, or you won't be able to build datafiles
417 # Set --build, else glibc-2.3.2 will think you're not cross-compiling, and try to run the test programs
419 # OK. I'm fed up with those folks telling me what I should do.
420 # I don't configure nptl? Well, maybe that's purposedly because
421 # I don't want nptl! --disable-sanity-checks will shut up those
422 # silly messages. GNU folks again, he?
424 BUILD_CC=${CT_CC_NATIVE} \
425 CFLAGS="${CT_TARGET_CFLAGS} ${CT_LIBC_GLIBC_EXTRA_CFLAGS} -O" \
426 CC="${CT_TARGET}-gcc ${CT_LIBC_EXTRA_CC_ARGS} ${extra_cc_args}" \
428 RANLIB=${CT_TARGET}-ranlib \
430 "${CT_SRC_DIR}/${CT_LIBC_FILE}/configure" \
432 --build=${CT_UNIQ_BUILD} \
433 --host=${CT_TARGET} \
438 --disable-sanity-checks \
439 --cache-file=config.cache \
440 --with-headers="${CT_HEADERS_DIR}" \
442 ${CT_LIBC_GLIBC_EXTRA_CONFIG}
444 if grep -l '^install-lib-all:' "${CT_SRC_DIR}/${CT_LIBC_FILE}/Makerules" > /dev/null; then
446 # If the install-lib-all target (which is added by our make-install-lib-all.patch)
447 # is present, it means we're building glibc-2.3.3 or later, and we can't
448 # build programs yet, as they require libeh, which won't be installed
449 # until full build of gcc
450 # YEM-FIXME: This comment is misleading: latest glibc-s do not have the
451 # make-install-lib-all.patch applied, so do not pass through this
452 # part of the if statement; nonetheless, they do build, and
453 # the result is useable (maybe the dual-pass core gcc is
454 # responsible for this).
455 GLIBC_INITIAL_BUILD_RULE=lib
456 GLIBC_INITIAL_INSTALL_RULE="install-lib-all install-headers"
457 GLIBC_INSTALL_APPS_LATER=yes
460 # We can build and install everything with the bootstrap compiler.
461 # YEM-FIXME: See the above FIXME as well.
462 GLIBC_INITIAL_BUILD_RULE=all
463 GLIBC_INITIAL_INSTALL_RULE=install
464 GLIBC_INSTALL_APPS_LATER=no
467 # If this fails with an error like this:
468 # ... linux/autoconf.h: No such file or directory
469 # then you need to set the KERNELCONFIG variable to point to a .config file for this arch.
470 # The following architectures are known to need kernel .config: alpha, arm, ia64, s390, sh, sparc
471 # Note: LD and RANLIB needed by glibc-2.1.3's c_stub directory, at least on macosx
472 # No need for PARALLELMFLAGS here, Makefile already reads this environment variable
473 CT_DoLog EXTRA "Building C library"
474 CT_DoExecLog ALL make LD=${CT_TARGET}-ld \
475 RANLIB=${CT_TARGET}-ranlib \
476 OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
477 ${GLIBC_INITIAL_BUILD_RULE}
479 CT_DoLog EXTRA "Installing C library"
480 CT_DoExecLog ALL make install_root="${CT_SYSROOT_DIR}" \
481 ${LIBC_SYSROOT_ARG} \
482 OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
483 ${GLIBC_INITIAL_INSTALL_RULE}
485 # This doesn't seem to work when building a crosscompiler,
486 # as it tries to execute localedef using the just-built ld.so!?
487 #CT_DoLog EXTRA "Installing locales"
488 #make localedata/install-locales install_root=${SYSROOT} 2>&1 |CT_DoLog ALL
490 # Fix problems in linker scripts.
492 # Remove lines containing BUG per http://sources.redhat.com/ml/bug-glibc/2003-05/msg00055.html,
493 # needed to fix gcc-3.2.3/glibc-2.3.2 targeting arm
495 # To make "strip *.so.*" not fail (ptxdist does this), rename to .so_orig rather than .so.orig
496 CT_DoLog EXTRA "Fixing C library linker scripts"
497 for file in libc.so libpthread.so libgcc_s.so; do
498 for dir in lib lib64 usr/lib usr/lib64; do
499 if [ -f "${CT_SYSROOT_DIR}/${dir}/${file}" -a ! -L ${CT_SYSROOT_DIR}/$lib/$file ]; then
500 CT_DoExecLog ALL cp -v "${CT_SYSROOT_DIR}/${dir}/${file}" "${CT_SYSROOT_DIR}/${dir}/${file}_orig"
501 CT_DoLog DEBUG "Fixing '${CT_SYS_ROOT_DIR}/${dir}/${file}'"
502 CT_DoExecLog ALL sed -i -r -e '/BUG in libc.scripts.output-format.sed/d' "${CT_SYSROOT_DIR}/${dir}/${file}"
510 # This function finishes the glibc install
512 # Finally, build and install glibc programs, now that libeh (if any) is installed
513 # Don't do this unless needed, 'cause it causes glibc-2.{1.3,2.2} to fail here with
514 # .../gcc-3.4.1-glibc-2.1.3/build-glibc/libc.so.6: undefined reference to `__deregister_frame_info'
515 # .../gcc-3.4.1-glibc-2.1.3/build-glibc/libc.so.6: undefined reference to `__register_frame_info'
516 [ "${GLIBC_INSTALL_APPS_LATER}" = "yes" ] || return 0
518 CT_DoStep INFO "Finishing C library"
520 cd "${CT_BUILD_DIR}/build-libc"
522 CT_DoLog EXTRA "Re-building C library"
523 CT_DoExecLog ALL make LD=${CT_TARGET}-ld RANLIB=${CT_TARGET}-ranlib
525 CT_DoLog EXTRA "Installing missing C library components"
526 # note: should do full install and then fix linker scripts, but this is faster
527 for t in bin rootsbin sbin data others; do
528 CT_DoExecLog ALL make install_root="${CT_SYSROOT_DIR}" \
529 ${LIBC_SYSROOT_ARG} \
530 OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
537 # Build up the addons list, separated with $1
538 do_libc_add_ons_list() {
540 local addons_list=$(echo "${CT_LIBC_ADDONS_LIST//,/${sep}}" |tr -s ,)
541 case "${CT_THREADS}" in
543 *) addons_list="${addons_list}${sep}${CT_THREADS}";;
545 [ "${CT_LIBC_GLIBC_USE_PORTS}" = "y" ] && addons_list="${addons_list}${sep}ports"
546 addons_list="${addons_list%%${sep}}"
547 echo "${addons_list##${sep}}"