This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: __nldbl_fprintf and __gtdf2 on PowerPC no-fpu


Hiroki Kaminaga <kaminaga@sm.sony.co.jp> wrote:
> I'll investigate some more.

The problem was due to libc.a(gedf2.o) defining both __gedf2 and __gtdf2.

ldbl.o had:
UND __gtdf2
UND __nldbl_fprintf

__gtdf2 was found in libgcc.a(_gt_df.o).
When finding __nldbl_fprintf, it also looks for __printf_size, where
__gedf2 is UND, and finds it in libc.a(gedf2.o). But gedf2.o also defines
__gtdf2, and thus the error:  multiple definition of `__gtdf2'


For -mlong-double-128 case, it is similar:

ldbl.o had:
UND __gcc_qgt
UND fprintf

__gcc_qgt was found in libgcc.a(darwin-ldouble.o). In darwin-ldouble.o, it
has UND __ledf2, and finds it in libgcc.a(_le_df.o).
When finding fprintf, it looks for vfprintf, where __printf_fp is UND.
__printf_fp is found in libc.a(printf_fp.o) where __ltdf2 is UND and
finds it in libc.a(ledf2.o). But ledf2.o also defines __ledf2, and thus
the error: multiple definition of `__ledf2'

The problem here is that libc.a(ledf2.o) defining both __ledf2 and __ltdf2.

So, the solution I could think is:

a) stop using strong_alias() in soft-fp/{eq,ge,le}[sdt]f2.c
   (and make one definition per one *.o)
b) stop defining *df in libgcc

a) is temporal fixup. So I should do b)?


(Hiroki Kaminaga)
t
--


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]