+2017-06-27 Jerome Lambourg <lambourg@adacore.com>
+
+ * config/vxworks.h (VXWORKS_LIBS_RTP): Alternative definition for
+ 64bit configurations.
+ (PTR_DIFF_TYPE): Alternative definition for TARGET_LP64.
+ (SIZE_TYPE): Likewise.
+ * config/vxworks.c (vxworks_emutls_var_fields): Use
+ long_unsigned_type_node instead of unsigned_type_node as the offset
+ field type, which is "pointer" mode in emutls.c.
+
2017-06-27 Jakub Jelinek <jakub@redhat.com>
PR sanitizer/81209
DECL_CHAIN (field) = next_field;
next_field = field;
+ /* The offset field is declared as an unsigned int with pointer mode. */
field = build_decl (BUILTINS_LOCATION, FIELD_DECL,
- get_identifier ("offset"), unsigned_type_node);
+ get_identifier ("offset"), long_unsigned_type_node);
+
DECL_CONTEXT (field) = type;
DECL_CHAIN (field) = next_field;
/* The references to __init and __fini will be satisfied by
libc_internal.a. */
+#if TARGET_64BIT_DEFAULT
+#define VXWORKS_LIBS_RTP "-lsyscall -lc -lgcc -lc_internal -lnet -ldsi"
+#else
#define VXWORKS_LIBS_RTP "-lc -lgcc -lc_internal -lnet -ldsi"
+#endif
/* On Vx6 and previous, the libraries to pick up depends on the architecture,
so cannot be defined for all archs at once. On Vx7, a VSB is always needed
#define VXWORKS_GOTT_INDEX "__GOTT_INDEX__"
#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
+#define PTRDIFF_TYPE (TARGET_LP64 ? "long int" : "int")
#undef SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
+#define SIZE_TYPE (TARGET_LP64 ? "long unsigned int" : "unsigned int")
#undef TARGET_LIBC_HAS_FUNCTION
#define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function