From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24163 invoked by alias); 4 Aug 2002 21:53:08 -0000 Mailing-List: contact libc-hacker-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-hacker-owner@sources.redhat.com Received: (qmail 24147 invoked from network); 4 Aug 2002 21:53:07 -0000 Received: from unknown (HELO sunsite.mff.cuni.cz) (195.113.19.66) by sources.redhat.com with SMTP; 4 Aug 2002 21:53:07 -0000 Received: (from jakub@localhost) by sunsite.mff.cuni.cz (8.11.6/8.11.6) id g74Lr4P17652; Sun, 4 Aug 2002 23:53:04 +0200 Date: Sun, 04 Aug 2002 14:53:00 -0000 From: Jakub Jelinek To: Ulrich Drepper Cc: Glibc hackers Subject: [PATCH] Fix Alpha build Message-ID: <20020804235304.U20867@sunsite.ms.mff.cuni.cz> Reply-To: Jakub Jelinek Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i X-SW-Source: 2002-08/txt/msg00051.txt.bz2 Hi! The following patch makes alpha glibc build (and not end up with: /usr/src/redhat/BUILD/glibc-2.2.90/build-alpha-linux/libc.so.6.1: undefined reference to `__GI___wcstoull_internal' /usr/src/redhat/BUILD/glibc-2.2.90/build-alpha-linux/libc.so.6.1: undefined reference to `__GI_globfree' /usr/src/redhat/BUILD/glibc-2.2.90/build-alpha-linux/libc.so.6.1: undefined reference to `__GI_____strtoull_l_internal' /usr/src/redhat/BUILD/glibc-2.2.90/build-alpha-linux/libc.so.6.1: undefined reference to `__GI___strtoull_internal' /usr/src/redhat/BUILD/glibc-2.2.90/build-alpha-linux/libc.so.6.1: undefined reference to `__GI___strtoll_internal' /usr/src/redhat/BUILD/glibc-2.2.90/build-alpha-linux/libc.so.6.1: undefined reference to `__GI_glob' ). The important thing is that when playing games like various sysdeps/wordsize-64/*.c routines do, ie. #define foo bar #include #undef foo *_alias(baz, foo) libc_hidden_{def,weak} (foo) cannot be used, because there is no libc_hidden_proto (foo) in this case. Instead, libc_hidden_ver should be used, or alternatively all this ugly magic could go away if asm_weak_alias and asm_strong_alias macros are introduced and used in this case (macros which would do th same as non-asm_ variants, but in pure assembly, so it wouldn't matter that the 2 functions have different prototypes). IA-64 doesn't build either (even with this patch), will look into it tomorrow morning. 2002-08-04 Jakub Jelinek * sysdeps/generic/glob.c (glob, globfree): Only use libc_hidden_def if glob resp. globfree are not macros. * sysdeps/gnu/glob64.c (globfree64): Add libc_hidden_def. * sysdeps/unix/sysv/linux/alpha/glob.c (glob, globfree, globfree64): Add libc_hidden_ver. * sysdeps/unix/sysv/linux/i386/glob64.c (globfree64): Add libc_hidden_def. * sysdeps/wordsize-64/glob.c (globfree64): Use libc_hidden_ver instead of libc_hidden_weak. * sysdeps/wordsize-64/strtol.c (__strtoll_internal): Use libc_hidden_ver instead of libc_hidden_def. * sysdeps/wordsize-64/wcstol.c (__wcstoll_internal): Use libc_hidden_ver instead of libc_hidden_def. (wcstoll, wcstoq): Remove libc_hidden_weak. * sysdeps/wordsize-64/strtol_l.c (____strtoll_l_internal): Add libc_hidden_ver. * sysdeps/wordsize-64/strtoul.c (__strtoull_internal): Add libc_hidden_ver. * sysdeps/wordsize-64/strtoul_l.c (____strtoull_l_internal): Add libc_hidden_ver. * sysdeps/wordsize-64/wcstoul.c (__wcstoull_internal): Add libc_hidden_ver. --- libc/sysdeps/generic/glob.c.jj 2002-08-04 20:23:24.000000000 +0200 +++ libc/sysdeps/generic/glob.c 2002-08-04 20:57:22.000000000 +0200 @@ -1064,7 +1064,7 @@ glob (pattern, flags, errfunc, pglob) return 0; } -#ifdef _LIBC +#if defined _LIBC && !defined glob libc_hidden_def (glob) #endif @@ -1085,7 +1085,7 @@ globfree (pglob) free ((__ptr_t) pglob->gl_pathv); } } -#ifdef _LIBC +#if defined _LIBC && !defined globfree libc_hidden_def (globfree) #endif --- libc/sysdeps/gnu/glob64.c.jj 2001-02-16 11:46:40.000000000 +0100 +++ libc/sysdeps/gnu/glob64.c 2002-08-04 21:07:22.000000000 +0200 @@ -20,3 +20,5 @@ #define COMPILE_GLOB64 1 #include + +libc_hidden_def (globfree64) --- libc/sysdeps/unix/sysv/linux/alpha/glob.c.jj 2001-08-23 18:50:48.000000000 +0200 +++ libc/sysdeps/unix/sysv/linux/alpha/glob.c 2002-08-04 21:45:03.000000000 +0200 @@ -1,4 +1,4 @@ -/* Copyright (C) 1998, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -44,6 +44,9 @@ extern void __new_globfree (glob_t *__pg versioned_symbol (libc, __new_glob, glob, GLIBC_2_1); versioned_symbol (libc, __new_globfree, globfree, GLIBC_2_1); +libc_hidden_ver (__new_glob, glob) +libc_hidden_ver (__new_globfree, globfree) weak_alias (__new_glob, glob64) weak_alias (__new_globfree, globfree64) +libc_hidden_ver (__new_globfree, globfree64) --- libc/sysdeps/unix/sysv/linux/i386/glob64.c.jj 2001-02-16 11:46:40.000000000 +0100 +++ libc/sysdeps/unix/sysv/linux/i386/glob64.c 2002-08-04 21:14:35.000000000 +0200 @@ -23,6 +23,8 @@ #include "shlib-compat.h" +libc_hidden_def (globfree64) + versioned_symbol (libc, __glob64, glob64, GLIBC_2_2); #if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) --- libc/sysdeps/wordsize-64/glob.c.jj 2002-08-04 20:23:29.000000000 +0200 +++ libc/sysdeps/wordsize-64/glob.c 2002-08-04 21:44:23.000000000 +0200 @@ -5,4 +5,4 @@ #undef globfree64 weak_alias (glob, glob64) weak_alias (globfree, globfree64) -libc_hidden_weak (globfree64) +libc_hidden_ver (globfree, globfree64) --- libc/sysdeps/wordsize-64/strtol.c.jj 2002-08-04 20:23:29.000000000 +0200 +++ libc/sysdeps/wordsize-64/strtol.c 2002-08-04 21:45:55.000000000 +0200 @@ -9,6 +9,6 @@ #undef strtoll #undef strtoq strong_alias (__strtol_internal, __strtoll_internal) -libc_hidden_def (__strtoll_internal) +libc_hidden_ver (__strtol_internal, __strtoll_internal) weak_alias (strtol, strtoll) weak_alias (strtol, strtoq) --- libc/sysdeps/wordsize-64/wcstol.c.jj 2002-08-04 20:23:29.000000000 +0200 +++ libc/sysdeps/wordsize-64/wcstol.c 2002-08-04 21:46:24.000000000 +0200 @@ -9,8 +9,6 @@ #undef wcstoll #undef wcstoq strong_alias (__wcstol_internal, __wcstoll_internal) -libc_hidden_def (__wcstoll_internal) +libc_hidden_ver (__wcstol_internal, __wcstoll_internal) weak_alias (wcstol, wcstoll) -libc_hidden_weak (wcstoll) weak_alias (wcstol, wcstoq) -libc_hidden_weak (wcstoq) --- libc/sysdeps/wordsize-64/strtol_l.c.jj 2001-01-05 22:58:22.000000000 +0100 +++ libc/sysdeps/wordsize-64/strtol_l.c 2002-08-04 21:48:34.000000000 +0200 @@ -7,4 +7,5 @@ #undef ____strtoll_l_internal #undef __strtoll_l strong_alias (____strtol_l_internal, ____strtoll_l_internal) +libc_hidden_ver (____strtol_l_internal, ____strtoll_l_internal) weak_alias (__strtol_l, __strtoll_l) --- libc/sysdeps/wordsize-64/strtoul.c.jj 2001-01-05 22:58:22.000000000 +0100 +++ libc/sysdeps/wordsize-64/strtoul.c 2002-08-04 22:22:26.000000000 +0200 @@ -9,5 +9,6 @@ #undef strtoull #undef strtouq strong_alias (__strtoul_internal, __strtoull_internal) +libc_hidden_ver (__strtoul_internal, __strtoull_internal) weak_alias (strtoul, strtoull) weak_alias (strtoul, strtouq) --- libc/sysdeps/wordsize-64/strtoul_l.c.jj 2001-01-05 22:58:22.000000000 +0100 +++ libc/sysdeps/wordsize-64/strtoul_l.c 2002-08-04 21:49:44.000000000 +0200 @@ -7,4 +7,5 @@ #undef ____strtoull_l_internal #undef __strtoull_l strong_alias (____strtoul_l_internal, ____strtoull_l_internal) +libc_hidden_ver (____strtoul_l_internal, ____strtoull_l_internal) weak_alias (__strtoul_l, __strtoull_l) --- libc/sysdeps/wordsize-64/wcstoul.c.jj 2001-01-05 22:58:22.000000000 +0100 +++ libc/sysdeps/wordsize-64/wcstoul.c 2002-08-04 21:50:41.000000000 +0200 @@ -9,5 +9,6 @@ #undef wcstoull #undef wcstouq strong_alias (__wcstoul_internal, __wcstoull_internal) +libc_hidden_ver (__wcstoul_internal, __wcstoull_internal) weak_alias (wcstoul, wcstoull) weak_alias (wcstoul, wcstouq) Jakub