-
Notifications
You must be signed in to change notification settings - Fork 13.6k
[compiler-rt][sanitizer] fix msghdr for musl #136195
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -476,7 +476,40 @@ struct __sanitizer_cmsghdr { | |
int cmsg_level; | ||
int cmsg_type; | ||
}; | ||
#else | ||
# elif SANITIZER_MUSL | ||
struct __sanitizer_msghdr { | ||
void *msg_name; | ||
unsigned msg_namelen; | ||
struct __sanitizer_iovec *msg_iov; | ||
# if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN | ||
int __pad1; | ||
# endif | ||
int msg_iovlen; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think big endian is realy supported. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Removed the big endian code. |
||
# if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN | ||
int __pad1; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. do you have a link to declaration? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You mean for |
||
# endif | ||
void *msg_control; | ||
# if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN | ||
int __pad2; | ||
# endif | ||
unsigned msg_controllen; | ||
# if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN | ||
int __pad2; | ||
# endif | ||
int msg_flags; | ||
}; | ||
struct __sanitizer_cmsghdr { | ||
# if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN | ||
int __pad1; | ||
# endif | ||
unsigned cmsg_len; | ||
# if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN | ||
int __pad1; | ||
# endif | ||
int cmsg_level; | ||
int cmsg_type; | ||
}; | ||
# else | ||
// In POSIX, int msg_iovlen; socklen_t msg_controllen; socklen_t cmsg_len; but | ||
// many implementations don't conform to the standard. | ||
struct __sanitizer_msghdr { | ||
|
@@ -493,9 +526,9 @@ struct __sanitizer_cmsghdr { | |
int cmsg_level; | ||
int cmsg_type; | ||
}; | ||
#endif | ||
# endif | ||
|
||
#if SANITIZER_LINUX | ||
# if SANITIZER_LINUX | ||
struct __sanitizer_mmsghdr { | ||
__sanitizer_msghdr msg_hdr; | ||
unsigned int msg_len; | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you use
SANITIZER_WORDSIZE == 64
instead of __LONG_MAX ?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done