haiku/headers/posix
Augustin Cavalier 7db2616c44 dirent: Use an actual flexible-length array for d_name.
GCC 11 treats [1] as a fixed-length array and not a flexible-length
array, and so some things that used direct strcmp("..", ent->d_name),
for instance, would be optimized out as being always unequal,
which was the cause of #17389. Using a real FLA informs GCC that
there is going to be more than one byte of data, and thus this
fixes that bug.

BeOS used [1] and not [0], possibly because it had to deal with
compilers (MetroWerks? Early GCC2?) that did not support FLAs.
GCC 2.95 does, using [0], and GCC 4 does, using [], so we can go
with that here.

(I did try using [0] for both, which seems to be OK with GCC 11,
but GCC 8 throws errors when d_name is dereferenced directly
as being-out-of-bounds. So, we have to use the #if here and give
newer GCC the [] syntax and not [0] to avoid that problem.)

The real question probably is whether or not we should backport
some variant of these changes to R1/beta3, as software at HaikuPorts
very well may run in to the same issue. (The alternative workaround
is to compile with -O1 and not -O2 for any affected software.) But
maybe this is an argument for keeping with the beta4 schedule of
this coming January...
2021-11-18 16:34:03 -05:00
..
arch kernel/arch/thread: implement for riscv64 2021-08-06 15:01:52 +00:00
arpa arpa/nameser.h: Fix build on GCC8. 2020-07-03 15:30:00 -04:00
compat/sys
net ifconfig: expand 10Gbps media knowledge 2021-05-05 12:52:12 +00:00
netinet headers: More removal of the BSD Advertising Clause. 2020-07-03 15:00:37 -04:00
netinet6 in6.h: declare in6_addr with a union and extra fields 2020-10-23 08:13:03 +00:00
sys sys/resource.h: add rusage compatibility fields, set to zero 2021-06-20 12:50:24 +00:00
alloca.h
assert.h assert.h: reintroduce headers guard for function declarations. 2015-08-29 23:14:03 +02:00
bsd_mem.h
complex.h complex.h: add a C++ guard. 2016-10-05 09:18:42 +02:00
ctype.h
dirent.h dirent: Use an actual flexible-length array for d_name. 2021-11-18 16:34:03 -05:00
div_t.h
dlfcn.h libroot.so: make first parameter of dladdr() const. 2017-09-15 23:09:24 +02:00
endian.h Clarify endianness defines. 2019-08-27 17:44:57 +02:00
errno.h
fcntl.h fcntl.h: define O_DIRECT directly 2020-11-20 18:23:35 +00:00
fenv.h riscv: cleanup architecture macro checks 2021-09-01 18:04:59 +00:00
fnmatch.h fnmatch: Replace BSD implementation with musl one. 2020-07-03 15:09:33 -04:00
fts.h
ftw.h
getopt.h
glob.h headers: More removal of the BSD Advertising Clause. 2020-07-03 15:00:37 -04:00
grp.h
inttypes.h Remove __STDC_FORMAT/CONSTANT_MACROS 2017-06-04 17:29:29 +02:00
iovec.h
langinfo.h
libgen.h
libio.h posix: protect EOF being parsed as operator and 1 2021-01-25 18:53:43 +00:00
limits.h Fix definition of PAGESIZE and B_PAGE_SIZE 2021-01-08 12:02:16 +00:00
locale.h
malloc_debug.h malloc_debug: Implement allocation dump on exit in guarded heap. 2015-04-10 17:04:28 +02:00
malloc.h Allow gcc to know result is aligned 2021-10-14 16:19:18 +00:00
math.h posix/math: Use the GCC built-ins when possible for isnan(), etc. 2020-01-06 07:44:30 +00:00
memory.h
monetary.h
netdb.h netdb.h: fix prototype of gethostbyaddr() 2020-08-17 00:08:02 +00:00
nl_types.h
null.h
poll.h POSIX: introduce ppoll 2021-06-19 18:09:25 +00:00
pthread.h s/Haiku License/MIT License/g. 2019-08-30 18:16:02 -04:00
pwd.h
regex.h
resolv.h resolv.h & netdb.h: Clean up and simplify. 2020-07-02 19:33:51 -04:00
sched.h
search.h libroot: Fix previous commit. 2021-09-17 15:35:51 -04:00
semaphore.h Reimplement unnamed POSIX semaphores using user_mutex 2015-05-24 14:03:40 +01:00
setjmp.h setjmp.h: add noreturn keyword on longjmp variants. 2018-07-21 12:27:27 +02:00
shadow.h
signal.h Revert "Add sys/ucontext.h" 2014-08-09 20:18:05 +02:00
size_t.h
spawn.h s/Haiku License/MIT License/g. 2019-08-30 18:16:02 -04:00
stdc-predef.h C11: define __STDC_NO_THREADS__ as threads.h is not provided 2021-06-21 12:31:53 +00:00
stdint.h Remove __STDC_FORMAT/CONSTANT_MACROS 2017-06-04 17:29:29 +02:00
stdio_ext.h
stdio_post.h
stdio_pre.h
stdio.h posix: protect EOF being parsed as operator and 1 2021-01-25 18:53:43 +00:00
stdlib.h stdlib.h: Remove guards around aligned_alloc. 2021-11-16 15:13:29 -05:00
string.h string.h: include strings.h for compatibility. 2014-10-30 00:20:13 +01:00
strings.h strings.h: s/inline/__inline__/ 2020-05-24 13:59:57 +00:00
syslog.h syslog.h: add LOG_PRIMASK and LOG_PRI macros 2020-11-22 09:28:57 +00:00
tar.h
termios.h POSIX: add tcsetsid() 2020-11-17 07:53:28 +00:00
time.h Switch to a 64-bit time_t everywhere except 32-bit x86. 2017-06-06 17:38:17 -04:00
uchar.h uchar.h: Remove duplicate definition of mbrtoc32. 2020-05-09 16:15:55 -04:00
unistd.h POSIX: ioctl(fd, op, arg) equals ioctl(fd, op, arg, 0) 2021-05-04 19:21:48 +00:00
utime.h
utmpx.h utmpx.h: add ut_host for compatibility (not posix) 2021-03-16 16:55:44 +00:00
wchar_t.h
wchar.h Fix #7008: Add a64l and l64a from glibc, and add some missing definitions in wchar.h and stdlib.h 2014-12-14 18:06:09 +01:00
wctype.h