[LLVMdev] funny llvm bug

Joerg Sonnenberger joerg at britannica.bec.de
Fri Apr 19 02:48:16 PDT 2013


On Fri, Apr 19, 2013 at 04:38:20PM +0700, Serge Pavlov wrote:
> This is a feature (or bug) of MCSectionELF::PrintSwitchToSection. For
> ELF target this function tries to escape string if it founds
> 'suspicious' character, see implementation in MCSectionELF.cpp:
> 
>   StringRef name = getSectionName();
>   if (name.find_first_not_of("0123456789_."
>                              "abcdefghijklmnopqrstuvwxyz"
>                              "ABCDEFGHIJKLMNOPQRSTUVWXYZ") == name.npos) {
>     OS << "\t.section\t" << name;
>   } else {
>     OS << "\t.section\t\"";
> 
> As section "name" is something like .mySection,\"aw\", at progbits# ,
> this method puts all the string in quotes.
> Other targets (COFF and MachO) doesn't have such treatment.
> 
> If looks like the code that transforms section names should be
> removed. Does anybody know what this transformation is for?

It is exactly intended to handle section names as what they are --
section names. The only reason it works with GCC is because it writes an
assembler stream.

reed: correct use is to declare the section with inline asm first with
the desired attributes, followed by .previous to reset the old section.

Joerg



More information about the llvm-dev mailing list