* config/alpha/elf.h (ASM_OUTPUT_DEF): Tidy.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 31 Mar 2002 11:50:43 +0000 (11:50 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 31 Mar 2002 11:50:43 +0000 (11:50 +0000)
        (ASM_OUTPUT_DEF_FROM_DECLS): New.

        * gcc.dg/special/alias-2.c: New.
        * gcc.dg/special/ecos.exp: Run it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@51650 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/alpha/elf.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/special/alias-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/special/ecos.exp

index f49d14c..04e7f56 100644 (file)
@@ -1,5 +1,11 @@
 2002-03-31  Richard Henderson  <rth@redhat.com>
 
+       PR target/3997
+       * config/alpha/elf.h (ASM_OUTPUT_DEF): Tidy.
+       (ASM_OUTPUT_DEF_FROM_DECLS): New.
+
+2002-03-31  Richard Henderson  <rth@redhat.com>
+
        * libgcc2.c (__bb_exit_func): Make static.
 
         * config/alpha/alpha.md (trap): New.
index 8878eda..05853c2 100644 (file)
@@ -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
index abf2c20..cec193e 100644 (file)
@@ -1,5 +1,10 @@
 2002-03-31  Richard Henderson  <rth@redhat.com>
 
+       * gcc.dg/special/alias-2.c: New.
+       * gcc.dg/special/ecos.exp: Run it.
+
+2002-03-31  Richard Henderson  <rth@redhat.com>
+
        * gcc.dg/va-arg-1.c: Expect warnings, not errors.
 
 2002-03-31  Kazu Hirata  <kazu@hxi.com>
diff --git a/gcc/testsuite/gcc.dg/special/alias-2.c b/gcc/testsuite/gcc.dg/special/alias-2.c
new file mode 100644 (file)
index 0000000..5dd9f53
--- /dev/null
@@ -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 ();
+}
index 56995cd..b887502 100644 (file)
@@ -94,6 +94,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
 ###########