Index: fixincludes/ChangeLog

2004-10-27  Geoffrey Keating  <geoffk@apple.com>

	* inclhack.def (darwin_gcc4_breakage): New.
	* fixincl.x: Regenerate.

Index: gcc/ChangeLog
2004-10-27  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.c (rs6000_attribute_table): Add
	SUBTARGET_ATTRIBUTE_TABLE.
	* config/darwin.h (ASM_WEAKEN_DECL): Handle weak_import.
	(SUBTARGET_ATTRIBUTE_TABLE): Define.
	* config/darwin.c (darwin_handle_weak_import_attribute): New.
	(HAVE_DEAD_STRIP): Delete.
	(no_dead_strip): Don't test HAVE_DEAD_STRIP.
	* config/darwin-protos.h (darwin_handle_weak_import_attribute):
	Prototype.

Index: gcc/testsuite/ChangeLog
2004-10-27  Geoffrey Keating  <geoffk@apple.com>

	* gcc.dg/darwin-weakimport-1.c: New.

From-SVN: r89716
This commit is contained in:
Geoffrey Keating 2004-10-27 23:02:39 +00:00 committed by Geoffrey Keating
parent 9a3137c336
commit 005c1a13e5
10 changed files with 135 additions and 8 deletions

View File

@ -1,3 +1,8 @@
2004-10-27 Geoffrey Keating <geoffk@apple.com>
* inclhack.def (darwin_gcc4_breakage): New.
* fixincl.x: Regenerate.
2004-10-27 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
PR bootstrap/17832

View File

