With modern architectures having a thread pointer and language supporting thread locals, there is no reason to use a function intermediary to access the thread local errno value. The entrypoint corresponding to errno has been replaced with an object library as there is no formal entrypoint for errno anymore. Reviewed By: jeffbailey, michaelrj Differential Revision: https://reviews.llvm.org/D120920
41 lines
913 B
TableGen
41 lines
913 B
TableGen
def LLVMLibcExt : StandardSpec<"llvm_libc_ext"> {
|
|
HeaderSpec String = HeaderSpec<
|
|
"string.h",
|
|
[], // Macros
|
|
[], // Types
|
|
[], // Enumerations
|
|
[
|
|
FunctionSpec<
|
|
"bzero",
|
|
RetValSpec<VoidType>,
|
|
[ArgSpec<VoidPtr>, ArgSpec<SizeTType>]
|
|
>,
|
|
FunctionSpec<
|
|
"bcmp",
|
|
RetValSpec<IntType>,
|
|
[ArgSpec<ConstVoidPtr>, ArgSpec<ConstVoidPtr>, ArgSpec<SizeTType>]
|
|
>,
|
|
]
|
|
>;
|
|
|
|
HeaderSpec Assert = HeaderSpec<
|
|
"assert.h",
|
|
[], // Macros
|
|
[], // Types
|
|
[], // Enumerations
|
|
[
|
|
FunctionSpec<
|
|
"__assert_fail",
|
|
RetValSpec<NoReturn>,
|
|
[ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>, ArgSpec<UnsignedType>, ArgSpec<ConstCharPtr>]
|
|
|
|
>,
|
|
]
|
|
>;
|
|
|
|
let Headers = [
|
|
String,
|
|
Assert,
|
|
];
|
|
}
|