Print Global Prefix Issue

Hey,

I have an odd problem with printing prefixed global symbols in my AsmPrinter.

In my MCAsmInfo subclass implementation, I set

GlobalPrefix = “%”;

because my assembler needs this to avoid name collisions.
Now, whenever a global symbol (be it a label, mbb operand ,etc.) gets printed, it is encapsulated in quotes.
With other chars than ‘%’ everything is okay…

I also explicitly set AllowQuotesInName = false (which should be the default).

Here is a shortened output example:

.file “main.c”
.text
.global “%main”
.align 4
.type “%main”,@function
“%main”:
[…]
.Ltmp0:
.size “%main”, .Ltmp0-"%main"

Is this working as intended? Because I really need to use the percent as prefix and can’t have the quotes in the symbol name.

Greetings, Jan

Hey,

I have an odd problem with printing prefixed global symbols in my AsmPrinter.

In my MCAsmInfo subclass implementation, I set

GlobalPrefix = “%”;

because my assembler needs this to avoid name collisions.
Now, whenever a global symbol (be it a label, mbb operand ,etc.) gets printed, it is encapsulated in quotes.
With other chars than ‘%’ everything is okay…

I also explicitly set AllowQuotesInName = false (which should be the default).

Here is a shortened output example:

.file “main.c”
.text
.global “%main”
.align 4
.type “%main”,@function
“%main”:
[…]
.Ltmp0:
.size “%main”, .Ltmp0-"%main"

Is this working as intended? Because I really need to use the percent as prefix and can’t have the quotes in the symbol name.

Greetings, Jan

Sorry for bumping, but I’m no step further and would really appreciate some help with that!
Is there something special about the ‘%’ that leads to the quotation marks? If not, I assume it’s a bug or am I missing something?

Jan

Okay, I managed to find out that in MCSymbol all symbol names with chars containting not one of the following get quoted (independently of the AllowQuotesInName setting): static bool isAcceptableChar(char C) { if ((C < ‘a’ || C > ‘z’) && (C < ‘A’ || C > ‘Z’) && (C < ‘0’ || C > ‘9’) && C != ‘_’ && C != ‘$’ && C != ‘.’ && C != ‘@’) return false; return true; } If I add C!=’%’ there, it works fine for me. But, isn’t there any way to do this in a target-only manner, like overriding that existing implementation in a subclass? Jan