Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190508200339.GS26605@port70.net>
Date: Wed, 8 May 2019 22:03:39 +0200
From: Szabolcs Nagy <nsz@...t70.net>
To: musl@...ts.openwall.com
Cc: John Mudd <johnbmudd@...il.com>
Subject: Re: Re: __strftime_l: symbol not found

* John Mudd <johnbmudd@...il.com> [2019-05-08 15:54:35 -0400]:
> Here's more details. I'm trying to load a library that includes some C++
> code. It requires libstdc++.so.6 which is looking for __strftime_l.
> 
> $ nm -D /usr/rx30/musl/lib/libstdc++.so.6 | grep __strftime_l
>          U __strftime_l
> $
> 
> I get the following error when trying to load libstdc++.so.6.
> Error relocating /usr/rx30/musl/lib/libstdc++.so.6: __strftime_l: symbol
> not found

ok in that case this symbol should be kept for glibc abi compat
so it is a real regression.

it seems libstdc++ explicitly declares and uses the __ symbols
on glibc >= 2.2 targets.


> 
> 
> 
> On Wed, May 8, 2019 at 12:26 PM John Mudd <johnbmudd@...il.com> wrote:
> 
> > Hi, I'm upgrading my musl from 1.19 to 1.22 but it looks like I lost
> > the __strftime_l function. It's present in the 1.19 libc.so but not in 1.22.
> >
> > $ nm -D /home/mudd/musl-1.1.19.install/lib/libc.so | grep __strftime_l
> > 0007b6a0 T __strftime_l
> > $ nm -D /home/mudd/musl-1.1.22.install/lib/libc.so | grep __strftime_l
> > $
> >
> >
> > Here's the diff on the source code. I can't explain how this diff would
> > cause the function to disappear. Any suggestions?
> >
> > $ diff musl-1.1.19/src/time/strftime.c  /musl-1.1.22/src/time/strftime.c
> > 9d8
> > < #include "libc.h"
> > 12,13d10
> > < const char *__nl_langinfo_l(nl_item, locale_t);
> > <
> > 48,50d44
> > < const char *__tm_to_tzname(const struct tm *);
> > < size_t __strftime_l(char *restrict, size_t, const char *restrict, const
> > struct tm *restrict, locale_t);
> > <
> > 184,186c178,179
> > <               *l = snprintf(*s, sizeof *s, "%+.2d%.2d",
> > <                       (tm->__tm_gmtoff)/3600,
> > <                       abs(tm->__tm_gmtoff%3600)/60);
> > ---
> > >               *l = snprintf(*s, sizeof *s, "%+.4ld",
> > >                       tm->__tm_gmtoff/3600*100 +
> > tm->__tm_gmtoff%3600/60);
> > $
> >

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.