mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-27 16:43:09 +02:00
gcc: use .eh_frame sections for exception handling stack unwind - saves about 400 bytes on every executable or shared library
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30614 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
663ce9a3a6
commit
572b0cb4a3
@ -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)
|
Loading…
Reference in New Issue
Block a user