<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/100098>100098</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [sanitizer] __NR_newfstatat not defined in linux kernel headers in aarch64
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          trcrsired
      </td>
    </tr>
</table>

<pre>
    ```
/home/cqwrteur/toolchains_build/gcc/libsanitizer/sanitizer_common/sanitizer_syscall_linux_aarch64.inc:13:23: error: '__NR_newfstatat' was not declared in this scope
   13 | #define SYSCALL(name) __NR_ ## name
      | ^~~~~
/home/cqwrteur/toolchains_build/gcc/libsanitizer/sanitizer_common/sanitizer_syscall_linux_aarch64.inc:80:24: note: in definition of macro '__internal_syscall4'
   80 | (__internal_syscall)(n, (u64)(a1), (long)(a2), (long)(a3), (long)(a4))
 | ^
/home/cqwrteur/toolchains_build/gcc/libsanitizer/sanitizer_common/sanitizer_syscall_linux_aarch64.inc:127:31: note: in expansion of macro '__SYSCALL_DISP'
  127 | #define internal_syscall(...) __SYSCALL_DISP(__internal_syscall, __VA_ARGS__)
 | ^~~~~~~~~~~~~~
/home/cqwrteur/toolchains_build/gcc/libsanitizer/sanitizer_common/sanitizer_linux.cpp:420:10: note: in expansion of macro 'internal_syscall'
  420 |   return internal_syscall(SYSCALL(newfstatat), AT_FDCWD, (uptr)path, (uptr)buf,
 | ^~~~~~~~~~~~~~~~
/home/cqwrteur/toolchains_build/gcc/libsanitizer/sanitizer_common/sanitizer_linux.cpp:420:27: note: in expansion of macro 'SYSCALL'
  420 |   return internal_syscall(SYSCALL(newfstatat), AT_FDCWD, (uptr)path, (uptr)buf,
 | ^~~~~~~
```
https://github.com/llvm/llvm-project/blob/d89f3e8df3160b3afc07bc742c81aa4738ea9646/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp#L389

I propose to add checks for defined(__NR_newfstatat)

```
#    elif (defined(_LP64) || SANITIZER_X32 ||              \
 (defined(__mips__) && _MIPS_SIM == _ABIN32)) && \
 !SANITIZER_SPARC && defined(__NR_newfstatat)
  return internal_syscall(SYSCALL(newfstatat), AT_FDCWD, (uptr)path, (uptr)buf,
 AT_SYMLINK_NOFOLLOW);
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMll2PozYUhn-Nc2NtBMeEjwsu2GRTRc18aDLqdntjGWMGd4lNbbOz24v57ZWBZJLJqLu9aKcowuhg3nAeXp9jZq18UELkaPEeLVYz1rtGm9wZbqw0opqVuvqWoziYfsEKBQWCdaP3AsGa__FonOgNgrXTuuUNk8rSspdthWD9wDmCdStLy5R08k_h5x2vKdf7vVZnIfvNcta2tJWq_0oZM7yJo7lUHJEiJIgU4E9YGKONv0CQUHp9R5V4rK1jjjkECX5kFivtcCV4y4yosFTYNdJiy3UnxhwwxiHBKFliBKQStVQC7z7tlsV2iyBVzKeX4UHcz0BA8BA8PIzx-PDiw9PT09NbckkDzyXyOJR2wo9S4SEl6aRWWNd4z7jRIy2pnDCKtQfNCEFyzCoNJiTp5UQEmSeDYLjfx9EYYOEwDsFWq4cpCq9GyavRUSmb3mLC-qZWgwSRgoQvmIqvHVP2EunkG7ra7G5PaIaQvDDYJdJ0Pp-PRjsXeZX_ElP6S0GLu592lF4Aezo9_m16A7U57zpEigi8A8Pgh2hdZnXkFcHoPoyNcL1Rr-E6WaInS37wVHFP16vlx9XBoJ0zCLKOueY8UvY1guXfsHsLeoPhvk_vmP7_B9rE6rxDNM51FhGP0AOSrunLOdd7z6n9chjedUb_LrhDsC5bXSJYV2lWE5FWNQnjoCSs5kFS8iQCnoaMRQlJBcviKPbfRO872QrzzriR_o9DB7Il6bR6xvMGd0Z32grsNGZVhXkj-GeLa23GSiqqYU2-aDVnGhdNkvgmIVpZe44nKtvboXZ6jJ7krrje3G9--3BHfyVwCJ4daHEkfyZE97KzQyXACGIEMaZXm9sd3W2uMCIrRFaYFu8312QsxsdZp3rh89_vbou75WHO97P-Lx1X3NPdp6vt5vpnen2zvtlubz56OfL-BfpZlZMqIxmbiTxMIExICGEwa_JFXWcLIAuREFIFJRCSxUEcQppWaV1FMJM5BBAFCZAwiIIwmPMyqyshYhC85CFboCgQeybbuXfuXJuHmbS2F3kYBEGWzlpWitYO2ygAJR7xcBcB-F2VyQe7l_2DRVHQSuvss4yTrh32X8_lY7HCL6hP-5nhm_jyMJgZfxZGiRY3glXCWB-f-tisN23-jxfh8MoWwXrK6UsOfwUAAP__KHYmHw">