<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Jan 10, 2018 at 9:04 AM, Rafael Avila de Espindola 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"><span class="">Saleem Abdulrasool via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> writes:<br>
<br>
>> On Jan 9, 2018, at 2:32 AM, James Henderson <<a href="mailto:jh7370.2008@my.bristol.ac.uk">jh7370.2008@my.bristol.ac.uk</a>> wrote:<br>
>><br>
>> By my understanding, the proposal is that the user input looks something like:<br>
>><br>
>> #pragma linker_directive("lib", "m")<br>
>><br>
>> which is passed essentially as is to the linker, i.e. the directive payload is a pair of strings, the first being "lib", the second "m". It is then up to the linker to decide if it supports "lib" directives, and translate that into the corresponding command, or do something else if it doesn't support it, e.g. emit an error or ignore it. Neither the backend nor the frontend need to do any conversion, and it makes it much clearer that these aren't like any other command-line option (due to the limited set that can be passed through, and the possible differences in behaviour, such as order on the command-line).<br>
>><br>
>> As an aside, this approach would aid portability to linkers that aren't command-line compatible with one another. If, for example, the switch is "-lib" on linker A, and "-l" on linker B, the user doesn't have to have different source code for each different linker their object is to be consumed by, nor does the compiler have to know about the different possible linkers.<br>
><br>
> Okay, that seems reasonable enough.  I think I still like the simplicity of having it just be like a response file, but, this approach isn’t too bad for adding custom extensions to.  I do like that it gives greater portability to different linkers.<br>
><br>
> The one last bit that still remains unanswered is the encoding.  Do we go forward with the abuse of the ELF notes or do is there enough confidence that adding a new section type shouldn’t break compatibility with older linkers?<br>
<br>
</span>Given how ELF works I would expect an unknown section to simply end up<br>
in the output, but we can use SHF_EXCLUDE to avoid that.<br>
<br>
So +1 for a new section type.<br></blockquote><div><br></div><div>+1</div><div><br></div><div>I feel .note sections (in particular .note.gnu namespace) are used too casually. Once this proposal is accepted and implemented, we'll live with that until ELF dies, so defining a new section type and then name the section ".linker-options" or something without ".note." prefix and the note section header seems better.</div></div></div></div>