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

* John Mudd <johnbmudd@...il.com> [2019-05-08 12:26:15 -0400]:
> 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.

user binary is not supposed to have reference to this symbol,
it's musl internal (now hidden, previously visible)

it can be argued that the symbol is part of the glibc abi
compat since glibc exports it, but even on glibc i'm not
sure how you would end up with such symbol reference
(glibc headers don't refer to it).


> 
> $ 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.