backport cba2552bfec1c9d8

Related: rhbz#1975673
This commit is contained in:
serge-sans-paille 2021-07-06 16:08:48 +02:00
parent 649d084099
commit 4a67878a12
2 changed files with 69 additions and 1 deletions

View File

@ -0,0 +1,64 @@
From 9df652778fc92db9eb371c78bc7d1691417f3a60 Mon Sep 17 00:00:00 2001
From: Rafik Zurob <rzurob@ca.ibm.com>
Date: Fri, 22 Jan 2021 06:51:19 -0600
Subject: [PATCH] [llvm-jitlink] Replace use of deprecated gethostbyname by
getaddrinfo.
This patch replaces use of deprecated gethostbyname by getaddrinfo.
Author: Rafik Zurob
Reviewed By: lhames
Differential Revision: https://reviews.llvm.org/D95477
---
llvm/tools/llvm-jitlink/llvm-jitlink.cpp | 28 ++++++++++++++++++++++++----
1 file changed, 24 insertions(+), 4 deletions(-)
diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
index da4a164..108dd61 100644
--- a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
+++ b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
@@ -690,15 +690,35 @@ LLVMJITLinkRemoteTargetProcessControl::ConnectToExecutor() {
" is not a valid integer",
inconvertibleErrorCode());
+ addrinfo *AI;
+ addrinfo Hints{};
+ Hints.ai_family = AF_INET;
+ Hints.ai_socktype = SOCK_STREAM;
+ Hints.ai_protocol = PF_INET;
+ Hints.ai_flags = AI_NUMERICSERV;
+ if (getaddrinfo(HostName.c_str(), PortStr.str().c_str(), &Hints, &AI) != 0)
+ return make_error<StringError>("Failed to resolve " + HostName + ":" +
+ Twine(Port),
+ inconvertibleErrorCode());
+
int SockFD = socket(PF_INET, SOCK_STREAM, 0);
- hostent *Server = gethostbyname(HostName.c_str());
sockaddr_in ServAddr;
memset(&ServAddr, 0, sizeof(ServAddr));
ServAddr.sin_family = PF_INET;
- memmove(&Server->h_addr, &ServAddr.sin_addr.s_addr, Server->h_length);
ServAddr.sin_port = htons(Port);
- if (connect(SockFD, reinterpret_cast<sockaddr *>(&ServAddr),
- sizeof(ServAddr)) < 0)
+
+ // getaddrinfo returns a list of address structures. Go through the list
+ // to find one we can connect to.
+ int ConnectRC = -1;
+ for (addrinfo *Server = AI; Server; Server = Server->ai_next) {
+ memmove(&Server->ai_addr, &ServAddr.sin_addr.s_addr, Server->ai_addrlen);
+ ConnectRC = connect(SockFD, reinterpret_cast<sockaddr *>(&ServAddr),
+ sizeof(ServAddr));
+ if (ConnectRC == 0)
+ break;
+ }
+ freeaddrinfo(AI);
+ if (ConnectRC == -1)
return make_error<StringError>("Failed to connect to " + HostName + ":" +
Twine(Port),
inconvertibleErrorCode());
--
1.8.3.1

View File

@ -53,7 +53,7 @@
Name: %{pkg_name}
Version: %{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:~rc%{rc_ver}}
Release: 4%{?dist}
Release: 5%{?dist}
Summary: The Low Level Virtual Machine
License: NCSA
@ -71,6 +71,7 @@ Source5: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{compat
%endif
Patch0: 0001-PATCH-llvm-Make-source-interleave-prefix-test-case-c.patch
Patch1: 0001-llvm-jitlink-Replace-use-of-deprecated-gethostbyname.patch
# RHEL-specific patches
Patch101: 0001-Deactivate-markdown-doc.patch
@ -596,6 +597,9 @@ fi
%endif
%changelog
* Tue Jul 06 2021 sguelton@redhat.com - 12.0.0-5
- backport cba2552bfec1c9d8
* Wed Jun 16 2021 Tom Stellard <tstellar@redhat.com> - 12.0.0-4
- Remove pandoc dependency