URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/gnu-src/gcc-4.2.2/libssp/ssp
- from Rev 38 to Rev 154
- ↔ Reverse comparison
Rev 38 → Rev 154
/ssp.h.in
0,0 → 1,66
/* Object size checking support macros. |
Copyright (C) 2004, 2005 Free Software Foundation, Inc. |
|
This file is part of GCC. |
|
GCC is free software; you can redistribute it and/or modify it under |
the terms of the GNU General Public License as published by the Free |
Software Foundation; either version 2, or (at your option) any later |
version. |
|
In addition to the permissions in the GNU General Public License, the |
Free Software Foundation gives you unlimited permission to link the |
compiled version of this file into combinations with other programs, |
and to distribute those combinations without any restriction coming |
from the use of this file. (The General Public License restrictions |
do apply in other respects; for example, they cover modification of |
the file, and distribution when not linked into a combine |
executable.) |
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
WARRANTY; without even the implied warranty of MERCHANTABILITY or |
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
for more details. |
|
You should have received a copy of the GNU General Public License |
along with GCC; see the file COPYING. If not, write to the Free |
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA |
02110-1301, USA. */ |
|
/* As a special exception, if you link this library with files compiled with |
GCC to produce an executable, this does not cause the resulting executable |
to be covered by the GNU General Public License. This exception does not |
however invalidate any other reasons why the executable file might be |
covered by the GNU General Public License. */ |
|
#ifndef _SSP_H |
#define _SSP_H 1 |
|
#if _FORTIFY_SOURCE > 0 && __OPTIMIZE__ > 0 \ |
&& defined __GNUC__ \ |
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) \ |
&& !defined __cplusplus |
# if _FORTIFY_SOURCE == 1 |
# define __SSP_FORTIFY_LEVEL 1 |
# elif _FORTIFY_SOURCE > 1 |
# define __SSP_FORTIFY_LEVEL 2 |
# endif |
#endif |
|
#if __SSP_FORTIFY_LEVEL > 0 |
# include <stddef.h> |
# define __ssp_bos(ptr) __builtin_object_size (ptr, __SSP_FORTIFY_LEVEL > 1) |
# define __ssp_bos0(ptr) __builtin_object_size (ptr, 0) |
|
# define __SSP_REDIRECT(name, proto, alias) \ |
name proto __asm__ (__SSP_ASMNAME (#alias)) |
# define __SSP_ASMNAME(cname) __SSP_ASMNAME2 (__USER_LABEL_PREFIX__, cname) |
# define __SSP_ASMNAME2(prefix, cname) __SSP_ASMNAME3 (prefix) cname |
# define __SSP_ASMNAME3(prefix) #prefix |
|
# @ssp_have_usable_vsnprintf@ __SSP_HAVE_VSNPRINTF |
|
extern void __chk_fail (void) __attribute__((__noreturn__)); |
#endif |
|
#endif /* _SSP_H */ |
/stdio.h
0,0 → 1,101
/* Checking macros for stdio functions. |
Copyright (C) 2004, 2005 Free Software Foundation, Inc. |
|
This file is part of GCC. |
|
GCC is free software; you can redistribute it and/or modify it under |
the terms of the GNU General Public License as published by the Free |
Software Foundation; either version 2, or (at your option) any later |
version. |
|
In addition to the permissions in the GNU General Public License, the |
Free Software Foundation gives you unlimited permission to link the |
compiled version of this file into combinations with other programs, |
and to distribute those combinations without any restriction coming |
from the use of this file. (The General Public License restrictions |
do apply in other respects; for example, they cover modification of |
the file, and distribution when not linked into a combine |
executable.) |
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
WARRANTY; without even the implied warranty of MERCHANTABILITY or |
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
for more details. |
|
You should have received a copy of the GNU General Public License |
along with GCC; see the file COPYING. If not, write to the Free |
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA |
02110-1301, USA. */ |
|
/* As a special exception, if you link this library with files compiled with |
GCC to produce an executable, this does not cause the resulting executable |
to be covered by the GNU General Public License. This exception does not |
however invalidate any other reasons why the executable file might be |
covered by the GNU General Public License. */ |
|
#ifndef _SSP_STDIO_H |
#define _SSP_STDIO_H 1 |
|
#include <ssp.h> |
#include_next <stdio.h> |
|
#if __SSP_FORTIFY_LEVEL > 0 |
|
#include <stdarg.h> |
|
#undef sprintf |
#undef vsprintf |
#undef snprintf |
#undef vsnprintf |
#undef gets |
#undef fgets |
|
extern int __sprintf_chk (char *__restrict__ __s, int __flag, size_t __slen, |
__const char *__restrict__ __format, ...); |
extern int __vsprintf_chk (char *__restrict__ __s, int __flag, size_t __slen, |
__const char *__restrict__ __format, |
va_list __ap); |
|
#define sprintf(str, ...) \ |
__builtin___sprintf_chk (str, 0, __ssp_bos (str), \ |
__VA_ARGS__) |
#define vsprintf(str, fmt, ap) \ |
__builtin___vsprintf_chk (str, 0, __ssp_bos (str), fmt, ap) |
|
extern int __snprintf_chk (char *__restrict__ __s, size_t __n, int __flag, |
size_t __slen, __const char *__restrict__ __format, |
...); |
extern int __vsnprintf_chk (char *__restrict__ __s, size_t __n, int __flag, |
size_t __slen, __const char *__restrict__ __format, |
va_list __ap); |
|
#define snprintf(str, len, ...) \ |
__builtin___snprintf_chk (str, len, 0, __ssp_bos (str), __VA_ARGS__) |
#define vsnprintf(str, len, fmt, ap) \ |
__builtin___vsnprintf_chk (str, len, 0, __ssp_bos (str), fmt, ap) |
|
extern char *__gets_chk (char *__str, size_t); |
extern char *__SSP_REDIRECT (__gets_alias, (char *__str), gets); |
|
extern inline __attribute__((__always_inline__)) char * |
gets (char *__str) |
{ |
if (__ssp_bos (__str) != (size_t) -1) |
return __gets_chk (__str, __ssp_bos (__str)); |
return __gets_alias (__str); |
} |
|
extern char *__SSP_REDIRECT (__fgets_alias, |
(char *__restrict__ __s, int __n, |
FILE *__restrict__ __stream), fgets); |
|
extern inline __attribute__((__always_inline__)) char * |
fgets (char *__restrict__ __s, int __n, FILE *__restrict__ __stream) |
{ |
if (__ssp_bos (__s) != (size_t) -1 && (size_t) __n > __ssp_bos (__s)) |
__chk_fail (); |
return __fgets_alias (__s, __n, __stream); |
} |
|
#endif /* __SSP_FORTIFY_LEVEL > 0 */ |
#endif /* _SSP_STDIO_H */ |
/string.h
0,0 → 1,168
/* Checking macros for string functions. |
Copyright (C) 2004, 2005 Free Software Foundation, Inc. |
|
This file is part of GCC. |
|
GCC is free software; you can redistribute it and/or modify it under |
the terms of the GNU General Public License as published by the Free |
Software Foundation; either version 2, or (at your option) any later |
version. |
|
In addition to the permissions in the GNU General Public License, the |
Free Software Foundation gives you unlimited permission to link the |
compiled version of this file into combinations with other programs, |
and to distribute those combinations without any restriction coming |
from the use of this file. (The General Public License restrictions |
do apply in other respects; for example, they cover modification of |
the file, and distribution when not linked into a combine |
executable.) |
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
WARRANTY; without even the implied warranty of MERCHANTABILITY or |
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
for more details. |
|
You should have received a copy of the GNU General Public License |
along with GCC; see the file COPYING. If not, write to the Free |
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA |
02110-1301, USA. */ |
|
/* As a special exception, if you link this library with files compiled with |
GCC to produce an executable, this does not cause the resulting executable |
to be covered by the GNU General Public License. This exception does not |
however invalidate any other reasons why the executable file might be |
covered by the GNU General Public License. */ |
|
#ifndef _SSP_STRING_H |
#define _SSP_STRING_H 1 |
|
#include <ssp.h> |
#include_next <string.h> |
|
#if __SSP_FORTIFY_LEVEL > 0 |
|
#undef memcpy |
#undef memmove |
#undef memset |
#undef strcat |
#undef strcpy |
#undef strncat |
#undef strncpy |
#undef mempcpy |
#undef stpcpy |
#undef bcopy |
#undef bzero |
|
#define memcpy(dest, src, len) \ |
((__ssp_bos0 (dest) != (size_t) -1) \ |
? __builtin___memcpy_chk (dest, src, len, __ssp_bos0 (dest)) \ |
: __memcpy_ichk (dest, src, len)) |
static inline __attribute__((__always_inline__)) void * |
__memcpy_ichk (void *__restrict__ __dest, const void *__restrict__ __src, |
size_t __len) |
{ |
return __builtin___memcpy_chk (__dest, __src, __len, __ssp_bos0 (__dest)); |
} |
|
|
#define memmove(dest, src, len) \ |
((__ssp_bos0 (dest) != (size_t) -1) \ |
? __builtin___memmove_chk (dest, src, len, __ssp_bos0 (dest)) \ |
: __memmove_ichk (dest, src, len)) |
static inline __attribute__((__always_inline__)) void * |
__memmove_ichk (void *__dest, const void *__src, size_t __len) |
{ |
return __builtin___memmove_chk (__dest, __src, __len, __ssp_bos0 (__dest)); |
} |
|
|
#define mempcpy(dest, src, len) \ |
((__ssp_bos0 (dest) != (size_t) -1) \ |
? __builtin___mempcpy_chk (dest, src, len, __ssp_bos0 (dest)) \ |
: __mempcpy_ichk (dest, src, len)) |
static inline __attribute__((__always_inline__)) void * |
__mempcpy_ichk (void *__restrict__ __dest, const void *__restrict__ __src, |
size_t __len) |
{ |
return __builtin___mempcpy_chk (__dest, __src, __len, __ssp_bos0 (__dest)); |
} |
|
|
#define memset(dest, ch, len) \ |
((__ssp_bos0 (dest) != (size_t) -1) \ |
? __builtin___memset_chk (dest, ch, len, __ssp_bos0 (dest)) \ |
: __memset_ichk (dest, ch, len)) |
static inline __attribute__((__always_inline__)) void * |
__memset_ichk (void *__dest, int __ch, size_t __len) |
{ |
return __builtin___memset_chk (__dest, __ch, __len, __ssp_bos0 (__dest)); |
} |
|
#define bcopy(src, dest, len) ((void) \ |
((__ssp_bos0 (dest) != (size_t) -1) \ |
? __builtin___memmove_chk (dest, src, len, __ssp_bos0 (dest)) \ |
: __memmove_ichk (dest, src, len))) |
#define bzero(dest, len) ((void) \ |
((__ssp_bos0 (dest) != (size_t) -1) \ |
? __builtin___memset_chk (dest, '\0', len, __ssp_bos0 (dest)) \ |
: __memset_ichk (dest, '\0', len))) |
|
|
#define strcpy(dest, src) \ |
((__ssp_bos (dest) != (size_t) -1) \ |
? __builtin___strcpy_chk (dest, src, __ssp_bos (dest)) \ |
: __strcpy_ichk (dest, src)) |
static inline __attribute__((__always_inline__)) char * |
__strcpy_ichk (char *__restrict__ __dest, const char *__restrict__ __src) |
{ |
return __builtin___strcpy_chk (__dest, __src, __ssp_bos (__dest)); |
} |
|
|
#define stpcpy(dest, src) \ |
((__ssp_bos (dest) != (size_t) -1) \ |
? __builtin___stpcpy_chk (dest, src, __ssp_bos (dest)) \ |
: __stpcpy_ichk (dest, src)) |
static inline __attribute__((__always_inline__)) char * |
__stpcpy_ichk (char *__restrict__ __dest, const char *__restrict__ __src) |
{ |
return __builtin___stpcpy_chk (__dest, __src, __ssp_bos (__dest)); |
} |
|
|
#define strncpy(dest, src, len) \ |
((__ssp_bos (dest) != (size_t) -1) \ |
? __builtin___strncpy_chk (dest, src, len, __ssp_bos (dest)) \ |
: __strncpy_ichk (dest, src, len)) |
static inline __attribute__((__always_inline__)) char * |
__strncpy_ichk (char *__restrict__ __dest, const char *__restrict__ __src, |
size_t __len) |
{ |
return __builtin___strncpy_chk (__dest, __src, __len, __ssp_bos (__dest)); |
} |
|
|
#define strcat(dest, src) \ |
((__ssp_bos (dest) != (size_t) -1) \ |
? __builtin___strcat_chk (dest, src, __ssp_bos (dest)) \ |
: __strcat_ichk (dest, src)) |
static inline __attribute__((__always_inline__)) char * |
__strcat_ichk (char *__restrict__ __dest, const char *__restrict__ __src) |
{ |
return __builtin___strcat_chk (__dest, __src, __ssp_bos (__dest)); |
} |
|
|
#define strncat(dest, src, len) \ |
((__ssp_bos (dest) != (size_t) -1) \ |
? __builtin___strncat_chk (dest, src, len, __ssp_bos (dest)) \ |
: __strncat_ichk (dest, src, len)) |
static inline __attribute__((__always_inline__)) char * |
__strncat_ichk (char *__restrict__ __dest, const char *__restrict__ __src, |
size_t __len) |
{ |
return __builtin___strncat_chk (__dest, __src, __len, __ssp_bos (__dest)); |
} |
|
#endif /* __SSP_FORTIFY_LEVEL > 0 */ |
#endif /* _SSP_STRING_H */ |
/unistd.h
0,0 → 1,85
/* Checking macros for unistd functions. |
Copyright (C) 2005 Free Software Foundation, Inc. |
|
This file is part of GCC. |
|
GCC is free software; you can redistribute it and/or modify it under |
the terms of the GNU General Public License as published by the Free |
Software Foundation; either version 2, or (at your option) any later |
version. |
|
In addition to the permissions in the GNU General Public License, the |
Free Software Foundation gives you unlimited permission to link the |
compiled version of this file into combinations with other programs, |
and to distribute those combinations without any restriction coming |
from the use of this file. (The General Public License restrictions |
do apply in other respects; for example, they cover modification of |
the file, and distribution when not linked into a combine |
executable.) |
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
WARRANTY; without even the implied warranty of MERCHANTABILITY or |
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
for more details. |
|
You should have received a copy of the GNU General Public License |
along with GCC; see the file COPYING. If not, write to the Free |
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA |
02110-1301, USA. */ |
|
/* As a special exception, if you link this library with files compiled with |
GCC to produce an executable, this does not cause the resulting executable |
to be covered by the GNU General Public License. This exception does not |
however invalidate any other reasons why the executable file might be |
covered by the GNU General Public License. */ |
|
#ifndef _SSP_UNISTD_H |
#define _SSP_UNISTD_H 1 |
|
#include <ssp.h> |
#include_next <unistd.h> |
|
#if __SSP_FORTIFY_LEVEL > 0 |
|
#undef read |
#undef readlink |
#undef getcwd |
|
extern ssize_t __SSP_REDIRECT (__read_alias, (int __fd, void *__buf, |
size_t __nbytes), read); |
|
extern inline __attribute__((__always_inline__)) ssize_t |
read (int __fd, void *__buf, size_t __nbytes) |
{ |
if (__ssp_bos0 (__buf) != (size_t) -1 && __nbytes > __ssp_bos0 (__buf)) |
__chk_fail (); |
return __read_alias (__fd, __buf, __nbytes); |
} |
|
extern int __SSP_REDIRECT (__readlink_alias, |
(const char *__restrict__ __path, |
char *__restrict__ __buf, size_t __len), |
readlink); |
|
extern inline __attribute__((__always_inline__)) int |
readlink (const char *__restrict__ __path, char *__restrict__ __buf, |
size_t __len) |
{ |
if (__ssp_bos (__buf) != (size_t) -1 && __len > __ssp_bos (__buf)) |
__chk_fail (); |
return __readlink_alias (__path, __buf, __len); |
} |
|
extern char *__SSP_REDIRECT (__getcwd_alias, |
(char *__buf, size_t __size), getcwd); |
|
extern inline __attribute__((__always_inline__)) char * |
getcwd (char *__buf, size_t __size) |
{ |
if (__ssp_bos (__buf) != (size_t) -1 && __size > __ssp_bos (__buf)) |
__chk_fail (); |
return __getcwd_alias (__buf, __size); |
} |
|
#endif /* __SSP_FORTIFY_LEVEL > 0 */ |
#endif /* _SSP_UNISTD_H */ |