[llvm-dev] LLD handling of orphaned sections

George Rimar via llvm-dev llvm-dev at lists.llvm.org
Fri Jun 21 05:41:46 PDT 2019


> I think it would be helpful if we could come up with some user-level
> documentation on the intentional differences between LLD and GNU ld,
> particularly in the less well specified areas like orphan section
> assignment

I agree. As we all know even GNU ld and GNU gold can
layout the sections differently. And when a question like "what is the differences
between LLD and GNU ld in this part" arise, I afraid I do not have a good answer.
We have a more or less clear documented general heuristics that usually work,
but also had to implement/fix too many corner cases probably.

Having a documentation about this would be great I think.

(My general suggestion for people is usually: try to avoid having orphans if you can.
I know that is not always can be a solution though.)

Best regards,
George | Developer | Access Softek, Inc

________________________________________
От: Peter Smith <peter.smith at linaro.org>
Отправлено: 21 июня 2019 г. 15:27
Кому: Rui Ueyama
Копия: Roger Pau Monné; George Rimar; llvm-dev
Тема: Re: [llvm-dev] LLD handling of orphaned sections

CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.  If you suspect potential phishing or spam email, report it to ReportSpam at accesssoftek.com

On Fri, 21 Jun 2019 at 13:05, Rui Ueyama via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
>
> I think Geroge (cc'ed) knows better than me in that area.
>
> lld is underdocumented, and in particular there is virtually no documentation about its linker script support. Our basic strategy is to follow the GNU's documentation and the implementations unless it is too hard or doesn't match with the rest of lld. So, as long as it works just like GNU, it's fine, but if not, it is hard to say whether it is intended or not, just as you explained. This is an area that we need to improve.
>

I think it would be helpful if we could come up with some user-level
documentation on the intentional differences between LLD and GNU ld,
particularly in the less well specified areas like orphan section
assignment and program header generation. I think we'd have to be very
careful with what we wrote down though, to a first approximation we
have differences that are intentional or non-intentional; and on a
separate axis differences that are stable or subject to change. We'd
want to concentrate on documenting differences that are intentional
and stable, such as back references being allowed in library
selection.

If there is interest in working this out I'm willing to start a list
of the differences, whether it is in the document or just a text file
alongside the source. It is something that could be built up
incrementally and over time we can identify the stable differences?

Peter

> On Thu, Jun 20, 2019 at 11:18 PM Roger Pau Monné via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>>
>> Hello,
>>
>> The handling of orphaned sections in LLD 8 has changed from GNU LD
>> behavior (note that LLD 7 didn't show this behavior). I've reported
>> this as:
>>
>> https://bugs.llvm.org/show_bug.cgi?id=42327
>>
>> It's not clear to me however whether this is intentional or a
>> regression when compared to LLD 7.
>>
>> As stated in that bug report it would be helpful for me to get some
>> kind of documentation that describes LLD intended handling of orphaned
>> sections, so that I can justify fixes in order to support LLD, and
>> that I can be sure what I modify is going to be robust against future
>> changes in LLD. For example GNU LD has:
>>
>> https://sourceware.org/binutils/docs/ld/Orphan-Sections.html
>>
>> Having something like this for LLD (if it's going to diverge from GNU
>> LD behavior) would be very helpful, and would allow me to implement
>> future proof support for LLD in Xen.
>>
>> Thanks, Roger.
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


More information about the llvm-dev mailing list