Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/gpl3/gcc/dist/gcc include dbxelf.h elfos.h freebsd-...



details:   https://anonhg.NetBSD.org/src/rev/c267a9df49d3
branches:  trunk
changeset: 327304:c267a9df49d3
user:      mrg <mrg%NetBSD.org@localhost>
date:      Tue Mar 04 08:43:12 2014 +0000

description:
include dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h netbsd.h
and netbsd-elf.h on powerpc64-netbsd.

port netbsd64.h forward from GCC changes.  (it's a pity that
a vast portion of linux64.h isn't in some common header that
netbsd64.h and freebsd64.h could also used.  there's 100s of
lines of copypasta here, oh well.)

diffstat:

 external/gpl3/gcc/dist/gcc/config.gcc               |    4 +-
 external/gpl3/gcc/dist/gcc/config/rs6000/netbsd64.h |  140 ++++++-------------
 2 files changed, 50 insertions(+), 94 deletions(-)

diffs (258 lines):

diff -r 0da79cd7b690 -r c267a9df49d3 external/gpl3/gcc/dist/gcc/config.gcc
--- a/external/gpl3/gcc/dist/gcc/config.gcc     Tue Mar 04 08:32:23 2014 +0000
+++ b/external/gpl3/gcc/dist/gcc/config.gcc     Tue Mar 04 08:43:12 2014 +0000
@@ -2114,13 +2114,15 @@
        esac
        ;;
 powerpc*-*-netbsd*)
+       tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h"
+       tm_file="${tm_file} netbsd.h netbsd-elf.h"
        case ${target} in
          powerpc64*)
            tm_file="rs6000/biarch64.h ${tm_file} rs6000/default64.h rs6000/netbsd64.h"
            tmake_file="${tmake_file} rs6000/t-netbsd64"
            ;;
          *)
-            tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
+           tm_file="${tm_file} rs6000/netbsd.h"
            tmake_file="${tmake_file} rs6000/t-netbsd"
            ;;
        esac
diff -r 0da79cd7b690 -r c267a9df49d3 external/gpl3/gcc/dist/gcc/config/rs6000/netbsd64.h
--- a/external/gpl3/gcc/dist/gcc/config/rs6000/netbsd64.h       Tue Mar 04 08:32:23 2014 +0000
+++ b/external/gpl3/gcc/dist/gcc/config/rs6000/netbsd64.h       Tue Mar 04 08:43:12 2014 +0000
@@ -59,6 +59,15 @@
 
 #define TARGET_PROFILE_KERNEL profile_kernel
 
+#define TARGET_USES_LINUX64_OPT 1
+#ifdef HAVE_LD_LARGE_TOC
+#undef TARGET_CMODEL
+#define TARGET_CMODEL rs6000_current_cmodel
+#define SET_CMODEL(opt) rs6000_current_cmodel = opt
+#else
+#define SET_CMODEL(opt) do {} while (0)
+#endif
+
 #undef  PROCESSOR_DEFAULT
 #define PROCESSOR_DEFAULT PROCESSOR_POWER4
 #undef  PROCESSOR_DEFAULT64
@@ -80,7 +89,7 @@
 #define        SUBSUBTARGET_OVERRIDE_OPTIONS                           \
   do                                                           \
     {                                                          \
-      if (!rs6000_explicit_options.alignment)                  \
+      if (!global_options_set.x_rs6000_alignment_flags)                \
        rs6000_alignment_flags = MASK_ALIGN_NATURAL;            \
       if (TARGET_64BIT)                                                \
        {                                                       \
@@ -90,14 +99,14 @@
              error (INVALID_64BIT, "call");                    \
            }                                                   \
          dot_symbols = !strcmp (rs6000_abi_name, "aixdesc");   \
-         if (target_flags & MASK_RELOCATABLE)                  \
+         if (rs6000_isa_flags & OPTION_MASK_RELOCATABLE)       \
            {                                                   \
-             target_flags &= ~MASK_RELOCATABLE;                \
+             rs6000_isa_flags &= ~OPTION_MASK_RELOCATABLE;     \
              error (INVALID_64BIT, "relocatable");             \
            }                                                   \
-         if (target_flags & MASK_EABI)                         \
+         if (rs6000_isa_flags & OPTION_MASK_EABI)              \
            {                                                   \
-             target_flags &= ~MASK_EABI;                       \
+             rs6000_isa_flags &= ~OPTION_MASK_EABI;            \
              error (INVALID_64BIT, "eabi");                    \
            }                                                   \
          if (TARGET_PROTOTYPE)                                 \
@@ -105,10 +114,27 @@
              target_prototype = 0;                             \
              error (INVALID_64BIT, "prototype");               \
            }                                                   \
