]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
riscv: Use __has_include__ to include <asm/syscalls.h> [BZ #24022]
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 3 Jan 2019 13:13:32 +0000 (14:13 +0100)
committerFlorian Weimer <fweimer@redhat.com>
Thu, 3 Jan 2019 13:13:32 +0000 (14:13 +0100)
<asm/syscalls.h> has been removed by

commit 27f8899d6002e11a6e2d995e29b8deab5aa9cc25
Author: David Abdurachmanov <david.abdurachmanov@gmail.com>
Date:   Thu Nov 8 20:02:39 2018 +0100

    riscv: add asm/unistd.h UAPI header

    Marcin Juszkiewicz reported issues while generating syscall table for riscv
    using 4.20-rc1. The patch refactors our unistd.h files to match some other
    architectures.

    - Add asm/unistd.h UAPI header, which has __ARCH_WANT_NEW_STAT only for 64-bit
    - Remove asm/syscalls.h UAPI header and merge to asm/unistd.h
    - Adjust kernel asm/unistd.h

    So now asm/unistd.h UAPI header should show all syscalls for riscv.

<asm/syscalls.h> may be restored by

Subject: [PATCH] riscv: restore asm/syscalls.h UAPI header
Date: Tue, 11 Dec 2018 09:09:35 +0100

UAPI header asm/syscalls.h was merged into UAPI asm/unistd.h header,
which did resolve issue with missing syscalls macros resulting in
glibc (2.28) build failure. It also broke glibc in a different way:
asm/syscalls.h is being used by glibc. I noticed this while doing
Fedora 30/Rawhide mass rebuild.

The patch returns asm/syscalls.h header and incl. it into asm/unistd.h.
I plan to send a patch to glibc to use asm/unistd.h instead of
asm/syscalls.h

In the meantime, we use __has_include__, which was added to GCC 5, to
check if <asm/syscalls.h> exists before including it.  Tested with
build-many-glibcs.py for riscv against kernel 4.19.12 and 4.20-rc7.

[BZ #24022]
* sysdeps/unix/sysv/linux/riscv/flush-icache.c: Check if
<asm/syscalls.h> exists with __has_include__ before including it.

(cherry picked from commit 0b9c84906f653978fb8768c7ebd0ee14a47e662e)

ChangeLog
NEWS
sysdeps/unix/sysv/linux/riscv/flush-icache.c

index 8de81aa559ff1ad7e3760c57e5e9c0ae7319048e..967050e2c9117dd22156e926b4e82883012ff9dd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-12-31  H.J. Lu  <hongjiu.lu@intel.com>
+
+       [BZ #24022]
+       * sysdeps/unix/sysv/linux/riscv/flush-icache.c: Check if
+       <asm/syscalls.h> exists with __has_include__ before including it.
+
 2019-01-02  Florian Weimer  <fweimer@redhat.com>
 
        [BZ #24018]
diff --git a/NEWS b/NEWS
index 865c075c8201f30ed8b45a40a1906c925948e945..388ac0906060810079a7808972fc9036d7282bdd 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -29,6 +29,7 @@ The following bugs are resolved with this release:
   [23927] Linux if_nametoindex() does not close descriptor (CVE-2018-19591)
   [23972] __old_getdents64 uses wrong d_off value on overflow
   [24018] gettext may return NULL
+  [24022] riscv may lack <asm/syscalls.h>
   [24027] malloc: Integer overflow in realloc
 
 Security related changes:
index d612ef4c6c6bf996e96332a56e658b25d3acd983..0b2042620bf21349c50e26b7c74e8ceaa8ec293c 100644 (file)
 #include <stdlib.h>
 #include <atomic.h>
 #include <sys/cachectl.h>
-#include <asm/syscalls.h>
+#if __has_include__ (<asm/syscalls.h>)
+# include <asm/syscalls.h>
+#else
+# include <asm/unistd.h>
+#endif
 
 typedef int (*func_type) (void *, void *, unsigned long int);