OSDN Git Service

gcc/
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Mar 2007 11:52:52 +0000 (11:52 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Mar 2007 11:52:52 +0000 (11:52 +0000)
* config/vxworks.h (vxworks_override_options): Declare.
(VXWORKS_OVERRIDE_OPTIONS): Use it.
* config/vxworks.c: Include target.h and toplev.h.
(vxworks_override_options): New function.
* config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122657 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/t-vxworks
gcc/config/vxworks.c
gcc/config/vxworks.h

index 5d702fd..d4ae2b5 100644 (file)
@@ -1,3 +1,11 @@
+2007-03-07  Richard Sandiford  <richard@codesourcery.com>
+
+       * config/vxworks.h (vxworks_override_options): Declare.
+       (VXWORKS_OVERRIDE_OPTIONS): Use it.
+       * config/vxworks.c: Include target.h and toplev.h.
+       (vxworks_override_options): New function.
+       * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
+
 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
 
        * config/s390/s390.c (override_options): Don't emit an error when
index 3741581..c9d69e0 100644 (file)
@@ -33,5 +33,5 @@ LIMITS_H_TEST = true
 EXTRA_MULTILIB_PARTS = 
 
 vxworks.o: $(srcdir)/config/vxworks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
-       output.h $(TM_H)
+       $(TARGET_H) toplev.h output.h $(TM_H)
        $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
index 4ac33ab..16dbc09 100644 (file)
@@ -23,6 +23,8 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
+#include "target.h"
+#include "toplev.h"
 #include "output.h"
 #include "tm.h"
 
@@ -54,3 +56,16 @@ vxworks_asm_out_destructor (rtx symbol, int priority)
                                    /*constructor_p=*/false);
   assemble_addr_to_section (symbol, sec);
 }
+
+/* Do VxWorks-specific parts of OVERRIDE_OPTIONS.  */
+
+void
+vxworks_override_options (void)
+{
+  /* We can use .ctors/.dtors sections only in RTP mode.  */
+  targetm.have_ctors_dtors = TARGET_VXWORKS_RTP;
+
+  /* PIC is only supported for RTPs.  */
+  if (flag_pic && !TARGET_VXWORKS_RTP)
+    error ("PIC is only supported for RTPs");
+}
index 055bf09..2d8bfbd 100644 (file)
@@ -82,13 +82,10 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
 #define        VXWORKS_STARTFILE_SPEC "%{mrtp:%{!shared:crt0.o%s}}"
 #define VXWORKS_ENDFILE_SPEC ""
 
-/* We can use .ctors/.dtors sections only in RTP mode.
-   Unfortunately this must be an integer constant expression;
-   fix up in override_options.  */
+/* Do VxWorks-specific parts of OVERRIDE_OPTIONS.  */
 #undef VXWORKS_OVERRIDE_OPTIONS
-#define VXWORKS_OVERRIDE_OPTIONS do { \
-  targetm.have_ctors_dtors = TARGET_VXWORKS_RTP; \
-} while (0)
+#define VXWORKS_OVERRIDE_OPTIONS vxworks_override_options ()
+extern void vxworks_override_options (void);
 
 /* VxWorks requires special handling of constructors and destructors.
    All VxWorks configurations must use these functions.  */