-         if ((target_flags & MASK_POWERPC64) == 0)             \
+         if ((rs6000_isa_flags & OPTION_MASK_POWERPC64) == 0)  \
+           {                                                   \
+             rs6000_isa_flags |= OPTION_MASK_POWERPC64;        \
+             error ("-m64 requires a PowerPC64 cpu");          \
+           }                                                   \
+         if ((rs6000_isa_flags_explicit                        \
+              & OPTION_MASK_MINIMAL_TOC) != 0)                 \
            {                                                   \
-             target_flags |= MASK_POWERPC64;                   \
-             error ("-m64 requires a PowerPC64 cpu");          \
+             if (global_options_set.x_rs6000_current_cmodel    \
+                 && rs6000_current_cmodel != CMODEL_SMALL)     \
+               error ("-mcmodel incompatible with other toc options"); \
+             SET_CMODEL (CMODEL_SMALL);                        \
+           }                                                   \
+           {                                                   \
+             if (!global_options_set.x_rs6000_current_cmodel)  \
+               SET_CMODEL (CMODEL_MEDIUM);                     \
+             if (rs6000_current_cmodel != CMODEL_SMALL)        \
+               {                                               \
+                 TARGET_NO_FP_IN_TOC = 0;                      \
+                 TARGET_NO_SUM_IN_TOC = 0;                     \
+               }                                               \
            }                                                   \
        }                                                       \
       else                                                     \
@@ -120,16 +146,23 @@
              TARGET_PROFILE_KERNEL = 0;                        \
              error (INVALID_32BIT, "profile-kernel");          \
            }                                                   \
+         if (global_options_set.x_rs6000_current_cmodel)       \
+           {                                                   \
+             SET_CMODEL (CMODEL_SMALL);                        \
+             error (INVALID_32BIT, "cmodel");                  \
+           }                                                   \
        }                                                       \
     }                                                          \
   while (0)
 
 #ifdef RS6000_BI_ARCH
 
+#if 0
 #undef OVERRIDE_OPTIONS
 #define        OVERRIDE_OPTIONS \
   rs6000_override_options (((TARGET_DEFAULT ^ target_flags) & MASK_64BIT) \
                           ? (char *) 0 : TARGET_CPU_DEFAULT)
+#endif
 
 #endif
 
@@ -153,30 +186,22 @@
 #endif
 #endif
 
-#define ASM_SPEC32 "-a32 %{n} %{T} %{Ym,*} %{Yd,*} \
-%{mrelocatable} %{mrelocatable-lib} %{fpic:-K PIC} %{fPIC:-K PIC} \
-%{memb} %{!memb: %{msdata: -memb} %{msdata=eabi: -memb}} \
-%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
-    %{mcall-freebsd: -mbig} \
-    %{mcall-i960-old: -mlittle} \
-    %{mcall-linux: -mbig} \
-    %{mcall-gnu: -mbig} \
-    %{mcall-netbsd: -mbig} \
-}}}}"
+#define ASM_SPEC32 "-a32 \
+%{mrelocatable} %{mrelocatable-lib} %{fpic|fpie|fPIC|fPIE:-K PIC} \
+%{memb|msdata=eabi: -memb}"
 
 #define ASM_SPEC64 "-a64"
 
 #define ASM_SPEC_COMMON "%(asm_cpu) \
-%{.s: %{mregnames} %{mno-regnames}} %{.S: %{mregnames} %{mno-regnames}} \
-%{v:-V} %{Qy:} %{!Qn:-Qy} %{Wa,*:%*} \
-%{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian}"
+%{,assembler|,assembler-with-cpp: %{mregnames} %{mno-regnames}}" \
+  ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
 
 #undef SUBSUBTARGET_EXTRA_SPECS
 #define SUBSUBTARGET_EXTRA_SPECS \
   { "asm_spec_common",         ASM_SPEC_COMMON },                      \
   { "asm_spec32",              ASM_SPEC32 },                           \
   { "asm_spec64",              ASM_SPEC64 },                           \
-  { "link_os_netbsd_spec32",   LINK_OS_NETBSD_SPEC32 },                        \
+  { "link_os_netbsd_spec32",   LINK_OS_NETBSD_SPEC32 },                \
   { "link_os_netbsd_spec64",   LINK_OS_NETBSD_SPEC64 },
 
 #undef MULTILIB_DEFAULTS
@@ -260,10 +285,6 @@
 #define BLOCK_REG_PADDING(MODE, TYPE, FIRST) \
   (!(FIRST) ? upward : FUNCTION_ARG_PADDING (MODE, TYPE))
 
