## Why Currently, the system header `errno.h` is included in `libc_errno.h`, which is supposed to be consumed by internal implementations only. As unit and hermetic tests should never use `#include <errno.h>` but instead use `#include "src/errno/libc_errno.h"`, we do not want to implicitly include `errno.h`. In order to have a clear seperation between those two, we want to pull out the definitions of errno numbers from `errno.h`. ## What * Extract the definitions of errno numbers from [include/errno.h.def](https://github.com/llvm/llvm-project/pull/91150/files#diff-ed38ed463ed50571b498a5b69039cab58dc9d145da7f751a24da9d77f07781cd) and place it under [include/llvm-libc-macros/linux/error-number-macros.h](https://github.com/llvm/llvm-project/pull/91150/files#diff-d6192866629690ebb7cefa1f0a90b6675073e9642f3279df08a04dcdb05fd892) * Provide mips-specific errno numbers in [include/llvm-libc-macros/linux/mips/error-number-macros.h](https://github.com/llvm/llvm-project/pull/91150/files#diff-3fd35a4c94e0cc359933e497b10311d857857b2e173e8afebc421b04b7527743) * Find definition of mips errno numbers in glibc [here](ea73eb5f58/sysdeps/unix/sysv/linux/mips/bits/errno.h (L32-L50)) (equally defined in the Linux kernel) * Provide sparc-specific errno numbers in [include/llvm-libc-macros/linux/sparc/error-number-macros.h](https://github.com/llvm/llvm-project/pull/91150/files#diff-5f16ffb2a51a6f72ebd4403aca7e1edea48289c99dd5978a1c84385bec4f226b) * Find definition of sparc errno numbers in glibc [here](ea73eb5f58/sysdeps/unix/sysv/linux/sparc/bits/errno.h (L33-L51)) (equally defined in the Linux kernel) * Include proxy header `errno_macros.h` instead of the system header `errno.h` in `libc_errno.h`/`libc_errno.cpp` Closes https://github.com/llvm/llvm-project/issues/80172
42 lines
968 B
Modula-2
42 lines
968 B
Modula-2
//===-- C standard library header errno.h ---------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_LIBC_ERRNO_H
|
|
#define LLVM_LIBC_ERRNO_H
|
|
|
|
#include "__llvm-libc-common.h"
|
|
|
|
#ifdef __linux__
|
|
|
|
#include <linux/errno.h>
|
|
|
|
#ifndef ENOTSUP
|
|
#define ENOTSUP EOPNOTSUPP
|
|
#endif // ENOTSUP
|
|
|
|
#include "llvm-libc-macros/linux/error-number-macros.h"
|
|
|
|
#else // __linux__
|
|
#include "llvm-libc-macros/generic-error-number-macros.h"
|
|
#endif
|
|
|
|
#if !defined(__AMDGPU__) && !defined(__NVPTX__)
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
extern thread_local int __llvmlibc_errno;
|
|
}
|
|
#else
|
|
extern _Thread_local int __llvmlibc_errno;
|
|
#endif // __cplusplus
|
|
|
|
#define errno __llvmlibc_errno
|
|
#endif
|
|
|
|
#endif // LLVM_LIBC_ERRNO_H
|