public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: Nick Clifton <nickc@redhat.com>
To: Jan Beulich <jbeulich@suse.com>, Alan Modra <amodra@gmail.com>
Cc: Palmer Dabbelt <palmer@dabbelt.com>,
	Andrew Waterman <andrew@sifive.com>,
	Jim Wilson <jim.wilson.gcc@gmail.com>,
	Nelson Chu <nelson@rivosinc.com>,
	Binutils <binutils@sourceware.org>
Subject: Re: [PATCH RFC] RISC-V: alter the special character used in FAKE_LABEL_NAME
Date: Mon, 13 Mar 2023 12:06:41 +0000	[thread overview]
Message-ID: <a1e96518-35bb-d034-c487-2a06799d25ab@redhat.com> (raw)
In-Reply-To: <9f769d26-f51c-4f85-f61b-330226c1cc2d@suse.com>

Hi Jan,

> On 10.03.2023 10:36, Jan Beulich via Binutils wrote:
>> Considering the special casing of FAKE_LABEL_CHAR in read_symbol_name()
>> and get_symbol_name() I wonder in how far LOCAL_LABEL_CHAR and/or
>> DOLLAR_LABEL_CHAR don't also need recognizing there (and then also be
>> marked in lex[] just like done here). I can't point out a specific case
>> though where there could be a problem.
>>
>> The checking for *_LABEL_CHAR in S_IS_LOCAL() looks to collide with uses
>> of these characters in quoted symbol names.
> 
> while the rest of the open questions is RISC-V specific, these two items
> are not, and since from the title I suppose you may not notice the generic
> aspects here, I thought I'd point them out explicitly. Just in case you
> have any thoughts there (if you don't, I'm not sure how to progress).

Thanks for bringing this up, and you are right, I had not noticed these
generic questions.  My thoughts on this topic are as follows:

I think that the intention of FAKE_LABEL_CHAR is to allow backends to
generate labels contains characters that are not normally accepted as
part of a label's name, but which nevertheless should be treated as if
they were real user-provided names.  The LOCAL_LABEL_CHAR and
DOLLAR_LABEL_CHAR characters on the other hand are intended solely for
internal assembler use and should never appear in user-generated, or
backend-generated labels.  Hence it makes sense to check for
FAKE_LABEL_CHAR to be checked in functions that read user labels
(read.c:read_symbol_name(), expr.c:get_symbol_name()) and it also makes
sense to not check for - and by implication, reject - LOCAL_LABEL_CHAR
and DOLLAR_LABEL_CHAR.

There is a special case however.  If a backend does not define
FAKE_LABEL_NAME (and FAKE_LABEL_CHAR) then write.h will define them
instead and it will use the same default character as DOLLAR_LABEL_CHAR.
I am not sure why this was done, possibly it was a mistake - it might
have been better to use a different control character, eg '\0003' instead.
Anyway, the header is written that way at the moment, and this is why
there is a (not actually needed) check in S_IS_LOCAL() for DOLLAR_LABEL_
CHAR and FAKE_LABEL_CHAR being the same.

So in conclusion, I think that unless a backend wants to use a control
character as a fake label name character, there should be no problems.

Cheers
   Nick



  reply	other threads:[~2023-03-13 12:06 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-10  9:36 Jan Beulich
2023-03-10  9:40 ` Jan Beulich
2023-03-13 12:06   ` Nick Clifton [this message]
2023-03-13 12:52     ` Jan Beulich
2023-03-13 14:25       ` Nick Clifton
2023-03-13 15:57         ` Jan Beulich
2023-03-15 11:08           ` Nick Clifton
2023-03-15 15:45             ` Jan Beulich
2023-03-15 16:05 ` Palmer Dabbelt
2023-03-16 10:35   ` Jan Beulich
2023-03-30 12:01 ` Jan Beulich
2023-08-04 12:04   ` Jan Beulich

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=a1e96518-35bb-d034-c487-2a06799d25ab@redhat.com \
    --to=nickc@redhat.com \
    --cc=amodra@gmail.com \
    --cc=andrew@sifive.com \
    --cc=binutils@sourceware.org \
    --cc=jbeulich@suse.com \
    --cc=jim.wilson.gcc@gmail.com \
    --cc=nelson@rivosinc.com \
    --cc=palmer@dabbelt.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).