[Bug 193594] New: stddef.h should define max_align_t

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sat Sep 13 03:11:32 UTC 2014


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=193594

            Bug ID: 193594
           Summary: stddef.h should define max_align_t
           Product: Base System
           Version: 11.0-CURRENT
          Hardware: Any
                OS: Any
            Status: Needs Triage
          Severity: Affects Some People
          Priority: ---
         Component: standards
          Assignee: freebsd-standards at FreeBSD.org
          Reporter: lichray at gmail.com

C11 max_align_t does not work with both base system clang and ports clang
(clang has those defined under lib/Headers but we don't install them, while we
do install GCC's fixed headers for GCC in ports, e.g.
/usr/local/lib/gcc49/gcc/x86_64-portbld-freebsd8.4/4.9.2/include/stddef.h).

FreeBSD already defines C11 additions in /usr/include/stdlib.h, and we should
do the same for max_align_t.

I copy-pasted clang's implementation to /usr/include/stddef.h and everything
works fine:

#if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L
typedef struct {
  long long __clang_max_align_nonce1
      __attribute__((__aligned__(__alignof__(long long))));
  long double __clang_max_align_nonce2
      __attribute__((__aligned__(__alignof__(long double))));
} max_align_t;
#endif

GCC's implementation queries for defined(__STDC_VERSION__) and
defined(__cplusplus); the struct is the same.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-standards mailing list