From patchwork Fri Dec 16 15:52:46 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tristan Gingold X-Patchwork-Id: 131859 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 937251007DD for ; Sat, 17 Dec 2011 02:53:11 +1100 (EST) Received: (qmail 23050 invoked by alias); 16 Dec 2011 15:53:04 -0000 Received: (qmail 23036 invoked by uid 22791); 16 Dec 2011 15:53:02 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from mel.act-europe.fr (HELO mel.act-europe.fr) (194.98.77.210) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 16 Dec 2011 15:52:48 +0000 Received: from localhost (localhost [127.0.0.1]) by filtered-smtp.eu.adacore.com (Postfix) with ESMTP id 67110CB1AF3 for ; Fri, 16 Dec 2011 16:52:48 +0100 (CET) Received: from mel.act-europe.fr ([127.0.0.1]) by localhost (smtp.eu.adacore.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id sgjZGfw5aGrZ for ; Fri, 16 Dec 2011 16:52:48 +0100 (CET) Received: from ulanbator.act-europe.fr (ulanbator.act-europe.fr [10.10.1.67]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by mel.act-europe.fr (Postfix) with ESMTP id 55632CB1AEF for ; Fri, 16 Dec 2011 16:52:48 +0100 (CET) From: Tristan Gingold Subject: [Patch]: vms/alpha: avoid writing directly symbol names Date: Fri, 16 Dec 2011 16:52:46 +0100 Message-Id: <7DCD8EAE-A31D-42CB-A640-186A9F32D3B3@adacore.com> To: GCC Patches Mime-Version: 1.0 (Apple Message framework v1251.1) X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Now that transparent aliases are heavily used by VMS to translate names, we shouldn't directly emit symbol name but use assemble_name. This patch fixes some abuse. Committed on trunk. Tristan. 2011-12-16 Tristan Gingold * config/alpha/alpha.c (alpha_use_linkage): Follow transparent alias. (alpha_write_one_linkage): Use assemble_name to emit linkage name. Index: config/alpha/alpha.c =================================================================== --- config/alpha/alpha.c (revision 182404) +++ config/alpha/alpha.c (working copy) @@ -9541,10 +9541,20 @@ { size_t buf_len; char *linksym; + tree id; if (name[0] == '*') name++; + /* Follow transparent alias, as this is used for CRTL translations. */ + id = maybe_get_identifier (name); + if (id) + { + while (IDENTIFIER_TRANSPARENT_ALIAS (id)) + id = TREE_CHAIN (id); + name = IDENTIFIER_POINTER (id); + } + buf_len = strlen (name) + 8 + 9; linksym = (char *) alloca (buf_len); snprintf (linksym, buf_len, "$%d..%s..lk", cfun->funcdef_no, name); @@ -9577,7 +9587,7 @@ if (link->rkind == KIND_CODEADDR) { /* External and used, request code address. */ - fprintf (stream, "\t.code_address %s\n", name); + fprintf (stream, "\t.code_address "); } else { @@ -9586,14 +9596,16 @@ { /* Locally defined, build linkage pair. */ fprintf (stream, "\t.quad %s..en\n", name); - fprintf (stream, "\t.quad %s\n", name); + fprintf (stream, "\t.quad "); } else { /* External, request linkage pair. */ - fprintf (stream, "\t.linkage %s\n", name); + fprintf (stream, "\t.linkage "); } } + assemble_name (stream, name); + fputs ("\n", stream); return 0; }