Commit 1d4a3bfa by John David Anglin

Fix weakening of external declarations.

	2020-04-21  John David Anglin  <danglin@gcc.gnu.org>

	* config/pa/som.h (ASM_WEAKEN_LABEL): Delete.
	(ASM_WEAKEN_DECL): New define.
	(HAVE_GAS_WEAKREF): Undefine.
parent 85353e24
2020-04-21 John David Anglin <danglin@gcc.gnu.org>
* config/pa/som.h (ASM_WEAKEN_LABEL): Delete.
(ASM_WEAKEN_DECL): New define.
(HAVE_GAS_WEAKREF): Undefine.
2020-04-21 Richard Sandiford <richard.sandiford@arm.com> 2020-04-21 Richard Sandiford <richard.sandiford@arm.com>
PR tree-optimization/94683 PR tree-optimization/94683
......
...@@ -277,7 +277,7 @@ do { \ ...@@ -277,7 +277,7 @@ do { \
/* If GAS supports weak, we can support weak when we have working linker /* If GAS supports weak, we can support weak when we have working linker
support for secondary definitions and are generating code for GAS. support for secondary definitions and are generating code for GAS.
This is primarily for one-only support as SOM doesn't allow undefined This is primarily for one-only support as SOM doesn't allow undefined
weak symbols. */ weak symbols or weak aliases. */
#ifdef HAVE_GAS_WEAK #ifdef HAVE_GAS_WEAK
#define TARGET_SUPPORTS_WEAK (TARGET_SOM_SDEF && TARGET_GAS) #define TARGET_SUPPORTS_WEAK (TARGET_SOM_SDEF && TARGET_GAS)
#else #else
...@@ -328,12 +328,43 @@ do { \ ...@@ -328,12 +328,43 @@ do { \
be used to remove dead procedures. Thus, support for named sections be used to remove dead procedures. Thus, support for named sections
is not needed and in previous testing caused problems with various is not needed and in previous testing caused problems with various
HP tools. */ HP tools. */
#define ASM_WEAKEN_LABEL(FILE,NAME) \ #if defined HAVE_GAS_WEAK
do { fputs ("\t.weak\t", FILE); \ #define ASM_WEAKEN_DECL(FILE,DECL,NAME,VALUE) \
assemble_name (FILE, NAME); \ do \
fputc ('\n', FILE); \ { \
targetm.asm_out.globalize_label (FILE, NAME); \ if ((VALUE) != NULL) \
} while (0) error_at (DECL_SOURCE_LOCATION (DECL), \
"weak aliases are not supported"); \
fputs ("\t.weak\t", FILE); \
assemble_name (FILE, NAME); \
fputc ('\n', FILE); \
\
/* Import external objects. */ \
if (DECL_EXTERNAL (DECL)) \
{ \
fputs ("\t.IMPORT ", FILE); \
assemble_name (FILE, NAME); \
if (TREE_CODE (DECL) == FUNCTION_DECL) \
fputs (",CODE\n", FILE); \
else \
fputs (",DATA\n", FILE); \
} \
/* Functions are globalized by ASM_DECLARE_FUNCTION_NAME. */ \
else if (TREE_CODE (DECL) != FUNCTION_DECL) \
{ \
fputs ("\t.EXPORT ", FILE); \
assemble_name (FILE, NAME); \
fputs (",DATA\n", FILE); \
} \
} \
while (0)
#endif
/* Although gas accepts .weakref, it doesn't provide the correct symbol
type for function references. For now, we use ASM_WEAKEN_DECL instead.
We have to undefine HAVE_GAS_WEAKREF to prevent default.h from defining
ASM_OUTPUT_WEAKREF. */
#undef HAVE_GAS_WEAKREF
/* We can't handle weak aliases, and therefore can't support pragma weak. /* We can't handle weak aliases, and therefore can't support pragma weak.
Suppress the use of pragma weak in gthr-dce.h and gthr-posix.h. */ Suppress the use of pragma weak in gthr-dce.h and gthr-posix.h. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment