From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-out.m-online.net (mail-out.m-online.net [212.18.0.9]) by sourceware.org (Postfix) with ESMTPS id 3EB603871028 for ; Sat, 21 Mar 2020 07:00:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 3EB603871028 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=denx.de Authentication-Results: sourceware.org; spf=none smtp.mailfrom=lukma@denx.de Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 48ks420M46z1qrfT; Sat, 21 Mar 2020 08:00:49 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.70]) by mail.m-online.net (Postfix) with ESMTP id 48ks414tdtz1qqkM; Sat, 21 Mar 2020 08:00:49 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.70]) (amavisd-new, port 10024) with ESMTP id uJHKnMuzJWDm; Sat, 21 Mar 2020 08:00:48 +0100 (CET) X-Auth-Info: Rt9iyGthMQKWcSa3HwPsrL+J/lVInqXvU/C2QfN2ILc= Received: from jawa (85-222-111-42.dynamic.chello.pl [85.222.111.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Sat, 21 Mar 2020 08:00:48 +0100 (CET) Date: Sat, 21 Mar 2020 08:00:40 +0100 From: Lukasz Majewski To: libc-help@sourceware.org Cc: Joseph Myers , Florian Weimer , Adhemerval Zanella Subject: Re: Question regarding __clock_gettime symbol visibility across glibc build Message-ID: <20200321080040.7ac91d19@jawa> In-Reply-To: <20200317084724.6df11fb1@jawa> References: <20200317084724.6df11fb1@jawa> Organization: denx.de X-Mailer: Claws Mail 3.17.4 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; boundary="Sig_/LEB1BNxLOXkeFhOUiH24bPn"; protocol="application/pgp-signature" X-Spam-Status: No, score=-3.2 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-help@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-help mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Mar 2020 07:00:53 -0000 --Sig_/LEB1BNxLOXkeFhOUiH24bPn Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable On Tue, 17 Mar 2020 08:47:24 +0100 Lukasz Majewski wrote: > Dear community, >=20 > I'm trying to replace all the occurences of __clock_gettime with > __clock_gettime64 to avoid time bugs on archs with __WORDSIZE =3D=3D 32 && > __TIMESIZE !=3D 64 (for now I've omitted the conversion of ntpl, > pthreads,sunrpc) >=20 > I've modified: sysdeps/generic/memusage.h (the GETTIME preprocessor > macro). >=20 > Unfortunately, several glibc builds fail: > arm-glibc-linux-gnueabi-gcc -shared -static-libgcc -Wl,-O1 > -Wl,-z,defs -Wl,-dynamic-linker=3D/lib/ld-linux.so.3 > -B/home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/= glibc/csu/ > -Wl,-soname=3Dlibmemusage.so -Wl,-z,combreloc -Wl,-z,relro > -Wl,--hash-style =3Dboth > -L/home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/= glibc > -L/home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/= glibc/math > -L/home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/= glibc/elf > -L/home/lukma/work/ > glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/glibc/dlfcn > -L/home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/= glibc/nss > -L/home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/= glibc/nis > -L/home/lukma/work/glibc/glibc-many-build > /build/glibcs/arm-linux-gnueabi/glibc/rt > -L/home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/= glibc/resolv > -L/home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/= glibc/mathvec > -L/home/lukma/work/glibc/glibc-many-build/build/glibcs/arm- > linux-gnueabi/glibc/support > -L/home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/= glibc/crypt > -L/home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/= glibc/nptl > -Wl,-rpath-link=3D/home/lukma/work/glibc/glibc-many-build/build/glibcs/ar= m-lin > ux-gnueabi/glibc:/home/lukma/work/glibc/glibc-many-build/build/glibcs/arm= -linux-gnueabi/glibc/math:/home/lukma/work/glibc/glibc-many-build/build/gli= bcs/arm-linux-gnueabi/glibc/elf:/home/lukma/work/glibc/glibc-many-build/bui= ld/glibcs/arm-linux-gnueabi/glibc/dlfcn:/home/lukm > a/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/glibc/nss:/h= ome/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/glibc/= nis:/home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/= glibc/rt:/home/lukma/work/glibc/glibc-many-build/b > uild/glibcs/arm-linux-gnueabi/glibc/resolv:/home/lukma/work/glibc/glibc-m= any-build/build/glibcs/arm-linux-gnueabi/glibc/mathvec:/home/lukma/work/gli= bc/glibc-many-build/build/glibcs/arm-linux-gnueabi/glibc/support:/home/lukm= a/work/glibc/glibc-many-build/build/glibcs/arm-lin > ux-gnueabi/glibc/crypt:/home/lukma/work/glibc/glibc-many-build/build/glib= cs/arm-linux-gnueabi/glibc/nptl > -o > /home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/gl= ibc/malloc/libmemusage.so > -T /home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux- > gnueabi/glibc/shlib.lds > /home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/gl= ibc/csu/abi-note.o > -Wl,--whole-archive > /home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/gl= ibc/malloc/libmemusage_pic.a > -Wl,--no-whole-archive /home/lukma/ > work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/glibc/dlfcn/li= bdl.so.2 > -Wl,--start-group > /home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/gl= ibc/libc.so > /home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/gl= ibc/libc_nons > hared.a -Wl,--as-needed > /home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/gl= ibc/elf/ld.so > -Wl,--no-as-needed -Wl,--end-group > /work/lukma/glibc/glibc-many-build/install/compilers/arm-linux-gnueabi/bi= n/../lib/gcc/arm-glibc-linux-gnueabi/9.2.1/../../../../arm-glibc-linux-gnue= abi/bin/ld: > /home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/gl= ibc/malloc/libmemusage_pic.a(memusage.os > ): in function `update_data': > /work/lukma/glibc/glibc-many-build/src/glibc/malloc/memusage.c:181: > undefined reference to `__clock_gettime64' > /work/lukma/glibc/glibc-many-build/install/compilers/arm-linux-gnueabi/bi= n/../lib/gcc/arm-glibc-linux-gnueabi/9.2.1/../../../../arm-glibc-linux-gnue= abi/bin/ld: > /home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/gl= ibc/malloc/libmemusage_pic.a(memusage.os > ): in function `me': > /work/lukma/glibc/glibc-many-build/src/glibc/malloc/memusage.c:271: > undefined reference to `__clock_gettime64' > /work/lukma/glibc/glibc-many-build/install/compilers/arm-linux-gnueabi/bi= n/../lib/gcc/arm-glibc-linux-gnueabi/9.2.1/../../../../arm-glibc-linux-gnue= abi/bin/ld: > /home/lukma/work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/gl= ibc/malloc/libmemusage_pic.a(memusage.os > ): in function `dest': > /work/lukma/glibc/glibc-many-build/src/glibc/malloc/memusage.c:822: > undefined reference to `__clock_gettime64' collect2: error: ld > returned 1 exit status >=20 >=20 >=20 > This is what I see from the local build directory: > nm > ./work/glibc/glibc-many-build/build/glibcs/arm-linux-gnueabi/glibc/libc.so > | grep clock_gettime >=20 > 0009a8e0 T __clock_gettime > 0009a8e0 t __clock_gettime_2 > 0009a774 t __clock_gettime64 > 0009a8e0 T clock_gettime@@GLIBC_2.17 > 0009a8e0 T clock_gettime@GLIBC_2.4 > 0009a8e0 t __GI___clock_gettime > 0009a774 t __GI___clock_gettime64 >=20 > Apparently the __clock_gettime64 is a local symbol in the libc.so. >=20 >=20 > However, I've checked how it looks on the installed glibc: > root@y2038arm:/opt# nm /opt/lib/libc.so.6 | grep clock_gettime >=20 > 000702bc t __GI___clock_gettime > 00070264 t __GI___clock_gettime64 > 000702bc T __clock_gettime > 00070264 T __clock_gettime64 > 000702bc t __clock_gettime_2 > 000702bc T clock_gettime@@GLIBC_2.17 > 000702bc T clock_gettime@GLIBC_2.4 >=20 > In the installed glibc the __clock_gettime64 is an external symbol. >=20 >=20 > Why the symbol (__clock_gettime64) is local when I try to link > malloc/libmemusage.so and then it becomes global when glibc is > installed? >=20 > In other parts of the glibc - for example > sysdeps/unix/sysv/linux/clock.c I can use __clock_gettime64 without > any issues.=20 >=20 > Is such behavior related to strong_allias() declaration (as for > example in __clock_settime for which we do have similar situation)? >=20 >=20 Does anybody have any input on the described above problem? Thanks in advance. >=20 > Best regards, >=20 > Lukasz Majewski >=20 > -- >=20 > DENX Software Engineering GmbH, Managing Director: Wolfgang Denk > HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany > Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: > lukma@denx.de Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de --Sig_/LEB1BNxLOXkeFhOUiH24bPn Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEgAyFJ+N6uu6+XupJAR8vZIA0zr0FAl51u5gACgkQAR8vZIA0 zr0q4QgAiAtRhoyqd+Ddf5izsBTTNXjMJFFop1vN8NvrWyaLxKx6vwJ5laG+kaUu 4oqOZaSZg+skvZuSc4XDPA9wc0rdri0dmFqfaVELhGatAlppMOg95fxdvKFkdBB6 799lf/lfKpALw009f+4ySTBQsq4Ldrm2BM1WjtaZwJvsizhTUJsQ3YMRvC9UOC+9 5wQyZPDoP6uHyL+aU1ZIXbE2B7/Q+33CfypiViYluAGcqJuarZh82K44GH91GwnN vl0iLiSF1f+//xgf6UpQO7ZPiO5Hcr+ReYpHrPF9G1inaLmAtjJ+lqvY2P7b3flZ Cq2fiFSXDfeTAEQH+DiudGluf0ZncQ== =JyMr -----END PGP SIGNATURE----- --Sig_/LEB1BNxLOXkeFhOUiH24bPn--