From a93e7e14139f2639da66227294cef81fb58855b4 Mon Sep 17 00:00:00 2001 From: Jerome Lambourg Date: Tue, 27 Jun 2017 08:54:53 +0000 Subject: [PATCH] vxworks.h (VXWORKS_LIBS_RTP): Alternative definition for 64bit configurations. 2017-06-27 Jerome Lambourg * 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 | 10 ++++++++++ gcc/config/vxworks.c | 4 +++- gcc/config/vxworks.h | 8 ++++++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 128e8f7d726..3f2754154a2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2017-06-27 Jerome Lambourg + + * 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 PR sanitizer/81209 diff --git a/gcc/config/vxworks.c b/gcc/config/vxworks.c index 547176bb0a7..8f1c78d5207 100644 --- a/gcc/config/vxworks.c +++ b/gcc/config/vxworks.c @@ -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; diff --git a/gcc/config/vxworks.h b/gcc/config/vxworks.h index 11d811c4113..9afd332e014 100644 --- a/gcc/config/vxworks.h +++ b/gcc/config/vxworks.h @@ -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 -- 2.30.2