Patchwork Enable #pragma pack with push and pop unconditionally

login
register
mail settings
Submitter Joseph S. Myers
Date Nov. 20, 2010, 1:47 a.m.
Message ID <Pine.LNX.4.64.1011200146400.9350@digraph.polyomino.org.uk>
Download mbox | patch
Permalink /patch/72342/
State New
Headers show

Comments

Joseph S. Myers - Nov. 20, 2010, 1:47 a.m.
As proposed in
<http://gcc.gnu.org/ml/gcc-patches/2010-11/msg01986.html>, this patch
eliminates the target macros HANDLE_SYSV_PRAGMA and
HANDLE_PRAGMA_PACK_PUSH_POP, enabling the relevant features
unconditionally.

The user documentation of #pragma pack makes no mention of it being
conditional on the target, so needs no changes.  The documentation of
the target macros was inaccurate when it claimed #pragma weak support
was conditional on HANDLE_SYSV_PRAGMA; the code was always enabled
(#ifdef on HANDLE_PRAGMA_WEAK, a macro unconditionally #defined in
c-pragma.h), with checks of SUPPORTS_WEAK being done when weak symbols
are actually created.  Some targets thought HANDLE_PRAGMA_WEAK was a
target macro; undefining that, or HANDLE_PRAGMA_PACK, was ineffective
given the order of inclusion of headers.  Similarly,
HANDLE_PRAGMA_VISIBILITY was unconditionally defined and so served no
useful purpose.

Bootstrapped with no regressions on x86_64-unknown-linux-gnu.  Also
tested building cc1 for crosses to: alpha-linux-gnu alpha-dec-osf5.1
alpha-dec-vms arm-netbsdelf cris-elf frv-elf i686-darwin
i686-freebsd8.1 i686-interix3 i686-mingw32 i686-netbsdelf i686-netware
i686-openbsd i686-wrs-vxworks ia64-hpux11.23 m32r-linux-gnu mep-elf
mips-sde-elf mmix-knuth-mmixware hppa64-hpux11.23 powerpc-ibm-aix5.3.0
powerpc-linux-gnu rx-elf score-elf spu-elf xstormy16-elf xtensa-elf
(builds for alpha-dec-osf5.1 and i686-interix3 failed for unrelated
reasons).  OK to commit (the non-front-end parts; I think the removal
of always-true conditionals in the C++ front end counts as obvious)?

