public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Julian Brown <julian@codesourcery.com>
To: Andrew Stubbs <ams@codesourcery.com>
Cc: Richard Biener <richard.guenther@gmail.com>,
	Jeff Law <law@redhat.com>,	Jan Hubicka <hubicka@ucw.cz>,
	GCC Patches <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH 03/25] Improve TARGET_MANGLE_DECL_ASSEMBLER_NAME.
Date: Wed, 12 Sep 2018 17:39:00 -0000	[thread overview]
Message-ID: <20180912133406.6550a506@squid.athome> (raw)
In-Reply-To: <dfd97dc5-30bd-eb0b-6229-e3875695f95f@codesourcery.com>

On Wed, 12 Sep 2018 17:31:58 +0100
Andrew Stubbs <ams@codesourcery.com> wrote:

> On 12/09/18 16:16, Richard Biener wrote:
> > I think the symptom GCN sees needs to be better understood - like
> > wheter it is generally OK to mangle things arbitrarily.  
> 
> The name mangling is a horrible workaround for a bug in the HSA
> runtime code (which we do not own, cannot fix, and would want to
> support old versions of anyway).  Basically it refuses to load any
> binary that has the same symbol as another, already loaded, binary,
> regardless of the symbol's linkage.  Worse, it also rejects any
> binary that has duplicate symbols within it, despite the fact that it
> already linked just fine.
> 
> Adding the extra lookups is enough to build GCN binaries, with
> mangled names, whereas the existing name mangling support was either
> more specialized or bit rotten (I don't know which).
> 
> It may well be that there's a better way to solve the problem, or at 
> least to do the lookups.
> 
> It may also be that there are some unintended consequences, such as 
> false name matches, but I don't know of any at present.
> 
> Julian, can you comment, please?

I did the local-symbol name mangling in two places:

- The ASM_FORMAT_PRIVATE_NAME macro (good for local statics)
- The TARGET_MANGLE_DECL_ASSEMBLER_NAME hook (for file-scope
  local/statics)

Possibly, this was an abuse of these hooks, but it's arguably wrong that
that e.g. handle_alias_pairs has the "assembler name" leak through into
the user's source code -- if it's expected that the hook could make
arbitrary transformations to the string. (The latter hook is only used
by PE code for x86 at present, by the look of it, and the default
handles only special-purpose mangling indicated by placing a '*' at the
front of the symbol.)

I couldn't find an existing place where the DECL_NAMEs for symbols were
indexed in a hash table, equivalent to the table for assembler names.
Aliases are made via pragmas, so it's not 100% clear to me what the
scoping/lookup rules are supposed to be for those anyway, nor what the
possibility or consequences might be of false matches.

(The "!target" case in maybe_apply_pending_pragma_weaks, if it doesn't
somehow make a false match, just slows down reporting of an error a
little, I think. Similarly in handle_alias_pairs.)

If we had a symtab_node::get_for_name () using a suitable hash table, I
think it'd probably be right to use that. Can that be done (easily), or
is there some equivalent way? Introducing a new hash table everywhere
for a bug workaround for a relatively obscure feature on a single
target seems unfortunate.

Thanks,

Julian

  reply	other threads:[~2018-09-12 17:34 UTC|newest]

Thread overview: 187+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-05 11:49 [PATCH 00/25] AMD GCN Port ams
2018-09-05 11:49 ` [PATCH 02/25] Propagate address spaces to builtins ams
2018-09-20 13:09   ` Richard Biener
2018-09-22 19:22   ` Andreas Schwab
2018-09-24 16:53     ` Andrew Stubbs
2018-09-24 17:40       ` Andreas Schwab
2018-09-25 14:27     ` [patch] Fix AArch64 ILP ICE Andrew Stubbs
2018-09-26  8:55       ` Andreas Schwab
2018-09-26 13:39       ` Richard Biener
2018-09-26 16:17         ` Andrew Stubbs
2019-09-03 14:01   ` [PATCH 02/25] Propagate address spaces to builtins Kyrill Tkachov
2019-09-03 15:00     ` Jeff Law
2019-09-04 14:21       ` Kyrill Tkachov
2019-09-04 15:29         ` Kyrill Tkachov
2019-09-03 15:43     ` Andrew Stubbs
2018-09-05 11:49 ` [PATCH 04/25] SPECIAL_REGNO_P ams
2018-09-05 12:21   ` Joseph Myers
2018-09-11 22:42   ` Jeff Law
2018-09-12 11:30     ` Andrew Stubbs
2018-09-13 10:03       ` Andrew Stubbs
2018-09-13 14:14         ` Andrew Stubbs
2018-09-13 14:39           ` Paul Koning
2018-09-13 14:49             ` Andrew Stubbs
2018-09-13 14:58               ` Paul Koning
2018-09-13 15:22                 ` Andrew Stubbs
2018-09-13 17:13                   ` Paul Koning
2018-09-17 22:59           ` Jeff Law
2018-10-04 19:13         ` Jeff Law
2018-09-12 15:31   ` Richard Henderson
2018-09-12 16:14     ` Andrew Stubbs
2018-09-05 11:49 ` [PATCH 05/25] Add sorry_at diagnostic function ams
2018-09-05 13:39   ` David Malcolm
2018-09-05 13:41     ` David Malcolm
2018-09-11 10:30       ` Andrew Stubbs
2018-09-05 11:49 ` [PATCH 01/25] Handle vectors that don't fit in an integer ams
2018-09-05 11:54   ` Jakub Jelinek
2018-09-14 16:03   ` Richard Sandiford
2018-11-15 17:20     ` Andrew Stubbs
2018-09-05 11:50 ` [PATCH 07/25] [pr82089] Don't sign-extend SFV 1 in BImode ams
2018-09-17  8:46   ` Richard Sandiford
2018-09-26 15:52     ` Andrew Stubbs
2018-09-26 16:49       ` Richard Sandiford
2018-09-27 12:20         ` Andrew Stubbs
2018-09-05 11:50 ` [PATCH 09/25] Elide repeated RTL elements ams
2018-09-11 22:46   ` Jeff Law
2018-09-12  8:47     ` Andrew Stubbs
2018-09-12 15:14       ` Jeff Law
2018-09-19 17:25     ` Andrew Stubbs
2018-09-20 11:42       ` Andrew Stubbs
2018-09-26 16:23         ` Andrew Stubbs
2018-10-04 18:24         ` Jeff Law
2018-10-11 14:28           ` Andrew Stubbs
2018-09-05 11:50 ` [PATCH 06/25] Remove constant vec_select restriction ams
2018-09-11 22:44   ` Jeff Law
2018-09-05 11:50 ` [PATCH 08/25] Fix co-array allocation ams
     [not found]   ` <7f5064c3-afc6-b7b5-cade-f03af5b86331@moene.org>
2018-09-05 18:07     ` Janne Blomqvist
2018-09-19 16:38       ` Andrew Stubbs
2018-09-19 22:27         ` Damian Rouson
2018-09-19 22:55           ` Andrew Stubbs
2018-09-20  1:21             ` Damian Rouson
2018-09-20 20:49           ` Thomas Koenig
2018-09-20 20:59             ` Damian Rouson
2018-09-21  7:38             ` Toon Moene
2018-09-23 11:57               ` Janne Blomqvist
2018-09-21 16:37             ` OpenCoarrays integration with gfortran Jerry DeLisle
2018-09-21 19:37               ` Janne Blomqvist
2018-09-21 19:44               ` Richard Biener
2018-09-21 20:25               ` Damian Rouson
2018-09-22  3:47                 ` Jerry DeLisle
2018-09-23 10:41                   ` Toon Moene
2018-09-23 18:03                     ` Bernhard Reutner-Fischer
2018-09-24 11:14                     ` Alastair McKinstry
2018-09-27 12:51                       ` Richard Biener
2018-09-20 15:59         ` [PATCH 08/25] Fix co-array allocation Janne Blomqvist
2018-09-20 16:37           ` Andrew Stubbs
2018-09-05 11:50 ` [PATCH 10/25] Convert BImode vectors ams
2018-09-05 11:56   ` Jakub Jelinek
2018-09-05 12:05   ` Richard Biener
2018-09-05 12:40     ` Andrew Stubbs
2018-09-05 12:44       ` Richard Biener
2018-09-11 14:36         ` Andrew Stubbs
2018-09-12 14:37           ` Richard Biener
2018-09-17  8:51   ` Richard Sandiford
2018-09-05 11:50 ` [PATCH 03/25] Improve TARGET_MANGLE_DECL_ASSEMBLER_NAME ams
2018-09-11 22:56   ` Jeff Law
2018-09-12 14:43     ` Richard Biener
2018-09-12 15:07       ` Jeff Law
2018-09-12 15:16         ` Richard Biener
2018-09-12 16:32           ` Andrew Stubbs
2018-09-12 17:39             ` Julian Brown [this message]
2018-09-15  6:01               ` Julian Brown
2018-09-19 15:23                 ` Julian Brown
2018-09-20 12:36                   ` Richard Biener
2018-09-05 11:50 ` [PATCH 12/25] Make default_static_chain return NULL in non-static functions ams
2018-09-17 18:55   ` Richard Sandiford
2018-09-28 14:23     ` Andrew Stubbs
2018-09-05 11:51 ` [PATCH 13/25] Create TARGET_DISABLE_CURRENT_VECTOR_SIZE ams
2018-09-17 19:31   ` Richard Sandiford
2018-09-18  9:02     ` Andrew Stubbs
2018-09-18 11:30       ` Richard Sandiford
2018-09-18 20:27         ` Andrew Stubbs
2018-09-19 13:46           ` Richard Biener
2018-09-28 12:48             ` Andrew Stubbs
2018-10-01  8:05               ` Richard Biener
2018-09-05 11:51 ` [PATCH 14/25] Disable inefficient vectorization of elementwise loads/stores ams
2018-09-17  9:16   ` Richard Sandiford
2018-09-17  9:54     ` Andrew Stubbs
2018-09-17 12:40       ` Richard Sandiford
2018-09-17 12:46         ` Andrew Stubbs
2018-09-20 13:01           ` Richard Biener
2018-09-20 13:51             ` Richard Sandiford
2018-09-20 14:14               ` Richard Biener
2018-09-20 14:22                 ` Richard Sandiford
2018-09-05 11:51 ` [PATCH 17/25] Fix Fortran STOP ams
     [not found]   ` <c0630914-1252-1391-9bf9-f03434d46f5a@moene.org>
2018-09-05 18:09     ` Janne Blomqvist
2018-09-12 13:56       ` Andrew Stubbs
2018-09-05 11:51 ` [PATCH 18/25] Fix interleaving of Fortran stop messages ams
     [not found]   ` <994a9ec6-2494-9a83-cc84-bd8a551142c5@moene.org>
2018-09-05 18:11     ` Janne Blomqvist
2018-09-12 13:55       ` Andrew Stubbs
2018-09-05 11:51 ` [PATCH 15/25] Don't double-count early-clobber matches ams
2018-09-17  9:22   ` Richard Sandiford
2018-09-27 22:54     ` Andrew Stubbs
2018-10-04 22:43       ` Richard Sandiford
2018-10-22 15:36         ` Andrew Stubbs
2018-09-05 11:51 ` [PATCH 11/25] Simplify vec_merge according to the mask ams
2018-09-17  9:08   ` Richard Sandiford
2018-09-20 15:44     ` Andrew Stubbs
2018-09-26 16:26       ` Andrew Stubbs
2018-09-26 16:50       ` Richard Sandiford
2018-09-26 17:06         ` Andrew Stubbs
2018-09-27  7:28           ` Richard Sandiford
2018-09-27 14:13             ` Andrew Stubbs
2018-09-27 16:28               ` Richard Sandiford
2018-09-27 21:14                 ` Andrew Stubbs
2018-09-28  8:42                   ` Richard Sandiford
2018-09-28 13:50                     ` Andrew Stubbs
2019-02-22  3:40                       ` H.J. Lu
2018-09-05 11:51 ` [PATCH 16/25] Fix IRA ICE ams
2018-09-17  9:36   ` Richard Sandiford
2018-09-18 22:00     ` Andrew Stubbs
2018-09-20 12:47       ` Richard Sandiford
2018-09-20 13:36         ` Andrew Stubbs
2018-09-05 11:52 ` [PATCH 24/25] Ignore LLVM's blank lines ams
2018-09-14 16:19   ` Jeff Law
2020-03-23 15:29     ` Thomas Schwinge
2020-03-24 21:05       ` Thomas Schwinge
2018-09-05 11:52 ` [PATCH 22/25] Add dg-require-effective-target exceptions ams
2018-09-17  9:40   ` Richard Sandiford
2018-09-17 17:53   ` Mike Stump
2018-09-20 16:10     ` Andrew Stubbs
2018-09-05 11:52 ` [PATCH 20/25] GCN libgcc ams
2018-09-05 12:32   ` Joseph Myers
2018-11-09 18:49   ` Jeff Law
2018-11-12 12:01     ` Andrew Stubbs
2018-09-05 11:52 ` [PATCH 19/25] GCN libgfortran ams
     [not found]   ` <41281e27-ad85-e50c-8fed-6f4f6f18289c@moene.org>
2018-09-05 18:14     ` Janne Blomqvist
2018-09-06 12:37       ` Andrew Stubbs
2018-09-11 22:47   ` Jeff Law
2018-09-05 11:52 ` [PATCH 23/25] Testsuite: GCN is always PIE ams
2018-09-14 16:39   ` Jeff Law
2018-09-05 11:53 ` [PATCH 25/25] Port testsuite to GCN ams
2018-09-05 13:40 ` [PATCH 21/25] GCN Back-end (part 1/2) Andrew Stubbs
2018-11-09 19:11   ` Jeff Law
2018-11-12 12:13     ` Andrew Stubbs
2018-09-05 13:43 ` [PATCH 21/25] GCN Back-end (part 2/2) Andrew Stubbs
2018-09-05 14:22   ` Joseph Myers
2018-09-05 14:35     ` Andrew Stubbs
2018-09-05 14:44       ` Joseph Myers
2018-09-11 16:25         ` Andrew Stubbs
2018-09-11 16:41           ` Joseph Myers
2018-09-12 13:42     ` Andrew Stubbs
2018-09-12 15:32       ` Joseph Myers
2018-09-12 16:46         ` Andrew Stubbs
2018-09-12 16:50           ` Joseph Myers
2018-11-09 19:40   ` Jeff Law
2018-11-12 12:53     ` Andrew Stubbs
2018-11-12 17:20       ` Segher Boessenkool
2018-11-12 17:52         ` Andrew Stubbs
2018-11-12 18:33           ` Segher Boessenkool
2018-11-12 18:55           ` Jeff Law
2018-11-13 10:23             ` Andrew Stubbs
2018-11-13 10:33               ` Segher Boessenkool
2018-11-16 16:10             ` Segher Boessenkool
2018-11-17 14:07               ` Segher Boessenkool
2018-11-14 22:31       ` Jeff Law
2018-11-15  9:55         ` Andrew Stubbs
2018-11-16 13:33           ` Andrew Stubbs

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180912133406.6550a506@squid.athome \
    --to=julian@codesourcery.com \
    --cc=ams@codesourcery.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=hubicka@ucw.cz \
    --cc=law@redhat.com \
    --cc=richard.guenther@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).