+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
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) $<
#include "config.h"
#include "system.h"
#include "coretypes.h"
+#include "target.h"
+#include "toplev.h"
#include "output.h"
#include "tm.h"
/*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");
+}
#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. */