This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: mips: -G0 vs __dso_handle


> I'll pre-approve that change, but I'll also defer to any other
> maintainer who has a solution they prefer.

How about this one?

2006-05-15  DJ Delorie  <dj@redhat.com>

	* crtstuff.c (__dso_handle): Set section from
	TARGET_LBIGCC_SDATA_SECTION if defined.
	* doc/tm.text (TARGET_LIBGCC_SDATA_SECTION): Document.
	* config/mips/mips.h (TARGET_LIBGCC_SDATA_SECTION): Define.

Index: crtstuff.c
===================================================================
--- crtstuff.c	(revision 113799)
+++ crtstuff.c	(working copy)
@@ -225,6 +225,9 @@ STATIC void *__JCR_LIST__[]
    in one DSO or the main program is not used in another object.  The
    dynamic linker takes care of this.  */
 
+#ifdef TARGET_LIBGCC_SDATA_SECTION
+extern void *__dso_handle __attribute__ ((__section__ (TARGET_LIBGCC_SDATA_SECTION)));
+#endif
 #ifdef HAVE_GAS_HIDDEN
 extern void *__dso_handle __attribute__ ((__visibility__ ("hidden")));
 #endif
Index: doc/tm.texi
===================================================================
--- doc/tm.texi	(revision 113799)
+++ doc/tm.texi	(working copy)
@@ -6217,6 +6217,18 @@ registers initialized in the function pr
 constant pools don't end up too far way in the text section.
 @end defmac
 
+@defmac TARGET_LIBGCC_SDATA_SECTION
+If defined, a string which names the section into which small
+variables defined in crtstuff and libgcc should go.  This is useful
+when the target has options for optimizing access to small data, and
+you want the crtstuff and libgcc routines to be conservative in what
+they expect of your application yet liberal in what your application
+expects.  For example, for targets with a @code{.sdata} section (like
+MIPS), you could compile crtstuff with @code{-G 0} so that it doesn't
+require small data support from your application, but use this macro
+to put small data into @code{.sdata} so that your application can
+access these variables whether it uses small data or not.
+
 @defmac FORCE_CODE_SECTION_ALIGN
 If defined, an ASM statement that aligns a code section to some
 arbitrary boundary.  This is used to force all fragments of the
Index: config/mips/mips.h
===================================================================
--- config/mips/mips.h	(revision 113799)
+++ config/mips/mips.h	(working copy)
@@ -466,6 +466,8 @@ extern const struct mips_rtx_cost_data *
 #endif
 #endif /* IN_LIBGCC2 */
 
+#define TARGET_LIBGCC_SDATA_SECTION ".sdata"
+
 #ifndef MULTILIB_ENDIAN_DEFAULT
 #if TARGET_ENDIAN_DEFAULT == 0
 #define MULTILIB_ENDIAN_DEFAULT "EL"


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]