xref: /llvm-project/libc/src/compiler/generic/__stack_chk_fail.cpp (revision 1d0f40ba05b76ff028c69054899f88f1c7452b4b)
1315a5cceSNick Desaulniers //===-- Implementation of __stack_chk_fail --------------------------------===//
2315a5cceSNick Desaulniers //
3315a5cceSNick Desaulniers // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4315a5cceSNick Desaulniers // See https://llvm.org/LICENSE.txt for license information.
5315a5cceSNick Desaulniers // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6315a5cceSNick Desaulniers //
7315a5cceSNick Desaulniers //===----------------------------------------------------------------------===//
8315a5cceSNick Desaulniers 
9315a5cceSNick Desaulniers #include "src/compiler/__stack_chk_fail.h"
10315a5cceSNick Desaulniers #include "src/__support/OSUtil/io.h"
11315a5cceSNick Desaulniers #include "src/stdlib/abort.h"
12*1d0f40baSTristan Ross #include <stdint.h> // For uintptr_t
13315a5cceSNick Desaulniers 
1424d44ff4SNick Desaulniers extern "C" {
15315a5cceSNick Desaulniers 
166f3d1d30STristan Ross uintptr_t __stack_chk_guard = static_cast<uintptr_t>(0xa9fff01234);
176f3d1d30STristan Ross 
1824d44ff4SNick Desaulniers void __stack_chk_fail(void) {
19aef9a89cSSchrodinger ZHU Yifan   LIBC_NAMESPACE::write_to_stderr("stack smashing detected\n");
20315a5cceSNick Desaulniers   LIBC_NAMESPACE::abort();
21315a5cceSNick Desaulniers }
22315a5cceSNick Desaulniers 
2324d44ff4SNick Desaulniers } // extern "C"
24