mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-16 03:00:28 +08:00
re PR debug/23205 ([C++/unit-at-a-time] stabs debug info omitted for global const variables)
toplevel: * configure: Regenerate. config: * elf.m4 (target_elf): Remove *-netware*. contrib: * config-list.mk (i586-netware): Remove. (.PHONY): Remove make-script-dir dependency. (make-script-dir): Remove. ($(LIST)): Remove make-script-dir dependency. gcc: * config.gcc (i[3456x]86-*-netware*): Remove. * gthr-nks.h: Remove. * configure.ac (enable_threads): Remove nks. * configure: Regenerate. * config/i386/i386.c (ix86_encode_section_info): Remove netware reference. * config/i386/i386.h (KEEP_AGGREGATE_RETURN_POINTER): Remove <netware.h> reference. * config/i386/netware-libgcc.c, gcc/config/i386/netware-libgcc.def, gcc/config/i386/netware-libgcc.exp, gcc/config/i386/netware.c, gcc/config/i386/netware.h, gcc/config/i386/netware.opt, gcc/config/i386/nwld.c, gcc/config/i386/nwld.h, gcc/config/i386/t-netware, gcc/config/i386/t-nwld: Remove * doc/extend.texi (Function Attributes, callee_pop_aggregate_return): Remove i?86-netware reference. * doc/install.texi (Configuration, --enable-threads): Remove nks. gcc/testsuite: * g++.dg/ext/bitfield2.C: Remove i?86-*-netware support. * g++.dg/ext/bitfield3.C: Likewise. * g++.dg/ext/bitfield4.C: Likewise. * g++.dg/ext/bitfield5.C: Likewise. * g++.dg/other/PR23205.C: Remove *-*-netware* support. * g++.dg/other/pr23205-2.C: Likewise. * gcc.c-torture/compile/20001109-1.c: Remove dg-xfail-if. * gcc.c-torture/compile/20001109-2.c: Likewise. * gcc.dg/20040813-1.c: Remove *-*-netware* support. * gcc.dg/bitfld-15.c: Remove i?86-*-netware support. * gcc.dg/bitfld-16.c: Likewise. * gcc.dg/bitfld-17.c: Likewise. * gcc.dg/bitfld-18.c: Likewise. * gcc.dg/builtins-config.h: Remove Netware support. * gcc.dg/cdce1.c: Remove *-*-netware* support. Update line number. * gcc.dg/cdce2.c: Likewise. * gcc.dg/cpp/assert4.c: Remove netware support. * gcc.dg/debug/pr35154.c: Remove *-*-netware* support. * gfortran.dg/debug/pr35154-stabs.f: Remove *-*-netware* support. * lib/target-supports.exp (check_visibility_available): Remove NetWare support. (check_profiling_available): Likewise. libgcc: * config.host (i[3456x]86-*-netware*): Remove. * config/i386/netware-crt0.c, config/i386/t-nwld, config/i386/t-slibgcc-nwld: Remove. libstdc++-v3: * crossconfig.m4 (*-netware): Remove. * configure: Regenerate. From-SVN: r176391
This commit is contained in:
parent
c27e3f60a6
commit
e44dbbe18b
@ -1,3 +1,7 @@
|
||||
2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* configure: Regenerate.
|
||||
|
||||
2011-07-18 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* MAINTAINERS (Global Reviewers): Add myself.
|
||||
|
@ -1,3 +1,7 @@
|
||||
2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* elf.m4 (target_elf): Remove *-netware*.
|
||||
|
||||
2011-07-06 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
* mt-alphaieee (GOCFLAGS_FOR_TARGET): Add -mieee.
|
||||
|
@ -1,4 +1,4 @@
|
||||
dnl Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
dnl Copyright (C) 2010, 2011 Free Software Foundation, Inc.
|
||||
dnl This file is free software, distributed under the terms of the GNU
|
||||
dnl General Public License. As a special exception to the GNU General
|
||||
dnl Public License, this file may be distributed as part of a program
|
||||
@ -14,7 +14,7 @@ AC_REQUIRE([AC_CANONICAL_TARGET])
|
||||
target_elf=no
|
||||
case $target in
|
||||
*-darwin* | *-aix* | *-cygwin* | *-mingw* | *-aout* | *-*coff* | \
|
||||
*-msdosdjgpp* | *-netware* | *-vms* | *-wince* | *-*-pe* | \
|
||||
*-msdosdjgpp* | *-vms* | *-wince* | *-*-pe* | \
|
||||
alpha*-dec-osf* | *-interix* | hppa[[12]]*-*-hpux*)
|
||||
target_elf=no
|
||||
;;
|
||||
|
2
configure
vendored
2
configure
vendored
@ -6009,7 +6009,7 @@ fi
|
||||
target_elf=no
|
||||
case $target in
|
||||
*-darwin* | *-aix* | *-cygwin* | *-mingw* | *-aout* | *-*coff* | \
|
||||
*-msdosdjgpp* | *-netware* | *-vms* | *-wince* | *-*-pe* | \
|
||||
*-msdosdjgpp* | *-vms* | *-wince* | *-*-pe* | \
|
||||
alpha*-dec-osf* | *-interix* | hppa[12]*-*-hpux*)
|
||||
target_elf=no
|
||||
;;
|
||||
|
@ -1,3 +1,10 @@
|
||||
2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* config-list.mk (i586-netware): Remove.
|
||||
(.PHONY): Remove make-script-dir dependency.
|
||||
(make-script-dir): Remove.
|
||||
($(LIST)): Remove make-script-dir dependency.
|
||||
|
||||
2011-07-15 Bernd Schmidt <bernds@codesourcery.com>
|
||||
|
||||
* gcc_update: Add C6X generated files.
|
||||
|
@ -27,7 +27,7 @@ LIST = alpha-linux-gnu alpha-freebsd6 alpha-netbsd alpha-openbsd \
|
||||
i486-freebsd4 i686-freebsd6 i686-kfreebsd-gnu \
|
||||
i686-netbsdelf9 i686-knetbsd-gnu i686-openbsd i686-openbsd3.0 \
|
||||
i686-elf i686-kopensolaris-gnu i686-symbolics-gnu i686-pc-msdosdjgpp \
|
||||
i686-lynxos i586-netwareOPT-with-ld=SCRIPTSnwld i686-nto-qnx \
|
||||
i686-lynxos i686-nto-qnx \
|
||||
i686-rtems i686-solaris2.10 i686-wrs-vxworks \
|
||||
i686-wrs-vxworksae \
|
||||
i686-cygwinOPT-enable-threads=yes i686-mingw32crt ia64-elf \
|
||||
@ -72,7 +72,7 @@ LOGFILES = $(patsubst %,log/%-make.out,$(LIST))
|
||||
all: $(LOGFILES)
|
||||
config: $(LIST)
|
||||
|
||||
.PHONY: make-log-dir make-script-dir all config
|
||||
.PHONY: make-log-dir all config
|
||||
|
||||
empty=
|
||||
|
||||
@ -81,14 +81,7 @@ empty=
|
||||
make-log-dir: ../gcc/MAINTAINERS
|
||||
mkdir log
|
||||
|
||||
# The 'ix86-netware --with-ld=nwld' configuration needs a nwld executable to
|
||||
# configure. See PR47104.
|
||||
make-script-dir:
|
||||
mkdir scripts
|
||||
echo ld $* > scripts/nwld
|
||||
chmod u+x scripts/nwld
|
||||
|
||||
$(LIST): make-log-dir make-script-dir
|
||||
$(LIST): make-log-dir
|
||||
-mkdir $@
|
||||
(cd $@ && \
|
||||
../../gcc/configure \
|
||||
|
@ -1,3 +1,27 @@
|
||||
2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* config.gcc (i[3456x]86-*-netware*): Remove.
|
||||
|
||||
* gthr-nks.h: Remove.
|
||||
* configure.ac (enable_threads): Remove nks.
|
||||
* configure: Regenerate.
|
||||
|
||||
* config/i386/i386.c (ix86_encode_section_info): Remove netware
|
||||
reference.
|
||||
* config/i386/i386.h (KEEP_AGGREGATE_RETURN_POINTER): Remove
|
||||
<netware.h> reference.
|
||||
|
||||
* config/i386/netware-libgcc.c,
|
||||
gcc/config/i386/netware-libgcc.def,
|
||||
gcc/config/i386/netware-libgcc.exp, gcc/config/i386/netware.c,
|
||||
gcc/config/i386/netware.h, gcc/config/i386/netware.opt,
|
||||
gcc/config/i386/nwld.c, gcc/config/i386/nwld.h,
|
||||
gcc/config/i386/t-netware, gcc/config/i386/t-nwld: Remove
|
||||
|
||||
* doc/extend.texi (Function Attributes,
|
||||
callee_pop_aggregate_return): Remove i?86-netware reference.
|
||||
* doc/install.texi (Configuration, --enable-threads): Remove nks.
|
||||
|
||||
2011-07-17 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
PR target/49746
|
||||
|
@ -1368,25 +1368,6 @@ i[34567]86-*-lynxos*)
|
||||
gnu_ld=yes
|
||||
gas=yes
|
||||
;;
|
||||
i[3456x]86-*-netware*)
|
||||
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h tm-dwarf2.h i386/netware.h"
|
||||
tmake_file="${tmake_file} i386/t-netware"
|
||||
extra_objs=netware.o
|
||||
extra_options="${extra_options} i386/netware.opt"
|
||||
case /${with_ld} in
|
||||
*/nwld)
|
||||
extra_objs="$extra_objs nwld.o"
|
||||
tm_file="${tm_file} i386/nwld.h"
|
||||
tmake_file="${tmake_file} i386/t-nwld t-slibgcc-dummy"
|
||||
;;
|
||||
esac
|
||||
case x${enable_threads} in
|
||||
x | xyes | xposix) thread_file='posix';;
|
||||
xnks) thread_file='nks';;
|
||||
xno) ;;
|
||||
*) echo 'Unknown thread configuration for NetWare' >&2; exit 1;;
|
||||
esac
|
||||
;;
|
||||
i[34567]86-*-nto-qnx*)
|
||||
tm_file="${tm_file} i386/att.h dbxelf.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
|
||||
extra_options="${extra_options} i386/nto.opt"
|
||||
|
@ -31431,8 +31431,7 @@ ix86_md_asm_clobbers (tree outputs ATTRIBUTE_UNUSED,
|
||||
return clobbers;
|
||||
}
|
||||
|
||||
/* Implements target vector targetm.asm.encode_section_info. This
|
||||
is not used by netware. */
|
||||
/* Implements target vector targetm.asm.encode_section_info. */
|
||||
|
||||
static void ATTRIBUTE_UNUSED
|
||||
ix86_encode_section_info (tree decl, rtx rtl, int first)
|
||||
|
@ -1131,7 +1131,6 @@ enum target_cpu_default
|
||||
/* This is overridden by <cygwin.h>. */
|
||||
#define MS_AGGREGATE_RETURN 0
|
||||
|
||||
/* This is overridden by <netware.h>. */
|
||||
#define KEEP_AGGREGATE_RETURN_POINTER 0
|
||||
|
||||
/* Define the classes of registers for register constraints in the
|
||||
|
@ -1,58 +0,0 @@
|
||||
/* Startup code for libgcc_s.nlm, necessary because we can't allow
|
||||
libgcc_s to use libc's malloc & Co., which associate allocations
|
||||
with the NLM owning the current (application) thread.
|
||||
Contributed by Jan Beulich (jbeulich@novell.com)
|
||||
Copyright (C) 2004, 2007 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <netware.h>
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#include <windows.h>
|
||||
|
||||
static rtag_t allocRTag;
|
||||
|
||||
BOOL
|
||||
DllMain (HINSTANCE libraryId __attribute__ ((__unused__)),
|
||||
DWORD reason, void *hModule)
|
||||
{
|
||||
switch (reason)
|
||||
{
|
||||
case DLL_NLM_STARTUP:
|
||||
allocRTag = AllocateResourceTag (hModule,
|
||||
"libgcc memory", AllocSignature);
|
||||
return allocRTag != NULL;
|
||||
case DLL_NLM_SHUTDOWN:
|
||||
/* This does not recover resources associated with the tag...
|
||||
ReturnResourceTag (allocRTag, 0); */
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void *
|
||||
malloc (size_t size)
|
||||
{
|
||||
return AllocSleepOK (size, allocRTag, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
free (void *ptr)
|
||||
{
|
||||
Free (ptr);
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
description "gcc runtime and intrinsics support"
|
||||
copyright "Copyright (C) 1989-2005 Free Software Foundation, Inc."
|
@ -1,83 +0,0 @@
|
||||
# libgcc_s.nlm exports
|
||||
(libgcc2),
|
||||
__absvdi2,
|
||||
__absvsi2,
|
||||
__addvdi3,
|
||||
__addvsi3,
|
||||
# __ashldi3,
|
||||
# __ashrdi3,
|
||||
__bswapdi2,
|
||||
__bswapsi2,
|
||||
__clzdi2,
|
||||
__clzsi2,
|
||||
__ctzdi2,
|
||||
__ctzsi2,
|
||||
__deregister_frame,
|
||||
__deregister_frame_info,
|
||||
__deregister_frame_info_bases,
|
||||
__divdc3,
|
||||
# __divdi3,
|
||||
__divsc3,
|
||||
# __divtc3,
|
||||
__divxc3,
|
||||
__emutls_get_address,
|
||||
__emutls_register_common,
|
||||
__ffsdi2,
|
||||
__ffssi2,
|
||||
__fixunsdfdi,
|
||||
__fixunssfdi,
|
||||
# __fixunstfdi,
|
||||
__fixunsxfdi,
|
||||
__floatundisf,
|
||||
__floatundidf,
|
||||
# __floatunditf,
|
||||
__floatundixf,
|
||||
__gcc_bcmp,
|
||||
__gcc_personality_v0,
|
||||
# __lshrdi3,
|
||||
# __moddi3,
|
||||
__muldc3,
|
||||
# __muldi3,
|
||||
__mulsc3,
|
||||
# __multc3,
|
||||
__mulvdi3,
|
||||
__mulvsi3,
|
||||
__mulxc3,
|
||||
__negvdi2,
|
||||
__negvsi2,
|
||||
__paritydi2,
|
||||
__paritysi2,
|
||||
__popcountdi2,
|
||||
__popcountsi2,
|
||||
__powidf2
|
||||
__powisf2
|
||||
# __powitf2
|
||||
__powixf2
|
||||
__register_frame,
|
||||
__register_frame_info,
|
||||
__register_frame_info_bases,
|
||||
__register_frame_info_table,
|
||||
__register_frame_info_table_bases,
|
||||
__register_frame_table,
|
||||
__subvdi3,
|
||||
__subvsi3,
|
||||
# __umoddi3,
|
||||
# __udivdi3,
|
||||
_Unwind_Backtrace,
|
||||
_Unwind_DeleteException,
|
||||
_Unwind_FindEnclosingFunction,
|
||||
_Unwind_Find_FDE,
|
||||
_Unwind_ForcedUnwind,
|
||||
_Unwind_GetCFA,
|
||||
_Unwind_GetDataRelBase,
|
||||
_Unwind_GetGR,
|
||||
_Unwind_GetIP,
|
||||
_Unwind_GetIPInfo,
|
||||
_Unwind_GetLanguageSpecificData,
|
||||
_Unwind_GetRegionStart,
|
||||
_Unwind_GetTextRelBase,
|
||||
_Unwind_RaiseException,
|
||||
_Unwind_Resume,
|
||||
_Unwind_Resume_or_Rethrow,
|
||||
_Unwind_SetGR,
|
||||
_Unwind_SetIP
|
@ -1,237 +0,0 @@
|
||||
/* Subroutines for insn-output.c for NetWare.
|
||||
Contributed by Jan Beulich (jbeulich@novell.com)
|
||||
Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include "config.h"
|
||||
#include "system.h"
|
||||
#include "coretypes.h"
|
||||
#include "tm.h"
|
||||
#include "rtl.h"
|
||||
#include "regs.h"
|
||||
#include "hard-reg-set.h"
|
||||
#include "output.h"
|
||||
#include "tree.h"
|
||||
#include "flags.h"
|
||||
#include "tm_p.h"
|
||||
#include "diagnostic-core.h"
|
||||
#include "langhooks.h"
|
||||
#include "ggc.h"
|
||||
|
||||
/* Return string which is the function name, identified by ID, modified
|
||||
with PREFIX and a suffix consisting of an atsign (@) followed by the
|
||||
number of bytes of arguments. If ID is NULL use the DECL_NAME as base.
|
||||
Return NULL if no change required. */
|
||||
|
||||
static tree
|
||||
gen_stdcall_or_fastcall_decoration (tree decl, tree id, char prefix)
|
||||
{
|
||||
unsigned HOST_WIDE_INT total = 0;
|
||||
const char *old_str = IDENTIFIER_POINTER (id != NULL_TREE ? id : DECL_NAME (decl));
|
||||
char *new_str;
|
||||
tree type = TREE_TYPE (decl);
|
||||
|
||||
if (prototype_p (type))
|
||||
{
|
||||
tree arg;
|
||||
function_args_iterator args_iter;
|
||||
|
||||
/* This attribute is ignored for variadic functions. */
|
||||
if (stdarg_p (type))
|
||||
return NULL_TREE;
|
||||
|
||||
/* Quit if we hit an incomplete type. Error is reported
|
||||
by convert_arguments in c-typeck.c or cp/typeck.c. */
|
||||
FOREACH_FUNCTION_ARGS(type, arg, args_iter)
|
||||
{
|
||||
HOST_WIDE_INT parm_size;
|
||||
unsigned HOST_WIDE_INT parm_boundary_bytes;
|
||||
|
||||
if (! COMPLETE_TYPE_P (arg))
|
||||
break;
|
||||
|
||||
parm_size = int_size_in_bytes (arg);
|
||||
if (parm_size < 0)
|
||||
break;
|
||||
|
||||
parm_boundary_bytes = PARM_BOUNDARY / BITS_PER_UNIT;
|
||||
|
||||
/* Must round up to include padding. This is done the same
|
||||
way as in store_one_arg. */
|
||||
total += (parm_size + parm_boundary_bytes - 1)
|
||||
/ parm_boundary_bytes * parm_boundary_bytes;
|
||||
}
|
||||
}
|
||||
|
||||
new_str = XALLOCAVEC (char, 1 + strlen (old_str) + 1 + 10 + 1);
|
||||
sprintf (new_str, "%c%s@" HOST_WIDE_INT_PRINT_UNSIGNED,
|
||||
prefix, old_str, total);
|
||||
|
||||
return get_identifier (new_str);
|
||||
}
|
||||
|
||||
/* Return string which is the function name, identified by ID, modified
|
||||
with an _n@ prefix (where n represents the number of arguments passed in
|
||||
registers). If ID is NULL use the DECL_NAME as base.
|
||||
Return NULL if no change required. */
|
||||
|
||||
static tree
|
||||
gen_regparm_prefix (tree decl, tree id, unsigned int nregs)
|
||||
{
|
||||
unsigned HOST_WIDE_INT total = 0;
|
||||
const char *old_str = IDENTIFIER_POINTER (id != NULL_TREE ? id : DECL_NAME (decl));
|
||||
char *new_str;
|
||||
tree type = TREE_TYPE (decl);
|
||||
|
||||
if (prototype_p (type))
|
||||
{
|
||||
tree arg;
|
||||
function_args_iterator args_iter;
|
||||
|
||||
/* This attribute is ignored for variadic functions. */
|
||||
if (stdarg_p (type))
|
||||
return NULL_TREE;
|
||||
|
||||
/* Quit if we hit an incomplete type. Error is reported
|
||||
by convert_arguments in c-typeck.c or cp/typeck.c. */
|
||||
FOREACH_FUNCTION_ARGS(type, arg, args_iter)
|
||||
{
|
||||
HOST_WIDE_INT parm_size;
|
||||
unsigned HOST_WIDE_INT parm_boundary_bytes;
|
||||
|
||||
if (! COMPLETE_TYPE_P (arg))
|
||||
break;
|
||||
|
||||
parm_size = int_size_in_bytes (arg);
|
||||
if (parm_size < 0)
|
||||
break;
|
||||
|
||||
parm_boundary_bytes = PARM_BOUNDARY / BITS_PER_UNIT;
|
||||
|
||||
/* Must round up to include padding. This is done the same
|
||||
way as in store_one_arg. */
|
||||
total += (parm_size + parm_boundary_bytes - 1)
|
||||
/ parm_boundary_bytes * parm_boundary_bytes;
|
||||
}
|
||||
}
|
||||
|
||||
if (nregs > total / UNITS_PER_WORD)
|
||||
nregs = total / UNITS_PER_WORD;
|
||||
gcc_assert (nregs <= 9);
|
||||
new_str = XALLOCAVEC (char, 3 + strlen (old_str) + 1);
|
||||
sprintf (new_str, "_%u@%s", nregs, old_str);
|
||||
|
||||
return get_identifier (new_str);
|
||||
}
|
||||
|
||||
/* Maybe decorate and get a new identifier for the DECL of a stdcall or
|
||||
fastcall function. The original identifier is supplied in ID. */
|
||||
|
||||
static tree
|
||||
i386_nlm_maybe_mangle_decl_assembler_name (tree decl, tree id)
|
||||
{
|
||||
tree type_attributes = TYPE_ATTRIBUTES (TREE_TYPE (decl));
|
||||
tree new_id;
|
||||
unsigned int ccvt = ix86_get_callcvt (TREE_TYPE (decl));
|
||||
|
||||
if ((ccvt & IX86_CALLCVT_STDCALL) != 0)
|
||||
{
|
||||
if (TARGET_RTD)
|
||||
/* If we are using -mrtd emit undecorated symbol and let linker
|
||||
do the proper resolving. */
|
||||
return NULL_TREE;
|
||||
new_id = gen_stdcall_or_fastcall_decoration (decl, id, '_');
|
||||
}
|
||||
else if ((ccvt & IX86_CALLCVT_FASTCALL) != 0)
|
||||
new_id = gen_stdcall_or_fastcall_decoration (decl, id, FASTCALL_PREFIX);
|
||||
else if ((ccvt & IX86_CALLCVT_REGPARM) != 0
|
||||
&& (new_id = lookup_attribute ("regparm", type_attributes)))
|
||||
new_id = gen_regparm_prefix (decl, id,
|
||||
TREE_INT_CST_LOW (TREE_VALUE (TREE_VALUE (new_id))));
|
||||
else
|
||||
new_id = NULL_TREE;
|
||||
|
||||
return new_id;
|
||||
}
|
||||
|
||||
/* This is used as a target hook to modify the DECL_ASSEMBLER_NAME
|
||||
in the language-independent default hook
|
||||
langhooks.c:lhd_set_decl_assembler_name ()
|
||||
and in cp/mangle.c:mangle_decl (). */
|
||||
tree
|
||||
i386_nlm_mangle_decl_assembler_name (tree decl, tree id)
|
||||
{
|
||||
tree new_id = TREE_CODE (decl) == FUNCTION_DECL
|
||||
? i386_nlm_maybe_mangle_decl_assembler_name (decl, id)
|
||||
: NULL_TREE;
|
||||
|
||||
return (new_id ? new_id : id);
|
||||
}
|
||||
|
||||
void
|
||||
i386_nlm_encode_section_info (tree decl, rtx rtl, int first)
|
||||
{
|
||||
default_encode_section_info (decl, rtl, first);
|
||||
|
||||
if (TREE_CODE (decl) == FUNCTION_DECL
|
||||
/* Do not change the identifier if a verbatim asmspec
|
||||
or if stdcall suffix already added. */
|
||||
&& *IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)) != '*'
|
||||
&& !strchr (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)), '@')
|
||||
/* FIXME: Imported stdcall names are not modified by the Ada frontend.
|
||||
Check and decorate the RTL name now. */
|
||||
&& strcmp (lang_hooks.name, "GNU Ada") == 0)
|
||||
{
|
||||
rtx symbol = XEXP (rtl, 0);
|
||||
tree new_id;
|
||||
tree old_id = DECL_ASSEMBLER_NAME (decl);
|
||||
|
||||
gcc_assert (GET_CODE (symbol) == SYMBOL_REF);
|
||||
|
||||
if ((new_id = i386_nlm_maybe_mangle_decl_assembler_name (decl, old_id)))
|
||||
XSTR (symbol, 0) = IDENTIFIER_POINTER (new_id);
|
||||
}
|
||||
}
|
||||
|
||||
/* Strip the stdcall/fastcall/regparm pre-/suffix. */
|
||||
|
||||
const char *
|
||||
i386_nlm_strip_name_encoding (const char *str)
|
||||
{
|
||||
const char *name = default_strip_name_encoding (str);
|
||||
|
||||
if (*str != '*' && (*name == '_' || *name == '@'))
|
||||
{
|
||||
const char *p = strchr (name + 1, '@');
|
||||
|
||||
if (p)
|
||||
{
|
||||
++name;
|
||||
if (ISDIGIT (p[1]))
|
||||
name = ggc_alloc_string (name, p - name);
|
||||
else
|
||||
{
|
||||
gcc_assert (ISDIGIT (*name));
|
||||
name++;
|
||||
gcc_assert (name == p);
|
||||
}
|
||||
}
|
||||
}
|
||||
return name;
|
||||
}
|
@ -1,175 +0,0 @@
|
||||
/* Core target definitions for GCC for Intel 80x86 running Netware.
|
||||
and using dwarf for the debugging format.
|
||||
Copyright (C) 1993, 1994, 2004, 2007, 2008, 2009, 2010, 2011
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
Written by David V. Henkel-Wallace (gumby@cygnus.com)
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
|
||||
|
||||
#undef ASM_SPEC
|
||||
#define ASM_SPEC ""
|
||||
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC ""
|
||||
|
||||
/* Kinda useless, but what the hell */
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC "%{h*} %{v:-V}"
|
||||
|
||||
#undef STARTFILE_SPEC
|
||||
#define STARTFILE_SPEC ""
|
||||
|
||||
#undef ENDFILE_SPEC
|
||||
#define ENDFILE_SPEC ""
|
||||
|
||||
#undef RELATIVE_PREFIX_NOT_LINKDIR
|
||||
#undef LIBGCC_SPEC
|
||||
|
||||
#define TARGET_OS_CPP_BUILTINS() \
|
||||
do \
|
||||
{ \
|
||||
builtin_define_std ("IAPX386"); \
|
||||
builtin_define ("_M_IX86=300"); \
|
||||
builtin_define ("__netware__"); \
|
||||
builtin_assert ("system=netware"); \
|
||||
builtin_define ("__ELF__"); \
|
||||
builtin_define ("__cdecl=__attribute__((__cdecl__))"); \
|
||||
builtin_define ("__stdcall=__attribute__((__stdcall__))"); \
|
||||
builtin_define ("__fastcall=__attribute__((__fastcall__))"); \
|
||||
if (!flag_iso) \
|
||||
{ \
|
||||
builtin_define ("_cdecl=__attribute__((__cdecl__))"); \
|
||||
builtin_define ("_stdcall=__attribute__((__stdcall__))"); \
|
||||
builtin_define ("_fastcall=__attribute__((__fastcall__))"); \
|
||||
} \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#undef TARGET_CPU_DEFAULT
|
||||
#define TARGET_CPU_DEFAULT TARGET_CPU_DEFAULT_pentium4
|
||||
|
||||
/* By default, target has a 80387, uses IEEE compatible arithmetic,
|
||||
returns float values in the 387, and uses MSVC bit field layout. */
|
||||
#undef TARGET_SUBTARGET_DEFAULT
|
||||
#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP | \
|
||||
MASK_FLOAT_RETURNS | MASK_ALIGN_DOUBLE | MASK_MS_BITFIELD_LAYOUT)
|
||||
|
||||
/* Don't allow flag_pic to propagate since invalid relocations will
|
||||
result otherwise. */
|
||||
#define SUBTARGET_OVERRIDE_OPTIONS \
|
||||
do { \
|
||||
if (flag_pic) \
|
||||
{ \
|
||||
error ("-fPIC and -fpic are not supported for this target"); \
|
||||
flag_pic = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#undef MATH_LIBRARY
|
||||
#define MATH_LIBRARY ""
|
||||
|
||||
/* Align doubles and long-longs in structures on qword boundaries. */
|
||||
#undef BIGGEST_FIELD_ALIGNMENT
|
||||
#define BIGGEST_FIELD_ALIGNMENT 64
|
||||
|
||||
#undef DEFAULT_PCC_STRUCT_RETURN
|
||||
#define DEFAULT_PCC_STRUCT_RETURN 0
|
||||
|
||||
/* Implicit arguments pointing to aggregate return values are to be
|
||||
removed by the caller. */
|
||||
#undef KEEP_AGGREGATE_RETURN_POINTER
|
||||
#define KEEP_AGGREGATE_RETURN_POINTER 1
|
||||
|
||||
#undef ASM_COMMENT_START
|
||||
#define ASM_COMMENT_START "#"
|
||||
|
||||
#undef DBX_REGISTER_NUMBER
|
||||
#define DBX_REGISTER_NUMBER(n) (svr4_dbx_register_map[n])
|
||||
|
||||
/* Default structure packing is 1-byte. */
|
||||
#define TARGET_DEFAULT_PACK_STRUCT 1
|
||||
|
||||
#undef SIZE_TYPE
|
||||
#define SIZE_TYPE "unsigned int"
|
||||
|
||||
#undef PTRDIFF_TYPE
|
||||
#define PTRDIFF_TYPE "int"
|
||||
|
||||
#undef WCHAR_TYPE
|
||||
#define WCHAR_TYPE "short unsigned int"
|
||||
|
||||
#undef WCHAR_TYPE_SIZE
|
||||
#define WCHAR_TYPE_SIZE 16
|
||||
|
||||
#undef WINT_TYPE
|
||||
#define WINT_TYPE "int"
|
||||
|
||||
/* A C statement (sans semicolon) to output to the stdio stream
|
||||
FILE the assembler definition of uninitialized global DECL named
|
||||
NAME whose size is SIZE bytes and alignment is ALIGN bytes.
|
||||
Try to use asm_output_aligned_bss to implement this macro. */
|
||||
|
||||
#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
|
||||
asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
|
||||
|
||||
/* Handle special EH pointer encodings. Absolute, pc-relative, and
|
||||
indirect are handled automatically. */
|
||||
#define ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(FILE, ENCODING, SIZE, ADDR, DONE) \
|
||||
do { \
|
||||
if ((SIZE) == 4 && ((ENCODING) & 0x70) == DW_EH_PE_datarel) \
|
||||
{ \
|
||||
fputs (ASM_LONG, FILE); \
|
||||
assemble_name (FILE, XSTR (ADDR, 0)); \
|
||||
fputs (((ENCODING) & DW_EH_PE_indirect ? "@GOT" : "@GOTOFF"), FILE); \
|
||||
goto DONE; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* there is no TLS support in NLMs/on NetWare */
|
||||
#undef HAVE_AS_TLS
|
||||
|
||||
#define HAS_INIT_SECTION
|
||||
#undef INIT_SECTION_ASM_OP
|
||||
|
||||
#define CTOR_LISTS_DEFINED_EXTERNALLY
|
||||
|
||||
#undef READONLY_DATA_SECTION_ASM_OP
|
||||
#define READONLY_DATA_SECTION_ASM_OP ".section\t.rodata"
|
||||
|
||||
/* Define this macro if references to a symbol must be treated
|
||||
differently depending on something about the variable or
|
||||
function named by the symbol (such as what section it is in).
|
||||
|
||||
On i386 running NetWare, modify the assembler name with an underscore (_)
|
||||
or atsign (@) prefix and a suffix consisting of an atsign (@) followed by
|
||||
a string of digits that represents the number of bytes of arguments passed
|
||||
to the function, if it has the attribute STDCALL. Alternatively, if it has
|
||||
the REGPARM attribute, prefix it with an underscore (_), a digit
|
||||
representing the number of registers used, and an atsign (@). */
|
||||
void i386_nlm_encode_section_info (tree, rtx, int);
|
||||
extern tree i386_nlm_mangle_decl_assembler_name (tree, tree);
|
||||
const char *i386_nlm_strip_name_encoding (const char *);
|
||||
#define SUBTARGET_ENCODE_SECTION_INFO i386_nlm_encode_section_info
|
||||
#define TARGET_MANGLE_DECL_ASSEMBLER_NAME i386_nlm_mangle_decl_assembler_name
|
||||
#undef TARGET_STRIP_NAME_ENCODING
|
||||
#define TARGET_STRIP_NAME_ENCODING i386_nlm_strip_name_encoding
|
||||
|
||||
#define TARGET_POSIX_IO
|
@ -1,33 +0,0 @@
|
||||
; Netware options.
|
||||
|
||||
; Copyright (C) 2011
|
||||
; Free Software Foundation, Inc.
|
||||
;
|
||||
; This file is part of GCC.
|
||||
;
|
||||
; GCC is free software; you can redistribute it and/or modify it under
|
||||
; the terms of the GNU General Public License as published by the Free
|
||||
; Software Foundation; either version 3, or (at your option) any later
|
||||
; version.
|
||||
;
|
||||
; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
; WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
; for more details.
|
||||
;
|
||||
; You should have received a copy of the GNU General Public License
|
||||
; along with GCC; see the file COPYING3. If not see
|
||||
; <http://www.gnu.org/licenses/>.
|
||||
|
||||
; See the GCC internals manual (options.texi) for a description of
|
||||
; this file's format.
|
||||
|
||||
; Please try to keep this file in ASCII collating order.
|
||||
|
||||
posix
|
||||
Driver
|
||||
|
||||
pthread
|
||||
Driver
|
||||
|
||||
; This comment is to ensure we retain the blank line above.
|
@ -1,73 +0,0 @@
|
||||
/* Subroutines for insn-output.c for NetWare.
|
||||
Contributed by Jan Beulich (jbeulich@novell.com)
|
||||
Copyright (C) 2004, 2007, 2010 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include "config.h"
|
||||
#include "system.h"
|
||||
#include "coretypes.h"
|
||||
#include "tm.h"
|
||||
#include "rtl.h"
|
||||
#include "regs.h"
|
||||
#include "hard-reg-set.h"
|
||||
#include "output.h"
|
||||
#include "tree.h"
|
||||
#include "flags.h"
|
||||
#include "tm_p.h"
|
||||
#include "diagnostic-core.h"
|
||||
|
||||
void
|
||||
nwld_named_section_asm_out_constructor (rtx symbol, int priority)
|
||||
{
|
||||
#if !SUPPORTS_INIT_PRIORITY
|
||||
const char section[] = ".ctors"TARGET_SUB_SECTION_SEPARATOR;
|
||||
#else
|
||||
char section[20];
|
||||
|
||||
sprintf (section,
|
||||
".ctors"TARGET_SUB_SECTION_SEPARATOR"%.5u",
|
||||
/* Invert the numbering so the linker puts us in the proper
|
||||
order; constructors are run from right to left, and the
|
||||
linker sorts in increasing order. */
|
||||
MAX_INIT_PRIORITY - priority);
|
||||
#endif
|
||||
|
||||
switch_to_section (get_section (section, 0, NULL));
|
||||
assemble_align (POINTER_SIZE);
|
||||
assemble_integer (symbol, POINTER_SIZE / BITS_PER_UNIT, POINTER_SIZE, 1);
|
||||
}
|
||||
|
||||
void
|
||||
nwld_named_section_asm_out_destructor (rtx symbol, int priority)
|
||||
{
|
||||
#if !SUPPORTS_INIT_PRIORITY
|
||||
const char section[] = ".dtors"TARGET_SUB_SECTION_SEPARATOR;
|
||||
#else
|
||||
char section[20];
|
||||
|
||||
sprintf (section, ".dtors"TARGET_SUB_SECTION_SEPARATOR"%.5u",
|
||||
/* Invert the numbering so the linker puts us in the proper
|
||||
order; destructors are run from left to right, and the
|
||||
linker sorts in increasing order. */
|
||||
MAX_INIT_PRIORITY - priority);
|
||||
#endif
|
||||
|
||||
switch_to_section (get_section (section, 0, NULL));
|
||||
assemble_align (POINTER_SIZE);
|
||||
assemble_integer (symbol, POINTER_SIZE / BITS_PER_UNIT, POINTER_SIZE, 1);
|
||||
}
|
@ -1,69 +0,0 @@
|
||||
/* nwld.h -- defines to be used when targeting GCC for some generic NetWare
|
||||
system while using the Novell linker.
|
||||
Copyright (C) 2004, 2007, 2010, 2011 Free Software Foundation, Inc.
|
||||
|
||||
Written by Jan Beulich (jbeulich@novell.com)
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC "-lc --def-file libc.def%s"
|
||||
|
||||
#undef LIBGCC_SPEC
|
||||
#define LIBGCC_SPEC "-lgcc %{!static-libgcc:--def-file libgcc.def%s}"
|
||||
|
||||
#undef LINKER_NAME
|
||||
#define LINKER_NAME "nwld"
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC "--format:NLM --extensions:GNU" \
|
||||
" %{static:%{!nostdlib:%{!nodefaultlibs:%estatic linking is not supported\n}}}"
|
||||
|
||||
#undef LINK_GCC_C_SEQUENCE_SPEC
|
||||
#define LINK_GCC_C_SEQUENCE_SPEC "%L %G"
|
||||
|
||||
/* In order to permit the linker to derive the output filename from the first
|
||||
input file, put the common startup code as the last object. */
|
||||
#undef STARTFILE_SPEC
|
||||
#define STARTFILE_SPEC ""
|
||||
|
||||
#undef ENDFILE_SPEC
|
||||
#define ENDFILE_SPEC "crt0%O%s ../imports/%{!posix:libc}%{posix:posix}pre.gcc%O%s" \
|
||||
" --def-file %{!posix:libc}%{posix:posix}pre.def%s"
|
||||
|
||||
#define DRIVER_SELF_SPECS "%{!static-libgcc:-shared-libgcc}"
|
||||
|
||||
#define TARGET_SUB_SECTION_SEPARATOR "$"
|
||||
|
||||
void nwld_named_section_asm_out_constructor (rtx, int);
|
||||
void nwld_named_section_asm_out_destructor (rtx, int);
|
||||
|
||||
#define TARGET_ASM_CONSTRUCTOR nwld_named_section_asm_out_constructor
|
||||
#define TARGET_ASM_DESTRUCTOR nwld_named_section_asm_out_destructor
|
||||
|
||||
#define SUBSUBTARGET_OVERRIDE_OPTIONS \
|
||||
do { \
|
||||
/* XXX This can be enabled once gas output meets nwld's needs. */ \
|
||||
/* if (!flag_unwind_tables && !flag_exceptions) */ \
|
||||
flag_dwarf2_cfi_asm = 0; \
|
||||
} while (0)
|
||||
|
||||
#undef EH_FRAME_SECTION_NAME
|
||||
#define EH_FRAME_SECTION_NAME ".eh_frame"TARGET_SUB_SECTION_SEPARATOR
|
||||
|
||||
/* nwld does not currently support stabs debug info */
|
||||
#undef DBX_DEBUGGING_INFO
|
@ -1,10 +0,0 @@
|
||||
TARGET_LIBGCC2_CFLAGS = -mpreferred-stack-boundary=2 -fomit-frame-pointer
|
||||
|
||||
netware.o: $(srcdir)/config/i386/netware.c $(RTL_H) $(TREE_H) $(CONFIG_H) $(TM_P_H)
|
||||
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
|
||||
$(srcdir)/config/i386/netware.c
|
||||
|
||||
# We don't need some of GCC's own include files.
|
||||
USER_H = $(srcdir)/ginclude/stdarg.h \
|
||||
$(srcdir)/ginclude/varargs.h \
|
||||
$(EXTRA_HEADERS) $(LANG_EXTRA_HEADERS)
|
@ -1,22 +0,0 @@
|
||||
# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GCC.
|
||||
#
|
||||
# GCC is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# GCC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GCC; see the file COPYING3. If not see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
nwld.o: $(srcdir)/config/i386/nwld.c $(RTL_H) $(TREE_H) $(CONFIG_H) $(TM_P_H)
|
||||
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
|
||||
$(srcdir)/config/i386/nwld.c
|
2
gcc/configure
vendored
2
gcc/configure
vendored
@ -10899,7 +10899,7 @@ case ${enable_threads} in
|
||||
# default
|
||||
target_thread_file='single'
|
||||
;;
|
||||
aix | dce | lynx | mipssde | nks | posix | posix95 | rtems | \
|
||||
aix | dce | lynx | mipssde | posix | posix95 | rtems | \
|
||||
single | tpf | vxworks | win32)
|
||||
target_thread_file=${enable_threads}
|
||||
;;
|
||||
|
@ -1340,7 +1340,7 @@ case ${enable_threads} in
|
||||
# default
|
||||
target_thread_file='single'
|
||||
;;
|
||||
aix | dce | lynx | mipssde | nks | posix | posix95 | rtems | \
|
||||
aix | dce | lynx | mipssde | posix | posix95 | rtems | \
|
||||
single | tpf | vxworks | win32)
|
||||
target_thread_file=${enable_threads}
|
||||
;;
|
||||
|
@ -2836,11 +2836,8 @@ On 32-bit i?86-*-* targets, you can control by those attribute for
|
||||
aggregate return in memory, if the caller is responsible to pop the hidden
|
||||
pointer together with the rest of the arguments - @var{number} equal to
|
||||
zero -, or if the callee is responsible to pop hidden pointer - @var{number}
|
||||
equal to one.
|
||||
|
||||
For i?86-netware, the caller pops the stack for the hidden arguments pointing
|
||||
to aggregate return value. This differs from the default i386 ABI which assumes
|
||||
that the callee pops the stack for hidden pointer.
|
||||
equal to one. The default i386 ABI assumes that the callee pops the
|
||||
stack for hidden pointer.
|
||||
|
||||
@item ms_hook_prologue
|
||||
@cindex @code{ms_hook_prologue} attribute
|
||||
|
@ -1141,8 +1141,6 @@ DCE thread support.
|
||||
LynxOS thread support.
|
||||
@item mipssde
|
||||
MIPS SDE thread support.
|
||||
@item nks
|
||||
Novell Kernel Services thread support.
|
||||
@item no
|
||||
This is an alias for @samp{single}.
|
||||
@item posix
|
||||
|
397
gcc/gthr-nks.h
397
gcc/gthr-nks.h
@ -1,397 +0,0 @@
|
||||
/* Threads compatibility routines for libgcc2 and libobjc. */
|
||||
/* Compile this one with gcc. */
|
||||
/* Copyright (C) 2002, 2003, 2004, 2008, 2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 3, or (at your option) any later
|
||||
version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
Under Section 7 of GPL version 3, you are granted additional
|
||||
permissions described in the GCC Runtime Library Exception, version
|
||||
3.1, as published by the Free Software Foundation.
|
||||
|
||||
You should have received a copy of the GNU General Public License and
|
||||
a copy of the GCC Runtime Library Exception along with this program;
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef GCC_GTHR_NKS_H
|
||||
#define GCC_GTHR_NKS_H
|
||||
|
||||
/* NKS threads specific definitions.
|
||||
Easy, since the interface is mostly one-to-one mapping. */
|
||||
|
||||
#define __GTHREADS 1
|
||||
|
||||
#define NKS_NO_INLINE_FUNCS
|
||||
#include <nksapi.h>
|
||||
#include <string.h>
|
||||
|
||||
typedef NXKey_t __gthread_key_t;
|
||||
typedef NXMutex_t *__gthread_mutex_t;
|
||||
typedef NXMutex_t *__gthread_recursive_mutex_t;
|
||||
|
||||
#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function
|
||||
#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function
|
||||
|
||||
static inline int
|
||||
__gthread_active_p (void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef _LIBOBJC
|
||||
|
||||
/* This is the config.h file in libobjc/ */
|
||||
#include <config.h>
|
||||
|
||||
#ifdef HAVE_SCHED_H
|
||||
# include <sched.h>
|
||||
#endif
|
||||
|
||||
/* Key structure for maintaining thread specific storage */
|
||||
static NXKey_t _objc_thread_storage;
|
||||
|
||||
/* Backend initialization functions */
|
||||
|
||||
/* Initialize the threads subsystem. */
|
||||
static inline int
|
||||
__gthread_objc_init_thread_system (void)
|
||||
{
|
||||
/* Initialize the thread storage key. */
|
||||
if (NXKeyCreate (NULL, NULL, &_objc_thread_storage) == 0)
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Close the threads subsystem. */
|
||||
static inline int
|
||||
__gthread_objc_close_thread_system (void)
|
||||
{
|
||||
if (NXKeyDelete (_objc_thread_storage) == 0)
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Backend thread functions */
|
||||
|
||||
/* Create a new thread of execution. */
|
||||
static inline objc_thread_t
|
||||
__gthread_objc_thread_detach (void (*func)(void *), void *arg)
|
||||
{
|
||||
objc_thread_t thread_id;
|
||||
NXContext_t context;
|
||||
NXThreadId_t new_thread_handle;
|
||||
int err;
|
||||
|
||||
if ((context = NXContextAlloc (func, arg, NX_PRIO_MED, 0, 0, 0, &err)) == NULL)
|
||||
thread_id = NULL;
|
||||
else if (NXThreadCreate (context, NX_THR_DETACHED, &new_thread_handle) == 0)
|
||||
thread_id = (objc_thread_t) new_thread_handle;
|
||||
else {
|
||||
NXContextFree (context);
|
||||
thread_id = NULL;
|
||||
}
|
||||
|
||||
return thread_id;
|
||||
}
|
||||
|
||||
/* Set the current thread's priority. */
|
||||
static inline int
|
||||
__gthread_objc_thread_set_priority (int priority)
|
||||
{
|
||||
if (NXThreadSetPriority (NXThreadGetId (), priority) == 0)
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Return the current thread's priority. */
|
||||
static inline int
|
||||
__gthread_objc_thread_get_priority (void)
|
||||
{
|
||||
int priority;
|
||||
|
||||
if (NXThreadGetPriority (NXThreadGetId (), &priority) == 0)
|
||||
return priority;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Yield our process time to another thread. */
|
||||
static inline void
|
||||
__gthread_objc_thread_yield (void)
|
||||
{
|
||||
NXThreadYield ();
|
||||
}
|
||||
|
||||
/* Terminate the current thread. */
|
||||
static inline int
|
||||
__gthread_objc_thread_exit (void)
|
||||
{
|
||||
/* exit the thread */
|
||||
NXThreadExit (&__objc_thread_exit_status);
|
||||
|
||||
/* Failed if we reached here */
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Returns an integer value which uniquely describes a thread. */
|
||||
static inline objc_thread_t
|
||||
__gthread_objc_thread_id (void)
|
||||
{
|
||||
(objc_thread_t) NXThreadGetId ();
|
||||
}
|
||||
|
||||
/* Sets the thread's local storage pointer. */
|
||||
static inline int
|
||||
__gthread_objc_thread_set_data (void *value)
|
||||
{
|
||||
return NXKeySetValue (_objc_thread_storage, value);
|
||||
}
|
||||
|
||||
/* Returns the thread's local storage pointer. */
|
||||
static inline void *
|
||||
__gthread_objc_thread_get_data (void)
|
||||
{
|
||||
void *value;
|
||||
|
||||
if (NXKeyGetValue (_objc_thread_storage, &value) == 0)
|
||||
return value;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Backend mutex functions */
|
||||
|
||||
/* Allocate a mutex. */
|
||||
static inline int
|
||||
__gthread_objc_mutex_allocate (objc_mutex_t mutex)
|
||||
{
|
||||
static const NX_LOCK_INFO_ALLOC (info, "GNU ObjC", 0);
|
||||
|
||||
if ((mutex->backend = NXMutexAlloc (0, 0, &info)) == NULL)
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Deallocate a mutex. */
|
||||
static inline int
|
||||
__gthread_objc_mutex_deallocate (objc_mutex_t mutex)
|
||||
{
|
||||
while (NXMutexIsOwned ((NXMutex_t *)mutex->backend))
|
||||
NXUnlock ((NXMutex_t *)mutex->backend);
|
||||
if (NXMutexFree ((NXMutex_t *)mutex->backend) != 0)
|
||||
return -1;
|
||||
mutex->backend = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Grab a lock on a mutex. */
|
||||
static inline int
|
||||
__gthread_objc_mutex_lock (objc_mutex_t mutex)
|
||||
{
|
||||
return NXLock ((NXMutex_t *)mutex->backend);
|
||||
}
|
||||
|
||||
/* Try to grab a lock on a mutex. */
|
||||
static inline int
|
||||
__gthread_objc_mutex_trylock (objc_mutex_t mutex)
|
||||
{
|
||||
if (!NXTryLock ((NXMutex_t *)mutex->backend))
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Unlock the mutex */
|
||||
static inline int
|
||||
__gthread_objc_mutex_unlock (objc_mutex_t mutex)
|
||||
{
|
||||
return NXUnlock ((NXMutex_t *)mutex->backend);
|
||||
}
|
||||
|
||||
/* Backend condition mutex functions */
|
||||
|
||||
/* Allocate a condition. */
|
||||
static inline int
|
||||
__gthread_objc_condition_allocate (objc_condition_t condition)
|
||||
{
|
||||
condition->backend = NXCondAlloc (NULL);
|
||||
if (condition->backend == NULL)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Deallocate a condition. */
|
||||
static inline int
|
||||
__gthread_objc_condition_deallocate (objc_condition_t condition)
|
||||
{
|
||||
if (NXCondFree ((NXCond_t *)condition->backend) != 0)
|
||||
return -1;
|
||||
condition->backend = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Wait on the condition */
|
||||
static inline int
|
||||
__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex)
|
||||
{
|
||||
return NXCondWait ((NXCond_t *)condition->backend, (NXMutex_t *)mutex->backend);
|
||||
}
|
||||
|
||||
/* Wake up all threads waiting on this condition. */
|
||||
static inline int
|
||||
__gthread_objc_condition_broadcast (objc_condition_t condition)
|
||||
{
|
||||
return NXCondBroadcast ((NXCond_t *)condition->backend);
|
||||
}
|
||||
|
||||
/* Wake up one thread waiting on this condition. */
|
||||
static inline int
|
||||
__gthread_objc_condition_signal (objc_condition_t condition)
|
||||
{
|
||||
return NXCondSignal ((NXCond_t *)condition->backend);
|
||||
}
|
||||
|
||||
#else /* _LIBOBJC */
|
||||
|
||||
#if defined(__cplusplus)
|
||||
# include <bits/atomicity.h>
|
||||
/* The remaining conditions here are temporary until there is
|
||||
an application accessible atomic operations API set... */
|
||||
#elif defined(_M_IA64) || defined(__ia64__)
|
||||
# include <../libstdc++-v3/config/cpu/ia64/bits/atomicity.h>
|
||||
#elif defined(_M_IX86) || defined(__i486__)
|
||||
# include <../libstdc++-v3/config/cpu/i486/bits/atomicity.h>
|
||||
#elif defined(_M_AMD64) || defined(__x86_64__)
|
||||
# include <../libstdc++-v3/config/cpu/x86-64/bits/atomicity.h>
|
||||
#endif
|
||||
|
||||
typedef volatile long __gthread_once_t;
|
||||
|
||||
#define __GTHREAD_ONCE_INIT 0
|
||||
|
||||
static inline int
|
||||
__gthread_once (__gthread_once_t *__once, void (*__func) (void))
|
||||
{
|
||||
if (__compare_and_swap (__once, 0, 1))
|
||||
{
|
||||
__func ();
|
||||
*__once |= 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
while (!(*__once & 2))
|
||||
NXThreadYield ();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int
|
||||
__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
|
||||
{
|
||||
return NXKeyCreate (__dtor, NULL, __key);
|
||||
}
|
||||
|
||||
static inline int
|
||||
__gthread_key_dtor (__gthread_key_t __key, void *__ptr)
|
||||
{
|
||||
/* Just reset the key value to zero. */
|
||||
if (__ptr)
|
||||
return NXKeySetValue (__key, NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int
|
||||
__gthread_key_delete (__gthread_key_t __key)
|
||||
{
|
||||
return NXKeyDelete (__key);
|
||||
}
|
||||
|
||||
static inline void *
|
||||
__gthread_getspecific (__gthread_key_t __key)
|
||||
{
|
||||
void *__value;
|
||||
|
||||
if (NXKeyGetValue (__key, &__value) == 0)
|
||||
return __value;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline int
|
||||
__gthread_setspecific (__gthread_key_t __key, const void *__ptr)
|
||||
{
|
||||
return NXKeySetValue (__key, (void *)__ptr);
|
||||
}
|
||||
|
||||
static inline void
|
||||
__gthread_mutex_init_function (__gthread_mutex_t *__mutex)
|
||||
{
|
||||
static const NX_LOCK_INFO_ALLOC (__info, "GTHREADS", 0);
|
||||
|
||||
*__mutex = NXMutexAlloc (0, 0, &__info);
|
||||
}
|
||||
|
||||
static inline int
|
||||
__gthread_mutex_destroy (__gthread_mutex_t * UNUSED(__mutex))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int
|
||||
__gthread_mutex_lock (__gthread_mutex_t *__mutex)
|
||||
{
|
||||
return NXLock (*__mutex);
|
||||
}
|
||||
|
||||
static inline int
|
||||
__gthread_mutex_trylock (__gthread_mutex_t *__mutex)
|
||||
{
|
||||
if (NXTryLock (*__mutex))
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
static inline int
|
||||
__gthread_mutex_unlock (__gthread_mutex_t *__mutex)
|
||||
{
|
||||
return NXUnlock (*__mutex);
|
||||
}
|
||||
|
||||
static inline void
|
||||
__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex)
|
||||
{
|
||||
static const NX_LOCK_INFO_ALLOC (__info, "GTHREADS", 0);
|
||||
|
||||
*__mutex = NXMutexAlloc (NX_MUTEX_RECURSIVE, 0, &__info);
|
||||
}
|
||||
|
||||
static inline int
|
||||
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
|
||||
{
|
||||
return NXLock (*__mutex);
|
||||
}
|
||||
|
||||
static inline int
|
||||
__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
|
||||
{
|
||||
if (NXTryLock (*__mutex))
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
static inline int
|
||||
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
|
||||
{
|
||||
return NXUnlock (*__mutex);
|
||||
}
|
||||
|
||||
#endif /* _LIBOBJC */
|
||||
|
||||
#endif /* not GCC_GTHR_NKS_H */
|
@ -1,3 +1,29 @@
|
||||
2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* g++.dg/ext/bitfield2.C: Remove i?86-*-netware support.
|
||||
* g++.dg/ext/bitfield3.C: Likewise.
|
||||
* g++.dg/ext/bitfield4.C: Likewise.
|
||||
* g++.dg/ext/bitfield5.C: Likewise.
|
||||
* g++.dg/other/PR23205.C: Remove *-*-netware* support.
|
||||
* g++.dg/other/pr23205-2.C: Likewise.
|
||||
* gcc.c-torture/compile/20001109-1.c: Remove dg-xfail-if.
|
||||
* gcc.c-torture/compile/20001109-2.c: Likewise.
|
||||
* gcc.dg/20040813-1.c: Remove *-*-netware* support.
|
||||
* gcc.dg/bitfld-15.c: Remove i?86-*-netware support.
|
||||
* gcc.dg/bitfld-16.c: Likewise.
|
||||
* gcc.dg/bitfld-17.c: Likewise.
|
||||
* gcc.dg/bitfld-18.c: Likewise.
|
||||
* gcc.dg/builtins-config.h: Remove Netware support.
|
||||
* gcc.dg/cdce1.c: Remove *-*-netware* support. Update line number.
|
||||
* gcc.dg/cdce2.c: Likewise.
|
||||
* gcc.dg/cpp/assert4.c: Remove netware support.
|
||||
* gcc.dg/debug/pr35154.c: Remove *-*-netware* support.
|
||||
* gfortran.dg/debug/pr35154-stabs.f: Remove *-*-netware* support.
|
||||
|
||||
* lib/target-supports.exp (check_visibility_available): Remove
|
||||
NetWare support.
|
||||
(check_profiling_available): Likewise.
|
||||
|
||||
2011-07-18 Ira Rosen <ira.rosen@linaro.org>
|
||||
|
||||
* gcc.dg/vect/pr49038.c: Run only on targets that support mmap.
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* { dg-do compile } */
|
||||
/* Remove pedantic. Allow the GCC extension to use char for bitfields. */
|
||||
/* { dg-options "" } */
|
||||
/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target { i?86-*-netware i?86-*-mingw* x86_64-*-mingw* } } } */
|
||||
/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target { i?86-*-mingw* x86_64-*-mingw* } } } */
|
||||
|
||||
struct t /* { dg-message "note: offset of packed bit-field 't::b' has changed in GCC 4.4" "" { target pcc_bitfield_type_matters } } */
|
||||
{
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wno-packed-bitfield-compat" } */
|
||||
/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target { i?86-*-netware i?86-*-mingw* x86_64-*-mingw* } } } */
|
||||
/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target { i?86-*-mingw* x86_64-*-mingw* } } } */
|
||||
|
||||
struct t
|
||||
{
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "" } */
|
||||
/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target { i?86-*-netware i?86-*-mingw* x86_64-*-mingw* } } } */
|
||||
/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target { i?86-*-mingw* x86_64-*-mingw* } } } */
|
||||
|
||||
struct t /* { dg-message "note: offset of packed bit-field 't::b' has changed in GCC 4.4" "" { target pcc_bitfield_type_matters } } */
|
||||
{
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wno-packed-bitfield-compat" } */
|
||||
/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target { i?86-*-netware i?86-*-mingw* x86_64-*-mingw* } } } */
|
||||
/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target { i?86-*-mingw* x86_64-*-mingw* } } } */
|
||||
|
||||
struct t
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-skip-if "No stabs" { mmix-*-* *-*-aix* *-*-netware* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks } { "*" } { "" } } */
|
||||
/* { dg-skip-if "No stabs" { mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks } { "*" } { "" } } */
|
||||
/* { dg-options "-gstabs+ -fno-eliminate-unused-debug-types" } */
|
||||
|
||||
const int foobar = 4;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-skip-if "No stabs" { mmix-*-* *-*-aix* *-*-netware* alpha*-*-* hppa*64*-*-* ia64-*-* } { "*" } { "" } } */
|
||||
/* { dg-skip-if "No stabs" { mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* } { "*" } { "" } } */
|
||||
/* { dg-options "-gstabs+ -fno-eliminate-unused-debug-types -ftoplevel-reorder" } */
|
||||
|
||||
const int foobar = 4;
|
||||
|
@ -1,5 +1,3 @@
|
||||
/* This does not work on NetWare, which has a default of 1-byte alignment. */
|
||||
/* { dg-xfail-if "" { "*-*-netware*" } { "*" } { "" } } */
|
||||
typedef struct _foo foo;
|
||||
extern foo bar;
|
||||
struct _foo {
|
||||
|
@ -1,5 +1,3 @@
|
||||
/* This does not work on NetWare, which has a default of 1-byte alignment. */
|
||||
/* { dg-xfail-if "" { "*-*-netware*" } { "*" } { "" } } */
|
||||
extern struct foo bar;
|
||||
struct foo {
|
||||
int a;
|
||||
|
@ -2,7 +2,7 @@
|
||||
/* Contributed by Devang Patel <dpatel@apple.com> */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-skip-if "No stabs" { mmix-*-* *-*-aix* *-*-netware* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks* } { "*" } { "" } } */
|
||||
/* { dg-skip-if "No stabs" { mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks* } { "*" } { "" } } */
|
||||
/* { dg-options "-gstabs" } */
|
||||
|
||||
int
|
||||
|
@ -1,7 +1,6 @@
|
||||
/* { dg-do compile } */
|
||||
/* Remove pedantic. Allow the GCC extension to use char for bitfields. */
|
||||
/* { dg-options "" } */
|
||||
/* { dg-options "-mno-ms-bitfields" { target i?86-*-netware } } */
|
||||
/* { dg-options "-mno-ms-bitfields -Wno-packed-bitfield-compat" { target { i?86-*-mingw* x86_64-*-mingw* } } } */
|
||||
|
||||
struct t
|
||||
|
@ -1,6 +1,5 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wno-packed-bitfield-compat" } */
|
||||
/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target i?86-*-netware } } */
|
||||
/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target { i?86-*-mingw* x86_64-*-mingw* } } } */
|
||||
|
||||
struct t
|
||||
|
@ -1,6 +1,5 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "" } */
|
||||
/* { dg-options "-mno-ms-bitfields" { target i?86-*-netware } } */
|
||||
/* { dg-options "-mno-ms-bitfields -Wno-packed-bitfield-compat" { target { i?86-*-mingw* x86_64-*-mingw* } } } */
|
||||
|
||||
struct t
|
||||
|
@ -1,6 +1,5 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wno-packed-bitfield-compat" } */
|
||||
/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target i?86-*-netware } } */
|
||||
/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target { i?86-*-mingw* x86_64-*-mingw* } } } */
|
||||
|
||||
struct t
|
||||
|
@ -15,8 +15,6 @@
|
||||
/* AVR doesn't have the entire C99 runtime. */
|
||||
#elif defined(__FreeBSD__) && (__FreeBSD__ < 9)
|
||||
/* FreeBSD up to version 8 lacks support for cexp and friends. */
|
||||
#elif defined(__netware__)
|
||||
/* NetWare doesn't have the entire C99 runtime. */
|
||||
#elif defined(__vxworks)
|
||||
/* VxWorks doesn't have a full C99 time. (cabs is missing, for example.) */
|
||||
#elif defined(_WIN32) && !defined(__CYGWIN__)
|
||||
|
@ -1,7 +1,6 @@
|
||||
/* { dg-do run } */
|
||||
/* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details -lm" } */
|
||||
/* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details" { target *-*-netware* } } */
|
||||
/* { dg-final { scan-tree-dump "cdce1.c:17: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
|
||||
/* { dg-final { scan-tree-dump "cdce1.c:16: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
|
||||
/* { dg-final { cleanup-tree-dump "cdce" } } */
|
||||
/* { dg-require-effective-target large_double } */
|
||||
|
||||
|
@ -1,8 +1,7 @@
|
||||
/* { dg-do run } */
|
||||
/* { dg-skip-if "doubles are floats" { "avr-*-*" } { "*" } { "" } } */
|
||||
/* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details -lm" } */
|
||||
/* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details" { target *-*-netware* } } */
|
||||
/* { dg-final { scan-tree-dump "cdce2.c:17: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
|
||||
/* { dg-final { scan-tree-dump "cdce2.c:16: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
|
||||
/* { dg-final { cleanup-tree-dump "cdce" } } */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
@ -128,14 +128,6 @@
|
||||
# error
|
||||
#endif
|
||||
|
||||
#if defined __netware__
|
||||
# if !#system(netware)
|
||||
# error
|
||||
# endif
|
||||
#elif #system(netware)
|
||||
# error
|
||||
#endif
|
||||
|
||||
|
||||
/* Check for #cpu and #machine assertions. */
|
||||
|
||||
|
@ -23,7 +23,7 @@ main()
|
||||
optb.f2 = 'D';
|
||||
i_outer = 'e';
|
||||
/* { dg-do compile } */
|
||||
/* { dg-skip-if "No stabs" { mmix-*-* *-*-netware* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks* } { "*" } { "" } } */
|
||||
/* { dg-skip-if "No stabs" { mmix-*-* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks* } { "*" } { "" } } */
|
||||
/* { dg-skip-if "stabs only" { *-*-* } { "*" } { "-gstabs" } } */
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
C Test program for common block debugging. G. Helffrich 11 July 2004.
|
||||
C { dg-do compile }
|
||||
C { dg-skip-if "No stabs" { mmix-*-* *-*-netware* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks* } { "*" } { "" } }
|
||||
C { dg-skip-if "No stabs" { mmix-*-* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks* } { "*" } { "" } }
|
||||
C { dg-skip-if "No stabs" {*-*-* } { "*" } { "-gstabs" } }
|
||||
common i,j
|
||||
common /label/l,m
|
||||
|
@ -290,11 +290,6 @@ proc check_weak_override_available { } {
|
||||
# The argument is the kind of visibility, default/protected/hidden/internal.
|
||||
|
||||
proc check_visibility_available { what_kind } {
|
||||
# On NetWare, support makes no sense.
|
||||
if { [istarget *-*-netware*] } {
|
||||
return 0
|
||||
}
|
||||
|
||||
if [string match "" $what_kind] { set what_kind "hidden" }
|
||||
|
||||
return [check_no_compiler_messages visibility_available_$what_kind object "
|
||||
@ -571,7 +566,6 @@ proc check_profiling_available { test_what } {
|
||||
|| [istarget tic6x-*-elf]
|
||||
|| [istarget xstormy16-*]
|
||||
|| [istarget xtensa*-*-elf]
|
||||
|| [istarget *-*-netware*]
|
||||
|| [istarget *-*-rtems*]
|
||||
|| [istarget *-*-vxworks*] } {
|
||||
set profiling_available_saved 0
|
||||
|
@ -1,3 +1,9 @@
|
||||
2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* config.host (i[3456x]86-*-netware*): Remove.
|
||||
* config/i386/netware-crt0.c, config/i386/t-nwld,
|
||||
config/i386/t-slibgcc-nwld: Remove.
|
||||
|
||||
2011-07-15 Bernd Schmidt <bernds@codesourcery.com>
|
||||
|
||||
* config.host: Handle tic6x-*-*.
|
||||
|
@ -375,14 +375,6 @@ i[34567]86-pc-msdosdjgpp*)
|
||||
;;
|
||||
i[34567]86-*-lynxos*)
|
||||
;;
|
||||
i[3456x]86-*-netware*)
|
||||
case /${with_ld} in
|
||||
*/nwld)
|
||||
tmake_file="${tmake_file} i386/t-nwld i386/t-slibgcc-nwld"
|
||||
extra_parts="${extra_parts} crt0.o libgcc.def libc.def libcpre.def posixpre.def"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
i[34567]86-*-nto-qnx*)
|
||||
;;
|
||||
i[34567]86-*-rtems*)
|
||||
|
@ -1,79 +0,0 @@
|
||||
/* Startup routines for NetWare.
|
||||
Contributed by Jan Beulich (jbeulich@novell.com)
|
||||
Copyright (C) 2004, 2007 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include "unwind-dw2-fde.h"
|
||||
|
||||
int __init_environment (void *);
|
||||
int __deinit_environment (void *);
|
||||
|
||||
|
||||
#define SECTION_DECL(name, decl) decl __attribute__((__section__(name)))
|
||||
|
||||
SECTION_DECL(".ctors", void(*const __CTOR_LIST__)(void))
|
||||
= (void(*)(void))(intptr_t)-1;
|
||||
SECTION_DECL(".ctors$_", void(*const __CTOR_END__)(void)) = NULL;
|
||||
|
||||
SECTION_DECL(".dtors", void(*const __DTOR_LIST__)(void))
|
||||
= (void(*)(void))(intptr_t)-1;
|
||||
SECTION_DECL(".dtors$_", void(*const __DTOR_END__)(void)) = NULL;
|
||||
|
||||
/* No need to use the __[de]register_frame_info_bases functions since
|
||||
for us the bases are NULL always anyway. */
|
||||
void __register_frame_info (const void *, struct object *)
|
||||
__attribute__((__weak__));
|
||||
void *__deregister_frame_info (const void *) __attribute__((__weak__));
|
||||
|
||||
SECTION_DECL(".eh_frame", /*const*/ uint32_t __EH_FRAME_BEGIN__[]) = { };
|
||||
SECTION_DECL(".eh_frame$_", /*const*/ uint32_t __EH_FRAME_END__[]) = {0};
|
||||
|
||||
int
|
||||
__init_environment (void *unused __attribute__((__unused__)))
|
||||
{
|
||||
void (* const * pctor)(void);
|
||||
static struct object object;
|
||||
|
||||
if (__register_frame_info)
|
||||
__register_frame_info (__EH_FRAME_BEGIN__, &object);
|
||||
|
||||
for (pctor = &__CTOR_END__ - 1; pctor > &__CTOR_LIST__; --pctor)
|
||||
if (*pctor != NULL)
|
||||
(*pctor)();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
__deinit_environment (void *unused __attribute__((__unused__)))
|
||||
{
|
||||
/* This should be static to prevent calling the same destructor
|
||||
twice (just in case where we get here multiple times). */
|
||||
static void (* const * pdtor)(void) = &__DTOR_LIST__ + 1;
|
||||
|
||||
while (pdtor < &__DTOR_END__)
|
||||
if (*pdtor++ != NULL)
|
||||
pdtor[-1] ();
|
||||
|
||||
if (__deregister_frame_info)
|
||||
__deregister_frame_info(__EH_FRAME_BEGIN__);
|
||||
|
||||
return 0;
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GCC.
|
||||
#
|
||||
# GCC is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# GCC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GCC; see the file COPYING3. If not see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
crt0.o: $(srcdir)/config/i386/netware-crt0.c
|
||||
$(crt_compile) $(CRTSTUFF_T_CFLAGS) -c $<
|
||||
|
||||
CRTSTUFF_T_CFLAGS = -mpreferred-stack-boundary=2
|
||||
|
||||
libgcc.def: $(srcdir)/config/i386/t-nwld
|
||||
echo "module libgcc_s" >$@
|
||||
|
||||
libc.def: $(srcdir)/config/i386/t-nwld
|
||||
echo "module libc" >$@
|
||||
|
||||
libcpre.def: $(srcdir)/config/i386/t-nwld
|
||||
echo "start _LibCPrelude" >$@
|
||||
echo "exit _LibCPostlude" >>$@
|
||||
echo "check _LibCCheckUnload" >>$@
|
||||
|
||||
posixpre.def: $(srcdir)/config/i386/t-nwld
|
||||
echo "start POSIX_Start" >$@
|
||||
echo "exit POSIX_Stop" >>$@
|
||||
echo "check POSIX_CheckUnload" >>$@
|
@ -1,31 +0,0 @@
|
||||
# Build a shared libgcc library for NetWare.
|
||||
|
||||
SHLIB_EXT = .nlm
|
||||
SHLIB_NAME = @shlib_base_name@.nlm
|
||||
SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
|
||||
SHLIB_DEF = $(gcc_srcdir)/config/i386/netware-libgcc.def
|
||||
SHLIB_MAP = $(gcc_srcdir)/config/i386/netware-libgcc.exp
|
||||
SHLIB_SRC = $(gcc_srcdir)/config/i386/netware-libgcc.c
|
||||
|
||||
SHLIB_LINK = set -e; \
|
||||
cat $(SHLIB_DEF) >@shlib_base_name@.def; \
|
||||
echo "name $(SHLIB_NAME)" >>@shlib_base_name@.def; \
|
||||
echo "version $(version)" | sed "s!\.!,!g" >>@shlib_base_name@.def; \
|
||||
touch build; \
|
||||
echo "build $$(expr $$(<build) + 0)" >>@shlib_base_name@.def; \
|
||||
echo "export @$(SHLIB_MAP)" >>@shlib_base_name@.def; \
|
||||
if mpkxdc -n -p @shlib_base_name@.xdc; \
|
||||
then echo "xdcdata @shlib_base_name@.xdc" >>@shlib_base_name@.def; \
|
||||
else echo "WARNING: $(SHLIB_NAME) built without XDC data will not work well." 1>&2; \
|
||||
fi; \
|
||||
$(CC) $(LIBGCC2_CFLAGS) -o $(SHLIB_NAME) \
|
||||
$(SHLIB_SRC) -posix -static-libgcc -lnetware \
|
||||
-Wl,--Map,--map-info,full,--strip-all,--def-file,@shlib_base_name@.def; \
|
||||
rm -f @shlib_base_name@.imp; $(LN_S) $(SHLIB_MAP) @shlib_base_name@.imp; \
|
||||
rm -f libgcc.imp; $(LN_S) @shlib_base_name@.imp libgcc.imp; \
|
||||
expr $$(<build) + 1 >build
|
||||
|
||||
SHLIB_INSTALL = \
|
||||
$(SHELL) $(srcdir)/mkinstalldirs $(slibdir)$(SHLIB_SLIBDIR_QUAL); \
|
||||
$(INSTALL_DATA) $(SHLIB_NAME) $(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_NAME); \
|
||||
$(INSTALL_DATA) @shlib_base_name@.imp $(DESTDIR)$(libsubdir)/
|
@ -1,3 +1,8 @@
|
||||
2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* crossconfig.m4 (*-netware): Remove.
|
||||
* configure: Regenerate.
|
||||
|
||||
2011-07-15 Yufeng Zhang <yufeng.zhang@arm.com>
|
||||
|
||||
* config/locale/newlib/ctype_members.cc: New file.
|
||||
|
149
libstdc++-v3/configure
vendored
149
libstdc++-v3/configure
vendored
@ -57083,155 +57083,6 @@ $as_echo "$ac_ld_relro" >&6; }
|
||||
$as_echo "#define HAVE_ISNANL 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
;;
|
||||
*-netware)
|
||||
SECTION_FLAGS='-ffunction-sections -fdata-sections'
|
||||
|
||||
|
||||
# If we're not using GNU ld, then there's no point in even trying these
|
||||
# tests. Check for that first. We should have already tested for gld
|
||||
# by now (in libtool), but require it now just to be safe...
|
||||
test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
|
||||
test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
|
||||
|
||||
|
||||
|
||||
# The name set by libtool depends on the version of libtool. Shame on us
|
||||
# for depending on an impl detail, but c'est la vie. Older versions used
|
||||
# ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
|
||||
# top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
|
||||
# makes sense). We'll test with_gnu_ld everywhere else, so if that isn't
|
||||
# set (hence we're using an older libtool), then set it.
|
||||
if test x${with_gnu_ld+set} != xset; then
|
||||
if test x${ac_cv_prog_gnu_ld+set} != xset; then
|
||||
# We got through "ac_require(ac_prog_ld)" and still not set? Huh?
|
||||
with_gnu_ld=no
|
||||
else
|
||||
with_gnu_ld=$ac_cv_prog_gnu_ld
|
||||
fi
|
||||
fi
|
||||
|
||||
# Start by getting the version number. I think the libtool test already
|
||||
# does some of this, but throws away the result.
|
||||
glibcxx_ld_is_gold=no
|
||||
if test x"$with_gnu_ld" = x"yes"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
|
||||
$as_echo_n "checking for ld version... " >&6; }
|
||||
|
||||
if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then
|
||||
glibcxx_ld_is_gold=yes
|
||||
fi
|
||||
ldver=`$LD --version 2>/dev/null |
|
||||
sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
|
||||
|
||||
glibcxx_gnu_ld_version=`echo $ldver | \
|
||||
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_gnu_ld_version" >&5
|
||||
$as_echo "$glibcxx_gnu_ld_version" >&6; }
|
||||
fi
|
||||
|
||||
# Set --gc-sections.
|
||||
glibcxx_have_gc_sections=no
|
||||
if test "$glibcxx_ld_is_gold" = "yes"; then
|
||||
if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
|
||||
glibcxx_have_gc_sections=yes
|
||||
fi
|
||||
else
|
||||
glibcxx_gcsections_min_ld=21602
|
||||
if test x"$with_gnu_ld" = x"yes" &&
|
||||
test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then
|
||||
glibcxx_have_gc_sections=yes
|
||||
fi
|
||||
fi
|
||||
if test "$glibcxx_have_gc_sections" = "yes"; then
|
||||
# Sufficiently young GNU ld it is! Joy and bunny rabbits!
|
||||
# NB: This flag only works reliably after 2.16.1. Configure tests
|
||||
# for this are difficult, so hard wire a value that should work.
|
||||
|
||||
ac_test_CFLAGS="${CFLAGS+set}"
|
||||
ac_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS='-Wl,--gc-sections'
|
||||
|
||||
# Check for -Wl,--gc-sections
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5
|
||||
$as_echo_n "checking for ld that supports -Wl,--gc-sections... " >&6; }
|
||||
if test x$gcc_no_link = xyes; then
|
||||
as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
|
||||
fi
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
int one(void) { return 1; }
|
||||
int two(void) { return 2; }
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
two();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
ac_gcsections=yes
|
||||
else
|
||||
ac_gcsections=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
if test "$ac_gcsections" = "yes"; then
|
||||
rm -f conftest.c
|
||||
touch conftest.c
|
||||
if $CC -c conftest.c; then
|
||||
if $LD --gc-sections -o conftest conftest.o 2>&1 | \
|
||||
grep "Warning: gc-sections option ignored" > /dev/null; then
|
||||
ac_gcsections=no
|
||||
fi
|
||||
fi
|
||||
rm -f conftest.c conftest.o conftest
|
||||
fi
|
||||
if test "$ac_gcsections" = "yes"; then
|
||||
SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_gcsections" >&5
|
||||
$as_echo "$ac_gcsections" >&6; }
|
||||
|
||||
if test "$ac_test_CFLAGS" = set; then
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
else
|
||||
# this is the suspicious part
|
||||
CFLAGS=''
|
||||
fi
|
||||
fi
|
||||
|
||||
# Set -z,relro.
|
||||
# Note this is only for shared objects.
|
||||
ac_ld_relro=no
|
||||
if test x"$with_gnu_ld" = x"yes"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,-z,relro" >&5
|
||||
$as_echo_n "checking for ld that supports -Wl,-z,relro... " >&6; }
|
||||
cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"`
|
||||
if test -n "$cxx_z_relo"; then
|
||||
OPT_LDFLAGS="-Wl,-z,relro"
|
||||
ac_ld_relro=yes
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ld_relro" >&5
|
||||
$as_echo "$ac_ld_relro" >&6; }
|
||||
fi
|
||||
|
||||
# Set linker optimization flags.
|
||||
if test x"$with_gnu_ld" = x"yes"; then
|
||||
OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
$as_echo "#define HAVE_HYPOT 1" >>confdefs.h
|
||||
|
||||
$as_echo "#define HAVE_ISINF 1" >>confdefs.h
|
||||
|
||||
$as_echo "#define HAVE_ISNAN 1" >>confdefs.h
|
||||
|
||||
;;
|
||||
*-qnx6.1* | *-qnx6.2*)
|
||||
SECTION_FLAGS='-ffunction-sections -fdata-sections'
|
||||
|
@ -173,14 +173,6 @@ case "${host}" in
|
||||
AC_DEFINE(HAVE_ISNANL)
|
||||
fi
|
||||
;;
|
||||
*-netware)
|
||||
SECTION_FLAGS='-ffunction-sections -fdata-sections'
|
||||
AC_SUBST(SECTION_FLAGS)
|
||||
GLIBCXX_CHECK_LINKER_FEATURES
|
||||
AC_DEFINE(HAVE_HYPOT)
|
||||
AC_DEFINE(HAVE_ISINF)
|
||||
AC_DEFINE(HAVE_ISNAN)
|
||||
;;
|
||||
*-qnx6.1* | *-qnx6.2*)
|
||||
SECTION_FLAGS='-ffunction-sections -fdata-sections'
|
||||
AC_SUBST(SECTION_FLAGS)
|
||||
|
Loading…
x
Reference in New Issue
Block a user