crtstuff.c (__dso_handle): Set section from TARGET_LBIGCC_SDATA_SECTION if defined.
authorDJ Delorie <dj@redhat.com>
Tue, 16 May 2006 03:49:57 +0000 (23:49 -0400)
committerDJ Delorie <dj@gcc.gnu.org>
Tue, 16 May 2006 03:49:57 +0000 (23:49 -0400)
* 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.

From-SVN: r113817

gcc/ChangeLog
gcc/config/mips/mips.h
gcc/crtstuff.c
gcc/doc/tm.texi

index fc93eff461431a528e960612909a82fa052399ba..f01eebdae816c02b75423e9843f6b626adf5485b 100644 (file)
@@ -1,3 +1,10 @@
+2006-05-16  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.
+
 2006-05-16  Danny Smith  <dannysmith@users.sourceforge.net>
 
         PR target/27599
index 60e1aca9f1425914b6175889b9befcf0d99272cf..f0fe41193a0d1ca262b01167a56a576a296a8caa 100644 (file)
@@ -466,6 +466,8 @@ extern const struct mips_rtx_cost_data *mips_cost;
 #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 cde7557313237893f8f9f79aaf4246af58c78e30..8fdc021d019f10337a62383ed55f94948b2e4546 100644 (file)
@@ -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 aceebf6d860cd01a4fe927a1dbfd7ec39b910b40..af1b21c422b69a162ae4b07a97084492f9ea676d 100644 (file)
@@ -6217,6 +6217,18 @@ registers initialized in the function prologue or to ensure that
 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