From: Richard Henderson Date: Sun, 31 Mar 2002 11:50:43 +0000 (-0800) Subject: elf.h (ASM_OUTPUT_DEF): Tidy. X-Git-Tag: releases/gcc-3.3.0~5999 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=41ba8a20bd2bdfa0180420cce0182d0753e85de9;p=thirdparty%2Fgcc.git elf.h (ASM_OUTPUT_DEF): Tidy. * config/alpha/elf.h (ASM_OUTPUT_DEF): Tidy. (ASM_OUTPUT_DEF_FROM_DECLS): New. * gcc.dg/special/alias-2.c: New. * gcc.dg/special/ecos.exp: Run it. From-SVN: r51650 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f49d14c3d54f..04e7f56e6018 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2002-03-31 Richard Henderson + + PR target/3997 + * config/alpha/elf.h (ASM_OUTPUT_DEF): Tidy. + (ASM_OUTPUT_DEF_FROM_DECLS): New. + 2002-03-31 Richard Henderson * libgcc2.c (__bb_exit_func): Make static. diff --git a/gcc/config/alpha/elf.h b/gcc/config/alpha/elf.h index 8878eda29987..05853c2e1088 100644 --- a/gcc/config/alpha/elf.h +++ b/gcc/config/alpha/elf.h @@ -483,11 +483,32 @@ do { \ /* This is how we tell the assembler that two symbols have the same value. */ #undef ASM_OUTPUT_DEF -#define ASM_OUTPUT_DEF(FILE, NAME1, NAME2) \ - do { assemble_name(FILE, NAME1); \ - fputs(" = ", FILE); \ - assemble_name(FILE, NAME2); \ - fputc('\n', FILE); } while (0) +#define ASM_OUTPUT_DEF(FILE, ALIAS, NAME) \ + do { \ + assemble_name(FILE, ALIAS); \ + fputs(" = ", FILE); \ + assemble_name(FILE, NAME); \ + fputc('\n', FILE); \ + } while (0) + +#undef ASM_OUTPUT_DEF_FROM_DECLS +#define ASM_OUTPUT_DEF_FROM_DECLS(FILE, DECL, TARGET) \ + do { \ + const char *alias = XSTR (XEXP (DECL_RTL (DECL), 0), 0); \ + const char *name = IDENTIFIER_POINTER (TARGET); \ + if (TREE_CODE (DECL) == FUNCTION_DECL) \ + { \ + fputc ('$', FILE); \ + assemble_name (FILE, alias); \ + fputs ("..ng = $", FILE); \ + assemble_name (FILE, name); \ + fputs ("..ng\n", FILE); \ + } \ + assemble_name(FILE, alias); \ + fputs(" = ", FILE); \ + assemble_name(FILE, name); \ + fputc('\n', FILE); \ + } while (0) /* The following macro defines the format used to output the second operand of the .type assembler directive. Different svr4 assemblers diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index abf2c2072d08..cec193ebe19a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2002-03-31 Richard Henderson + + * gcc.dg/special/alias-2.c: New. + * gcc.dg/special/ecos.exp: Run it. + 2002-03-31 Richard Henderson * gcc.dg/va-arg-1.c: Expect warnings, not errors. diff --git a/gcc/testsuite/gcc.dg/special/alias-2.c b/gcc/testsuite/gcc.dg/special/alias-2.c new file mode 100644 index 000000000000..5dd9f537cb0a --- /dev/null +++ b/gcc/testsuite/gcc.dg/special/alias-2.c @@ -0,0 +1,18 @@ +/* PR 3997 */ +/* { dg-do run } */ + +extern void abort (void); +extern void exit (int); + +void foo(void) +{ + exit(0); +} + +static void bar(void) __attribute__((alias("foo"))); + +int main() +{ + bar(); + abort (); +} diff --git a/gcc/testsuite/gcc.dg/special/ecos.exp b/gcc/testsuite/gcc.dg/special/ecos.exp index 56995cd2a13b..b8875023ae1f 100644 --- a/gcc/testsuite/gcc.dg/special/ecos.exp +++ b/gcc/testsuite/gcc.dg/special/ecos.exp @@ -93,6 +93,18 @@ switch [check_alias_available "$srcdir/$subdir/alias-1.c"] { } dg-finish +########### +# alias-2.c +########### + +dg-init +switch [check_alias_available "$srcdir/$subdir/alias-2.c"] { + yes { dg-runtest "$srcdir/$subdir/alias-2.c" "" "" } + no { unsupported "alias-2.c" } + default { fail "alias-2.c" } +} +dg-finish + ########### # wkali-1.c ###########