bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

aligned_alloc: Fix compilation error in C++ mode on Solaris 11


From: Bruno Haible
Subject: aligned_alloc: Fix compilation error in C++ mode on Solaris 11
Date: Fri, 02 Sep 2022 20:12:29 +0200

A gnulib testdir produces a compilation error on Solaris 11 OmniOS:

In file included from /usr/include/sys/time.h:489,
                 from ../gllib/sys/time.h:39,
                 from /usr/include/sys/select.h:53,
                 from ../gllib/sys/select.h:36,
                 from /usr/include/sys/types.h:640,
                 from ../gllib/sys/types.h:39,
                 from /usr/include/malloc.h:31,
                 from ../gllib/malloc.h:27,
                 from ../../gltests/test-malloc-h-c++.cc:22:
../gllib/stdlib.h:782:1: error: 'aligned_alloc' was not declared in this scope
  782 | _GL_CXXALIASWARN (aligned_alloc);
      | ^~~~~~~~~~~~~~~~
../gllib/stdlib.h:782:1: note: suggested alternatives:
In file included from /usr/include/stdlib.h:42,
                 from /opt/gcc-9/include/c++/9.3.0/cstdlib:75,
                 from /opt/gcc-9/include/c++/9.3.0/stdlib.h:36,
                 from ../gllib/stdlib.h:36,
                 from ../gllib/malloc.h:35,
                 from ../../gltests/test-malloc-h-c++.cc:22:
/usr/include/iso/stdlib_c11.h:60:14: note:   'std::aligned_alloc'
   60 | extern void *aligned_alloc(size_t, size_t);
      |              ^~~~~~~~~~~~~
In file included from /usr/include/sys/time.h:489,
                 from ../gllib/sys/time.h:39,
                 from /usr/include/sys/select.h:53,
                 from ../gllib/sys/select.h:36,
                 from /usr/include/sys/types.h:640,
                 from ../gllib/sys/types.h:39,
                 from /usr/include/malloc.h:31,
                 from ../gllib/malloc.h:27,
                 from ../../gltests/test-malloc-h-c++.cc:22:
../gllib/stdlib.h:769:1: note:   'gnulib::aligned_alloc'
  769 | _GL_CXXALIAS_RPL (aligned_alloc, void *, (size_t alignment, size_t 
size));
      | ^~~~~~~~~~~~~~~~

The reason is that aligned_alloc is not declared in C++ mode, only in ISO C11
mode. This patch fixes the error:


2022-09-02  Bruno Haible  <bruno@clisp.org>

        aligned_alloc: Fix compilation error in C++ mode on Solaris 11.
        * lib/stdlib.in.h (aligned_alloc): Enable the C++ alias warning only on
        glibc systems.

diff --git a/lib/stdlib.in.h b/lib/stdlib.in.h
index a86643c3ca..010875803c 100644
--- a/lib/stdlib.in.h
+++ b/lib/stdlib.in.h
@@ -226,7 +226,7 @@ _GL_FUNCDECL_SYS (aligned_alloc, void *,
 _GL_CXXALIAS_SYS (aligned_alloc, void *, (size_t alignment, size_t size));
 #  endif
 # endif
-# if @HAVE_ALIGNED_ALLOC@
+# if (__GLIBC__ >= 2) && @HAVE_ALIGNED_ALLOC@
 _GL_CXXALIASWARN (aligned_alloc);
 # endif
 #else






reply via email to

[Prev in Thread] Current Thread [Next in Thread]