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