<div dir="ltr">People also try to use __attribute__((section(".mysection,\"rwx\",@progbits"))) to get executable code sections for toy experiments in self-modifying code, but we don't support that either. Basically, we take the section name and always quote it, unlike GCC, and I don't think we want to change that. Normally LLVM doesn't round trip through assembly, so it would be infeasible to attempt to interpret strings in section names in all the ways that GCC allows through to gas.<div><br></div><div>My advice for users in this situation would be to try the naked attribute again, since we've fixed several bugs around it in the last two years. If that doesn't work, adding a standalone assembly file to the project has always been and will continue to be the most reliable way to implement a function with a custom prologue.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 5, 2016 at 1:56 AM, Martin J. O'Riordan via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-IE" link="#0563C1" vlink="#954F72"><div class="m_-8144722783558360542WordSection1"><p class="MsoNormal"><span lang="EN-GB" style="font-size:12.0pt;font-family:"Book Antiqua",serif">I recently examined a bug in a program, and it turned out that the customer was using the section attribute as a form of inline-assembly mechanism, with something like:<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB" style="font-size:12.0pt;font-family:"Book Antiqua",serif"><u></u> <u></u></span></p><p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-GB" style="font-size:12.0pt;font-family:"Courier New"">__attribute__((section(“<wbr>sectionName\n<b>asm</b>\n<b>asm</b>\n<b>asm</b>”)))<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB" style="font-size:12.0pt;font-family:"Book Antiqua",serif"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB" style="font-size:12.0pt;font-family:"Book Antiqua",serif">this was really ugly and not at all obvious where the problem originated.  Is there any way of getting LLVM or CLang to validate the name used in the section attribute?  The GCC definition says that this only permits alpha-numeric characters, but I know that it is also very common for people to use ‘</span><span lang="EN-GB" style="font-size:12.0pt;font-family:"Courier New"">_</span><span lang="EN-GB" style="font-size:12.0pt;font-family:"Book Antiqua",serif">’ and ‘</span><span lang="EN-GB" style="font-size:12.0pt;font-family:"Courier New"">.</span><span lang="EN-GB" style="font-size:12.0pt;font-family:"Book Antiqua",serif">’ in section names so alpha-numeric checking is probably a bit over-zealous, but embedded newlines definitely should be considered suspicious.  Or perhaps there is an existing check in ‘</span><span lang="EN-GB" style="font-size:12.0pt;font-family:"Courier New"">clang-tidy</span><span lang="EN-GB" style="font-size:12.0pt;font-family:"Book Antiqua",serif">’?<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB" style="font-size:12.0pt;font-family:"Book Antiqua",serif"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB" style="font-size:12.0pt;font-family:"Book Antiqua",serif">The reason they were doing this in the first place, is that the ‘</span><span lang="EN-GB" style="font-size:12.0pt;font-family:"Courier New"">naked</span><span lang="EN-GB" style="font-size:12.0pt;font-family:"Book Antiqua",serif">’ attribute does not do what they want, which was to allow them to build custom prologue and epilogue code for a function.<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB" style="font-size:12.0pt;font-family:"Book Antiqua",serif"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB" style="font-size:12.0pt;font-family:"Book Antiqua",serif">Thanks,<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB" style="font-size:12.0pt;font-family:"Book Antiqua",serif"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB" style="font-size:12.0pt;font-family:"Book Antiqua",serif">            MartinO<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB" style="font-size:12.0pt;font-family:"Book Antiqua",serif"><u></u> <u></u></span></p></div></div><br>______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div>