Skip to content
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

enclave_common: add missing <algorithm> header for GCC 14 compat #1063

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Commits on Oct 9, 2024

  1. enclave_common: add missing <algorithm> header for GCC 14 compat

    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>
    berrange committed Oct 9, 2024
    Configuration menu
    Copy the full SHA
    7218601 View commit details
    Browse the repository at this point in the history