mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-30 07:14:09 +08:00
som.h (SUPPORTS_WEAK, [...]): Define.
* som.h (SUPPORTS_WEAK, SUPPORTS_ONE_ONLY, MAKE_DECL_ONE_ONLY, ASM_WEAKEN_LABEL, GTHREAD_USE_WEAK): Define. * pa.h (TARGET_SOM_SDEF): Define. * pa-hpux11.h (TARGET_SOM_SDEF): Define. * config/os/hpux/os_defines.h (_GLIBCPP_GTHREAD_USE_WEAK): Define for __hppa__. From-SVN: r61372
This commit is contained in:
parent
f826d5952c
commit
4af6a06372
@ -1,3 +1,10 @@
|
||||
2003-01-15 John David Anglin <dave@hiauly1.hia.nrc.ca>
|
||||
|
||||
* som.h (SUPPORTS_WEAK, SUPPORTS_ONE_ONLY, MAKE_DECL_ONE_ONLY,
|
||||
ASM_WEAKEN_LABEL, GTHREAD_USE_WEAK): Define.
|
||||
* pa.h (TARGET_SOM_SDEF): Define.
|
||||
* pa-hpux11.h (TARGET_SOM_SDEF): Define.
|
||||
|
||||
2003-01-16 Stephane Carrez <stcarrez@nerim.fr>
|
||||
|
||||
* config/m68hc11/m68hc11.c (expand_prologue): Use push/pop to
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Definitions of target machine for GNU compiler, for HP PA-RISC
|
||||
Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
@ -130,3 +130,8 @@ Boston, MA 02111-1307, USA. */
|
||||
#define LD_INIT_SWITCH "+init"
|
||||
#undef LD_FINI_SWITCH
|
||||
#define LD_FINI_SWITCH "+fini"
|
||||
|
||||
/* The HP-UX 11.X SOM linker (ld32) can successfully link shared libraries
|
||||
with secondary definition (weak) symbols. */
|
||||
#undef TARGET_SOM_SDEF
|
||||
#define TARGET_SOM_SDEF 1
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Definitions of target machine for GNU compiler, for the HP Spectrum.
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
||||
2001, 2002 Free Software Foundation, Inc.
|
||||
2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
Contributed by Michael Tiemann (tiemann@cygnus.com) of Cygnus Support
|
||||
and Tim Moore (moore@defmacro.cs.utah.edu) of the Center for
|
||||
Software Science at the University of Utah.
|
||||
@ -206,6 +206,11 @@ extern int target_flags;
|
||||
not for external calls. */
|
||||
#define TARGET_LONG_PIC_PCREL_CALL 0
|
||||
|
||||
/* Define to a C expression evaluating to true to use SOM secondary
|
||||
definition symbols for weak support. Linker support for secondary
|
||||
definition symbols is buggy prior to HP-UX 11.X. */
|
||||
#define TARGET_SOM_SDEF 0
|
||||
|
||||
/* Macro to define tables used to set the flags. This is a
|
||||
list in braces of target switches with each switch being
|
||||
{ "NAME", VALUE, "HELP_STRING" }. VALUE is the bits to set,
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Definitions for SOM assembler support.
|
||||
Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
@ -371,3 +371,52 @@ do { \
|
||||
/* Aggregates with a single float or double field should be passed and
|
||||
returned in the general registers. */
|
||||
#define MEMBER_TYPE_FORCES_BLK(FIELD, MODE) (MODE==SFmode || MODE==DFmode)
|
||||
|
||||
/* If GAS supports weak, we can support weak when we have working linker
|
||||
support for secondary definitions and are generating code for GAS. */
|
||||
#ifdef HAVE_GAS_WEAK
|
||||
#define SUPPORTS_WEAK (TARGET_SOM_SDEF && TARGET_GAS)
|
||||
#else
|
||||
#define SUPPORTS_WEAK 0
|
||||
#endif
|
||||
|
||||
/* We can support one only if we support weak. */
|
||||
#define SUPPORTS_ONE_ONLY SUPPORTS_WEAK
|
||||
|
||||
/* Use weak (secondary definitions) to make one only declarations. */
|
||||
#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
|
||||
|
||||
/* This is how we tell the assembler that a symbol is weak. The SOM
|
||||
weak implementation uses the secondary definition (sdef) flag.
|
||||
|
||||
The behavior of sdef symbols is similar to ELF weak symbols in that
|
||||
multiple definitions can occur without incurring a link error.
|
||||
However, they differ in the following ways:
|
||||
1) Undefined sdef symbols are not allowed.
|
||||
2) The linker searches for undefined sdef symbols and will load an
|
||||
archive library member to resolve an undefined sdef symbol.
|
||||
3) The exported symbol from a shared library is a primary symbol
|
||||
rather than a sdef symbol. Thus, more care is needed in the
|
||||
ordering of libraries.
|
||||
|
||||
It appears that the linker discards extra copies of "weak" functions
|
||||
when linking shared libraries, independent of whether or not they
|
||||
are in their own section. In linking final executables, -Wl,-O can
|
||||
be used to remove dead procedures. Thus, support for named sections
|
||||
is not needed and in previous testing caused problems with various
|
||||
HP tools. */
|
||||
#define ASM_WEAKEN_LABEL(FILE,NAME) \
|
||||
do { fputs ("\t.weak\t", FILE); \
|
||||
assemble_name (FILE, NAME); \
|
||||
fputc ('\n', FILE); \
|
||||
if (! FUNCTION_NAME_P (NAME)) \
|
||||
{ \
|
||||
fputs ("\t.EXPORT ", FILE); \
|
||||
assemble_name (FILE, NAME); \
|
||||
fputs (",DATA\n", FILE); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* 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. */
|
||||
#define GTHREAD_USE_WEAK 0
|
||||
|
@ -1,3 +1,8 @@
|
||||
2003-01-15 John David Anglin <dave@hiauly1.hia.nrc.ca>
|
||||
|
||||
* config/os/hpux/os_defines.h (_GLIBCPP_GTHREAD_USE_WEAK): Define for
|
||||
__hppa__.
|
||||
|
||||
2003-01-14 Jeffrey D. Oldham <oldham@codesourcery.com>
|
||||
|
||||
Further conform g++'s __vmi_class_type_info to the C++ ABI
|
||||
|
@ -89,4 +89,9 @@ typedef long int __padding_type;
|
||||
#if !defined(_GLIBCPP_SUPPORTS_WEAK) && defined (__hppa__)
|
||||
#define _GLIBCPP_INST_ATOMICITY_LOCK 1
|
||||
#endif
|
||||
|
||||
/* Don't use pragma weak in gthread headers. */
|
||||
#ifdef __hppa__
|
||||
#define _GLIBCPP_GTHREAD_USE_WEAK 0
|
||||
#endif
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user