diff options
author | Felix Fietkau <nbd@openwrt.org> | 2012-02-17 16:55:08 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2012-02-17 16:55:08 +0000 |
commit | a86e168c5445beddf351aadccb2f1c8ac1ea24ce (patch) | |
tree | a619789b7204a74b06e8fa29a1b8dce1b93a5bb1 /toolchain/gcc/patches | |
parent | 42ed1bd9e6babd091b55fdcf9cb361d7a863c423 (diff) | |
download | upstream-a86e168c5445beddf351aadccb2f1c8ac1ea24ce.tar.gz upstream-a86e168c5445beddf351aadccb2f1c8ac1ea24ce.tar.bz2 upstream-a86e168c5445beddf351aadccb2f1c8ac1ea24ce.zip |
gcc: use .eh_frame sections for exception handling stack unwind - saves about 400 bytes on every executable or shared library
SVN-Revision: 30614
Diffstat (limited to 'toolchain/gcc/patches')
-rw-r--r-- | toolchain/gcc/patches/4.6-linaro/860-uclibc_use_eh_frame.patch | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/toolchain/gcc/patches/4.6-linaro/860-uclibc_use_eh_frame.patch b/toolchain/gcc/patches/4.6-linaro/860-uclibc_use_eh_frame.patch new file mode 100644 index 0000000000..6b85d4913a --- /dev/null +++ b/toolchain/gcc/patches/4.6-linaro/860-uclibc_use_eh_frame.patch @@ -0,0 +1,29 @@ +--- a/gcc/crtstuff.c ++++ b/gcc/crtstuff.c +@@ -100,15 +100,20 @@ + #if defined(OBJECT_FORMAT_ELF) \ + && !defined(OBJECT_FORMAT_FLAT) \ + && defined(HAVE_LD_EH_FRAME_HDR) \ +- && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \ +- && defined(__GLIBC__) && __GLIBC__ >= 2 ++ && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) + #include <link.h> + /* uClibc pretends to be glibc 2.2 and DT_CONFIG is defined in its link.h. + But it doesn't use PT_GNU_EH_FRAME ELF segment currently. */ +-# if !defined(__UCLIBC__) \ +- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \ +- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) +-# define USE_PT_GNU_EH_FRAME ++# if defined(__UCLIBC__) ++# if (__UCLIBC_MAJOR__ > 0 || __UCLIBC_MINOR__ > 9 || \ ++ (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ >= 33)) ++# define USE_PT_GNU_EH_FRAME ++# endif ++# elif defined(__GLIBC__) ++# if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \ ++ || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) ++# define USE_PT_GNU_EH_FRAME ++# endif + # endif + #endif + #if defined(EH_FRAME_SECTION_NAME) && !defined(USE_PT_GNU_EH_FRAME) |