2010-11-19  Joseph Myers  <joseph@codesourcery.com>

	* doc/tm.texi.in (HANDLE_SYSV_PRAGMA,
	HANDLE_PRAGMA_PACK_PUSH_POP): Remove.
	(HANDLE_PRAGMA_PACK_WITH_EXPANSION): Don't refer to
	HANDLE_SYSV_PRAGMA.
	* doc/tm.texi: Regenerate.
	* system.h (HANDLE_PRAGMA_PACK_PUSH_POP, HANDLE_SYSV_PRAGMA,
	HANDLE_PRAGMA_WEAK): Poison.
	* config/alpha/elf.h (HANDLE_SYSV_PRAGMA): Don't define.
	* config/alpha/linux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't
	define.
	* config/alpha/osf5.h (HANDLE_SYSV_PRAGMA): Don't define.
	* config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Don't define.
	* config/arm/arm.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
	* config/arm/netbsd.h (HANDLE_SYSV_PRAGMA): Don't define.
	* config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
	* config/darwin.h (HANDLE_SYSV_PRAGMA): Don't define.
	(HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
	* config/elfos.h (HANDLE_SYSV_PRAGMA): Don't define.
	* config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
	* config/frv/frv.h (HANDLE_SYSV_PRAGMA): Don't define.
	* config/i386/cygming.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't
	define.
	* config/i386/djgpp.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
	* config/i386/i386-interix.h (HANDLE_SYSV_PRAGMA): Don't define.
	(HANDLE_PRAGMA_WEAK): Don't undefine.
	* config/i386/netware.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't
	define.
	* config/i386/vxworks.h (HANDLE_SYSV_PRAGMA): Don't define.
	* config/ia64/hpux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
	* config/ia64/ia64.h (HANDLE_SYSV_PRAGMA): Don't define.
	* config/interix.h (HANDLE_SYSV_PRAGMA): Don't define.
	(HANDLE_PRAGMA_WEAK): Don't undefine.
	* config/linux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
	* config/m32r/linux.h (HANDLE_SYSV_PRAGMA): Don't define.
	(HANDLE_PRAGMA_PACK): Don't undefine.
	* config/m32r/m32r.h (HANDLE_SYSV_PRAGMA): Don't undefine.
	* config/mep/mep.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
	* config/mips/elf.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
	* config/mips/sde.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
	* config/mmix/mmix.h (HANDLE_SYSV_PRAGMA): Don't define.
	* config/netbsd.h (HANDLE_SYSV_PRAGMA): Don't define.
	(HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
	* config/openbsd.h (HANDLE_SYSV_PRAGMA): Don't define.
	* config/pa/pa-hpux.h (HANDLE_SYSV_PRAGMA): Don't define.
	(HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
	* config/rs6000/aix.h (HANDLE_SYSV_PRAGMA): Don't define.
	* config/rs6000/sysv4.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't
	define.
	* config/rx/rx.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
	* config/score/elf.h (HANDLE_SYSV_PRAGMA): Don't define.
	* config/spu/spu.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
	* config/stormy16/stormy16.h (HANDLE_SYSV_PRAGMA): Don't define.
	* config/xtensa/elf.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.

c-family:
2010-11-19  Joseph Myers  <joseph@codesourcery.com>

	* c-pragma.c: Remove conditionals on HANDLE_PRAGMA_PACK,
	HANDLE_PRAGMA_PACK_PUSH_POP, HANDLE_PRAGMA_WEAK and
	HANDLE_PRAGMA_VISIBILITY.
	* c-pragma.h (HANDLE_PRAGMA_WEAK, HANDLE_PRAGMA_PACK,
	HANDLE_PRAGMA_VISIBILITY): Don't define.
	(HANDLE_SYSV_PRAGMA, HANDLE_PRAGMA_PACK_PUSH_POP): Don't test.

cp:
2010-11-19  Joseph Myers  <joseph@codesourcery.com>

	* name-lookup.c (handle_namespace_attrs): Don't check
	HANDLE_PRAGMA_VISIBILITY.
	* parser.c (cp_parser_namespace_definition): Don't check
	HANDLE_PRAGMA_VISIBILITY.

testsuite:
2010-11-19  Joseph Myers  <joseph@codesourcery.com>

	* g++.dg/cpp/_Pragma1.C: Test for all non-Solaris targets.
	* gcc.dg/cpp/_Pragma6.c: Test for all non-Solaris targets.
	* gcc.dg/pack-test-1.c: Test for all non-default_packed targets.
	* gcc.dg/pack-test-2.c: Test for all targets.
	* gcc.dg/pragma-align.c: Test for all targets.
	* gcc.dg/pragma-pack-4.c: Do not skip for AVR.
	* gcc.dg/ucnid-10.c: Test for all targets.
Richard Guenther - Nov. 20, 2010, 10:56 a.m.
On Sat, Nov 20, 2010 at 2:47 AM, Joseph S. Myers
<joseph@codesourcery.com> wrote:
> As proposed in
> <http://gcc.gnu.org/ml/gcc-patches/2010-11/msg01986.html>, this patch
> eliminates the target macros HANDLE_SYSV_PRAGMA and
> HANDLE_PRAGMA_PACK_PUSH_POP, enabling the relevant features
> unconditionally.
>
> The user documentation of #pragma pack makes no mention of it being
> conditional on the target, so needs no changes.  The documentation of
> the target macros was inaccurate when it claimed #pragma weak support
> was conditional on HANDLE_SYSV_PRAGMA; the code was always enabled
> (#ifdef on HANDLE_PRAGMA_WEAK, a macro unconditionally #defined in
> c-pragma.h), with checks of SUPPORTS_WEAK being done when weak symbols
> are actually created.  Some targets thought HANDLE_PRAGMA_WEAK was a
> target macro; undefining that, or HANDLE_PRAGMA_PACK, was ineffective
> given the order of inclusion of headers.  Similarly,
> HANDLE_PRAGMA_VISIBILITY was unconditionally defined and so served no
> useful purpose.
>
> Bootstrapped with no regressions on x86_64-unknown-linux-gnu.  Also
> tested building cc1 for crosses to: alpha-linux-gnu alpha-dec-osf5.1
> alpha-dec-vms arm-netbsdelf cris-elf frv-elf i686-darwin
> i686-freebsd8.1 i686-interix3 i686-mingw32 i686-netbsdelf i686-netware
> i686-openbsd i686-wrs-vxworks ia64-hpux11.23 m32r-linux-gnu mep-elf
> mips-sde-elf mmix-knuth-mmixware hppa64-hpux11.23 powerpc-ibm-aix5.3.0
> powerpc-linux-gnu rx-elf score-elf spu-elf xstormy16-elf xtensa-elf
> (builds for alpha-dec-osf5.1 and i686-interix3 failed for unrelated
> reasons).  OK to commit (the non-front-end parts; I think the removal
> of always-true conditionals in the C++ front end counts as obvious)?

Ok.

Thanks,
Richard.

> 2010-11-19  Joseph Myers  <joseph@codesourcery.com>
>
>        * doc/tm.texi.in (HANDLE_SYSV_PRAGMA,
>        HANDLE_PRAGMA_PACK_PUSH_POP): Remove.
>        (HANDLE_PRAGMA_PACK_WITH_EXPANSION): Don't refer to
>        HANDLE_SYSV_PRAGMA.
>        * doc/tm.texi: Regenerate.
>        * system.h (HANDLE_PRAGMA_PACK_PUSH_POP, HANDLE_SYSV_PRAGMA,
>        HANDLE_PRAGMA_WEAK): Poison.
>        * config/alpha/elf.h (HANDLE_SYSV_PRAGMA): Don't define.
>        * config/alpha/linux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't
>        define.
>        * config/alpha/osf5.h (HANDLE_SYSV_PRAGMA): Don't define.
>        * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Don't define.
>        * config/arm/arm.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
>        * config/arm/netbsd.h (HANDLE_SYSV_PRAGMA): Don't define.
>        * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
>        * config/darwin.h (HANDLE_SYSV_PRAGMA): Don't define.
>        (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
>        * config/elfos.h (HANDLE_SYSV_PRAGMA): Don't define.
>        * config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
>        * config/frv/frv.h (HANDLE_SYSV_PRAGMA): Don't define.
>        * config/i386/cygming.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't
>        define.
>        * config/i386/djgpp.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
>        * config/i386/i386-interix.h (HANDLE_SYSV_PRAGMA): Don't define.
>        (HANDLE_PRAGMA_WEAK): Don't undefine.
>        * config/i386/netware.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't
>        define.
>        * config/i386/vxworks.h (HANDLE_SYSV_PRAGMA): Don't define.
>        * config/ia64/hpux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
>        * config/ia64/ia64.h (HANDLE_SYSV_PRAGMA): Don't define.
>        * config/interix.h (HANDLE_SYSV_PRAGMA): Don't define.
>        (HANDLE_PRAGMA_WEAK): Don't undefine.
>        * config/linux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
>        * config/m32r/linux.h (HANDLE_SYSV_PRAGMA): Don't define.
>        (HANDLE_PRAGMA_PACK): Don't undefine.
>        * config/m32r/m32r.h (HANDLE_SYSV_PRAGMA): Don't undefine.
>        * config/mep/mep.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
>        * config/mips/elf.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
>        * config/mips/sde.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
>        * config/mmix/mmix.h (HANDLE_SYSV_PRAGMA): Don't define.
>        * config/netbsd.h (HANDLE_SYSV_PRAGMA): Don't define.
>        (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
>        * config/openbsd.h (HANDLE_SYSV_PRAGMA): Don't define.
>        * config/pa/pa-hpux.h (HANDLE_SYSV_PRAGMA): Don't define.
>        (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
>        * config/rs6000/aix.h (HANDLE_SYSV_PRAGMA): Don't define.
>        * config/rs6000/sysv4.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't
>        define.
>        * config/rx/rx.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
>        * config/score/elf.h (HANDLE_SYSV_PRAGMA): Don't define.
>        * config/spu/spu.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
>        * config/stormy16/stormy16.h (HANDLE_SYSV_PRAGMA): Don't define.
>        * config/xtensa/elf.h (HANDLE_PRAGMA_PACK_PUSH_POP): Don't define.
>
> c-family:
> 2010-11-19  Joseph Myers  <joseph@codesourcery.com>
>
>        * c-pragma.c: Remove conditionals on HANDLE_PRAGMA_PACK,
>        HANDLE_PRAGMA_PACK_PUSH_POP, HANDLE_PRAGMA_WEAK and
>        HANDLE_PRAGMA_VISIBILITY.
>        * c-pragma.h (HANDLE_PRAGMA_WEAK, HANDLE_PRAGMA_PACK,
>        HANDLE_PRAGMA_VISIBILITY): Don't define.
>        (HANDLE_SYSV_PRAGMA, HANDLE_PRAGMA_PACK_PUSH_POP): Don't test.
>
> cp:
> 2010-11-19  Joseph Myers  <joseph@codesourcery.com>
>
>        * name-lookup.c (handle_namespace_attrs): Don't check
>        HANDLE_PRAGMA_VISIBILITY.
>        * parser.c (cp_parser_namespace_definition): Don't check
>        HANDLE_PRAGMA_VISIBILITY.
>
> testsuite:
> 2010-11-19  Joseph Myers  <joseph@codesourcery.com>
>
>        * g++.dg/cpp/_Pragma1.C: Test for all non-Solaris targets.
>        * gcc.dg/cpp/_Pragma6.c: Test for all non-Solaris targets.
>        * gcc.dg/pack-test-1.c: Test for all non-default_packed targets.
>        * gcc.dg/pack-test-2.c: Test for all targets.
>        * gcc.dg/pragma-align.c: Test for all targets.
>        * gcc.dg/pragma-pack-4.c: Do not skip for AVR.
>        * gcc.dg/ucnid-10.c: Test for all targets.
>
> Index: gcc/doc/tm.texi
> ===================================================================
> --- gcc/doc/tm.texi     (revision 166951)
> +++ gcc/doc/tm.texi     (working copy)
> @@ -10666,55 +10666,8 @@ rule to the makefile fragment pointed to
>  how to build this object file.
>  @end deftypefun
>
> -@findex #pragma
> -@findex pragma
> -@defmac HANDLE_SYSV_PRAGMA
> -Define this macro (to a value of 1) if you want the System V style
> -pragmas @samp{#pragma pack(<n>)} and @samp{#pragma weak <name>
> -[=<value>]} to be supported by gcc.
> -
> -The pack pragma specifies the maximum alignment (in bytes) of fields
> -within a structure, in much the same way as the @samp{__aligned__} and
> -@samp{__packed__} @code{__attribute__}s do.  A pack value of zero resets
> -the behavior to the default.
> -
> -A subtlety for Microsoft Visual C/C++ style bit-field packing
> -(e.g.@: -mms-bitfields) for targets that support it:
> -When a bit-field is inserted into a packed record, the whole size
> -of the underlying type is used by one or more same-size adjacent
> -bit-fields (that is, if its long:3, 32 bits is used in the record,
> -and any additional adjacent long bit-fields are packed into the same
> -chunk of 32 bits.  However, if the size changes, a new field of that
> -size is allocated).
> -
> -If both MS bit-fields and @samp{__attribute__((packed))} are used,
> -the latter will take precedence.  If @samp{__attribute__((packed))} is
> -used on a single field when MS bit-fields are in use, it will take
> -precedence for that field, but the alignment of the rest of the structure
> -may affect its placement.
> -
> -The weak pragma only works if @code{SUPPORTS_WEAK} and
> -@code{ASM_WEAKEN_LABEL} are defined.  If enabled it allows the creation
> -of specifically named weak labels, optionally with a value.
> -@end defmac
> -
> -@findex #pragma
> -@findex pragma
> -@defmac HANDLE_PRAGMA_PACK_PUSH_POP
> -Define this macro (to a value of 1) if you want to support the Win32
> -style pragmas @samp{#pragma pack(push[,@var{n}])} and @samp{#pragma
> -pack(pop)}.  The @samp{pack(push,[@var{n}])} pragma specifies the maximum
> -alignment (in bytes) of fields within a structure, in much the same way as
> -the @samp{__aligned__} and @samp{__packed__} @code{__attribute__}s do.  A
> -pack value of zero resets the behavior to the default.  Successive
> -invocations of this pragma cause the previous values to be stacked, so
> -that invocations of @samp{#pragma pack(pop)} will return to the previous
> -value.
> -@end defmac
> -
>  @defmac HANDLE_PRAGMA_PACK_WITH_EXPANSION
> -Define this macro, as well as
> -@code{HANDLE_SYSV_PRAGMA}, if macros should be expanded in the
> +Define this macro if macros should be expanded in the
>  arguments of @samp{#pragma pack}.
>  @end defmac
>
> Index: gcc/doc/tm.texi.in
> ===================================================================
> --- gcc/doc/tm.texi.in  (revision 166951)
> +++ gcc/doc/tm.texi.in  (working copy)
> @@ -10628,55 +10628,8 @@ rule to the makefile fragment pointed to
>  how to build this object file.
>  @end deftypefun
>
> -@findex #pragma
> -@findex pragma
> -@defmac HANDLE_SYSV_PRAGMA
> -Define this macro (to a value of 1) if you want the System V style
> -pragmas @samp{#pragma pack(<n>)} and @samp{#pragma weak <name>
> -[=<value>]} to be supported by gcc.
> -
> -The pack pragma specifies the maximum alignment (in bytes) of fields
> -within a structure, in much the same way as the @samp{__aligned__} and
> -@samp{__packed__} @code{__attribute__}s do.  A pack value of zero resets
> -the behavior to the default.
> -
> -A subtlety for Microsoft Visual C/C++ style bit-field packing
> -(e.g.@: -mms-bitfields) for targets that support it:
> -When a bit-field is inserted into a packed record, the whole size
> -of the underlying type is used by one or more same-size adjacent
> -bit-fields (that is, if its long:3, 32 bits is used in the record,
> -and any additional adjacent long bit-fields are packed into the same
> -chunk of 32 bits.  However, if the size changes, a new field of that
> -size is allocated).
> -
> -If both MS bit-fields and @samp{__attribute__((packed))} are used,
> -the latter will take precedence.  If @samp{__attribute__((packed))} is
> -used on a single field when MS bit-fields are in use, it will take
> -precedence for that field, but the alignment of the rest of the structure
> -may affect its placement.
> -
> -The weak pragma only works if @code{SUPPORTS_WEAK} and
> -@code{ASM_WEAKEN_LABEL} are defined.  If enabled it allows the creation
> -of specifically named weak labels, optionally with a value.
> -@end defmac
> -
> -@findex #pragma
> -@findex pragma
> -@defmac HANDLE_PRAGMA_PACK_PUSH_POP
> -Define this macro (to a value of 1) if you want to support the Win32
> -style pragmas @samp{#pragma pack(push[,@var{n}])} and @samp{#pragma
> -pack(pop)}.  The @samp{pack(push,[@var{n}])} pragma specifies the maximum
> -alignment (in bytes) of fields within a structure, in much the same way as
> -the @samp{__aligned__} and @samp{__packed__} @code{__attribute__}s do.  A
> -pack value of zero resets the behavior to the default.  Successive
> -invocations of this pragma cause the previous values to be stacked, so
> -that invocations of @samp{#pragma pack(pop)} will return to the previous
> -value.
> -@end defmac
> -
>  @defmac HANDLE_PRAGMA_PACK_WITH_EXPANSION
> -Define this macro, as well as
> -@code{HANDLE_SYSV_PRAGMA}, if macros should be expanded in the
> +Define this macro if macros should be expanded in the
>  arguments of @samp{#pragma pack}.
>  @end defmac
>
> Index: gcc/c-family/c-pragma.c
> ===================================================================
> --- gcc/c-family/c-pragma.c     (revision 166951)
> +++ gcc/c-family/c-pragma.c     (working copy)
> @@ -54,10 +54,8 @@ typedef struct GTY(()) align_stack {
>
>  static GTY(()) struct align_stack * alignment_stack;
>
> -#ifdef HANDLE_PRAGMA_PACK
>  static void handle_pragma_pack (cpp_reader *);
>
> -#ifdef HANDLE_PRAGMA_PACK_PUSH_POP
>  /* If we have a "global" #pragma pack(<n>) in effect when the first
>    #pragma pack(push,<n>) is encountered, this stores the value of
>    maximum_field_alignment in effect.  When the final pop_alignment()
> @@ -125,13 +123,6 @@ pop_alignment (tree id)
>
>   alignment_stack = entry;
>  }
> -#else  /* not HANDLE_PRAGMA_PACK_PUSH_POP */
> -#define SET_GLOBAL_ALIGNMENT(ALIGN) (maximum_field_alignment = (ALIGN))
> -#define push_alignment(ID, N) \
> -    GCC_BAD ("#pragma pack(push[, id], <n>) is not supported on this target")
> -#define pop_alignment(ID) \
> -    GCC_BAD ("#pragma pack(pop[, id], <n>) is not supported on this target")
> -#endif /* HANDLE_PRAGMA_PACK_PUSH_POP */
>
>  /* #pragma pack ()
>    #pragma pack (N)
> @@ -244,7 +235,6 @@ handle_pragma_pack (cpp_reader * ARG_UNU
>     case pop:   pop_alignment (id);           break;
>     }
>  }
> -#endif  /* HANDLE_PRAGMA_PACK */
>
>  typedef struct GTY(()) pending_weak_d
>  {
> @@ -257,7 +247,6 @@ DEF_VEC_ALLOC_O(pending_weak,gc);
>
>  static GTY(()) VEC(pending_weak,gc) *pending_weaks;
>
> -#ifdef HANDLE_PRAGMA_WEAK
>  static void apply_pragma_weak (tree, tree);
>  static void handle_pragma_weak (cpp_reader *);
>
> @@ -380,17 +369,6 @@ handle_pragma_weak (cpp_reader * ARG_UNU
>       pe->value = value;
>     }
>  }
> -#else
> -void
> -maybe_apply_pragma_weak (tree ARG_UNUSED (decl))
> -{
> -}
> -
> -void
> -maybe_apply_pending_pragma_weaks (void)
> -{
> -}
> -#endif /* HANDLE_PRAGMA_WEAK */
>
>  /* GCC supports two #pragma directives for renaming the external
>    symbol associated with a declaration (DECL_ASSEMBLER_NAME), for
> @@ -617,7 +595,6 @@ maybe_apply_renaming_pragma (tree decl,
>  }
>
>
> -#ifdef HANDLE_PRAGMA_VISIBILITY
>  static void handle_pragma_visibility (cpp_reader *);
>
>  static VEC (int, heap) *visstack;
> @@ -710,8 +687,6 @@ handle_pragma_visibility (cpp_reader *du
>     warning (OPT_Wpragmas, "junk at end of %<#pragma GCC visibility%>");
>  }
>
> -#endif
> -
>  static void
>  handle_pragma_diagnostic(cpp_reader *ARG_UNUSED(dummy))
>  {
> @@ -1316,19 +1291,13 @@ init_pragma (void)
>     cpp_register_deferred_pragma (parse_in, "GCC", "pch_preprocess",
>                                  PRAGMA_GCC_PCH_PREPROCESS, false, false);
>
> -#ifdef HANDLE_PRAGMA_PACK
>  #ifdef HANDLE_PRAGMA_PACK_WITH_EXPANSION
>   c_register_pragma_with_expansion (0, "pack", handle_pragma_pack);
>  #else
>   c_register_pragma (0, "pack", handle_pragma_pack);
>  #endif
> -#endif
> -#ifdef HANDLE_PRAGMA_WEAK
>   c_register_pragma (0, "weak", handle_pragma_weak);
> -#endif
> -#ifdef HANDLE_PRAGMA_VISIBILITY
>   c_register_pragma ("GCC", "visibility", handle_pragma_visibility);
> -#endif
>
>   c_register_pragma ("GCC", "diagnostic", handle_pragma_diagnostic);
>   c_register_pragma ("GCC", "target", handle_pragma_target);
> Index: gcc/c-family/c-pragma.h
> ===================================================================
> --- gcc/c-family/c-pragma.h     (revision 166951)
> +++ gcc/c-family/c-pragma.h     (working copy)
> @@ -1,6 +1,6 @@
>  /* Pragma related interfaces.
>    Copyright (C) 1995, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
> -   2007, 2008  Free Software Foundation, Inc.
> +   2007, 2008, 2009, 2010  Free Software Foundation, Inc.
>
>  This file is part of GCC.
>
> @@ -75,26 +75,9 @@ typedef enum pragma_omp_clause {
>
>  extern struct cpp_reader* parse_in;
>
> -#define HANDLE_PRAGMA_WEAK SUPPORTS_WEAK
> -
> -#ifdef HANDLE_SYSV_PRAGMA
> -/* We always support #pragma pack for SYSV pragmas.  */
> -#ifndef HANDLE_PRAGMA_PACK
> -#define HANDLE_PRAGMA_PACK 1
> -#endif
> -#endif /* HANDLE_SYSV_PRAGMA */
> -
> -
> -#ifdef HANDLE_PRAGMA_PACK_PUSH_POP
> -/* If we are supporting #pragma pack(push... then we automatically
> -   support #pragma pack(<n>)  */
> -#define HANDLE_PRAGMA_PACK 1
> -#endif /* HANDLE_PRAGMA_PACK_PUSH_POP */
> -
>  /* It's safe to always leave visibility pragma enabled as if
>    visibility is not supported on the host OS platform the
>    statements are ignored.  */
> -#define HANDLE_PRAGMA_VISIBILITY 1
>  extern void push_visibility (const char *, int);
>  extern bool pop_visibility (int);
>
> Index: gcc/testsuite/gcc.dg/pragma-align.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/pragma-align.c (revision 166951)
> +++ gcc/testsuite/gcc.dg/pragma-align.c (working copy)
> @@ -1,6 +1,6 @@
> -/* Prove that HANDLE_SYSTEMV_PRAGMA alignment handling works somewhat. */
> +/* Prove that pragma alignment handling works somewhat. */
>
> -/* { dg-do run { target i?86-*-linux* x86_64-*-linux* i?86-*-*bsd* *-*-solaris2.* } } */
> +/* { dg-do run } */
>
>  extern void abort (void);
>
> Index: gcc/testsuite/gcc.dg/cpp/_Pragma6.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/cpp/_Pragma6.c (revision 166951)
> +++ gcc/testsuite/gcc.dg/cpp/_Pragma6.c (working copy)
> @@ -1,8 +1,7 @@
>  /* PR c/27747 */
>  /* This is supposed to succeed only if
> -   the target defines HANDLE_PRAGMA_PACK_PUSH_POP
> -   and doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION.  */
> -/* { dg-do compile { target { ! { powerpc-ibm-aix* *-*-solaris2* fido-*-* m68k-*-* sh*-[us]*-elf m32c-*-* *-*-vxworks moxie-*-* mips-sgi-irix* alpha*-dec-osf* } } } } */
> +   the target doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION.  */
> +/* { dg-do compile { target { ! { *-*-solaris2* } } } } */
>
>  #define push bar
>  #define foo _Pragma ("pack(push)")
> Index: gcc/testsuite/gcc.dg/pack-test-1.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/pack-test-1.c  (revision 166951)
> +++ gcc/testsuite/gcc.dg/pack-test-1.c  (working copy)
> @@ -1,7 +1,7 @@
>  /* Test semantics of #pragma pack.
>    Contributed by Mike Coleman <mcoleman2@kc.rr.com> */
>
> -/* { dg-do compile { target { { *-*-linux* *-*-cygwin* powerpc*-*-eabi* } && { ! default_packed } } } } */
> +/* { dg-do compile { target { ! default_packed } } } */
>
>  /* Mainly we're just testing whether pushing and popping seem to be
>    working correctly, and verifying the (alignment == 1) case, which
> Index: gcc/testsuite/gcc.dg/pack-test-2.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/pack-test-2.c  (revision 166951)
> +++ gcc/testsuite/gcc.dg/pack-test-2.c  (working copy)
> @@ -1,7 +1,7 @@
>  /* Tests for syntax checking of #pragma pack.
>    Contributed by Mike Coleman <mcoleman2@kc.rr.com> */
>
> -/* { dg-do compile { target *-*-linux* *-*-cygwin* powerpc*-*-eabi* } } */
> +/* { dg-do compile } */
>
>  #pragma pack(pop)               /* { dg-warning "without matching" } */
>
> Index: gcc/testsuite/gcc.dg/ucnid-10.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/ucnid-10.c     (revision 166951)
> +++ gcc/testsuite/gcc.dg/ucnid-10.c     (working copy)
> @@ -1,6 +1,6 @@
>  /* Verify diagnostics for extended identifiers refer to UCNs (in the C
>    locale).  Test #pragma pack diagnostics.  */
> -/* { dg-do compile { target *-*-linux* *-*-cygwin* powerpc*-*-eabi* } } */
> +/* { dg-do compile } */
>  /* { dg-options "-std=gnu99 -fextended-identifiers" } */
>
>  #pragma pack(push)
> Index: gcc/testsuite/gcc.dg/pragma-pack-4.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/pragma-pack-4.c        (revision 166951)
> +++ gcc/testsuite/gcc.dg/pragma-pack-4.c        (working copy)
> @@ -1,6 +1,5 @@
>  /* PR c/28286 */
>  /* { dg-do compile } */
> -/* { dg-skip-if "no Pragma pack" { "avr-*-*" } { "*" } { "" } } */
>
>
>  #pragma pack(0.5)         /* { dg-warning "invalid constant" } */
> Index: gcc/testsuite/g++.dg/cpp/_Pragma1.C
> ===================================================================
> --- gcc/testsuite/g++.dg/cpp/_Pragma1.C (revision 166951)
> +++ gcc/testsuite/g++.dg/cpp/_Pragma1.C (working copy)
> @@ -1,8 +1,7 @@
>  // PR c++/27748
>  // This is supposed to succeed only if
> -// the target defines HANDLE_PRAGMA_PACK_PUSH_POP
> -// and doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION.
> -// { dg-do compile { target { ! { powerpc-ibm-aix* *-*-solaris2* fido-*-* m68k-*-* mips-sgi-irix* sh*-[us]*-elf m32c-*-* *-*-vxworks alpha*-dec-osf* } } } }
> +// the target doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION.
> +// { dg-do compile { target { ! { *-*-solaris2* } } } }
>
>  #define push bar
>  #define foo _Pragma ("pack(push)")
> Index: gcc/cp/parser.c
> ===================================================================
> --- gcc/cp/parser.c     (revision 166951)
> +++ gcc/cp/parser.c     (working copy)
> @@ -13828,10 +13828,8 @@ cp_parser_namespace_definition (cp_parse
>   /* Parse the body of the namespace.  */
>   cp_parser_namespace_body (parser);
>
> -#ifdef HANDLE_PRAGMA_VISIBILITY
>   if (has_visibility)
>     pop_visibility (1);
> -#endif
>
>   /* Finish the namespace.  */
>   pop_namespace ();
> Index: gcc/cp/name-lookup.c
> ===================================================================
> --- gcc/cp/name-lookup.c        (revision 166951)
> +++ gcc/cp/name-lookup.c        (working copy)
> @@ -3239,7 +3239,6 @@ handle_namespace_attrs (tree ns, tree at
>       tree name = TREE_PURPOSE (d);
>       tree args = TREE_VALUE (d);
>
> -#ifdef HANDLE_PRAGMA_VISIBILITY
>       if (is_attribute_p ("visibility", name))
>        {
>          tree x = args ? TREE_VALUE (args) : NULL_TREE;
> @@ -3260,7 +3259,6 @@ handle_namespace_attrs (tree ns, tree at
>          saw_vis = true;
>        }
>       else
> -#endif
>        {
>          warning (OPT_Wattributes, "%qD attribute directive ignored",
>                   name);
> Index: gcc/system.h
> ===================================================================
> --- gcc/system.h        (revision 166951)
> +++ gcc/system.h        (working copy)
> @@ -777,7 +777,8 @@ extern void fancy_abort (const char *, i
>        ORDER_REGS_FOR_LOCAL_ALLOC FUNCTION_OUTGOING_VALUE                 \
>        ASM_DECLARE_CONSTANT_NAME MODIFY_TARGET_NAME SWITCHES_NEED_SPACES  \
>        SWITCH_CURTAILS_COMPILATION SWITCH_TAKES_ARG WORD_SWITCH_TAKES_ARG \
> -       TARGET_OPTION_TRANSLATE_TABLE
> +       TARGET_OPTION_TRANSLATE_TABLE HANDLE_PRAGMA_PACK_PUSH_POP          \
> +       HANDLE_SYSV_PRAGMA HANDLE_PRAGMA_WEAK
>
>  /* Hooks that are no longer used.  */
>  #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE  \
> Index: gcc/config/alpha/linux.h
> ===================================================================
> --- gcc/config/alpha/linux.h    (revision 166951)
> +++ gcc/config/alpha/linux.h    (working copy)
> @@ -1,7 +1,7 @@
>  /* Definitions of target machine for GNU compiler,
>    for Alpha Linux-based GNU systems.
> -   Copyright (C) 1996, 1997, 1998, 2002, 2003, 2004, 2005, 2006, 2007
> -   Free Software Foundation, Inc.
> +   Copyright (C) 1996, 1997, 1998, 2002, 2003, 2004, 2005, 2006, 2007, 2009,
> +   2010 Free Software Foundation, Inc.
>    Contributed by Richard Henderson.
>
>  This file is part of GCC.
> @@ -61,9 +61,6 @@ along with GCC; see the file COPYING3.
>  #undef WCHAR_TYPE
>  #define WCHAR_TYPE "int"
>
> -/* Define this so that all GNU/Linux targets handle the same pragmas.  */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP
> -
>  #define OPTION_GLIBC  (linux_libc == LIBC_GLIBC)
>
>  /* Determine whether the entire c99 runtime is present in the
> Index: gcc/config/alpha/vms.h
> ===================================================================
> --- gcc/config/alpha/vms.h      (revision 166951)
> +++ gcc/config/alpha/vms.h      (working copy)
> @@ -69,8 +69,6 @@ along with GCC; see the file COPYING3.
>  #define POINTER_SIZE 32
>  #define POINTERS_EXTEND_UNSIGNED 0
>
> -#define HANDLE_SYSV_PRAGMA 1
> -
>  #define MAX_OFILE_ALIGNMENT 524288  /* 8 x 2^16 by DEC Ada Test CD40VRA */
>
>  /* The maximum alignment 'malloc' honors.  */
> Index: gcc/config/alpha/elf.h
> ===================================================================
> --- gcc/config/alpha/elf.h      (revision 166951)
> +++ gcc/config/alpha/elf.h      (working copy)
> @@ -400,9 +400,6 @@ do {                                                                        \
>   "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
>    %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
>
> -/* We support #pragma.  */
> -#define HANDLE_SYSV_PRAGMA 1
> -
>  /* Select a format to encode pointers in exception handling data.  CODE
>    is 0 for data, 1 for code labels, 2 for function pointers.  GLOBAL is
>    true if the symbol may be affected by dynamic relocations.
> Index: gcc/config/alpha/osf5.h
> ===================================================================
> --- gcc/config/alpha/osf5.h     (revision 166951)
> +++ gcc/config/alpha/osf5.h     (working copy)
> @@ -268,9 +268,6 @@ __enable_execute_stack (void *addr)
>  #define TARGET_ASM_OPEN_PAREN ""
>  #define TARGET_ASM_CLOSE_PAREN ""
>
> -/* Handle #pragma weak and #pragma pack.  */
> -#define HANDLE_SYSV_PRAGMA 1
> -
>  /* Handle #pragma extern_prefix.  */
>  #define TARGET_HANDLE_PRAGMA_EXTERN_PREFIX 1
>
> Index: gcc/config/linux.h
> ===================================================================
> --- gcc/config/linux.h  (revision 166951)
> +++ gcc/config/linux.h  (working copy)
> @@ -102,9 +102,6 @@ see the files COPYING3 and COPYING.RUNTI
>  #define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
>  #endif
>
> -/* Define this so we can compile MS code for use with WINE.  */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP
> -
>  #undef LINK_GCC_C_SEQUENCE_SPEC
>  #define LINK_GCC_C_SEQUENCE_SPEC \
>   "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
> Index: gcc/config/frv/frv.h
> ===================================================================
> --- gcc/config/frv/frv.h        (revision 166951)
> +++ gcc/config/frv/frv.h        (working copy)
> @@ -2306,13 +2306,6 @@ fprintf (STREAM, "\t.word .L%d\n", VALUE
>    `QImode'.  */
>  #define FUNCTION_MODE QImode
>
> -/* Define this macro to handle System V style pragmas: #pragma pack and
> -   #pragma weak.  Note, #pragma weak will only be supported if SUPPORT_WEAK is
> -   defined.
> -
> -   Defined in svr4.h.  */
> -#define HANDLE_SYSV_PRAGMA 1
> -
>  /* A C expression for the maximum number of instructions to execute via
>    conditional execution instructions instead of a branch.  A value of
>    BRANCH_COST+1 is the default if the machine does not use
> Index: gcc/config/elfos.h
> ===================================================================
> --- gcc/config/elfos.h  (revision 166951)
> +++ gcc/config/elfos.h  (working copy)
> @@ -65,10 +65,6 @@ see the files COPYING3 and COPYING.RUNTI
>  #define PCC_BITFIELD_TYPE_MATTERS 1
>  #endif
>
> -/* Handle #pragma weak and #pragma pack.  */
> -
> -#define HANDLE_SYSV_PRAGMA 1
> -
>  /* All ELF targets can support DWARF-2.  */
>
>  #define DWARF2_DEBUGGING_INFO 1
> Index: gcc/config/spu/spu.h
> ===================================================================
> --- gcc/config/spu/spu.h        (revision 166951)
> +++ gcc/config/spu/spu.h        (working copy)
> @@ -512,8 +512,6 @@ targetm.resolve_overloaded_builtin = spu
>
>  #define NO_IMPLICIT_EXTERN_C 1
>
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
>  /* Canonicalize a comparison from one we don't have to one we do have.  */
>  #define CANONICALIZE_COMPARISON(CODE,OP0,OP1) \
>   do {                                                                    \
> Index: gcc/config/interix.h
> ===================================================================
> --- gcc/config/interix.h        (revision 166951)
> +++ gcc/config/interix.h        (working copy)
> @@ -61,9 +61,6 @@ for windows/multi thread */
>
>  #define STDC_0_IN_SYSTEM_HEADERS 1
>
> -#define HANDLE_SYSV_PRAGMA 1
> -#undef HANDLE_PRAGMA_WEAK  /* until the link format can handle it */
> -
>  /* Names to predefine in the preprocessor for this target machine.  */
>
>  #define DBX_DEBUGGING_INFO 1
> Index: gcc/config/mep/mep.h
> ===================================================================
> --- gcc/config/mep/mep.h        (revision 166951)
> +++ gcc/config/mep/mep.h        (working copy)
> @@ -804,8 +804,6 @@ typedef struct
>
>  #define REGISTER_TARGET_PRAGMAS()       mep_register_pragmas ()
>
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
>  /* If defined, a C expression to determine the base term of address X.
>    This macro is used in only one place: `find_base_term' in alias.c.
>
> Index: gcc/config/m32r/linux.h
> ===================================================================
> --- gcc/config/m32r/linux.h     (revision 166951)
> +++ gcc/config/m32r/linux.h     (working copy)
> @@ -1,5 +1,5 @@
>  /* Definitions for Renesas M32R running Linux-based GNU systems using ELF.
> -   Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
> +   Copyright (C) 2003, 2004, 2006, 2007, 2010 Free Software Foundation, Inc.
>
>    This file is part of GCC.
>
> @@ -23,10 +23,6 @@
>    supposed to be outputting something that will assemble under SVr4.
>    This gets us pretty close.  */
>
> -#define HANDLE_SYSV_PRAGMA
> -
> -#undef  HANDLE_PRAGMA_PACK
> -
>  #undef  TARGET_VERSION
>  #define TARGET_VERSION fprintf (stderr, " (M32R GNU/Linux with ELF)");
>
> Index: gcc/config/m32r/m32r.h
> ===================================================================
> --- gcc/config/m32r/m32r.h      (revision 166951)
> +++ gcc/config/m32r/m32r.h      (working copy)
> @@ -22,7 +22,6 @@
>  - longlong.h?
>  */
>
> -#undef HANDLE_SYSV_PRAGMA
>  #undef SIZE_TYPE
>  #undef PTRDIFF_TYPE
>  #undef WCHAR_TYPE
> Index: gcc/config/i386/cygming.h
> ===================================================================
> --- gcc/config/i386/cygming.h   (revision 166951)
> +++ gcc/config/i386/cygming.h   (working copy)
> @@ -178,9 +178,6 @@ along with GCC; see the file COPYING3.
>  #undef LONG_TYPE_SIZE
>  #define LONG_TYPE_SIZE 32
>
> -/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop).  */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
>  union tree_node;
>  #define TREE union tree_node *
>
> Index: gcc/config/i386/djgpp.h
> ===================================================================
> --- gcc/config/i386/djgpp.h     (revision 166951)
> +++ gcc/config/i386/djgpp.h     (working copy)
> @@ -24,11 +24,6 @@ along with GCC; see the file COPYING3.
>  /* Don't assume anything about the header files.  */
>  #define NO_IMPLICIT_EXTERN_C
>
> -#define HANDLE_SYSV_PRAGMA 1
> -
> -/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop).  */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
>  /* If defined, a C expression whose value is a string containing the
>    assembler operation to identify the following data as
>    uninitialized global data.  If not defined, and neither
> Index: gcc/config/i386/netware.h
> ===================================================================
> --- gcc/config/i386/netware.h   (revision 166951)
> +++ gcc/config/i386/netware.h   (working copy)
> @@ -1,6 +1,7 @@
>  /* Core target definitions for GCC for Intel 80x86 running Netware.
>    and using dwarf for the debugging format.
> -   Copyright (C) 1993, 1994, 2004, 2007, 2008 Free Software Foundation, Inc.
> +   Copyright (C) 1993, 1994, 2004, 2007, 2008, 2009, 2010
> +   Free Software Foundation, Inc.
>
>    Written by David V. Henkel-Wallace (gumby@cygnus.com)
>
> @@ -104,9 +105,6 @@ do {                                                                        \
>  #undef DBX_REGISTER_NUMBER
>  #define DBX_REGISTER_NUMBER(n) (svr4_dbx_register_map[n])
>
> -/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop).  */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP
> -
>  /* Default structure packing is 1-byte. */
>  #define TARGET_DEFAULT_PACK_STRUCT 1
>
> Index: gcc/config/i386/i386-interix.h
> ===================================================================
> --- gcc/config/i386/i386-interix.h      (revision 166951)
> +++ gcc/config/i386/i386-interix.h      (working copy)
> @@ -1,6 +1,6 @@
>  /* Target definitions for GCC for Intel 80386 running Interix
> -   Parts Copyright (C) 1991, 1999, 2000, 2002, 2003, 2004, 2007, 2008
> -   Free Software Foundation, Inc.
> +   Parts Copyright (C) 1991, 1999, 2000, 2002, 2003, 2004, 2007, 2008, 2009,
> +   2010 Free Software Foundation, Inc.
>
>    Parts:
>      by Douglas B. Rupp (drupp@cs.washington.edu).
> @@ -30,9 +30,6 @@ along with GCC; see the file COPYING3.
>  #define SDB_DEBUGGING_INFO 1
>  #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
>
> -#define HANDLE_SYSV_PRAGMA 1
> -#undef HANDLE_PRAGMA_WEAK  /* until the link format can handle it */
> -
>  /* By default, target has a 80387, uses IEEE compatible arithmetic,
>    and returns float values in the 387 and needs stack probes
>    We also align doubles to 64-bits for MSVC default compatibility
> Index: gcc/config/i386/vxworks.h
> ===================================================================
> --- gcc/config/i386/vxworks.h   (revision 166951)
> +++ gcc/config/i386/vxworks.h   (working copy)
> @@ -1,5 +1,5 @@
>  /* IA32 VxWorks target definitions for GNU compiler.
> -   Copyright (C) 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
> +   Copyright (C) 2003, 2004, 2005, 2007, 2010 Free Software Foundation, Inc.
>    Updated by CodeSourcery, LLC.
>
>  This file is part of GCC.
> @@ -18,8 +18,6 @@ You should have received a copy of the G
>  along with GCC; see the file COPYING3.  If not see
>  <http://www.gnu.org/licenses/>.  */
>
> -#define HANDLE_SYSV_PRAGMA 1
> -
>  #undef  TARGET_VERSION
>  #define TARGET_VERSION fprintf (stderr, " (80586, VxWorks syntax)");
>
> Index: gcc/config/rx/rx.h
> ===================================================================
> --- gcc/config/rx/rx.h  (revision 166951)
> +++ gcc/config/rx/rx.h  (working copy)
> @@ -151,8 +151,6 @@ extern enum rx_cpu_types  rx_cpu_type;
>
>  #define LEGITIMATE_CONSTANT_P(X)       rx_is_legitimate_constant (X)
>
> -#define HANDLE_PRAGMA_PACK_PUSH_POP    1
> -
>  #define HAVE_PRE_DECCREMENT            1
>  #define HAVE_POST_INCREMENT            1
>
> Index: gcc/config/xtensa/elf.h
> ===================================================================
> --- gcc/config/xtensa/elf.h     (revision 166951)
> +++ gcc/config/xtensa/elf.h     (working copy)
> @@ -1,6 +1,6 @@
>  /* Xtensa/Elf configuration.
>    Derived from the configuration for GCC for Intel i386 running Linux.
> -   Copyright (C) 2001, 2003, 2006, 2007 Free Software Foundation, Inc.
> +   Copyright (C) 2001, 2003, 2006, 2007, 2010 Free Software Foundation, Inc.
>
>  This file is part of GCC.
>
> @@ -98,5 +98,3 @@ do \
>              "GCC", PREFIX_PRIORITY_LAST, 0, 0); \
>   } \
>  while (0)
> -
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> Index: gcc/config/stormy16/stormy16.h
> ===================================================================
> --- gcc/config/stormy16/stormy16.h      (revision 166951)
> +++ gcc/config/stormy16/stormy16.h      (working copy)
> @@ -587,5 +587,3 @@ enum reg_class
>  #define FUNCTION_MODE HImode
>
>  #define NO_IMPLICIT_EXTERN_C
> -
> -#define HANDLE_SYSV_PRAGMA 1
> Index: gcc/config/cris/cris.h
> ===================================================================
> --- gcc/config/cris/cris.h      (revision 166951)
> +++ gcc/config/cris/cris.h      (working copy)
> @@ -1334,9 +1334,6 @@ enum cris_pic_symbol_type
>
>  #define NO_IMPLICIT_EXTERN_C
>
> -/* No specific purpose other than warningless compatibility.  */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
>  /*
>  * Local variables:
>  * eval: (c-set-style "gnu")
> Index: gcc/config/netbsd.h
> ===================================================================
> --- gcc/config/netbsd.h (revision 166951)
> +++ gcc/config/netbsd.h (working copy)
> @@ -1,6 +1,6 @@
>  /* Base configuration file for all NetBSD targets.
>    Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
> -   2007 Free Software Foundation, Inc.
> +   2007, 2009, 2010 Free Software Foundation, Inc.
>
>  This file is part of GCC.
>
> @@ -158,10 +158,6 @@ along with GCC; see the file COPYING3.
>  #undef TARGET_POSIX_IO
>  #define TARGET_POSIX_IO
>
> -/* Handle #pragma weak and #pragma pack.  */
> -
> -#define HANDLE_SYSV_PRAGMA 1
> -
>  /* Don't assume anything about the header files.  */
>  #undef  NO_IMPLICIT_EXTERN_C
>  #define NO_IMPLICIT_EXTERN_C    1
> @@ -224,6 +220,3 @@ __enable_execute_stack (void *addr)
>   /* 7 == PROT_READ | PROT_WRITE | PROT_EXEC */                                \
>   (void) mprotect (page, end - page, 7);                               \
>  }
> -
> -/* Define this so we can compile MS code for use with WINE.  */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> Index: gcc/config/ia64/ia64.h
> ===================================================================
> --- gcc/config/ia64/ia64.h      (revision 166951)
> +++ gcc/config/ia64/ia64.h      (working copy)
> @@ -1778,12 +1778,6 @@ do {                                                                     \
>
>  #define FUNCTION_MODE Pmode
>
> -/* Define this macro to handle System V style pragmas: #pragma pack and
> -   #pragma weak.  Note, #pragma weak will only be supported if SUPPORT_WEAK is
> -   defined.  */
> -
> -#define HANDLE_SYSV_PRAGMA 1
> -
>  /* A C expression for the maximum number of instructions to execute via
>    conditional execution instructions instead of a branch.  A value of
>    BRANCH_COST+1 is the default if the machine does not use
> Index: gcc/config/ia64/hpux.h
> ===================================================================
> --- gcc/config/ia64/hpux.h      (revision 166951)
> +++ gcc/config/ia64/hpux.h      (working copy)
> @@ -1,5 +1,5 @@
>  /* Definitions of target machine GNU compiler.  IA-64 version.
> -   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
> +   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010
>    Free Software Foundation, Inc.
>    Contributed by Steve Ellcey <sje@cup.hp.com> and
>                   Reva Cuthbertson <reva@cup.hp.com>
> @@ -213,9 +213,6 @@ do {                                                                \
>  #undef NO_PROFILE_COUNTERS
>  #define NO_PROFILE_COUNTERS 0
>
> -#undef HANDLE_PRAGMA_PACK_PUSH_POP
> -#define HANDLE_PRAGMA_PACK_PUSH_POP
> -
>  /* The HP-UX linker has a bug that causes calls from functions in
>    .text.unlikely to functions in .text to cause a segfault.  Until
>    it is fixed, prevent code from being put into .text.unlikely or
> Index: gcc/config/rs6000/aix.h
> ===================================================================
> --- gcc/config/rs6000/aix.h     (revision 166951)
> +++ gcc/config/rs6000/aix.h     (working copy)
> @@ -56,9 +56,6 @@
>  #define ASM_OUTPUT_DWARF_TABLE_REF rs6000_aix_asm_output_dwarf_table_ref
>  #endif
>
> -/* Handle #pragma weak and #pragma pack.  */
> -#define HANDLE_SYSV_PRAGMA 1
> -
>  /* This is the only version of nm that collect2 can work with.  */
>  #define REAL_NM_FILE_NAME "/usr/ucb/nm"
>
> Index: gcc/config/rs6000/sysv4.h
> ===================================================================
> --- gcc/config/rs6000/sysv4.h   (revision 166951)
> +++ gcc/config/rs6000/sysv4.h   (working copy)
> @@ -1062,18 +1062,6 @@ ncrtn.o%s"
>  /* Function name to call to do profiling.  */
>  #define RS6000_MCOUNT "_mcount"
>
> -/* Define this macro (to a value of 1) if you want to support the
> -   Win32 style pragmas #pragma pack(push,<n>)' and #pragma
> -   pack(pop)'.  The pack(push,<n>) pragma specifies the maximum
> -   alignment (in bytes) of fields within a structure, in much the
> -   same way as the __aligned__' and __packed__' __attribute__'s
> -   do.  A pack value of zero resets the behavior to the default.
> -   Successive invocations of this pragma cause the previous values to
> -   be stacked, so that invocations of #pragma pack(pop)' will return
> -   to the previous value.  */
> -
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
>  /* Select a format to encode pointers in exception handling data.  CODE
>    is 0 for data, 1 for code labels, 2 for function pointers.  GLOBAL is
>    true if the symbol may be affected by dynamic relocations.  */
> Index: gcc/config/darwin.h
> ===================================================================
> --- gcc/config/darwin.h (revision 166951)
> +++ gcc/config/darwin.h (working copy)
> @@ -869,11 +869,6 @@ enum machopic_addr_class {
>  #undef TARGET_ASM_NAMED_SECTION
>  #define TARGET_ASM_NAMED_SECTION darwin_asm_named_section
>
> -/* Handle pragma weak and pragma pack.  */
> -#define HANDLE_SYSV_PRAGMA 1
> -
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
>  #define DARWIN_REGISTER_TARGET_PRAGMAS()                       \
>   do {                                                         \
>     if (!flag_preprocess_only)                                 \
> Index: gcc/config/score/elf.h
> ===================================================================
> --- gcc/config/score/elf.h      (revision 166951)
> +++ gcc/config/score/elf.h      (working copy)
> @@ -1,5 +1,5 @@
>  /* elf.h for Sunplus S+CORE processor
> -   Copyright (C) 2005, 2007 Free Software Foundation, Inc.
> +   Copyright (C) 2005, 2007, 2010 Free Software Foundation, Inc.
>
>    This file is part of GCC.
>
> @@ -95,6 +95,3 @@
>
>  #undef  ENDFILE_SPEC
>  #define ENDFILE_SPEC            "crtend%O%s crtn%O%s"
> -
> -/* We support #pragma.  */
> -#define HANDLE_SYSV_PRAGMA      1
> Index: gcc/config/arm/arm.h
> ===================================================================
> --- gcc/config/arm/arm.h        (revision 166951)
> +++ gcc/config/arm/arm.h        (working copy)
> @@ -2097,9 +2097,6 @@ typedef struct
>  #define ARM_INDEX_REGISTER_RTX_P(X)  \
>   (GET_CODE (X) == REG && ARM_REG_OK_FOR_INDEX_P (X))
>
> -/* Define this for compatibility reasons. */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP
> -
>  /* Specify the machine mode that this machine uses
>    for the index in the tablejump instruction.  */
>  #define CASE_VECTOR_MODE Pmode
> Index: gcc/config/arm/netbsd.h
> ===================================================================
> --- gcc/config/arm/netbsd.h     (revision 166951)
> +++ gcc/config/arm/netbsd.h     (working copy)
> @@ -1,5 +1,5 @@
>  /* NetBSD/arm a.out version.
> -   Copyright (C) 1993, 1994, 1997, 1998, 2003, 2004, 2005, 2007, 2008
> +   Copyright (C) 1993, 1994, 1997, 1998, 2003, 2004, 2005, 2007, 2008, 2010
>    Free Software Foundation, Inc.
>    Contributed by Mark Brinicombe (amb@physig.ph.kcl.ac.uk)
>
> @@ -71,8 +71,6 @@
>  #undef PTRDIFF_TYPE
>  #define PTRDIFF_TYPE "int"
>
> -#define HANDLE_SYSV_PRAGMA 1
> -
>  /* We don't have any limit on the length as out debugger is GDB.  */
>  #undef DBX_CONTIN_LENGTH
>
> Index: gcc/config/pa/pa-hpux.h
> ===================================================================
> --- gcc/config/pa/pa-hpux.h     (revision 166951)
> +++ gcc/config/pa/pa-hpux.h     (working copy)
> @@ -1,5 +1,5 @@
>  /* Definitions of target machine for GNU compiler, for HP-UX.
> -   Copyright (C) 1991, 1995, 1996, 2002, 2003, 2004, 2007, 2008
> +   Copyright (C) 1991, 1995, 1996, 2002, 2003, 2004, 2007, 2008, 2009, 2010
>    Free Software Foundation, Inc.
>
>  This file is part of GCC.
> @@ -114,12 +114,4 @@ along with GCC; see the file COPYING3.
>  #undef TARGET_HPUX_UNWIND_LIBRARY
>  #define TARGET_HPUX_UNWIND_LIBRARY 1
>
> -/* Handle #pragma weak and #pragma pack.  */
> -#undef HANDLE_SYSV_PRAGMA
> -#define HANDLE_SYSV_PRAGMA
> -
> -/* Define this so we can compile MS code for use with WINE.  */
> -#undef HANDLE_PRAGMA_PACK_PUSH_POP
> -#define HANDLE_PRAGMA_PACK_PUSH_POP
> -
>  #define MD_UNWIND_SUPPORT "config/pa/hpux-unwind.h"
> Index: gcc/config/mips/elf.h
> ===================================================================
> --- gcc/config/mips/elf.h       (revision 166951)
> +++ gcc/config/mips/elf.h       (working copy)
> @@ -1,5 +1,5 @@
>  /* Target macros for mips*-elf targets.
> -   Copyright (C) 1994, 1997, 1999, 2000, 2002, 2003, 2004, 2007
> +   Copyright (C) 1994, 1997, 1999, 2000, 2002, 2003, 2004, 2007, 2010
>    Free Software Foundation, Inc.
>
>  This file is part of GCC.
> @@ -49,5 +49,3 @@ along with GCC; see the file COPYING3.
>  #define ENDFILE_SPEC "crtend%O%s crtn%O%s"
>
>  #define NO_IMPLICIT_EXTERN_C 1
> -
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> Index: gcc/config/mips/sde.h
> ===================================================================
> --- gcc/config/mips/sde.h       (revision 166951)
> +++ gcc/config/mips/sde.h       (working copy)
> @@ -94,9 +94,6 @@ along with GCC; see the file COPYING3.
>  #undef PTRDIFF_TYPE
>  #define PTRDIFF_TYPE "long int"
>
> -/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop).  */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
>  /* Use standard ELF-style local labels (not '$' as on early Irix).  */
>  #undef LOCAL_LABEL_PREFIX
>  #define LOCAL_LABEL_PREFIX "."
> Index: gcc/config/openbsd.h
> ===================================================================
> --- gcc/config/openbsd.h        (revision 166951)
> +++ gcc/config/openbsd.h        (working copy)
> @@ -282,12 +282,6 @@ do {                                                                        \
>  /* Storage layout.  */
>
>
> -/* bug work around: we don't want to support #pragma weak, but the current
> -   code layout needs HANDLE_PRAGMA_WEAK asserted for __attribute((weak)) to
> -   work.  On the other hand, we don't define HANDLE_PRAGMA_WEAK directly,
> -   as this depends on a few other details as well...  */
> -#define HANDLE_SYSV_PRAGMA 1
> -
>  /* Stack is explicitly denied execution rights on OpenBSD platforms.  */
>  #define ENABLE_EXECUTE_STACK                                           \
>  extern void __enable_execute_stack (void *);                           \
> Index: gcc/config/freebsd.h
> ===================================================================
> --- gcc/config/freebsd.h        (revision 166951)
> +++ gcc/config/freebsd.h        (working copy)
> @@ -45,9 +45,6 @@ along with GCC; see the file COPYING3.
>  #undef  LIB_SPEC
>  #define LIB_SPEC FBSD_LIB_SPEC
>
> -/* Define this so we can compile MS code for use with WINE.  */
> -#define HANDLE_PRAGMA_PACK_PUSH_POP 1
> -
>  /************************[  Target stuff  ]***********************************/
>
>  /* All FreeBSD Architectures support the ELF object file format.  */
> Index: gcc/config/mmix/mmix.h
> ===================================================================
> --- gcc/config/mmix/mmix.h      (revision 166951)
> +++ gcc/config/mmix/mmix.h      (working copy)
> @@ -887,8 +887,6 @@ typedef struct { int regs; int lib; } CU
>
>  #define NO_IMPLICIT_EXTERN_C
>
> -#define HANDLE_SYSV_PRAGMA 1
> -
>  /* These are checked.  */
>  #define DOLLARS_IN_IDENTIFIERS 0
>  #define NO_DOLLAR_IN_LABEL
>
> --
> Joseph S. Myers
> joseph@codesourcery.com
>

Patch

Index: gcc/doc/tm.texi
===================================================================
--- gcc/doc/tm.texi	(revision 166951)
+++ gcc/doc/tm.texi	(working copy)
@@ -10666,55 +10666,8 @@  rule to the makefile fragment pointed to
 how to build this object file.
 @end deftypefun
 
-@findex #pragma
-@findex pragma
-@defmac HANDLE_SYSV_PRAGMA
-Define this macro (to a value of 1) if you want the System V style
-pragmas @samp{#pragma pack(<n>)} and @samp{#pragma weak <name>
-[=<value>]} to be supported by gcc.
-
-The pack pragma specifies the maximum alignment (in bytes) of fields
-within a structure, in much the same way as the @samp{__aligned__} and
-@samp{__packed__} @code{__attribute__}s do.  A pack value of zero resets
-the behavior to the default.
-
-A subtlety for Microsoft Visual C/C++ style bit-field packing
-(e.g.@: -mms-bitfields) for targets that support it:
-When a bit-field is inserted into a packed record, the whole size
-of the underlying type is used by one or more same-size adjacent
-bit-fields (that is, if its long:3, 32 bits is used in the record,
-and any additional adjacent long bit-fields are packed into the same
-chunk of 32 bits.  However, if the size changes, a new field of that
-size is allocated).
-
-If both MS bit-fields and @samp{__attribute__((packed))} are used,
-the latter will take precedence.  If @samp{__attribute__((packed))} is
-used on a single field when MS bit-fields are in use, it will take
-precedence for that field, but the alignment of the rest of the structure
-may affect its placement.
-
-The weak pragma only works if @code{SUPPORTS_WEAK} and
-@code{ASM_WEAKEN_LABEL} are defined.  If enabled it allows the creation
-of specifically named weak labels, optionally with a value.
-@end defmac
-
-@findex #pragma
-@findex pragma
-@defmac HANDLE_PRAGMA_PACK_PUSH_POP
-Define this macro (to a value of 1) if you want to support the Win32
-style pragmas @samp{#pragma pack(push[,@var{n}])} and @samp{#pragma
-pack(pop)}.  The @samp{pack(push,[@var{n}])} pragma specifies the maximum
-alignment (in bytes) of fields within a structure, in much the same way as
-the @samp{__aligned__} and @samp{__packed__} @code{__attribute__}s do.  A
-pack value of zero resets the behavior to the default.  Successive
-invocations of this pragma cause the previous values to be stacked, so
-that invocations of @samp{#pragma pack(pop)} will return to the previous
-value.
-@end defmac
-
 @defmac HANDLE_PRAGMA_PACK_WITH_EXPANSION
-Define this macro, as well as
-@code{HANDLE_SYSV_PRAGMA}, if macros should be expanded in the
+Define this macro if macros should be expanded in the
 arguments of @samp{#pragma pack}.
 @end defmac
 
Index: gcc/doc/tm.texi.in
===================================================================
--- gcc/doc/tm.texi.in	(revision 166951)
+++ gcc/doc/tm.texi.in	(working copy)
@@ -10628,55 +10628,8 @@  rule to the makefile fragment pointed to
 how to build this object file.
 @end deftypefun
 
-@findex #pragma
-@findex pragma
-@defmac HANDLE_SYSV_PRAGMA
-Define this macro (to a value of 1) if you want the System V style
-pragmas @samp{#pragma pack(<n>)} and @samp{#pragma weak <name>
-[=<value>]} to be supported by gcc.
-
-The pack pragma specifies the maximum alignment (in bytes) of fields
-within a structure, in much the same way as the @samp{__aligned__} and
-@samp{__packed__} @code{__attribute__}s do.  A pack value of zero resets
-the behavior to the default.
-
-A subtlety for Microsoft Visual C/C++ style bit-field packing
-(e.g.@: -mms-bitfields) for targets that support it:
-When a bit-field is inserted into a packed record, the whole size
-of the underlying type is used by one or more same-size adjacent
-bit-fields (that is, if its long:3, 32 bits is used in the record,
-and any additional adjacent long bit-fields are packed into the same
-chunk of 32 bits.  However, if the size changes, a new field of that
-size is allocated).
-
-If both MS bit-fields and @samp{__attribute__((packed))} are used,
-the latter will take precedence.  If @samp{__attribute__((packed))} is
-used on a single field when MS bit-fields are in use, it will take
-precedence for that field, but the alignment of the rest of the structure
-may affect its placement.
-
-The weak pragma only works if @code{SUPPORTS_WEAK} and
-@code{ASM_WEAKEN_LABEL} are defined.  If enabled it allows the creation
-of specifically named weak labels, optionally with a value.
-@end defmac
-
-@findex #pragma
-@findex pragma
-@defmac HANDLE_PRAGMA_PACK_PUSH_POP
-Define this macro (to a value of 1) if you want to support the Win32
-style pragmas @samp{#pragma pack(push[,@var{n}])} and @samp{#pragma
-pack(pop)}.  The @samp{pack(push,[@var{n}])} pragma specifies the maximum
-alignment (in bytes) of fields within a structure, in much the same way as
-the @samp{__aligned__} and @samp{__packed__} @code{__attribute__}s do.  A
-pack value of zero resets the behavior to the default.  Successive
-invocations of this pragma cause the previous values to be stacked, so
-that invocations of @samp{#pragma pack(pop)} will return to the previous
-value.
-@end defmac
-
 @defmac HANDLE_PRAGMA_PACK_WITH_EXPANSION
-Define this macro, as well as
-@code{HANDLE_SYSV_PRAGMA}, if macros should be expanded in the
+Define this macro if macros should be expanded in the
 arguments of @samp{#pragma pack}.
 @end defmac
 
Index: gcc/c-family/c-pragma.c
===================================================================
--- gcc/c-family/c-pragma.c	(revision 166951)
+++ gcc/c-family/c-pragma.c	(working copy)
@@ -54,10 +54,8 @@  typedef struct GTY(()) align_stack {
 
 static GTY(()) struct align_stack * alignment_stack;
 
-#ifdef HANDLE_PRAGMA_PACK
 static void handle_pragma_pack (cpp_reader *);
 
-#ifdef HANDLE_PRAGMA_PACK_PUSH_POP
 /* If we have a "global" #pragma pack(<n>) in effect when the first
    #pragma pack(push,<n>) is encountered, this stores the value of
    maximum_field_alignment in effect.  When the final pop_alignment()
@@ -125,13 +123,6 @@  pop_alignment (tree id)
 
   alignment_stack = entry;
 }
-#else  /* not HANDLE_PRAGMA_PACK_PUSH_POP */
-#define SET_GLOBAL_ALIGNMENT(ALIGN) (maximum_field_alignment = (ALIGN))
-#define push_alignment(ID, N) \
-    GCC_BAD ("#pragma pack(push[, id], <n>) is not supported on this target")
-#define pop_alignment(ID) \
-    GCC_BAD ("#pragma pack(pop[, id], <n>) is not supported on this target")
-#endif /* HANDLE_PRAGMA_PACK_PUSH_POP */
 
 /* #pragma pack ()
    #pragma pack (N)
@@ -244,7 +235,6 @@  handle_pragma_pack (cpp_reader * ARG_UNU
     case pop:   pop_alignment (id);	       break;
     }
 }
-#endif  /* HANDLE_PRAGMA_PACK */
 
 typedef struct GTY(()) pending_weak_d
 {
@@ -257,7 +247,6 @@  DEF_VEC_ALLOC_O(pending_weak,gc);
 
 static GTY(()) VEC(pending_weak,gc) *pending_weaks;
 
-#ifdef HANDLE_PRAGMA_WEAK
 static void apply_pragma_weak (tree, tree);
 static void handle_pragma_weak (cpp_reader *);
 
@@ -380,17 +369,6 @@  handle_pragma_weak (cpp_reader * ARG_UNU
       pe->value = value;
     }
 }
-#else
-void
-maybe_apply_pragma_weak (tree ARG_UNUSED (decl))
-{
-}
-
-void
-maybe_apply_pending_pragma_weaks (void)
-{
-}
-#endif /* HANDLE_PRAGMA_WEAK */
 
 /* GCC supports two #pragma directives for renaming the external
    symbol associated with a declaration (DECL_ASSEMBLER_NAME), for
@@ -617,7 +595,6 @@  maybe_apply_renaming_pragma (tree decl, 
 }
 
 
-#ifdef HANDLE_PRAGMA_VISIBILITY
 static void handle_pragma_visibility (cpp_reader *);
 
 static VEC (int, heap) *visstack;
@@ -710,8 +687,6 @@  handle_pragma_visibility (cpp_reader *du
     warning (OPT_Wpragmas, "junk at end of %<#pragma GCC visibility%>");
 }
 
-#endif
-
 static void
 handle_pragma_diagnostic(cpp_reader *ARG_UNUSED(dummy))
 {
@@ -1316,19 +1291,13 @@  init_pragma (void)
     cpp_register_deferred_pragma (parse_in, "GCC", "pch_preprocess",
 				  PRAGMA_GCC_PCH_PREPROCESS, false, false);
 
-#ifdef HANDLE_PRAGMA_PACK
 #ifdef HANDLE_PRAGMA_PACK_WITH_EXPANSION
   c_register_pragma_with_expansion (0, "pack", handle_pragma_pack);
 #else
   c_register_pragma (0, "pack", handle_pragma_pack);
 #endif
-#endif
-#ifdef HANDLE_PRAGMA_WEAK
   c_register_pragma (0, "weak", handle_pragma_weak);
-#endif
-#ifdef HANDLE_PRAGMA_VISIBILITY
   c_register_pragma ("GCC", "visibility", handle_pragma_visibility);
-#endif
 
   c_register_pragma ("GCC", "diagnostic", handle_pragma_diagnostic);
   c_register_pragma ("GCC", "target", handle_pragma_target);
Index: gcc/c-family/c-pragma.h
===================================================================
--- gcc/c-family/c-pragma.h	(revision 166951)
+++ gcc/c-family/c-pragma.h	(working copy)
@@ -1,6 +1,6 @@ 
 /* Pragma related interfaces.
    Copyright (C) 1995, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-   2007, 2008  Free Software Foundation, Inc.
+   2007, 2008, 2009, 2010  Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -75,26 +75,9 @@  typedef enum pragma_omp_clause {
 
 extern struct cpp_reader* parse_in;
 
-#define HANDLE_PRAGMA_WEAK SUPPORTS_WEAK
-
-#ifdef HANDLE_SYSV_PRAGMA
-/* We always support #pragma pack for SYSV pragmas.  */
-#ifndef HANDLE_PRAGMA_PACK
-#define HANDLE_PRAGMA_PACK 1
-#endif
-#endif /* HANDLE_SYSV_PRAGMA */
-
-
-#ifdef HANDLE_PRAGMA_PACK_PUSH_POP
-/* If we are supporting #pragma pack(push... then we automatically
-   support #pragma pack(<n>)  */
-#define HANDLE_PRAGMA_PACK 1
-#endif /* HANDLE_PRAGMA_PACK_PUSH_POP */
-
 /* It's safe to always leave visibility pragma enabled as if
    visibility is not supported on the host OS platform the
    statements are ignored.  */
-#define HANDLE_PRAGMA_VISIBILITY 1
 extern void push_visibility (const char *, int);
 extern bool pop_visibility (int);
 
Index: gcc/testsuite/gcc.dg/pragma-align.c
===================================================================
--- gcc/testsuite/gcc.dg/pragma-align.c	(revision 166951)
+++ gcc/testsuite/gcc.dg/pragma-align.c	(working copy)
@@ -1,6 +1,6 @@ 
-/* Prove that HANDLE_SYSTEMV_PRAGMA alignment handling works somewhat. */
+/* Prove that pragma alignment handling works somewhat. */
 
-/* { dg-do run { target i?86-*-linux* x86_64-*-linux* i?86-*-*bsd* *-*-solaris2.* } } */
+/* { dg-do run } */
 
 extern void abort (void);
 
Index: gcc/testsuite/gcc.dg/cpp/_Pragma6.c
===================================================================
--- gcc/testsuite/gcc.dg/cpp/_Pragma6.c	(revision 166951)
+++ gcc/testsuite/gcc.dg/cpp/_Pragma6.c	(working copy)
@@ -1,8 +1,7 @@ 
 /* PR c/27747 */
 /* This is supposed to succeed only if
-   the target defines HANDLE_PRAGMA_PACK_PUSH_POP
-   and doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION.  */
-/* { dg-do compile { target { ! { powerpc-ibm-aix* *-*-solaris2* fido-*-* m68k-*-* sh*-[us]*-elf m32c-*-* *-*-vxworks moxie-*-* mips-sgi-irix* alpha*-dec-osf* } } } } */
+   the target doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION.  */
+/* { dg-do compile { target { ! { *-*-solaris2* } } } } */
 
 #define push bar
 #define foo _Pragma ("pack(push)")
Index: gcc/testsuite/gcc.dg/pack-test-1.c
===================================================================
--- gcc/testsuite/gcc.dg/pack-test-1.c	(revision 166951)
+++ gcc/testsuite/gcc.dg/pack-test-1.c	(working copy)
@@ -1,7 +1,7 @@ 
 /* Test semantics of #pragma pack.
    Contributed by Mike Coleman <mcoleman2@kc.rr.com> */
 
-/* { dg-do compile { target { { *-*-linux* *-*-cygwin* powerpc*-*-eabi* } && { ! default_packed } } } } */
+/* { dg-do compile { target { ! default_packed } } } */
 
 /* Mainly we're just testing whether pushing and popping seem to be
    working correctly, and verifying the (alignment == 1) case, which
Index: gcc/testsuite/gcc.dg/pack-test-2.c
===================================================================
--- gcc/testsuite/gcc.dg/pack-test-2.c	(revision 166951)
+++ gcc/testsuite/gcc.dg/pack-test-2.c	(working copy)
@@ -1,7 +1,7 @@ 
 /* Tests for syntax checking of #pragma pack.
    Contributed by Mike Coleman <mcoleman2@kc.rr.com> */
 
-/* { dg-do compile { target *-*-linux* *-*-cygwin* powerpc*-*-eabi* } } */
+/* { dg-do compile } */
 
 #pragma pack(pop)               /* { dg-warning "without matching" } */
 
Index: gcc/testsuite/gcc.dg/ucnid-10.c
===================================================================
--- gcc/testsuite/gcc.dg/ucnid-10.c	(revision 166951)
+++ gcc/testsuite/gcc.dg/ucnid-10.c	(working copy)
@@ -1,6 +1,6 @@ 
 /* Verify diagnostics for extended identifiers refer to UCNs (in the C
    locale).  Test #pragma pack diagnostics.  */
-/* { dg-do compile { target *-*-linux* *-*-cygwin* powerpc*-*-eabi* } } */
+/* { dg-do compile } */
 /* { dg-options "-std=gnu99 -fextended-identifiers" } */
 
 #pragma pack(push)
Index: gcc/testsuite/gcc.dg/pragma-pack-4.c
===================================================================
--- gcc/testsuite/gcc.dg/pragma-pack-4.c	(revision 166951)
+++ gcc/testsuite/gcc.dg/pragma-pack-4.c	(working copy)
@@ -1,6 +1,5 @@ 
 /* PR c/28286 */
 /* { dg-do compile } */
-/* { dg-skip-if "no Pragma pack" { "avr-*-*" } { "*" } { "" } } */
 
 
 #pragma pack(0.5)         /* { dg-warning "invalid constant" } */
Index: gcc/testsuite/g++.dg/cpp/_Pragma1.C
===================================================================
--- gcc/testsuite/g++.dg/cpp/_Pragma1.C	(revision 166951)
+++ gcc/testsuite/g++.dg/cpp/_Pragma1.C	(working copy)
@@ -1,8 +1,7 @@ 
 // PR c++/27748
 // This is supposed to succeed only if
-// the target defines HANDLE_PRAGMA_PACK_PUSH_POP 
-// and doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION.
-// { dg-do compile { target { ! { powerpc-ibm-aix* *-*-solaris2* fido-*-* m68k-*-* mips-sgi-irix* sh*-[us]*-elf m32c-*-* *-*-vxworks alpha*-dec-osf* } } } }
+// the target doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION.
+// { dg-do compile { target { ! { *-*-solaris2* } } } }
 
 #define push bar
 #define foo _Pragma ("pack(push)")
Index: gcc/cp/parser.c
===================================================================
--- gcc/cp/parser.c	(revision 166951)
+++ gcc/cp/parser.c	(working copy)
@@ -13828,10 +13828,8 @@  cp_parser_namespace_definition (cp_parse
   /* Parse the body of the namespace.  */
   cp_parser_namespace_body (parser);
 
-#ifdef HANDLE_PRAGMA_VISIBILITY
   if (has_visibility)
     pop_visibility (1);
-#endif
 
   /* Finish the namespace.  */
   pop_namespace ();
Index: gcc/cp/name-lookup.c
===================================================================
--- gcc/cp/name-lookup.c	(revision 166951)
+++ gcc/cp/name-lookup.c	(working copy)
@@ -3239,7 +3239,6 @@  handle_namespace_attrs (tree ns, tree at
       tree name = TREE_PURPOSE (d);
       tree args = TREE_VALUE (d);
 
-#ifdef HANDLE_PRAGMA_VISIBILITY
       if (is_attribute_p ("visibility", name))
 	{
 	  tree x = args ? TREE_VALUE (args) : NULL_TREE;
@@ -3260,7 +3259,6 @@  handle_namespace_attrs (tree ns, tree at
 	  saw_vis = true;
 	}
       else
-#endif
 	{
 	  warning (OPT_Wattributes, "%qD attribute directive ignored",
 		   name);
Index: gcc/system.h
===================================================================
--- gcc/system.h	(revision 166951)
+++ gcc/system.h	(working copy)
@@ -777,7 +777,8 @@  extern void fancy_abort (const char *, i
 	ORDER_REGS_FOR_LOCAL_ALLOC FUNCTION_OUTGOING_VALUE		   \
 	ASM_DECLARE_CONSTANT_NAME MODIFY_TARGET_NAME SWITCHES_NEED_SPACES  \
 	SWITCH_CURTAILS_COMPILATION SWITCH_TAKES_ARG WORD_SWITCH_TAKES_ARG \
-	TARGET_OPTION_TRANSLATE_TABLE
+	TARGET_OPTION_TRANSLATE_TABLE HANDLE_PRAGMA_PACK_PUSH_POP	   \
+	HANDLE_SYSV_PRAGMA HANDLE_PRAGMA_WEAK
 
 /* Hooks that are no longer used.  */
  #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE	\
Index: gcc/config/alpha/linux.h
===================================================================
--- gcc/config/alpha/linux.h	(revision 166951)
+++ gcc/config/alpha/linux.h	(working copy)
@@ -1,7 +1,7 @@ 
 /* Definitions of target machine for GNU compiler,
    for Alpha Linux-based GNU systems.
-   Copyright (C) 1996, 1997, 1998, 2002, 2003, 2004, 2005, 2006, 2007
-   Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998, 2002, 2003, 2004, 2005, 2006, 2007, 2009,
+   2010 Free Software Foundation, Inc.
    Contributed by Richard Henderson.
 
 This file is part of GCC.
@@ -61,9 +61,6 @@  along with GCC; see the file COPYING3.  
 #undef WCHAR_TYPE
 #define WCHAR_TYPE "int"
 
-/* Define this so that all GNU/Linux targets handle the same pragmas.  */
-#define HANDLE_PRAGMA_PACK_PUSH_POP
-
 #define OPTION_GLIBC  (linux_libc == LIBC_GLIBC)
 
 /* Determine whether the entire c99 runtime is present in the
Index: gcc/config/alpha/vms.h
===================================================================
--- gcc/config/alpha/vms.h	(revision 166951)
+++ gcc/config/alpha/vms.h	(working copy)
@@ -69,8 +69,6 @@  along with GCC; see the file COPYING3.  
 #define POINTER_SIZE 32
 #define POINTERS_EXTEND_UNSIGNED 0
 
-#define HANDLE_SYSV_PRAGMA 1
-
 #define MAX_OFILE_ALIGNMENT 524288  /* 8 x 2^16 by DEC Ada Test CD40VRA */
 
 /* The maximum alignment 'malloc' honors.  */
Index: gcc/config/alpha/elf.h
===================================================================
--- gcc/config/alpha/elf.h	(revision 166951)
+++ gcc/config/alpha/elf.h	(working copy)
@@ -400,9 +400,6 @@  do {									\
   "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
    %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
 
-/* We support #pragma.  */
-#define HANDLE_SYSV_PRAGMA 1
-
 /* Select a format to encode pointers in exception handling data.  CODE
    is 0 for data, 1 for code labels, 2 for function pointers.  GLOBAL is
    true if the symbol may be affected by dynamic relocations.
Index: gcc/config/alpha/osf5.h
===================================================================
--- gcc/config/alpha/osf5.h	(revision 166951)
+++ gcc/config/alpha/osf5.h	(working copy)
@@ -268,9 +268,6 @@  __enable_execute_stack (void *addr)					
 #define TARGET_ASM_OPEN_PAREN ""
 #define TARGET_ASM_CLOSE_PAREN ""
 
-/* Handle #pragma weak and #pragma pack.  */
-#define HANDLE_SYSV_PRAGMA 1
-
 /* Handle #pragma extern_prefix.  */
 #define TARGET_HANDLE_PRAGMA_EXTERN_PREFIX 1
 
Index: gcc/config/linux.h
===================================================================
--- gcc/config/linux.h	(revision 166951)
+++ gcc/config/linux.h	(working copy)
@@ -102,9 +102,6 @@  see the files COPYING3 and COPYING.RUNTI
 #define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
 #endif
 
-/* Define this so we can compile MS code for use with WINE.  */
-#define HANDLE_PRAGMA_PACK_PUSH_POP
-
 #undef LINK_GCC_C_SEQUENCE_SPEC
 #define LINK_GCC_C_SEQUENCE_SPEC \
   "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
Index: gcc/config/frv/frv.h
===================================================================
--- gcc/config/frv/frv.h	(revision 166951)
+++ gcc/config/frv/frv.h	(working copy)
@@ -2306,13 +2306,6 @@  fprintf (STREAM, "\t.word .L%d\n", VALUE
    `QImode'.  */
 #define FUNCTION_MODE QImode
 
-/* Define this macro to handle System V style pragmas: #pragma pack and
-   #pragma weak.  Note, #pragma weak will only be supported if SUPPORT_WEAK is
-   defined.
-
-   Defined in svr4.h.  */
-#define HANDLE_SYSV_PRAGMA 1
-
 /* A C expression for the maximum number of instructions to execute via
    conditional execution instructions instead of a branch.  A value of
    BRANCH_COST+1 is the default if the machine does not use
Index: gcc/config/elfos.h
===================================================================
--- gcc/config/elfos.h	(revision 166951)
+++ gcc/config/elfos.h	(working copy)
@@ -65,10 +65,6 @@  see the files COPYING3 and COPYING.RUNTI
 #define PCC_BITFIELD_TYPE_MATTERS 1
 #endif
 
-/* Handle #pragma weak and #pragma pack.  */
-
-#define HANDLE_SYSV_PRAGMA 1
-
 /* All ELF targets can support DWARF-2.  */
 
 #define DWARF2_DEBUGGING_INFO 1
Index: gcc/config/spu/spu.h
===================================================================
--- gcc/config/spu/spu.h	(revision 166951)
+++ gcc/config/spu/spu.h	(working copy)
@@ -512,8 +512,6 @@  targetm.resolve_overloaded_builtin = spu
 
 #define NO_IMPLICIT_EXTERN_C 1
 
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
 /* Canonicalize a comparison from one we don't have to one we do have.  */
 #define CANONICALIZE_COMPARISON(CODE,OP0,OP1) \
   do {                                                                    \
Index: gcc/config/interix.h
===================================================================
--- gcc/config/interix.h	(revision 166951)
+++ gcc/config/interix.h	(working copy)
@@ -61,9 +61,6 @@  for windows/multi thread */
 
 #define STDC_0_IN_SYSTEM_HEADERS 1
 
-#define HANDLE_SYSV_PRAGMA 1
-#undef HANDLE_PRAGMA_WEAK  /* until the link format can handle it */
-
 /* Names to predefine in the preprocessor for this target machine.  */
 
 #define DBX_DEBUGGING_INFO 1
Index: gcc/config/mep/mep.h
===================================================================
--- gcc/config/mep/mep.h	(revision 166951)
+++ gcc/config/mep/mep.h	(working copy)
@@ -804,8 +804,6 @@  typedef struct
 
 #define REGISTER_TARGET_PRAGMAS()	 mep_register_pragmas ()
 
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-   
 /* If defined, a C expression to determine the base term of address X.
    This macro is used in only one place: `find_base_term' in alias.c.
 
Index: gcc/config/m32r/linux.h
===================================================================
--- gcc/config/m32r/linux.h	(revision 166951)
+++ gcc/config/m32r/linux.h	(working copy)
@@ -1,5 +1,5 @@ 
 /* Definitions for Renesas M32R running Linux-based GNU systems using ELF.
-   Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004, 2006, 2007, 2010 Free Software Foundation, Inc.
 
    This file is part of GCC.
 
@@ -23,10 +23,6 @@ 
    supposed to be outputting something that will assemble under SVr4.
    This gets us pretty close.  */
 
-#define HANDLE_SYSV_PRAGMA
-
-#undef  HANDLE_PRAGMA_PACK
-
 #undef  TARGET_VERSION
 #define TARGET_VERSION fprintf (stderr, " (M32R GNU/Linux with ELF)");
 
Index: gcc/config/m32r/m32r.h
===================================================================
--- gcc/config/m32r/m32r.h	(revision 166951)
+++ gcc/config/m32r/m32r.h	(working copy)
@@ -22,7 +22,6 @@ 
 - longlong.h?
 */
 
-#undef HANDLE_SYSV_PRAGMA
 #undef SIZE_TYPE
 #undef PTRDIFF_TYPE
 #undef WCHAR_TYPE
Index: gcc/config/i386/cygming.h
===================================================================
--- gcc/config/i386/cygming.h	(revision 166951)
+++ gcc/config/i386/cygming.h	(working copy)
@@ -178,9 +178,6 @@  along with GCC; see the file COPYING3.  
 #undef LONG_TYPE_SIZE
 #define LONG_TYPE_SIZE 32
 
-/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop).  */
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
 union tree_node;
 #define TREE union tree_node *
 
Index: gcc/config/i386/djgpp.h
===================================================================
--- gcc/config/i386/djgpp.h	(revision 166951)
+++ gcc/config/i386/djgpp.h	(working copy)
@@ -24,11 +24,6 @@  along with GCC; see the file COPYING3.  
 /* Don't assume anything about the header files.  */
 #define NO_IMPLICIT_EXTERN_C
 
-#define HANDLE_SYSV_PRAGMA 1
-
-/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop).  */
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
 /* If defined, a C expression whose value is a string containing the
    assembler operation to identify the following data as
    uninitialized global data.  If not defined, and neither
Index: gcc/config/i386/netware.h
===================================================================
--- gcc/config/i386/netware.h	(revision 166951)
+++ gcc/config/i386/netware.h	(working copy)
@@ -1,6 +1,7 @@ 
 /* Core target definitions for GCC for Intel 80x86 running Netware.
    and using dwarf for the debugging format.
-   Copyright (C) 1993, 1994, 2004, 2007, 2008 Free Software Foundation, Inc.
+   Copyright (C) 1993, 1994, 2004, 2007, 2008, 2009, 2010
+   Free Software Foundation, Inc.
 
    Written by David V. Henkel-Wallace (gumby@cygnus.com)
 
@@ -104,9 +105,6 @@  do {									\
 #undef DBX_REGISTER_NUMBER
 #define DBX_REGISTER_NUMBER(n) (svr4_dbx_register_map[n])
 
-/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop).  */
-#define HANDLE_PRAGMA_PACK_PUSH_POP
-
 /* Default structure packing is 1-byte. */
 #define TARGET_DEFAULT_PACK_STRUCT 1
 
Index: gcc/config/i386/i386-interix.h
===================================================================
--- gcc/config/i386/i386-interix.h	(revision 166951)
+++ gcc/config/i386/i386-interix.h	(working copy)
@@ -1,6 +1,6 @@ 
 /* Target definitions for GCC for Intel 80386 running Interix
-   Parts Copyright (C) 1991, 1999, 2000, 2002, 2003, 2004, 2007, 2008
-   Free Software Foundation, Inc.
+   Parts Copyright (C) 1991, 1999, 2000, 2002, 2003, 2004, 2007, 2008, 2009,
+   2010 Free Software Foundation, Inc.
 
    Parts:
      by Douglas B. Rupp (drupp@cs.washington.edu).
@@ -30,9 +30,6 @@  along with GCC; see the file COPYING3.  
 #define SDB_DEBUGGING_INFO 1
 #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
 
-#define HANDLE_SYSV_PRAGMA 1
-#undef HANDLE_PRAGMA_WEAK  /* until the link format can handle it */
-
 /* By default, target has a 80387, uses IEEE compatible arithmetic,
    and returns float values in the 387 and needs stack probes
    We also align doubles to 64-bits for MSVC default compatibility
Index: gcc/config/i386/vxworks.h
===================================================================
--- gcc/config/i386/vxworks.h	(revision 166951)
+++ gcc/config/i386/vxworks.h	(working copy)
@@ -1,5 +1,5 @@ 
 /* IA32 VxWorks target definitions for GNU compiler.
-   Copyright (C) 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004, 2005, 2007, 2010 Free Software Foundation, Inc.
    Updated by CodeSourcery, LLC.
 
 This file is part of GCC.
@@ -18,8 +18,6 @@  You should have received a copy of the G
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
-#define HANDLE_SYSV_PRAGMA 1
-
 #undef  TARGET_VERSION
 #define TARGET_VERSION fprintf (stderr, " (80586, VxWorks syntax)");
 
Index: gcc/config/rx/rx.h
===================================================================
--- gcc/config/rx/rx.h	(revision 166951)
+++ gcc/config/rx/rx.h	(working copy)
@@ -151,8 +151,6 @@  extern enum rx_cpu_types  rx_cpu_type;
 
 #define LEGITIMATE_CONSTANT_P(X) 	rx_is_legitimate_constant (X)
 
-#define HANDLE_PRAGMA_PACK_PUSH_POP	1
-
 #define HAVE_PRE_DECCREMENT		1
 #define HAVE_POST_INCREMENT		1
 
Index: gcc/config/xtensa/elf.h
===================================================================
--- gcc/config/xtensa/elf.h	(revision 166951)
+++ gcc/config/xtensa/elf.h	(working copy)
@@ -1,6 +1,6 @@ 
 /* Xtensa/Elf configuration.
    Derived from the configuration for GCC for Intel i386 running Linux.
-   Copyright (C) 2001, 2003, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2003, 2006, 2007, 2010 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -98,5 +98,3 @@  do \
 	      "GCC", PREFIX_PRIORITY_LAST, 0, 0); \
   } \
 while (0)
-
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
Index: gcc/config/stormy16/stormy16.h
===================================================================
--- gcc/config/stormy16/stormy16.h	(revision 166951)
+++ gcc/config/stormy16/stormy16.h	(working copy)
@@ -587,5 +587,3 @@  enum reg_class
 #define FUNCTION_MODE HImode
 
 #define NO_IMPLICIT_EXTERN_C
-
-#define HANDLE_SYSV_PRAGMA 1
Index: gcc/config/cris/cris.h
===================================================================
--- gcc/config/cris/cris.h	(revision 166951)
+++ gcc/config/cris/cris.h	(working copy)
@@ -1334,9 +1334,6 @@  enum cris_pic_symbol_type
 
 #define NO_IMPLICIT_EXTERN_C
 
-/* No specific purpose other than warningless compatibility.  */
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
 /*
  * Local variables:
  * eval: (c-set-style "gnu")
Index: gcc/config/netbsd.h
===================================================================
--- gcc/config/netbsd.h	(revision 166951)
+++ gcc/config/netbsd.h	(working copy)
@@ -1,6 +1,6 @@ 
 /* Base configuration file for all NetBSD targets.
    Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-   2007 Free Software Foundation, Inc.
+   2007, 2009, 2010 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -158,10 +158,6 @@  along with GCC; see the file COPYING3.  
 #undef TARGET_POSIX_IO
 #define TARGET_POSIX_IO
 
-/* Handle #pragma weak and #pragma pack.  */
-
-#define HANDLE_SYSV_PRAGMA 1
-
 /* Don't assume anything about the header files.  */
 #undef  NO_IMPLICIT_EXTERN_C
 #define NO_IMPLICIT_EXTERN_C    1
@@ -224,6 +220,3 @@  __enable_execute_stack (void *addr)					
   /* 7 == PROT_READ | PROT_WRITE | PROT_EXEC */				\
   (void) mprotect (page, end - page, 7);				\
 }
-
-/* Define this so we can compile MS code for use with WINE.  */
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
Index: gcc/config/ia64/ia64.h
===================================================================
--- gcc/config/ia64/ia64.h	(revision 166951)
+++ gcc/config/ia64/ia64.h	(working copy)
@@ -1778,12 +1778,6 @@  do {									\
 
 #define FUNCTION_MODE Pmode
 
-/* Define this macro to handle System V style pragmas: #pragma pack and
-   #pragma weak.  Note, #pragma weak will only be supported if SUPPORT_WEAK is
-   defined.  */
-
-#define HANDLE_SYSV_PRAGMA 1
-
 /* A C expression for the maximum number of instructions to execute via
    conditional execution instructions instead of a branch.  A value of
    BRANCH_COST+1 is the default if the machine does not use
Index: gcc/config/ia64/hpux.h
===================================================================
--- gcc/config/ia64/hpux.h	(revision 166951)
+++ gcc/config/ia64/hpux.h	(working copy)
@@ -1,5 +1,5 @@ 
 /* Definitions of target machine GNU compiler.  IA-64 version.
-   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
+   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010
    Free Software Foundation, Inc.
    Contributed by Steve Ellcey <sje@cup.hp.com> and
                   Reva Cuthbertson <reva@cup.hp.com>
@@ -213,9 +213,6 @@  do {								\
 #undef NO_PROFILE_COUNTERS
 #define NO_PROFILE_COUNTERS 0
 
-#undef HANDLE_PRAGMA_PACK_PUSH_POP
-#define HANDLE_PRAGMA_PACK_PUSH_POP
-
 /* The HP-UX linker has a bug that causes calls from functions in
    .text.unlikely to functions in .text to cause a segfault.  Until
    it is fixed, prevent code from being put into .text.unlikely or
Index: gcc/config/rs6000/aix.h
===================================================================
--- gcc/config/rs6000/aix.h	(revision 166951)
+++ gcc/config/rs6000/aix.h	(working copy)
@@ -56,9 +56,6 @@ 
 #define ASM_OUTPUT_DWARF_TABLE_REF rs6000_aix_asm_output_dwarf_table_ref
 #endif
 
-/* Handle #pragma weak and #pragma pack.  */
-#define HANDLE_SYSV_PRAGMA 1
-
 /* This is the only version of nm that collect2 can work with.  */
 #define REAL_NM_FILE_NAME "/usr/ucb/nm"
 
Index: gcc/config/rs6000/sysv4.h
===================================================================
--- gcc/config/rs6000/sysv4.h	(revision 166951)
+++ gcc/config/rs6000/sysv4.h	(working copy)
@@ -1062,18 +1062,6 @@  ncrtn.o%s"
 /* Function name to call to do profiling.  */
 #define RS6000_MCOUNT "_mcount"
 
-/* Define this macro (to a value of 1) if you want to support the
-   Win32 style pragmas #pragma pack(push,<n>)' and #pragma
-   pack(pop)'.  The pack(push,<n>) pragma specifies the maximum
-   alignment (in bytes) of fields within a structure, in much the
-   same way as the __aligned__' and __packed__' __attribute__'s
-   do.  A pack value of zero resets the behavior to the default.
-   Successive invocations of this pragma cause the previous values to
-   be stacked, so that invocations of #pragma pack(pop)' will return
-   to the previous value.  */
-
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
 /* Select a format to encode pointers in exception handling data.  CODE
    is 0 for data, 1 for code labels, 2 for function pointers.  GLOBAL is
    true if the symbol may be affected by dynamic relocations.  */
Index: gcc/config/darwin.h
===================================================================
--- gcc/config/darwin.h	(revision 166951)
+++ gcc/config/darwin.h	(working copy)
@@ -869,11 +869,6 @@  enum machopic_addr_class {
 #undef TARGET_ASM_NAMED_SECTION
 #define TARGET_ASM_NAMED_SECTION darwin_asm_named_section
 
-/* Handle pragma weak and pragma pack.  */
-#define HANDLE_SYSV_PRAGMA 1
-
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
 #define DARWIN_REGISTER_TARGET_PRAGMAS()			\
   do {								\
     if (!flag_preprocess_only)					\
Index: gcc/config/score/elf.h
===================================================================
--- gcc/config/score/elf.h	(revision 166951)
+++ gcc/config/score/elf.h	(working copy)
@@ -1,5 +1,5 @@ 
 /* elf.h for Sunplus S+CORE processor
-   Copyright (C) 2005, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2005, 2007, 2010 Free Software Foundation, Inc.
 
    This file is part of GCC.
 
@@ -95,6 +95,3 @@ 
 
 #undef  ENDFILE_SPEC
 #define ENDFILE_SPEC            "crtend%O%s crtn%O%s"
-
-/* We support #pragma.  */
-#define HANDLE_SYSV_PRAGMA      1
Index: gcc/config/arm/arm.h
===================================================================
--- gcc/config/arm/arm.h	(revision 166951)
+++ gcc/config/arm/arm.h	(working copy)
@@ -2097,9 +2097,6 @@  typedef struct
 #define ARM_INDEX_REGISTER_RTX_P(X)  \
   (GET_CODE (X) == REG && ARM_REG_OK_FOR_INDEX_P (X))
 
-/* Define this for compatibility reasons. */
-#define HANDLE_PRAGMA_PACK_PUSH_POP
-
 /* Specify the machine mode that this machine uses
    for the index in the tablejump instruction.  */
 #define CASE_VECTOR_MODE Pmode
Index: gcc/config/arm/netbsd.h
===================================================================
--- gcc/config/arm/netbsd.h	(revision 166951)
+++ gcc/config/arm/netbsd.h	(working copy)
@@ -1,5 +1,5 @@ 
 /* NetBSD/arm a.out version.
-   Copyright (C) 1993, 1994, 1997, 1998, 2003, 2004, 2005, 2007, 2008
+   Copyright (C) 1993, 1994, 1997, 1998, 2003, 2004, 2005, 2007, 2008, 2010
    Free Software Foundation, Inc.
    Contributed by Mark Brinicombe (amb@physig.ph.kcl.ac.uk)
 
@@ -71,8 +71,6 @@ 
 #undef PTRDIFF_TYPE
 #define PTRDIFF_TYPE "int"
 
-#define HANDLE_SYSV_PRAGMA 1
-
 /* We don't have any limit on the length as out debugger is GDB.  */
 #undef DBX_CONTIN_LENGTH
 
Index: gcc/config/pa/pa-hpux.h
===================================================================
--- gcc/config/pa/pa-hpux.h	(revision 166951)
+++ gcc/config/pa/pa-hpux.h	(working copy)
@@ -1,5 +1,5 @@ 
 /* Definitions of target machine for GNU compiler, for HP-UX.
-   Copyright (C) 1991, 1995, 1996, 2002, 2003, 2004, 2007, 2008
+   Copyright (C) 1991, 1995, 1996, 2002, 2003, 2004, 2007, 2008, 2009, 2010
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -114,12 +114,4 @@  along with GCC; see the file COPYING3.  
 #undef TARGET_HPUX_UNWIND_LIBRARY
 #define TARGET_HPUX_UNWIND_LIBRARY 1
 
-/* Handle #pragma weak and #pragma pack.  */
-#undef HANDLE_SYSV_PRAGMA
-#define HANDLE_SYSV_PRAGMA
-
-/* Define this so we can compile MS code for use with WINE.  */
-#undef HANDLE_PRAGMA_PACK_PUSH_POP
-#define HANDLE_PRAGMA_PACK_PUSH_POP
-
 #define MD_UNWIND_SUPPORT "config/pa/hpux-unwind.h"
Index: gcc/config/mips/elf.h
===================================================================
--- gcc/config/mips/elf.h	(revision 166951)
+++ gcc/config/mips/elf.h	(working copy)
@@ -1,5 +1,5 @@ 
 /* Target macros for mips*-elf targets.
-   Copyright (C) 1994, 1997, 1999, 2000, 2002, 2003, 2004, 2007
+   Copyright (C) 1994, 1997, 1999, 2000, 2002, 2003, 2004, 2007, 2010
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -49,5 +49,3 @@  along with GCC; see the file COPYING3.  
 #define ENDFILE_SPEC "crtend%O%s crtn%O%s"
 
 #define NO_IMPLICIT_EXTERN_C 1
-
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
Index: gcc/config/mips/sde.h
===================================================================
--- gcc/config/mips/sde.h	(revision 166951)
+++ gcc/config/mips/sde.h	(working copy)
@@ -94,9 +94,6 @@  along with GCC; see the file COPYING3.  
 #undef PTRDIFF_TYPE
 #define PTRDIFF_TYPE "long int"
 
-/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop).  */
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
 /* Use standard ELF-style local labels (not '$' as on early Irix).  */
 #undef LOCAL_LABEL_PREFIX
 #define LOCAL_LABEL_PREFIX "."
Index: gcc/config/openbsd.h
===================================================================
--- gcc/config/openbsd.h	(revision 166951)
+++ gcc/config/openbsd.h	(working copy)
@@ -282,12 +282,6 @@  do {									 \
 /* Storage layout.  */
 
 
-/* bug work around: we don't want to support #pragma weak, but the current
-   code layout needs HANDLE_PRAGMA_WEAK asserted for __attribute((weak)) to
-   work.  On the other hand, we don't define HANDLE_PRAGMA_WEAK directly,
-   as this depends on a few other details as well...  */
-#define HANDLE_SYSV_PRAGMA 1
-
 /* Stack is explicitly denied execution rights on OpenBSD platforms.  */
 #define ENABLE_EXECUTE_STACK						\
 extern void __enable_execute_stack (void *);				\
Index: gcc/config/freebsd.h
===================================================================
--- gcc/config/freebsd.h	(revision 166951)
+++ gcc/config/freebsd.h	(working copy)
@@ -45,9 +45,6 @@  along with GCC; see the file COPYING3.  
 #undef  LIB_SPEC
 #define LIB_SPEC FBSD_LIB_SPEC
 
-/* Define this so we can compile MS code for use with WINE.  */
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
 /************************[  Target stuff  ]***********************************/
 
 /* All FreeBSD Architectures support the ELF object file format.  */
Index: gcc/config/mmix/mmix.h
===================================================================
--- gcc/config/mmix/mmix.h	(revision 166951)
+++ gcc/config/mmix/mmix.h	(working copy)
@@ -887,8 +887,6 @@  typedef struct { int regs; int lib; } CU
 
 #define NO_IMPLICIT_EXTERN_C
 
-#define HANDLE_SYSV_PRAGMA 1
-
 /* These are checked.  */
 #define DOLLARS_IN_IDENTIFIERS 0
 #define NO_DOLLAR_IN_LABEL