Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 50177 Details for
Bug 76082
(toolchain) genkernel-3.1.0d doesn't compile udev-039 on hardened
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
add ssp stub to klibc
klibc-ssp.patch (text/plain), 24.90 KB, created by
Mathias Gug
on 2005-02-01 14:24:05 UTC
(
hide
)
Description:
add ssp stub to klibc
Filename:
MIME Type:
Creator:
Mathias Gug
Created:
2005-02-01 14:24:05 UTC
Size:
24.90 KB
patch
obsolete
>diff -uNr udev-039.orig/klibc/include/features.h udev-039.new/klibc/include/features.h >--- udev-039.orig/klibc/include/features.h 1969-12-31 19:00:00.000000000 -0500 >+++ udev-039.new/klibc/include/features.h 2005-01-22 20:22:25.792945712 -0500 >@@ -0,0 +1,322 @@ >+/* Copyright (C) 1991-1993,1995-2003, 2004 Free Software Foundation, Inc. >+ This file is part of the GNU C Library. >+ >+ The GNU C Library is free software; you can redistribute it and/or >+ modify it under the terms of the GNU Lesser General Public >+ License as published by the Free Software Foundation; either >+ version 2.1 of the License, or (at your option) any later version. >+ >+ The GNU C Library 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 >+ Lesser General Public License for more details. >+ >+ You should have received a copy of the GNU Lesser General Public >+ License along with the GNU C Library; if not, write to the Free >+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA >+ 02111-1307 USA. */ >+ >+#ifndef _FEATURES_H >+#define _FEATURES_H 1 >+ >+/* These are defined by the user (or the compiler) >+ to specify the desired environment: >+ >+ __STRICT_ANSI__ ISO Standard C. >+ _ISOC99_SOURCE Extensions to ISO C89 from ISO C99. >+ _POSIX_SOURCE IEEE Std 1003.1. >+ _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2; >+ if >=199309L, add IEEE Std 1003.1b-1993; >+ if >=199506L, add IEEE Std 1003.1c-1995; >+ if >=200112L, all of IEEE 1003.1-2004 >+ _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if >+ Single Unix conformance is wanted, to 600 for the >+ upcoming sixth revision. >+ _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions. >+ _LARGEFILE_SOURCE Some more functions for correct standard I/O. >+ _LARGEFILE64_SOURCE Additional functionality from LFS for large files. >+ _FILE_OFFSET_BITS=N Select default filesystem interface. >+ _BSD_SOURCE ISO C, POSIX, and 4.3BSD things. >+ _SVID_SOURCE ISO C, POSIX, and SVID things. >+ _GNU_SOURCE All of the above, plus GNU extensions. >+ _REENTRANT Select additionally reentrant object. >+ _THREAD_SAFE Same as _REENTRANT, often used by other systems. >+ >+ The `-ansi' switch to the GNU C compiler defines __STRICT_ANSI__. >+ If none of these are defined, the default is to have _SVID_SOURCE, >+ _BSD_SOURCE, and _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to >+ 199506L. If more than one of these are defined, they accumulate. >+ For example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE >+ together give you ISO C, 1003.1, and 1003.2, but nothing else. >+ >+ These are defined by this file and are used by the >+ header files to decide what to declare or define: >+ >+ __USE_ISOC99 Define ISO C99 things. >+ __USE_POSIX Define IEEE Std 1003.1 things. >+ __USE_POSIX2 Define IEEE Std 1003.2 things. >+ __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things. >+ __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things. >+ __USE_XOPEN Define XPG things. >+ __USE_XOPEN_EXTENDED Define X/Open Unix things. >+ __USE_UNIX98 Define Single Unix V2 things. >+ __USE_XOPEN2K Define XPG6 things. >+ __USE_LARGEFILE Define correct standard I/O things. >+ __USE_LARGEFILE64 Define LFS things with separate names. >+ __USE_FILE_OFFSET64 Define 64bit interface as default. >+ __USE_BSD Define 4.3BSD things. >+ __USE_SVID Define SVID things. >+ __USE_MISC Define things common to BSD and System V Unix. >+ __USE_GNU Define GNU extensions. >+ __USE_REENTRANT Define reentrant/thread-safe *_r functions. >+ __FAVOR_BSD Favor 4.3BSD things in cases of conflict. >+ >+ The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are >+ defined by this file unconditionally. `__GNU_LIBRARY__' is provided >+ only for compatibility. All new code should use the other symbols >+ to test for features. >+ >+ All macros listed above as possibly being defined by this file are >+ explicitly undefined if they are not explicitly defined. >+ Feature-test macros that are not defined by the user or compiler >+ but are implied by the other feature-test macros defined (or by the >+ lack of any definitions) are defined by the file. */ >+ >+ >+/* Undefine everything, so we get a clean slate. */ >+#undef __USE_ISOC99 >+#undef __USE_POSIX >+#undef __USE_POSIX2 >+#undef __USE_POSIX199309 >+#undef __USE_POSIX199506 >+#undef __USE_XOPEN >+#undef __USE_XOPEN_EXTENDED >+#undef __USE_UNIX98 >+#undef __USE_XOPEN2K >+#undef __USE_LARGEFILE >+#undef __USE_LARGEFILE64 >+#undef __USE_FILE_OFFSET64 >+#undef __USE_BSD >+#undef __USE_SVID >+#undef __USE_MISC >+#undef __USE_GNU >+#undef __USE_REENTRANT >+#undef __FAVOR_BSD >+#undef __KERNEL_STRICT_NAMES >+ >+/* Suppress kernel-name space pollution unless user expressedly asks >+ for it. */ >+#ifndef _LOOSE_KERNEL_NAMES >+# define __KERNEL_STRICT_NAMES >+#endif >+ >+/* Always use ISO C things. */ >+#define __USE_ANSI 1 >+ >+ >+/* If _BSD_SOURCE was defined by the user, favor BSD over POSIX. */ >+#if defined _BSD_SOURCE && \ >+ !(defined _POSIX_SOURCE || defined _POSIX_C_SOURCE || \ >+ defined _XOPEN_SOURCE || defined _XOPEN_SOURCE_EXTENDED || \ >+ defined _GNU_SOURCE || defined _SVID_SOURCE) >+# define __FAVOR_BSD 1 >+#endif >+ >+/* If _GNU_SOURCE was defined by the user, turn on all the other features. */ >+#ifdef _GNU_SOURCE >+# undef _ISOC99_SOURCE >+# define _ISOC99_SOURCE 1 >+# undef _POSIX_SOURCE >+# define _POSIX_SOURCE 1 >+# undef _POSIX_C_SOURCE >+# define _POSIX_C_SOURCE 199506L >+# undef _XOPEN_SOURCE >+# define _XOPEN_SOURCE 600 >+# undef _XOPEN_SOURCE_EXTENDED >+# define _XOPEN_SOURCE_EXTENDED 1 >+# undef _LARGEFILE64_SOURCE >+# define _LARGEFILE64_SOURCE 1 >+# undef _BSD_SOURCE >+# define _BSD_SOURCE 1 >+# undef _SVID_SOURCE >+# define _SVID_SOURCE 1 >+#endif >+ >+/* If nothing (other than _GNU_SOURCE) is defined, >+ define _BSD_SOURCE and _SVID_SOURCE. */ >+#if (!defined __STRICT_ANSI__ && !defined _ISOC99_SOURCE && \ >+ !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE && \ >+ !defined _XOPEN_SOURCE && !defined _XOPEN_SOURCE_EXTENDED && \ >+ !defined _BSD_SOURCE && !defined _SVID_SOURCE) >+# define _BSD_SOURCE 1 >+# define _SVID_SOURCE 1 >+#endif >+ >+/* This is to enable the ISO C99 extension. Also recognize the old macro >+ which was used prior to the standard acceptance. This macro will >+ eventually go away and the features enabled by default once the ISO C99 >+ standard is widely adopted. */ >+#if (defined _ISOC99_SOURCE || defined _ISOC9X_SOURCE \ >+ || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)) >+# define __USE_ISOC99 1 >+#endif >+ >+/* If none of the ANSI/POSIX macros are defined, use POSIX.1 and POSIX.2 >+ (and IEEE Std 1003.1b-1993 unless _XOPEN_SOURCE is defined). */ >+#if (!defined __STRICT_ANSI__ && !defined _POSIX_SOURCE && \ >+ !defined _POSIX_C_SOURCE) >+# define _POSIX_SOURCE 1 >+# if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 500 >+# define _POSIX_C_SOURCE 2 >+# else >+# define _POSIX_C_SOURCE 199506L >+# endif >+#endif >+ >+#if defined _POSIX_SOURCE || _POSIX_C_SOURCE >= 1 || defined _XOPEN_SOURCE >+# define __USE_POSIX 1 >+#endif >+ >+#if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 2 || defined _XOPEN_SOURCE >+# define __USE_POSIX2 1 >+#endif >+ >+#if (_POSIX_C_SOURCE - 0) >= 199309L >+# define __USE_POSIX199309 1 >+#endif >+ >+#if (_POSIX_C_SOURCE - 0) >= 199506L >+# define __USE_POSIX199506 1 >+#endif >+ >+#if (_POSIX_C_SOURCE - 0) >= 200112L >+# define __USE_XOPEN2K 1 >+#endif >+ >+#ifdef _XOPEN_SOURCE >+# define __USE_XOPEN 1 >+# if (_XOPEN_SOURCE - 0) >= 500 >+# define __USE_XOPEN_EXTENDED 1 >+# define __USE_UNIX98 1 >+# undef _LARGEFILE_SOURCE >+# define _LARGEFILE_SOURCE 1 >+# if (_XOPEN_SOURCE - 0) >= 600 >+# define __USE_XOPEN2K 1 >+# undef __USE_ISOC99 >+# define __USE_ISOC99 1 >+# endif >+# else >+# ifdef _XOPEN_SOURCE_EXTENDED >+# define __USE_XOPEN_EXTENDED 1 >+# endif >+# endif >+#endif >+ >+#ifdef _LARGEFILE_SOURCE >+# define __USE_LARGEFILE 1 >+#endif >+ >+#ifdef _LARGEFILE64_SOURCE >+# define __USE_LARGEFILE64 1 >+#endif >+ >+#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64 >+# define __USE_FILE_OFFSET64 1 >+#endif >+ >+#if defined _BSD_SOURCE || defined _SVID_SOURCE >+# define __USE_MISC 1 >+#endif >+ >+#ifdef _BSD_SOURCE >+# define __USE_BSD 1 >+#endif >+ >+#ifdef _SVID_SOURCE >+# define __USE_SVID 1 >+#endif >+ >+#ifdef _GNU_SOURCE >+# define __USE_GNU 1 >+#endif >+ >+#if defined _REENTRANT || defined _THREAD_SAFE >+# define __USE_REENTRANT 1 >+#endif >+ >+/* We do support the IEC 559 math functionality, real and complex. */ >+#define __STDC_IEC_559__ 1 >+#define __STDC_IEC_559_COMPLEX__ 1 >+ >+/* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) / Unicode 3.1. */ >+#define __STDC_ISO_10646__ 200009L >+ >+/* This macro indicates that the installed library is the GNU C Library. >+ For historic reasons the value now is 6 and this will stay from now >+ on. The use of this variable is deprecated. Use __GLIBC__ and >+ __GLIBC_MINOR__ now (see below) when you want to test for a specific >+ GNU C library version and use the values in <gnu/lib-names.h> to get >+ the sonames of the shared libraries. */ >+#undef __GNU_LIBRARY__ >+#define __GNU_LIBRARY__ 6 >+ >+/* Major and minor version number of the GNU C library package. Use >+ these macros to test for features in specific releases. */ >+#define __GLIBC__ 2 >+#define __GLIBC_MINOR__ 3 >+ >+/* Convenience macros to test the versions of glibc and gcc. >+ Use them like this: >+ #if __GNUC_PREREQ (2,8) >+ ... code requiring gcc 2.8 or later ... >+ #endif >+ Note - they won't work for gcc1 or glibc1, since the _MINOR macros >+ were not defined then. */ >+#if defined __GNUC__ && defined __GNUC_MINOR__ >+# define __GNUC_PREREQ(maj, min) \ >+ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) >+#else >+# define __GNUC_PREREQ(maj, min) 0 >+#endif >+ >+#define __GLIBC_PREREQ(maj, min) \ >+ ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min)) >+ >+/* Decide whether a compiler supports the long long datatypes. */ >+#if defined __GNUC__ \ >+ || (defined __PGI && defined __i386__ ) \ >+ || (defined __INTEL_COMPILER && (defined __i386__ || defined __ia64__)) \ >+ || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) >+# define __GLIBC_HAVE_LONG_LONG 1 >+#endif >+ >+/* This is here only because every header file already includes this one. */ >+#ifndef __ASSEMBLER__ >+# ifndef _SYS_CDEFS_H >+# include <sys/cdefs.h> >+# endif >+ >+/* If we don't have __REDIRECT, prototypes will be missing if >+ __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. */ >+# if defined __USE_FILE_OFFSET64 && !defined __REDIRECT >+# define __USE_LARGEFILE 1 >+# define __USE_LARGEFILE64 1 >+# endif >+ >+#endif /* !ASSEMBLER */ >+ >+/* Decide whether we can define 'extern inline' functions in headers. */ >+#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \ >+ && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ >+# define __USE_EXTERN_INLINES 1 >+#endif >+ >+ >+/* This is here only because every header file already includes this one. >+ Get the definitions of all the appropriate `__stub_FUNCTION' symbols. >+ <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub >+ that will always return failure (and set errno to ENOSYS). */ >+#include <gnu/stubs.h> >+ >+ >+#endif /* features.h */ >diff -uNr udev-039.orig/klibc/include/gnu/stubs.h udev-039.new/klibc/include/gnu/stubs.h >--- udev-039.orig/klibc/include/gnu/stubs.h 1969-12-31 19:00:00.000000000 -0500 >+++ udev-039.new/klibc/include/gnu/stubs.h 2005-01-22 20:21:58.322121912 -0500 >@@ -0,0 +1,30 @@ >+/* This file is automatically generated. >+ It defines a symbol `__stub_FUNCTION' for each function >+ in the C library which is a stub, meaning it will fail >+ every time called, usually setting errno to ENOSYS. */ >+ >+#ifdef _LIBC >+ #error Applications may not define the macro _LIBC >+#endif >+ >+#define __stub___kernel_cosl >+#define __stub___kernel_sinl >+#define __stub___kernel_tanl >+#define __stub_chflags >+#define __stub_epoll_create >+#define __stub_epoll_ctl >+#define __stub_epoll_wait >+#define __stub_fattach >+#define __stub_fchflags >+#define __stub_fdetach >+#define __stub_gtty >+#define __stub_lchmod >+#define __stub_lutimes >+#define __stub_mq_setattr >+#define __stub_mq_timedreceive >+#define __stub_mq_timedsend >+#define __stub_remap_file_pages >+#define __stub_revoke >+#define __stub_setlogin >+#define __stub_sstk >+#define __stub_stty >diff -uNr udev-039.orig/klibc/include/sys/cdefs.h udev-039.new/klibc/include/sys/cdefs.h >--- udev-039.orig/klibc/include/sys/cdefs.h 1969-12-31 19:00:00.000000000 -0500 >+++ udev-039.new/klibc/include/sys/cdefs.h 2005-01-22 20:22:41.269592904 -0500 >@@ -0,0 +1,260 @@ >+/* Copyright (C) 1992-2001, 2002 Free Software Foundation, Inc. >+ This file is part of the GNU C Library. >+ >+ The GNU C Library is free software; you can redistribute it and/or >+ modify it under the terms of the GNU Lesser General Public >+ License as published by the Free Software Foundation; either >+ version 2.1 of the License, or (at your option) any later version. >+ >+ The GNU C Library 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 >+ Lesser General Public License for more details. >+ >+ You should have received a copy of the GNU Lesser General Public >+ License along with the GNU C Library; if not, write to the Free >+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA >+ 02111-1307 USA. */ >+ >+#ifndef _SYS_CDEFS_H >+#define _SYS_CDEFS_H 1 >+ >+/* We are almost always included from features.h. */ >+#ifndef _FEATURES_H >+# include <features.h> >+#endif >+ >+/* The GNU libc does not support any K&R compilers or the traditional mode >+ of ISO C compilers anymore. Check for some of the combinations not >+ anymore supported. */ >+#if defined __GNUC__ && !defined __STDC__ >+# error "You need a ISO C conforming compiler to use the glibc headers" >+#endif >+ >+/* Some user header file might have defined this before. */ >+#undef __P >+#undef __PMT >+ >+#ifdef __GNUC__ >+ >+/* GCC can always grok prototypes. For C++ programs we add throw() >+ to help it optimize the function calls. But this works only with >+ gcc 2.8.x and egcs. */ >+# if defined __cplusplus && __GNUC_PREREQ (2,8) >+# define __THROW throw () >+# else >+# define __THROW >+# endif >+# define __P(args) args __THROW >+/* This macro will be used for functions which might take C++ callback >+ functions. */ >+# define __PMT(args) args >+ >+#else /* Not GCC. */ >+ >+# define __inline /* No inline functions. */ >+ >+# define __THROW >+# define __P(args) args >+# define __PMT(args) args >+ >+# define __const const >+# define __signed signed >+# define __volatile volatile >+ >+#endif /* GCC. */ >+ >+/* For these things, GCC behaves the ANSI way normally, >+ and the non-ANSI way under -traditional. */ >+ >+#define __CONCAT(x,y) x ## y >+#define __STRING(x) #x >+ >+/* This is not a typedef so `const __ptr_t' does the right thing. */ >+#define __ptr_t void * >+#define __long_double_t long double >+ >+ >+/* C++ needs to know that types and declarations are C, not C++. */ >+#ifdef __cplusplus >+# define __BEGIN_DECLS extern "C" { >+# define __END_DECLS } >+#else >+# define __BEGIN_DECLS >+# define __END_DECLS >+#endif >+ >+ >+/* The standard library needs the functions from the ISO C90 standard >+ in the std namespace. At the same time we want to be safe for >+ future changes and we include the ISO C99 code in the non-standard >+ namespace __c99. The C++ wrapper header take case of adding the >+ definitions to the global namespace. */ >+#if defined __cplusplus && defined _GLIBCPP_USE_NAMESPACES >+# define __BEGIN_NAMESPACE_STD namespace std { >+# define __END_NAMESPACE_STD } >+# define __USING_NAMESPACE_STD(name) using std::name; >+# define __BEGIN_NAMESPACE_C99 namespace __c99 { >+# define __END_NAMESPACE_C99 } >+# define __USING_NAMESPACE_C99(name) using __c99::name; >+#else >+/* For compatibility we do not add the declarations into any >+ namespace. They will end up in the global namespace which is what >+ old code expects. */ >+# define __BEGIN_NAMESPACE_STD >+# define __END_NAMESPACE_STD >+# define __USING_NAMESPACE_STD(name) >+# define __BEGIN_NAMESPACE_C99 >+# define __END_NAMESPACE_C99 >+# define __USING_NAMESPACE_C99(name) >+#endif >+ >+ >+/* Support for bounded pointers. */ >+#ifndef __BOUNDED_POINTERS__ >+# define __bounded /* nothing */ >+# define __unbounded /* nothing */ >+# define __ptrvalue /* nothing */ >+#endif >+ >+ >+/* Support for flexible arrays. */ >+#if __GNUC_PREREQ (2,97) >+/* GCC 2.97 supports C99 flexible array members. */ >+# define __flexarr [] >+#else >+# ifdef __GNUC__ >+# define __flexarr [0] >+# else >+# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L >+# define __flexarr [] >+# else >+/* Some other non-C99 compiler. Approximate with [1]. */ >+# define __flexarr [1] >+# endif >+# endif >+#endif >+ >+ >+/* __asm__ ("xyz") is used throughout the headers to rename functions >+ at the assembly language level. This is wrapped by the __REDIRECT >+ macro, in order to support compilers that can do this some other >+ way. When compilers don't support asm-names at all, we have to do >+ preprocessor tricks instead (which don't have exactly the right >+ semantics, but it's the best we can do). >+ >+ Example: >+ int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); */ >+ >+#if defined __GNUC__ && __GNUC__ >= 2 >+ >+# define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias)) >+# define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname) >+# define __ASMNAME2(prefix, cname) __STRING (prefix) cname >+ >+/* >+#elif __SOME_OTHER_COMPILER__ >+ >+# define __REDIRECT(name, proto, alias) name proto; \ >+ _Pragma("let " #name " = " #alias) >+*/ >+#endif >+ >+/* GCC has various useful declarations that can be made with the >+ `__attribute__' syntax. All of the ways we use this do fine if >+ they are omitted for compilers that don't understand it. */ >+#if !defined __GNUC__ || __GNUC__ < 2 >+# define __attribute__(xyz) /* Ignore */ >+#endif >+ >+/* At some point during the gcc 2.96 development the `malloc' attribute >+ for functions was introduced. We don't want to use it unconditionally >+ (although this would be possible) since it generates warnings. */ >+#if __GNUC_PREREQ (2,96) >+# define __attribute_malloc__ __attribute__ ((__malloc__)) >+#else >+# define __attribute_malloc__ /* Ignore */ >+#endif >+ >+/* At some point during the gcc 2.96 development the `pure' attribute >+ for functions was introduced. We don't want to use it unconditionally >+ (although this would be possible) since it generates warnings. */ >+#if __GNUC_PREREQ (2,96) >+# define __attribute_pure__ __attribute__ ((__pure__)) >+#else >+# define __attribute_pure__ /* Ignore */ >+#endif >+ >+/* At some point during the gcc 3.1 development the `used' attribute >+ for functions was introduced. We don't want to use it unconditionally >+ (although this would be possible) since it generates warnings. */ >+#if __GNUC_PREREQ (3,1) >+# define __attribute_used__ __attribute__ ((__used__)) >+# define __attribute_noinline__ __attribute__ ((__noinline__)) >+#else >+# define __attribute_used__ __attribute__ ((__unused__)) >+# define __attribute_noinline__ /* Ignore */ >+#endif >+ >+/* gcc allows marking deprecated functions. */ >+#if __GNUC_PREREQ (3,2) >+# define __attribute_deprecated__ __attribute__ ((__deprecated__)) >+#else >+# define __attribute_deprecated__ /* Ignore */ >+#endif >+ >+/* At some point during the gcc 2.8 development the `format_arg' attribute >+ for functions was introduced. We don't want to use it unconditionally >+ (although this would be possible) since it generates warnings. >+ If several `format_arg' attributes are given for the same function, in >+ gcc-3.0 and older, all but the last one are ignored. In newer gccs, >+ all designated arguments are considered. */ >+#if __GNUC_PREREQ (2,8) >+# define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x))) >+#else >+# define __attribute_format_arg__(x) /* Ignore */ >+#endif >+ >+/* At some point during the gcc 2.97 development the `strfmon' format >+ attribute for functions was introduced. We don't want to use it >+ unconditionally (although this would be possible) since it >+ generates warnings. */ >+#if __GNUC_PREREQ (2,97) >+# define __attribute_format_strfmon__(a,b) \ >+ __attribute__ ((__format__ (__strfmon__, a, b))) >+#else >+# define __attribute_format_strfmon__(a,b) /* Ignore */ >+#endif >+ >+/* It is possible to compile containing GCC extensions even if GCC is >+ run in pedantic mode if the uses are carefully marked using the >+ `__extension__' keyword. But this is not generally available before >+ version 2.8. */ >+#if !__GNUC_PREREQ (2,8) >+# define __extension__ /* Ignore */ >+#endif >+ >+/* __restrict is known in EGCS 1.2 and above. */ >+#if !__GNUC_PREREQ (2,92) >+# define __restrict /* Ignore */ >+#endif >+ >+/* ISO C99 also allows to declare arrays as non-overlapping. The syntax is >+ array_name[restrict] >+ GCC 3.1 supports this. */ >+#if __GNUC_PREREQ (3,1) && !defined __GNUG__ >+# define __restrict_arr __restrict >+#else >+# ifdef __GNUC__ >+# define __restrict_arr /* Not supported in old GCC. */ >+# else >+# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L >+# define __restrict_arr restrict >+# else >+/* Some other non-C99 compiler. */ >+# define __restrict_arr /* Not supported. */ >+# endif >+# endif >+#endif >+ >+#endif /* sys/cdefs.h */ >diff -uNr udev-039.orig/klibc/include/sys/sysctl.h udev-039.new/klibc/include/sys/sysctl.h >--- udev-039.orig/klibc/include/sys/sysctl.h 1969-12-31 19:00:00.000000000 -0500 >+++ udev-039.new/klibc/include/sys/sysctl.h 2005-01-22 20:21:45.473075264 -0500 >@@ -0,0 +1,72 @@ >+/* Copyright (C) 1996, 1999, 2002, 2003, 2004 Free Software Foundation, Inc. >+ This file is part of the GNU C Library. >+ >+ The GNU C Library is free software; you can redistribute it and/or >+ modify it under the terms of the GNU Lesser General Public >+ License as published by the Free Software Foundation; either >+ version 2.1 of the License, or (at your option) any later version. >+ >+ The GNU C Library 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 >+ Lesser General Public License for more details. >+ >+ You should have received a copy of the GNU Lesser General Public >+ License along with the GNU C Library; if not, write to the Free >+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA >+ 02111-1307 USA. */ >+ >+#ifndef _SYS_SYSCTL_H >+#define _SYS_SYSCTL_H 1 >+ >+#include <features.h> >+#define __need_size_t >+#include <stddef.h> >+/* Prevent more kernel headers than necessary to be included. */ >+#ifndef _LINUX_KERNEL_H >+# define _LINUX_KERNEL_H 1 >+# define __undef_LINUX_KERNEL_H >+#endif >+#ifndef _LINUX_TYPES_H >+# define _LINUX_TYPES_H 1 >+# define __undef_LINUX_TYPES_H >+#endif >+#ifndef _LINUX_LIST_H >+# define _LINUX_LIST_H 1 >+# define __undef_LINUX_LIST_H >+#endif >+#ifndef __LINUX_COMPILER_H >+# define __LINUX_COMPILER_H 1 >+# define __user >+# define __undef__LINUX_COMPILER_H >+#endif >+ >+#include <linux/sysctl.h> >+ >+#ifdef __undef_LINUX_KERNEL_H >+# undef _LINUX_KERNEL_H >+# undef __undef_LINUX_KERNEL_H >+#endif >+#ifdef __undef_LINUX_TYPES_H >+# undef _LINUX_TYPES_H >+# undef __undef_LINUX_TYPES_H >+#endif >+#ifdef __undef_LINUX_LIST_H >+# undef _LINUX_LIST_H >+# undef __undef_LINUX_LIST_H >+#endif >+#ifdef __undef__LINUX_COMPILER_H >+# undef __LINUX_COMPILER_H >+# undef __user >+# undef __undef__LINUX_COMPILER_H >+#endif >+ >+__BEGIN_DECLS >+ >+/* Read or write system parameters. */ >+extern int sysctl (int *__name, int __nlen, void *__oldval, >+ size_t *__oldlenp, void *__newval, size_t __newlen) __THROW; >+ >+__END_DECLS >+ >+#endif /* _SYS_SYSCTL_H */ >diff -uNr udev-039.orig/klibc/klibc/Makefile udev-039.new/klibc/klibc/Makefile >--- udev-039.orig/klibc/klibc/Makefile 2004-10-15 18:08:29.000000000 -0400 >+++ udev-039.new/klibc/klibc/Makefile 2005-01-22 20:21:23.874358768 -0500 >@@ -46,7 +46,7 @@ > lrand48.o jrand48.o mrand48.o nrand48.o srand48.o seed48.o \ > inet/inet_ntoa.o inet/inet_aton.o inet/inet_addr.o \ > inet/inet_ntop.o inet/inet_pton.o inet/bindresvport.o \ >- send.o recv.o >+ send.o recv.o ssp.o > ifeq ($(ERRLIST),1) > LIBOBJS += errlist.o > endif >diff -uNr udev-039.orig/klibc/klibc/ssp.c udev-039.new/klibc/klibc/ssp.c >--- udev-039.orig/klibc/klibc/ssp.c 1969-12-31 19:00:00.000000000 -0500 >+++ udev-039.new/klibc/klibc/ssp.c 2004-11-06 15:38:07.000000000 -0500 >@@ -0,0 +1,16 @@ >+#include <syslog.h> >+#include <stdlib.h> >+#include <sys/param.h> >+#include <sys/sysctl.h> >+ >+unsigned long __guard = 0UL; static void __guard_setup(void) __attribute__ ((constructor)); >+void __stack_smash_handler(char func[], int damaged __attribute__ ((unused))); >+static void __guard_setup(void) { if (__guard != 0UL) return; __guard = 0xFF0A0D00UL; } >+ >+void __stack_smash_handler(char func[], int damaged) { >+ syslog(LOG_CRIT, "stack overflow in function %s(); %s=%p __guard_setup=%p __guard=%p " \ >+ "PPID=%d PID=%d UID=%d EUID=%d GID=%d EGID=%d", >+ func, func, __guard_setup, __guard, >+ getppid(), getpid(), getuid(), geteuid(), getgid(), getegid()); >+ _exit(127); >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 76082
:
47166
|
50177
|
50280
|
61128