enclave_common: add missing <algorithm> header for GCC 14 compat#1063
Closed
berrange wants to merge 1 commit intointel:mainfrom
Closed
enclave_common: add missing <algorithm> header for GCC 14 compat#1063berrange wants to merge 1 commit intointel:mainfrom
berrange wants to merge 1 commit intointel:mainfrom
Conversation
When building with GCC 14, various c++ stdlib functions are undefined:
sgx_enclave_common.cpp: In function ‘void* get_enclave_base_address_from_address(void*)’:
sgx_enclave_common.cpp:164:23: error: ‘upper_bound’ is not a member of ‘std’; did you mean ‘lower_bound’?
164 | auto upper = std::upper_bound(s_enclave_base_address.begin(), s_enclave_base_address.end(), (uint64_t)target_address);
| ^~~~~~~~~~~
| lower_bound
sgx_enclave_common.cpp: In function ‘void* enclave_create_ex(void*, size_t, size_t, uint32_t, const void*, size_t, uint32_t, const void**, uint32_t*)’:
sgx_enclave_common.cpp:790:14: error: ‘sort’ is not a member of ‘std’; did you mean ‘qsort’?
790 | std::sort(s_enclave_base_address.begin(), s_enclave_base_address.end());
| ^~~~
| qsort
sgx_enclave_common.cpp: In function ‘bool enclave_delete(void*, uint32_t*)’:
sgx_enclave_common.cpp:1255:43: error: ‘remove’ is not a member of ‘std’; did you mean ‘move’?
1255 | s_enclave_base_address.erase(std::remove(s_enclave_base_address.begin(), s_enclave_base_address.end(), (uint64_t)base_address),
| ^~~~~~
| move
These stdlib functions are provided by bits/stl_algo.h, and prior
to GCC 14, the <functional> header would pull in stl_algo.h.
With GCC 14, the <functional> header was changed to only pull in
stl_algobase.h.
We must now use <algorithm> to get these definitions, which should
work on all versions of GCC.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
13 tasks
|
Just reporting that as of 2.26 release, GCC 14 build for sgx-psw is still broken without this patch |
Contributor
Author
|
This was fixed in the 2.27 release. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When building with GCC 14, various c++ stdlib functions are undefined:
These stdlib functions are provided by
bits/stl_algo.h, and prior to GCC 14, the<functional>header would pull instl_algo.h.With GCC 14, the
<functional>header was changed to only pull instl_algobase.h.We must now use
<algorithm>to get these definitions, which should work on all versions of GCC.