[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#966173: libc6: __atan2_finite reference in dlopened module no longer found in executable linked to libm



On Fri, Jul 24, 2020 at 10:11:04AM +0100, Simon McVittie wrote:
> The bug (#966150) is that a version of uix86_64.so compiled with a slightly
> older (2020-02-18) toolchain fails to load on an up-to-date sid system, with:
>     undefined symbol: __atan2_finite

Because the binary was not linked with -lm, the linker never saw the
real symbol __atan2_finite@GLIBC2_16, so the linke only emitted a reference
to __atan2_finite.  At least dpkg-shlibdeps or so should warn about that.

> I've been trying to put together a standalone reproducer that only uses
> libdl and libm, but so far I have not been successful.

Something like that?

| % cat test.c                             
| void __atan2_finite(void);
| void test(void) {
|   __atan2_finite();
| }
| % gcc --shared -o test.so test.c -Wall -W
| % objdump -x test.so | grep atan         
| 0000000000000000         *UND*  0000000000000000 __atan2_finite

Regards,
Bastian

-- 
Men will always be men -- no matter where they are.
		-- Harry Mudd, "Mudd's Women", stardate 1329.8


Reply to: