Index: contrib/llvm/tools/lldb/source/Host/freebsd/HostInfoFreeBSD.cpp =================================================================== --- contrib/llvm/tools/lldb/source/Host/freebsd/HostInfoFreeBSD.cpp +++ contrib/llvm/tools/lldb/source/Host/freebsd/HostInfoFreeBSD.cpp @@ -13,11 +13,34 @@ #include #include #include +#include #include +#if __FreeBSD_version >= 1200018 +#define MORE_TD_NAME 1 +#elif __FreeBSD_version >= 1100507 && __FreeBSD_version < 1200000 +#define MORE_TD_NAME 1 +#elif __FreeBSD_version >= 1003511 && __FreeBSD_version < 1100000 +#define MORE_TD_NAME 1 +#else +#define MORE_TD_NAME 0 +#endif + using namespace lldb_private; -uint32_t HostInfoFreeBSD::GetMaxThreadNameLength() { return 16; } +uint32_t +HostInfoFreeBSD::GetMaxThreadNameLength() +{ + struct kinfo_proc *kp = nullptr; + size_t len; + + len = sizeof(kp->ki_tdname) - 1; +#if MORE_TD_NAME + len += sizeof(kp->ki_moretdname) - 1; +#endif + + return (static_cast(len)); +} bool HostInfoFreeBSD::GetOSVersion(uint32_t &major, uint32_t &minor, uint32_t &update) { @@ -74,4 +97,4 @@ } } return g_program_filespec; -} \ No newline at end of file +} Index: contrib/llvm/tools/lldb/source/Host/freebsd/HostThreadFreeBSD.cpp =================================================================== --- contrib/llvm/tools/lldb/source/Host/freebsd/HostThreadFreeBSD.cpp +++ contrib/llvm/tools/lldb/source/Host/freebsd/HostThreadFreeBSD.cpp @@ -13,17 +13,24 @@ // C includes #include -#include -#if defined(__FreeBSD__) -#include -#endif #include +#include #include #include // C++ includes #include +#if __FreeBSD_version >= 1200018 +#define MORE_TD_NAME 1 +#elif __FreeBSD_version >= 1100507 && __FreeBSD_version < 1200000 +#define MORE_TD_NAME 1 +#elif __FreeBSD_version >= 1003511 && __FreeBSD_version < 1100000 +#define MORE_TD_NAME 1 +#else +#define MORE_TD_NAME 0 +#endif + using namespace lldb_private; HostThreadFreeBSD::HostThreadFreeBSD() {} @@ -63,6 +70,10 @@ for (size_t i = 0; i < len / sizeof(*kp); i++) { if (kp[i].ki_tid == (lwpid_t)tid) { name.append(kp[i].ki_tdname, kp[i].ki_tdname + strlen(kp[i].ki_tdname)); +#if MORE_TD_NAME + name.append(kp[i].ki_moretdname, + kp[i].ki_moretdname + strlen(kp[i].ki_moretdname)); +#endif break; } }