aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <oliva@adacore.com>2020-02-27 13:34:47 -0300
committerAlexandre Oliva <oliva@gnu.org>2020-02-27 13:35:43 -0300
commitaca124df6687f2b0b3d18c53ac64df25806bbef6 (patch)
tree23626bd8b9a407abaf26e23064840a41480d762c
parent46788c65f93c61a06764b284b4656dd9024e88d2 (diff)
downloadgcc-aca124df6687f2b0b3d18c53ac64df25806bbef6.zip
gcc-aca124df6687f2b0b3d18c53ac64df25806bbef6.tar.gz
gcc-aca124df6687f2b0b3d18c53ac64df25806bbef6.tar.bz2
define NO_DOT_IN_LABEL only in vxworks6
There was a mistake in forward-porting and contributing some vxworks7r2 changes, that caused a conditional to be dropped around a couple of preprocessor directives, needed only up to vxworks6, that change the compiler's behavior WRT introducing dollars and dots in symbol names. This deviates GCC's behavior from the native system compiler, in a way that appears to have ABI implications, so we'd like to correct that, even at this late stage in the development cycle. for gcc/ChangeLog * config/vx-common.h (NO_DOLLAR_IN_LABEL, NO_DOT_IN_LABEL): Leave them alone on vx7.
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/vx-common.h14
2 files changed, 13 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8c9b790..d42bfbe 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2020-02-27 Alexandre Oliva <oliva@adacore.com>
+
+ * config/vx-common.h (NO_DOLLAR_IN_LABEL, NO_DOT_IN_LABEL): Leave
+ them alone on vx7.
+
2020-02-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/93508
diff --git a/gcc/config/vx-common.h b/gcc/config/vx-common.h
index c993711..f4a1ffd 100644
--- a/gcc/config/vx-common.h
+++ b/gcc/config/vx-common.h
@@ -99,12 +99,14 @@ along with GCC; see the file COPYING3. If not see
/* ------------------------ Misc configuration bits ---------------------- */
-/* VxWorks cannot have dots in constructor labels, because it uses a
- mutant variation of collect2 that generates C code instead of
- assembly. Thus each constructor label must be a legitimate C
- symbol. FIXME: Have VxWorks use real collect2 instead. */
-#undef NO_DOLLAR_IN_LABEL
-#define NO_DOT_IN_LABEL
+#ifndef TARGET_VXWORKS7
+/* VxWorks, prior to version 7, could not have dots in constructor
+ labels, because it used a mutant variation of collect2 that
+ generates C code instead of assembly. Thus each constructor label
+ had to be a legitimate C symbol. */
+# undef NO_DOLLAR_IN_LABEL
+# define NO_DOT_IN_LABEL
+#endif
/* Kernel mode doesn't have ctors/dtors, but RTP mode does. */
#define TARGET_HAVE_CTORS_DTORS false