diff options
| author | Michael Brown <mcb30@ipxe.org> | 2026-02-12 15:45:28 +0000 |
|---|---|---|
| committer | Michael Brown <mcb30@ipxe.org> | 2026-02-12 15:47:32 +0000 |
| commit | 6dc991d0789bbebd2ccee9df507c1c57576beff9 (patch) | |
| tree | 99642acfb8591fb5d309b520d78adbaed0396b71 | |
| parent | 25429d952d2b82b60e505698512dce0b7aea89d8 (diff) | |
| download | ipxe-master.zip ipxe-master.tar.gz ipxe-master.tar.bz2 | |
libslirp introduced a new API for constructing polling lists, to
accommodate Windows platforms where a handle descriptor may be too
large for an int.
Older versions of libslirp do not have the new API calls, and the
older API calls were immediately marked as deprecated, with no
overlap. We would therefore need to use #ifdef and always have some
code that is deliberately not compiled, depending on the version of
libslirp that we find on the user's system. This is highly
undesirable.
Work around this by disabling the deprecation warning (which is what
libslirp itself does for the portions of its code that necessarily
touch the deprecated functions).
Signed-off-by: Michael Brown <mcb30@ipxe.org>
| -rw-r--r-- | src/interface/linux/linux_api.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/interface/linux/linux_api.c b/src/interface/linux/linux_api.c index 459e39f..349efe3 100644 --- a/src/interface/linux/linux_api.c +++ b/src/interface/linux/linux_api.c @@ -381,6 +381,28 @@ const char * __asmcall linux_strerror ( int linux_errno ) { #ifdef HAVE_LIBSLIRP +/* Allow use of fd-based polling mechanism + * + * libslirp introduced a new API for constructing polling lists, to + * accommodate Windows platforms where a handle descriptor may be too + * large for an int. + * + * Older versions of libslirp do not have the new API calls, and the + * older API calls were immediately marked as deprecated, with no + * overlap. We would therefore need to use #ifdef and always have + * some code that is deliberately not compiled, depending on the + * version of libslirp that we find on the user's system. This is + * highly undesirable. + * + * Work around this by disabling the deprecation warning (which is + * what libslirp itself does for the portions of its code that + * necessarily touch the deprecated functions). + */ +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + /** * Wrap slirp_new() * @@ -487,6 +509,10 @@ linux_slirp_pollfds_poll ( struct Slirp *slirp, int select_error, slirp_pollfds_poll ( slirp, select_error, get_revents, opaque ); } +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif + #endif /* HAVE_LIBSLIRP */ /****************************************************************************** |