-/* Override svr4.h  */
-#undef MD_EXEC_PREFIX
-#undef MD_STARTFILE_PREFIX
-
 /* NetBSD doesn't support saving and restoring 64-bit regs in a 32-bit
    process.  XXXMRG?  */
 #define OS_MISSING_POWERPC64 !TARGET_64BIT
@@ -328,9 +349,6 @@
 #undef ENDFILE_DEFAULT_SPEC
 #define ENDFILE_DEFAULT_SPEC "%(endfile_netbsd)"
 
-#undef CRTSAVRES_DEFAULT_SPEC
-#define CRTSAVRES_DEFAULT_SPEC ""
-
 #undef LINK_START_DEFAULT_SPEC
 #define LINK_START_DEFAULT_SPEC "%(link_start_netbsd)"
 
@@ -468,68 +486,6 @@
                   && SCALAR_FLOAT_MODE_P (GET_MODE (X))                \
                   && BITS_PER_WORD == HOST_BITS_PER_INT)))))
 
-/* This ABI cannot use DBX_LINES_FUNCTION_RELATIVE, nor can it use
-   dbxout_stab_value_internal_label_diff, because we must
-   use the function code label, not the function descriptor label.  */
-#define        DBX_OUTPUT_SOURCE_LINE(FILE, LINE, COUNTER)                     \
-do                                                                     \
-  {                                                                    \
-    char temp[256];                                                    \
-    const char *s;                                                     \
-    ASM_GENERATE_INTERNAL_LABEL (temp, "LM", COUNTER);                 \
-    dbxout_begin_stabn_sline (LINE);                                   \
-    assemble_name (FILE, temp);                                                \
-    putc ('-', FILE);                                                  \
-    s = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0);          \
-    rs6000_output_function_entry (FILE, s);                            \
-    putc ('\n', FILE);                                                 \
-    targetm.asm_out.internal_label (FILE, "LM", COUNTER);              \
-    COUNTER += 1;                                                      \
-  }                                                                    \
-while (0)
-
-/* Similarly, we want the function code label here.  Cannot use
-   dbxout_stab_value_label_diff, as we have to use
-   rs6000_output_function_entry.  FIXME.  */
-#define DBX_OUTPUT_BRAC(FILE, NAME, BRAC)                              \
-  do                                                                   \
-    {                                                                  \
-      const char *s;                                                   \
-      dbxout_begin_stabn (BRAC);                                       \
-      s = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0);                \
-      /* dbxout_block passes this macro the function name as NAME,     \
-        assuming that it is the function code start label.  In our     \
-        case, the function name is the OPD entry.  dbxout_block is     \
-        broken, hack around it here.  */                               \
-      if (NAME == s)                                                   \
-       putc ('0', FILE);                                               \
-      else                                                             \
-       {                                                               \
-         assemble_name (FILE, NAME);                                   \
-         putc ('-', FILE);                                             \
-         rs6000_output_function_entry (FILE, s);                       \
-       }                                                               \
-      putc ('\n', FILE);                                               \
-    }                                                                  \
-  while (0)
-
-#define DBX_OUTPUT_LBRAC(FILE, NAME) DBX_OUTPUT_BRAC (FILE, NAME, N_LBRAC)
-#define DBX_OUTPUT_RBRAC(FILE, NAME) DBX_OUTPUT_BRAC (FILE, NAME, N_RBRAC)
-
-/* Another case where we want the dot name.  */
-#define        DBX_OUTPUT_NFUN(FILE, LSCOPE, DECL)                             \
-  do                                                                   \
-    {                                                                  \
-      const char *s;                                                   \
-      dbxout_begin_empty_stabs (N_FUN);                                        \
-      assemble_name (FILE, LSCOPE);                                    \
-      putc ('-', FILE);                                                        \
-      s = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0);                \
-      rs6000_output_function_entry (FILE, s);                          \
-      putc ('\n', FILE);                                               \
-    }                                                                  \
-  while (0)
-
 /* Select a format to encode pointers in exception handling data.  CODE
    is 0 for data, 1 for code labels, 2 for function pointers.  GLOBAL is
    true if the symbol may be affected by dynamic relocations.  */
@@ -545,8 +501,6 @@
 #undef DRAFT_V4_STRUCT_RET
 #define DRAFT_V4_STRUCT_RET (!TARGET_64BIT)
 
-#define TARGET_ASM_FILE_END rs6000_elf_end_indicate_exec_stack
-
 #define TARGET_POSIX_IO
 
 #define LINK_GCC_C_SEQUENCE_SPEC \



Home | Main Index | Thread Index | Old Index