47 lines · c
1//===-- Including stdlib.h in overlay mode --------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIBC_HDR_STDLIB_OVERLAY_H10#define LLVM_LIBC_HDR_STDLIB_OVERLAY_H11 12#ifdef LIBC_FULL_BUILD13#error "This header should only be included in overlay mode"14#endif15 16// Overlay mode17 18// glibc <stdlib.h> header might provide extern inline definitions for few19// functions, causing external alias errors. They are guarded by20// `__USE_FORTIFY_LEVEL`, which will be temporarily disabled.21 22#ifdef _FORTIFY_SOURCE23#define LIBC_OLD_FORTIFY_SOURCE _FORTIFY_SOURCE24#undef _FORTIFY_SOURCE25#endif26 27#ifdef __USE_FORTIFY_LEVEL28#define LIBC_OLD_USE_FORTIFY_LEVEL __USE_FORTIFY_LEVEL29#undef __USE_FORTIFY_LEVEL30#define __USE_FORTIFY_LEVEL 031#endif32 33#include <stdlib.h>34 35#ifdef LIBC_OLD_FORTIFY_SOURCE36#define _FORTIFY_SOURCE LIBC_OLD_FORTIFY_SOURCE37#undef LIBC_OLD_FORTIFY_SOURCE38#endif39 40#ifdef LIBC_OLD_USE_FORTIFY_LEVEL41#undef __USE_FORTIFY_LEVEL42#define __USE_FORTIFY_LEVEL LIBC_OLD_USE_FORTIFY_LEVEL43#undef LIBC_OLD_USE_FORTIFY_LEVEL44#endif45 46#endif47