[PATCH] D98581: [llvm-jitlink] Add diagnostic output and port executor to getaddrinfo(3) as well
Stefan Gränitz via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 19 04:20:18 PDT 2021
sgraenitz added inline comments.
================
Comment at: llvm/tools/llvm-jitlink/llvm-jitlink-executor/llvm-jitlink-executor.cpp:93
+ outs() << "Listening at " << Host << ":" << PortStr << "\n";
+ return accept(SockFD, AI->ai_addr, &AI->ai_addrlen);
#endif
----------------
rzurob wrote:
> This line fails compilation on AIX in 64-bit mode:
>
> ```
> llvm/tools/llvm-jitlink/llvm-jitlink-executor/llvm-jitlink-executor.cpp:93:10: error: no matching function for call to 'accept'
> return accept(SockFD, AI->ai_addr, &AI->ai_addrlen);
> ^~~~~~
> /usr/include/sys/socket.h:635:9: note: candidate function not viable: no known conversion from 'size_t *' (aka 'unsigned long *') to 'socklen_t *' (aka 'unsigned int *') for 3rd argument
> int accept(int, struct sockaddr *__restrict__, socklen_t *__restrict__);
> ^
> 1 error generated.
> Error while processing llvm/tools/llvm-jitlink/llvm-jitlink-executor/llvm-jitlink-executor.cpp.
> ```
>
> The size is always going to fit into an unsigned int. So perhaps we need to store AI->ai_addrlen into a socklen_t temp first?
Interesting, the ai_addrlen field should be of type socklen_t naturally:
```
struct addrinfo {
int ai_flags;
int ai_family;
int ai_socktype;
int ai_protocol;
socklen_t ai_addrlen;
struct sockaddr *ai_addr;
char *ai_canonname;
struct addrinfo *ai_next;
};
```
Do you think it's fine to keep this as a special-case for AIX? Does the `connect` call on the client side in D98579 suffer from the same issue?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D98581/new/
https://reviews.llvm.org/D98581
More information about the llvm-commits
mailing list