Mercurial > hg > CbC > CbC_gcc
diff gcc/config/s390/linux.h @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | f6334be47118 |
children | 84e7813d76e9 |
line wrap: on
line diff
--- a/gcc/config/s390/linux.h Sun Aug 21 07:07:55 2011 +0900 +++ b/gcc/config/s390/linux.h Fri Oct 27 22:46:09 2017 +0900 @@ -1,6 +1,5 @@ /* Definitions for Linux for S/390. - Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2010 - Free Software Foundation, Inc. + Copyright (C) 1999-2017 Free Software Foundation, Inc. Contributed by Hartmut Penner (hpenner@de.ibm.com) and Ulrich Weigand (uweigand@de.ibm.com). @@ -23,22 +22,14 @@ #ifndef _LINUX_H #define _LINUX_H -/* Target specific version string. */ - -#ifdef DEFAULT_TARGET_64BIT -#undef TARGET_VERSION -#define TARGET_VERSION fprintf (stderr, " (Linux for zSeries)"); -#else -#undef TARGET_VERSION -#define TARGET_VERSION fprintf (stderr, " (Linux for S/390)"); -#endif - - /* Target specific type definitions. */ -/* ??? Do we really want long as size_t on 31-bit? */ +/* For 31 bit our size type differs from most other targets (where it + is "unsigned int"). The difference tends to cause trouble e.g.: + Glibc BZ #16712, GCC BZ #79358 but cannot be changed due to ABI + issues. */ #undef SIZE_TYPE -#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "long unsigned int") +#define SIZE_TYPE "long unsigned int" #undef PTRDIFF_TYPE #define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int") @@ -53,15 +44,25 @@ #define TARGET_OS_CPP_BUILTINS() \ do \ { \ - LINUX_TARGET_OS_CPP_BUILTINS(); \ + GNU_USER_TARGET_OS_CPP_BUILTINS(); \ } \ while (0) /* Target specific assembler settings. */ - +/* Rewrite -march=arch* options to the original CPU name in order to + make it work with older binutils. */ #undef ASM_SPEC -#define ASM_SPEC "%{m31&m64}%{mesa&mzarch}%{march=*}" +#define ASM_SPEC \ + "%{m31&m64}%{mesa&mzarch}%{march=z*}" \ + "%{march=arch3:-march=g5}" \ + "%{march=arch5:-march=z900}" \ + "%{march=arch6:-march=z990}" \ + "%{march=arch7:-march=z9-ec}" \ + "%{march=arch8:-march=z10}" \ + "%{march=arch9:-march=z196}" \ + "%{march=arch10:-march=zEC12}" \ + "%{march=arch11:-march=z13}" /* Target specific linker settings. */ @@ -81,17 +82,16 @@ %{shared:-shared} \ %{!shared: \ %{static:-static} \ - %{!static: \ + %{!static:%{!static-pie: \ %{rdynamic:-export-dynamic} \ - %{m31:-dynamic-linker " LINUX_DYNAMIC_LINKER32 "} \ - %{m64:-dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}}" + %{m31:-dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "} \ + %{m64:-dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}}} \ + %{static-pie:-static -pie --no-dynamic-linker -z text}" #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" #define TARGET_ASM_FILE_END file_end_indicate_exec_stack -#define MD_UNWIND_SUPPORT "config/s390/linux-unwind.h" - #ifdef TARGET_LIBC_PROVIDES_SSP /* s390 glibc provides __stack_chk_guard in 0x14(tp), s390x glibc provides it at 0x28(tp). */ @@ -101,4 +101,13 @@ /* Define if long doubles should be mangled as 'g'. */ #define TARGET_ALTERNATE_LONG_DOUBLE_MANGLING +#undef TARGET_LIBC_HAS_FUNCTION +#define TARGET_LIBC_HAS_FUNCTION gnu_libc_has_function + +/* Uninitialized common symbols in non-PIE executables, even with + strong definitions in dependent shared libraries, will resolve + to COPY relocated symbol in the executable. See PR65780. */ +#undef TARGET_BINDS_LOCAL_P +#define TARGET_BINDS_LOCAL_P default_binds_local_p_2 + #endif