mirror of git://gcc.gnu.org/git/gcc.git
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>
|
2003-01-16 Stephane Carrez <stcarrez@nerim.fr>
|
||||||
|
|
||||||
* config/m68hc11/m68hc11.c (expand_prologue): Use push/pop to
|
* 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
|
/* 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.
|
This file is part of GNU CC.
|
||||||
|
|
||||||
|
@ -130,3 +130,8 @@ Boston, MA 02111-1307, USA. */
|
||||||
#define LD_INIT_SWITCH "+init"
|
#define LD_INIT_SWITCH "+init"
|
||||||
#undef LD_FINI_SWITCH
|
#undef LD_FINI_SWITCH
|
||||||
#define LD_FINI_SWITCH "+fini"
|
#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.
|
/* Definitions of target machine for GNU compiler, for the HP Spectrum.
|
||||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
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
|
Contributed by Michael Tiemann (tiemann@cygnus.com) of Cygnus Support
|
||||||
and Tim Moore (moore@defmacro.cs.utah.edu) of the Center for
|
and Tim Moore (moore@defmacro.cs.utah.edu) of the Center for
|
||||||
Software Science at the University of Utah.
|
Software Science at the University of Utah.
|
||||||
|
@ -206,6 +206,11 @@ extern int target_flags;
|
||||||
not for external calls. */
|
not for external calls. */
|
||||||
#define TARGET_LONG_PIC_PCREL_CALL 0
|
#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
|
/* Macro to define tables used to set the flags. This is a
|
||||||
list in braces of target switches with each switch being
|
list in braces of target switches with each switch being
|
||||||
{ "NAME", VALUE, "HELP_STRING" }. VALUE is the bits to set,
|
{ "NAME", VALUE, "HELP_STRING" }. VALUE is the bits to set,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Definitions for SOM assembler support.
|
/* 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.
|
This file is part of GNU CC.
|
||||||
|
|
||||||
|
@ -371,3 +371,52 @@ do { \
|
||||||
/* Aggregates with a single float or double field should be passed and
|
/* Aggregates with a single float or double field should be passed and
|
||||||
returned in the general registers. */
|
returned in the general registers. */
|
||||||
#define MEMBER_TYPE_FORCES_BLK(FIELD, MODE) (MODE==SFmode || MODE==DFmode)
|
#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>
|
2003-01-14 Jeffrey D. Oldham <oldham@codesourcery.com>
|
||||||
|
|
||||||
Further conform g++'s __vmi_class_type_info to the C++ ABI
|
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__)
|
#if !defined(_GLIBCPP_SUPPORTS_WEAK) && defined (__hppa__)
|
||||||
#define _GLIBCPP_INST_ATOMICITY_LOCK 1
|
#define _GLIBCPP_INST_ATOMICITY_LOCK 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Don't use pragma weak in gthread headers. */
|
||||||
|
#ifdef __hppa__
|
||||||
|
#define _GLIBCPP_GTHREAD_USE_WEAK 0
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue