Displaying 20 results from an estimated 12000 matches similar to: "[RFC] Making .eh_frame more linker-friendly"
2017 Oct 26
4
[RFC] Making .eh_frame more linker-friendly
No I haven't. Thank you for the pointer.
Looks like the problem of the inverted edges was discussed there. But I
guess my bigger question is this: why do we still create one big .eh_frame
even if -ffunction-sections is given?
When the option is given, Clang creates .text, .rela.text and
.gcc_exception_table sections for each function, but it still creates a
monolithic .eh_frame that covers
2017 Oct 26
4
[RFC] Making .eh_frame more linker-friendly
Hi,
There will be problems with eh_frame_hdr. Eh_frame_hdr is needed to use the binary search instead of the linear search. Having eh_frame per a function will cause no eh_frame_hdr or multiple eh_frame_hdr and will degrade search from binary to linear.
As we create eh_frame_hdr in most cases there is no problem to filter out garbage eh_frame sections. If there is information about unused
2017 Nov 21
2
[RFC] Making .eh_frame more linker-friendly
>Thank you for taking a look. I think that the answer depends on how much slower GNU linkers are with separate .eh_frame sections. If it is not too slow, it may make >sense to generate split .eh_frame sections unconditionally. Otherwise, we might want to add a new option so that clang doesn't produce split .eh_frame sections by >default.
I'll start investigating the
2017 Nov 20
3
[RFC] Making .eh_frame more linker-friendly
>Keeping .eh_frame separated should still simplifies the linker because
>until the last step of building .eh_frame and .eh_frame_hdr, we don't
>really need to parse .eh_frame sections. So, if we have separate .eh_frame
>sections on -ffunction-sections, all we have to do is (1) garbage-collect
>sections and (2) construct .eh_frame and .eh_frame_hdr sections from live
2017 Nov 23
4
[RFC] Making .eh_frame more linker-friendly
I performed tests basing on first diff of https://reviews.llvm.org/D40352.
(Creates .eh_frame for each .text.*, sets SHF_LINK_ORDER and .sh_link of created
.eh_frame section to point to corresponding .text.)
With use of GNU ld (GNU Binutils) 2.29.51.20171006 it reports errors when linking sample apps:
~/LLVM/Release/bin/clang++ test.cpp -ffunction-sections -o test.o
/usr/local/bin/ld: .eh_frame
2017 Nov 29
2
[RFC] Making .eh_frame more linker-friendly
>> With GNU gold (GNU Binutils 2.29.51.20171006) 1.14 have an assert:
>> ~/LLVM/Release/bin/clang++ test.cpp -ffunction-sections -o test.o
>> /usr/local/bin/ld: internal error in layout_eh_frame_section, at
>> .././../gold/object.cc:1309
>> It is that place:
>> https://github.com/gittup/binutils/blob/gittup/gold/object.cc#L1372
>> Did not investigate it,
2017 Nov 10
2
[RFC] Making .eh_frame more linker-friendly
> But if we still need to deal with CIEs and generate .eh_frame_hdr in a special way,
> does it make sense to make this change to simplify only a small part of a linker?
For huge C++ projects this could improve link time if GC is a bottleneck. It will also improve eh_frame_hdr build time because you don’t spend time on parsing garbage. However a linker will have to have two versions of GC:
2017 Nov 29
0
[RFC] Making .eh_frame more linker-friendly
>>> With GNU gold (GNU Binutils 2.29.51.20171006) 1.14 have an assert:
>>> ~/LLVM/Release/bin/clang++ test.cpp -ffunction-sections -o test.o
>>> /usr/local/bin/ld: internal error in layout_eh_frame_section, at
>>> .././../gold/object.cc:1309
>>> It is that place:
>>> https://github.com/gittup/binutils/blob/gittup/gold/object.cc#L1372
2017 Nov 10
2
[RFC] Making .eh_frame more linker-friendly
Hi Igor,
> It sounds like the linker has to be aware of the .eh_frame section details to be able to generate .eh_frame_hdr and eliminate duplicate CIEs, right?
Yes, a linker needs some details but not all of them. It needs to know sizes of records and initial locations (PC Begin) to find out which functions FDEs belong to.
> So, is there any difference whether it knows that in one place
2017 Aug 15
3
[XRay] Alternatives to relocations in .text section
Hi llvm-dev,
I'm currently looking for alternatives to the synthetic references that XRay uses to keep some side-tables live, to avoid linker garbage collection from deleting those sections. Before going any further, let me give a backgrounder on what XRay does today.
Background
==========
XRay has two side tables we use at runtime to identify the location of the sleds for the functions
2020 Mar 26
2
[lld] RFC: Allow custom sections to be under GNU_RELRO
Hey,
We would like to propose an idea that would help security harden
applications that define custom sections.
Motivation and Background
In Chromium we have a garbage collector that implements some RTTI machinery
in the form of a table. This table is used by the collector to trace and
finalize garbage collected objects. We're thinking of using
__attribute__((section(...))) so that the table
2018 Mar 28
2
[RFC] Making .eh_frame more linker-friendly
I am very interested in reviving this.
Did anyone get any further with these ideas?
@Grimar: Did you do any profiling of the code? Were the slowdowns
you were seeing fundamental (i.e. due to IO) or could a more optimal
implementation reduce the slowdown? Did you do any end to end
timings for compilation + link time?
The same issues arise for all metadata sections:
.eh_frame
2020 Mar 27
2
[lld] RFC: Allow custom sections to be under GNU_RELRO
Peter,
Thanks for the great feedback!
> The first is the use of a custom suffix, all other linker conventions,
that I know of, use prefixes as these are much easier and faster to match
against names.
> This can be important in large programs compiled -ffunction-sections as
there can be millions of sections to match.
I understand the reason of having these conventions in linkers. On the
2018 Feb 06
0
[RFC] Add mergeable and eh_frame section pieces to map files and --print-gc/icf-sections reports
It seems that showing eh_frame section pieces in the map file is useful,
but I wonder what would be a concrete use case of the feature. Do you mind
if you ask you to describe your plan if you have a use case in mind?
On Tue, Feb 6, 2018 at 4:27 AM, James Henderson <
jh7370.2008 at my.bristol.ac.uk> wrote:
> Hi,
>
>
>
> We’d like to propose an extension to both the map file
2018 Feb 06
3
[RFC] Add mergeable and eh_frame section pieces to map files and --print-gc/icf-sections reports
Hi,
We’d like to propose an extension to both the map file and the
print-gc/icf-sections output. This extension would be to report the pieces
of .eh_frame and SHF_MERGE sections in these files somehow. Since all (or
at least the majority) of the contents of these sections in the output come
from inputs, it would be beneficial in trying to associate the output
contents with where they came from,
2018 Mar 28
0
[RFC] Making .eh_frame more linker-friendly
>@Grimar: Did you do any profiling of the code? Were the slowdowns
>you were seeing fundamental (i.e. due to IO) or could a more optimal
>implementation reduce the slowdown? Did you do any end to end
>timings for compilation + link time?
No, as far I remember I did not profile this. All results I had were about linker
timing for linking clang (posted in this thread).
I think the
2018 Apr 30
0
[RFC] Making .eh_frame more linker-friendly
I performed additional benchmarking today and also profiled this.
Previously I tried to link clang. I decided to take something much larger today.
So what I did was: took chromium sources and built 2 sets of objects.
One of them was built with vanilla clang and one with clang+https://reviews.llvm.org/D40352 patch applied.
As a result, the second set of object contained multiple .eh_frames (for
2020 Nov 04
3
Fragmented DWARF
Great, thanks! Those results are about roughly what I was expecting. I
assume "compilation time" is actually just the link time?
I find it particularly interesting that the DWARFLinker rewriting solution
produces the same size improvement in .debug_line as the fragmented DWARF
approach. That suggests that in that case, fragmented DWARF output is
probably about as optimal as it can get.
2020 Oct 12
2
Fragmented DWARF
Hi all,
At the recent LLVM developers' meeting, I presented a lightning talk on an
approach to reduce the amount of dead debug data left in an executable
following operations such as --gc-sections and duplicate COMDAT removal. In
that presentation, I presented some figures based on linking a game that
had been built by our downstream clang port and fragmented using the
described approach.
2014 Mar 20
2
[LLVMdev] So what's the deal with debug_frame V eh_frame
On Thu, Mar 20, 2014 at 10:41 AM, Rafael Espíndola
<rafael.espindola at gmail.com> wrote:
> On 19 March 2014 17:31, David Blaikie <dblaikie at gmail.com> wrote:
>> While comparing debug info between GCC and Clang I found a section
>> that only Clang produces and GCC never produces: debug_frame.
>>
>> It seems (though I haven't verified this with absolute