diff --git a/lldb/source/Host/posix/HostInfoPosix.cpp b/lldb/source/Host/posix/HostInfoPosix.cpp --- a/lldb/source/Host/posix/HostInfoPosix.cpp +++ b/lldb/source/Host/posix/HostInfoPosix.cpp @@ -32,10 +32,16 @@ char hostname[PATH_MAX]; hostname[sizeof(hostname) - 1] = '\0'; if (::gethostname(hostname, sizeof(hostname) - 1) == 0) { - struct hostent *h = ::gethostbyname(hostname); - if (h) - s.assign(h->h_name); - else + struct addrinfo hints; + struct addrinfo *res = nullptr; + std::memset(&hints, 0, sizeof(hints)); + hints.ai_flags = AI_CANONNAME; + int err = ::getaddrinfo(hostname, nullptr, &hints, &res); + if (err == 0) { + assert(res->ai_canonname && "getaddrinfo found a canonical name"); + s.assign(res->ai_canonname); + freeaddrinfo(res); + } else s.assign(hostname); return true; }