| --- a/libdw/libdw_alloc.c | 
 | +++ b/libdw/libdw_alloc.c | 
 | @@ -152,5 +152,5 @@ __attribute ((noreturn)) attribute_hidde | 
 |  __libdw_oom (void) | 
 |  { | 
 |    while (1) | 
 | -    error (EXIT_FAILURE, ENOMEM, "libdw"); | 
 | +    error (EXIT_FAILURE, errno, gettext ("cannot allocate memory")); | 
 |  } | 
 | --- a/libdwfl/dwfl_error.c | 
 | +++ b/libdwfl/dwfl_error.c | 
 | @@ -139,6 +139,7 @@ __libdwfl_seterrno (Dwfl_Error error) | 
 |  static const char * | 
 |  errnomsg(int error) | 
 |  { | 
 | +#if defined(__GLIBC__) && !defined(__UCLIBC__) | 
 |    /* Won't be changed by strerror_r, but not const so compiler doesn't throw warning */ | 
 |    static char unknown[] = "unknown error"; | 
 |   | 
 | @@ -149,6 +150,9 @@ errnomsg(int error) | 
 |    static __thread char msg[128]; | 
 |    return strerror_r (error, msg, sizeof (msg)) ? unknown : msg; | 
 |  #endif | 
 | +#else | 
 | +  return strerror (error & 0xffff); | 
 | +#endif | 
 |  } | 
 |   | 
 |  const char * |