@ -2,11 +2,11 @@
*
* DO NOT EDIT THIS FILE (fixincl.x)
*
* It has been AutoGen-ed Saturday September 18, 2004 at 10:59:03 AM MDT
* It has been AutoGen-ed Tuesday October 26, 2004 at 01:55:22 PM PDT
* From the definitions inclhack.def
* and the template file fixincl
*/
/* DO NOT CVS-MERGE THIS FILE, EITHER Sat Sep 18 10:59:03 MDT 2004
/* DO NOT CVS-MERGE THIS FILE, EITHER Tue Oct 26 13:55:22 PDT 2004
*
* You must regenerate it. Use the ./genfixes script.
*
@ -15,7 +15,7 @@
* certain ANSI-incompatible system header files which are fixed to work
* correctly with ANSI C and placed in a directory that GNU C will search.
*
* This file contains 179 fixup descriptions.
* This file contains 180 fixup descriptions.
*
* See README for more information.
*
@ -1640,6 +1640,43 @@ extern \"C\" {\n\
#endif\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Description of Darwin_Gcc4_Breakage fix
*/
tSCC zDarwin_Gcc4_BreakageName[] =
"darwin_gcc4_breakage";
/*
* File name selection pattern
*/
tSCC zDarwin_Gcc4_BreakageList[] =
"|AvailabilityMacros.h|";
/*
* Machine/OS name selection pattern
*/
tSCC* apzDarwin_Gcc4_BreakageMachs[] = {
"*-*-darwin*",
(const char*)NULL };
/*
* content selection pattern - do fix if pattern found
*/
tSCC zDarwin_Gcc4_BreakageSelect0[] =
"\\(__GNUC__ >= 3\\) && \\(__GNUC_MINOR__ >= 1\\)";
#define DARWIN_GCC4_BREAKAGE_TEST_CT 1
static tTestDesc aDarwin_Gcc4_BreakageTests[] = {
{ TT_EGREP, zDarwin_Gcc4_BreakageSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Darwin_Gcc4_Breakage
*/
static const char* apzDarwin_Gcc4_BreakagePatch[] = {
"format",
"((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Description of Darwin_Private_Extern fix
@ -7102,9 +7139,9 @@ static const char* apzX11_SprintfPatch[] = {
*
* List of all fixes
*/
#define REGEX_COUNT 202
#define REGEX_COUNT 203
#define MACH_LIST_SIZE_LIMIT 261
#define FIX_COUNT 179
#define FIX_COUNT 180
/*
* Enumerate the fixes
@ -7148,6 +7185,7 @@ typedef enum {
CTRL_QUOTES_DEF_FIXIDX,
CTRL_QUOTES_USE_FIXIDX,
CXX_UNREADY_FIXIDX,
DARWIN_GCC4_BREAKAGE_FIXIDX,
DARWIN_PRIVATE_EXTERN_FIXIDX,
DEC_INTERN_ASM_FIXIDX,
DJGPP_WCHAR_H_FIXIDX,
@ -7482,6 +7520,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
CXX_UNREADY_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aCxx_UnreadyTests, apzCxx_UnreadyPatch, 0 },
{ zDarwin_Gcc4_BreakageName, zDarwin_Gcc4_BreakageList,
apzDarwin_Gcc4_BreakageMachs,
DARWIN_GCC4_BREAKAGE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aDarwin_Gcc4_BreakageTests, apzDarwin_Gcc4_BreakagePatch, 0 },
{ zDarwin_Private_ExternName, zDarwin_Private_ExternList,
apzDarwin_Private_ExternMachs,
DARWIN_PRIVATE_EXTERN_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,

View File

@ -977,6 +977,23 @@ fix = {
};
/*
* AvailabilityMacros.h on Darwin breaks with GCC 4.0, because of
* bad __GNUC__ tests.
*/
fix = {
hackname = darwin_gcc4_breakage;
mach = "*-*-darwin*";
files = AvailabilityMacros.h;
select = "\\(__GNUC__ >= 3\\) && \\(__GNUC_MINOR__ >= 1\\)";
c_fix = format;
c_fix_arg = "((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))";
test_text = "#if defined(__GNUC__) && (__GNUC__ >= 3) && "
"(__GNUC_MINOR__ >= 1)\n";
};
/*
* __private_extern__ doesn't exist in FSF GCC. Even if it did,
* why would you ever put it in a system header file?

View File

@ -8,6 +8,16 @@
2004-10-27 Geoffrey Keating <geoffk@apple.com>
* config/rs6000/rs6000.c (rs6000_attribute_table): Add
SUBTARGET_ATTRIBUTE_TABLE.
* config/darwin.h (ASM_WEAKEN_DECL): Handle weak_import.
(SUBTARGET_ATTRIBUTE_TABLE): Define.
* config/darwin.c (darwin_handle_weak_import_attribute): New.
(HAVE_DEAD_STRIP): Delete.
(no_dead_strip): Don't test HAVE_DEAD_STRIP.
* config/darwin-protos.h (darwin_handle_weak_import_attribute):
Prototype.
* doc/tm.texi (USE_SELECT_SECTION_FOR_FUNCTIONS): Document.
* config/darwin.h (GTHREAD_USE_WEAK): Define.

View File

@ -82,6 +82,10 @@ extern void darwin_file_end (void);
extern void darwin_mark_decl_preserved (const char *);
extern tree darwin_handle_weak_import_attribute (tree *node, tree name,
tree args, int flags,
bool * no_add_attrs);
/* Expanded by EXTRA_SECTION_FUNCTIONS into varasm.o. */
extern void text_coal_section (void);
extern void text_unlikely_section (void);

View File

@ -1209,13 +1209,30 @@ darwin_unique_section (tree decl ATTRIBUTE_UNUSED, int reloc ATTRIBUTE_UNUSED)
/* Darwin does not use unique sections. */
}
#define HAVE_DEAD_STRIP 0
/* Handle a "weak_import" attribute; arguments as in
struct attribute_spec.handler. */
tree
darwin_handle_weak_import_attribute (tree *node, tree name,
tree ARG_UNUSED (args),
int ARG_UNUSED (flags),
bool * no_add_attrs)
{
if (TREE_CODE (*node) != FUNCTION_DECL)
{
warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
*no_add_attrs = true;
}
else
declare_weak (*node);
return NULL_TREE;
}
static void
no_dead_strip (FILE *file, const char *lab)
{
if (HAVE_DEAD_STRIP)
fprintf (file, ".no_dead_strip %s\n", lab);
fprintf (file, ".no_dead_strip %s\n", lab);
}
/* Emit a label for an FDE, making it global and/or weak if appropriate.

View File

@ -385,6 +385,9 @@ extern const char *darwin_fix_and_continue_switch;
targetm.asm_out.globalize_label (FILE, NAME); \
if (DECL_EXTERNAL (DECL)) \
fputs ("\t.weak_reference ", FILE); \
else if (! lookup_attribute ("weak", DECL_ATTRIBUTES (DECL)) \
&& lookup_attribute ("weak_import", DECL_ATTRIBUTES (DECL))) \
break; \
else if (TREE_PUBLIC (DECL)) \
fputs ("\t.weak_definition ", FILE); \
else \
@ -862,6 +865,11 @@ objc_section_init (void) \
#undef TARGET_ASM_ASSEMBLE_VISIBILITY
#define TARGET_ASM_ASSEMBLE_VISIBILITY darwin_assemble_visibility
/* Extra attributes for Darwin. */
#define SUBTARGET_ATTRIBUTE_TABLE \
/* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */ \
{ "weak_import", 0, 0, true, false, false, \
darwin_handle_weak_import_attribute }
#undef ASM_GENERATE_INTERNAL_LABEL
#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \

View File

@ -16659,6 +16659,9 @@ const struct attribute_spec rs6000_attribute_table[] =
{ "altivec", 1, 1, false, true, false, rs6000_handle_altivec_attribute },
{ "longcall", 0, 0, false, true, true, rs6000_handle_longcall_attribute },
{ "shortcall", 0, 0, false, true, true, rs6000_handle_longcall_attribute },
#ifdef SUBTARGET_ATTRIBUTE_TABLE
SUBTARGET_ATTRIBUTE_TABLE,
#endif
{ NULL, 0, 0, false, false, false, NULL }
};

View File

@ -1,3 +1,7 @@
2004-10-27 Geoffrey Keating <geoffk@apple.com>
* gcc.dg/darwin-weakimport-1.c: New.
2004-10-28 Ben Elliston <bje@au.ibm.com>
* gcc.dg/tree-ssa/sra-1.c: Pass --param sra-max-structure-size.

View File

@ -0,0 +1,16 @@
/* { dg-do compile { target *-*-darwin* } } */
/* { dg-require-weak "" } */
/* { dg-options "-fno-common" } */
/* { dg-final { scan-assembler "weak_reference _a" } } */
/* { dg-final { scan-assembler-not "weak_\[a-z \t\]*_b" } } */
extern void a (void) __attribute__((weak_import));
extern void b (void) __attribute__((weak_import));
void b(void)
{
a();
}
extern int c __attribute__((weak_import)); /* { dg-warning "ignored" } */