1*38fd1498Szrj/* Object size checking support macros. 2*38fd1498Szrj Copyright (C) 2004-2018 Free Software Foundation, Inc. 3*38fd1498Szrj 4*38fd1498SzrjThis file is part of GCC. 5*38fd1498Szrj 6*38fd1498SzrjGCC is free software; you can redistribute it and/or modify it under 7*38fd1498Szrjthe terms of the GNU General Public License as published by the Free 8*38fd1498SzrjSoftware Foundation; either version 3, or (at your option) any later 9*38fd1498Szrjversion. 10*38fd1498Szrj 11*38fd1498SzrjIn addition to the permissions in the GNU General Public License, the 12*38fd1498SzrjFree Software Foundation gives you unlimited permission to link the 13*38fd1498Szrjcompiled version of this file into combinations with other programs, 14*38fd1498Szrjand to distribute those combinations without any restriction coming 15*38fd1498Szrjfrom the use of this file. (The General Public License restrictions 16*38fd1498Szrjdo apply in other respects; for example, they cover modification of 17*38fd1498Szrjthe file, and distribution when not linked into a combine 18*38fd1498Szrjexecutable.) 19*38fd1498Szrj 20*38fd1498SzrjGCC is distributed in the hope that it will be useful, but WITHOUT ANY 21*38fd1498SzrjWARRANTY; without even the implied warranty of MERCHANTABILITY or 22*38fd1498SzrjFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 23*38fd1498Szrjfor more details. 24*38fd1498Szrj 25*38fd1498SzrjUnder Section 7 of GPL version 3, you are granted additional 26*38fd1498Szrjpermissions described in the GCC Runtime Library Exception, version 27*38fd1498Szrj3.1, as published by the Free Software Foundation. 28*38fd1498Szrj 29*38fd1498SzrjYou should have received a copy of the GNU General Public License and 30*38fd1498Szrja copy of the GCC Runtime Library Exception along with this program; 31*38fd1498Szrjsee the files COPYING3 and COPYING.RUNTIME respectively. If not, see 32*38fd1498Szrj<http://www.gnu.org/licenses/>. */ 33*38fd1498Szrj 34*38fd1498Szrj 35*38fd1498Szrj#ifndef _SSP_H 36*38fd1498Szrj#define _SSP_H 1 37*38fd1498Szrj 38*38fd1498Szrj#if _FORTIFY_SOURCE > 0 && __OPTIMIZE__ > 0 \ 39*38fd1498Szrj && defined __GNUC__ \ 40*38fd1498Szrj && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) \ 41*38fd1498Szrj && !defined __cplusplus 42*38fd1498Szrj# if _FORTIFY_SOURCE == 1 43*38fd1498Szrj# define __SSP_FORTIFY_LEVEL 1 44*38fd1498Szrj# elif _FORTIFY_SOURCE > 1 45*38fd1498Szrj# define __SSP_FORTIFY_LEVEL 2 46*38fd1498Szrj# endif 47*38fd1498Szrj#endif 48*38fd1498Szrj 49*38fd1498Szrj#if __SSP_FORTIFY_LEVEL > 0 50*38fd1498Szrj# include <stddef.h> 51*38fd1498Szrj# define __ssp_bos(ptr) __builtin_object_size (ptr, __SSP_FORTIFY_LEVEL > 1) 52*38fd1498Szrj# define __ssp_bos0(ptr) __builtin_object_size (ptr, 0) 53*38fd1498Szrj 54*38fd1498Szrj# define __SSP_REDIRECT(name, proto, alias) \ 55*38fd1498Szrj name proto __asm__ (__SSP_ASMNAME (#alias)) 56*38fd1498Szrj# define __SSP_ASMNAME(cname) __SSP_ASMNAME2 (__USER_LABEL_PREFIX__, cname) 57*38fd1498Szrj# define __SSP_ASMNAME2(prefix, cname) __SSP_ASMNAME3 (prefix) cname 58*38fd1498Szrj# define __SSP_ASMNAME3(prefix) #prefix 59*38fd1498Szrj 60*38fd1498Szrj# @ssp_have_usable_vsnprintf@ __SSP_HAVE_VSNPRINTF 61*38fd1498Szrj 62*38fd1498Szrjextern void __chk_fail (void) __attribute__((__noreturn__)); 63*38fd1498Szrj#endif 64*38fd1498Szrj 65*38fd1498Szrj#endif /* _SSP_H */ 66