Hi all,

I'd like to commit this patch to trunk.

It is FreeBSD only.

If nobody objects I'll commit it within two days.

Thanks,

Andreas

2015-11-29  Andreas Tobler  <andre...@gcc.gnu.org>

        * config/rs6000/freebsd64.h (ELFv2_ABI_CHECK): Add new macro.
        (SUBSUBTARGET_OVERRIDE_OPTIONS): Use it to decide whether to set
        rs6000_current_abi to ABI_AIX or ABI_ELFv2.

Index: config/rs6000/freebsd64.h
===================================================================
--- config/rs6000/freebsd64.h   (revision 231047)
+++ config/rs6000/freebsd64.h   (working copy)
@@ -65,6 +65,13 @@
 #define INVALID_64BIT "-m%s not supported in this configuration"
 #define INVALID_32BIT INVALID_64BIT
 
+/* Use LINUX64 instead of FREEBSD64 for compat with e.g. sysv4le.h */
+#ifdef LINUX64_DEFAULT_ABI_ELFv2
+#define ELFv2_ABI_CHECK (rs6000_elf_abi != 1)
+#else
+#define ELFv2_ABI_CHECK (rs6000_elf_abi == 2)
+#endif
+
 #undef  SUBSUBTARGET_OVERRIDE_OPTIONS
 #define SUBSUBTARGET_OVERRIDE_OPTIONS                          \
   do                                                           \
@@ -84,6 +91,12 @@
              rs6000_isa_flags &= ~OPTION_MASK_RELOCATABLE;     \
              error (INVALID_64BIT, "relocatable");             \
            }                                                   \
+         if (ELFv2_ABI_CHECK)                                  \
+           {                                                   \
+             rs6000_current_abi = ABI_ELFv2;                   \
+             if (dot_symbols)                                  \
+               error ("-mcall-aixdesc incompatible with -mabi=elfv2"); \
+           }                                                   \
          if (rs6000_isa_flags & OPTION_MASK_EABI)              \
            {                                                   \
              rs6000_isa_flags &= ~OPTION_MASK_EABI;            \

Reply via email to