vxworks.h (VXWORKS_LIBS_RTP): Alternative definition for 64bit configurations.
authorJerome Lambourg <lambourg@adacore.com>
Tue, 27 Jun 2017 08:54:53 +0000 (08:54 +0000)
committerOlivier Hainque <hainque@gcc.gnu.org>
Tue, 27 Jun 2017 08:54:53 +0000 (08:54 +0000)
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.

From-SVN: r249681

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

index 128e8f7d726d3eae62a6476e44e7d6319ee666c6..3f2754154a2267561bcca89b19130e48b0c93731 100644 (file)
@@ -1,3 +1,13 @@
+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
index 547176bb0a77b0822bf5667ccc3f252d2e0dd6c9..8f1c78d5207939bd0b53dcca1bb3552f652e303f 100644 (file)
@@ -80,8 +80,10 @@ vxworks_emutls_var_fields (tree type, tree *name)
   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;
 
index 11d811c411322e6a619593cd158cc4db36fffc7f..9afd332e0144aa410f7c47f480454f11c6075ecf 100644 (file)
@@ -70,7 +70,11 @@ along with GCC; see the file COPYING3.  If not see
 /* 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
@@ -147,10 +151,10 @@ extern void vxworks_asm_out_destructor (rtx symbol, int priority);
 #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