]> Sergey Matveev's repositories - nnn.git/commit
Always use builtin alloca() (#666)
authorSijmen J. Mulder <ik@sjmulder.nl>
Tue, 23 Jun 2020 22:47:05 +0000 (00:47 +0200)
committerGitHub <noreply@github.com>
Tue, 23 Jun 2020 22:47:05 +0000 (04:17 +0530)
commit3686ef756a3cde8d58d8c9d8dac48863846ac9dd
tree1d91ad5548c67b3c0b15843e06bcc8660e2e9400
parent306af787ca465eaf2b075bbc804603706f00b0fa
Always use builtin alloca() (#666)

Fixes the build on NetBSD 9 on arm64.

GCC expands alloca() to __builtin_alloca() but only in nonstandard mode,
e.g. when -std=... is not supplied.  In standards mode (with -std=...)
alloca() is left undefined by GCC. The C library may define it but it
also may not, as on NetBSD on arm64:

    $ uname -srp
    NetBSD 9.0 aarch64

    $ cat alloca.c
    #include <stdlib.h>
    int main() { char *p = alloca(10); }

    $ gcc alloca.c

    $ gcc -std=c99 alloca.c
    alloca.c:(.text+0xc): warning: Warning: reference to the libc
     supplied alloca(3); this most likely will not work. Please use the
     compiler provided version of alloca(3), by supplying the
     appropriate compiler flags (e.g. not -std=c89).
    ld: alloca.c:(.text+0xc): undefined reference to `alloca'

The fix is to either not use standards mode (undesirable) or to
explicitly use the builtin, which is what this patch does.

This is also sufficient for Solarius/Illumos so that check and include
are removed.
src/nnn.c