Displaying 20 results from an estimated 11000 matches similar to: "Need to refactor relocation handlers in ELF LLD"
2016 Jan 21
2
Need to refactor relocation handlers in ELF LLD
On Thu, Jan 21, 2016 at 6:10 AM, Rafael Espíndola <
rafael.espindola at gmail.com> wrote:
> On 21 January 2016 at 04:11, Rui Ueyama <ruiu at google.com> wrote:
> > We have fairly large and complex code to handle relocations in
> Writer.cpp,
> > Target.cpp, OutputSections.cpp and InputSections.cpp. They started with
> > simple code, but because each patch added
2017 Mar 01
2
[lld] We call SymbolBody::getVA redundantly a lot...
On Tue, Feb 28, 2017 at 11:39 PM, Rui Ueyama <ruiu at google.com> wrote:
> I also did a quick profiling a few months ago and noticed just like you
> that scanRelocations consumes a fairly large percentage of overall
> execution time. That caught my attention because at the time I was looking
> for a place that I can parallelize.
>
> scanRelocations is not parallelizable
2016 Jun 21
2
[LLD] thunk implementation correctness depends on order of input section.
I've been working on supporting ARM/Thumb interworking thunks in LLD
and have encountered a limitation that I think it is worth bringing up
in a wider context. This is all LLD specific, apologies if I've abused
llvm-dev here.
TL;DR summary:
- Thunks in lld may not work if they are added to InputSections that
have already been scanned.
- There is a short term fix, but in the longer term I
2017 Mar 01
2
[lld] We call SymbolBody::getVA redundantly a lot...
On Tue, Feb 28, 2017 at 12:10 PM, Rui Ueyama <ruiu at google.com> wrote:
> I don't think getVA is particularly expensive, and if it is not expensive
> I wouldn't cache its result. Did you experiment to cache getVA results? I
> think you can do that fairly easily by adding a std::atomic_uint64_t to
> SymbolBody and use it as a cache for getVA.
>
You're right,
2016 Apr 27
4
RFC: LLD symbol table redesign
Hi all,
This proposes a redesign of LLD’s symbol table in order to improve memory
locality by minimizing indirection when resolving relocations. The key idea
is that we perform symbol resolution by overwriting SymbolBodies, rather
than by updating pointers. This is based on some ideas mentioned by Rafael
on IRC.
Conceptually, we split Symbol into a non-polymorphic part and a polymorphic
part (a
2016 Oct 19
2
LLD: creating linker-generated sections as input sections instead of output sections
I would suggest converting only part of linker generated sections to
input sections to reduce amount of code changes.
For example it's unlikely that SymbolTableSection or
StringTableSection would ever require such treatment, so why
converting them to input sections?
2016-10-19 11:03 GMT+03:00 George Rimar <grimar at accesssoftek.com>:
>>This idea popped up in the review thread
2016 Oct 19
3
LLD: creating linker-generated sections as input sections instead of output sections
On Wed, Oct 19, 2016 at 3:34 AM, Peter Smith via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> Thanks for the RFC.
>
> I'm in favour of the option of creating InputSections for some linker
> generated content. I think it would add extra flexibility to the
> linker. ARM's proprietary linker uses the equivalent of InputSections
> with a pseudo linker defined
2017 Sep 14
4
Do I need to modify the AddrLoc of LLD for ARC target?
Hello Leslie,
I think we are going to need to know a bit more about the ELF ABI for
what looks like the ArcCompact before we can help you.
LLD's calculation of P (the place to be relocated) is as it is in the
generic ELF specification. The Rel.Offset corresponds to the ELF
r_offset field. This is covered by: "For a relocatable file, the value
is the byte offset from the beginning of the
2017 Feb 28
4
[lld] We call SymbolBody::getVA redundantly a lot...
tl;dr: it looks like we call SymbolBody::getVA about 5x more times than we
need to
Should we cache it or something? (careful with threads).
Here is a link to a PDF of my Mathematica notebook which has all the
details of my investigation:
https://drive.google.com/open?id=0B8v10qJ6EXRxVDQ3YnZtUlFtZ1k
There seem to be two main regimes that we redundantly call
SymbolBody::getVA:
1. most
2017 Jul 11
8
[LLD] Linker Relaxation
Here's an example using the gcc toolchain for embedded 32 bit RISC-V (my
HiFive1 board):
#include <stdio.h>
int foo(int i){
if (i < 100){
printf("%d\n", i);
}
return i;
}
int main(){
foo(10);
return 0;
}
After compiling to a .o with -O2 -march=RV32IC we get (just looking at foo)
00000000 <foo>:
0: 1141 addi sp,sp,-16
2016 Feb 03
2
lld dynamic relocation creation issue
Hi all,
Working on lld aarch64 support I came across an issue where I am not sure which
would be best design approach to solve.
The aarch64 R_AARCH64_ABS64 relocation for PIC/PIE build requires a dynamic
relocation (R_AARCH64_RELATIVE) with the value set as the addend of the
relocation. For instance, when linking the crtbeginS.o which contains:
Relocation section '.rela.init_array' at
2017 Jan 04
5
RFC: LLD range extension thunks
I'm about to start working on range extension thunks in lld. This is
an attempt to summarize the approach I'd like to take and what the
impact will be on lld outside of thunks. I'm interested if anyone has
any constraints the approach will break, alternative suggestions, or
is working on something I'll need to take account of?
I expect range extension thunks to be important for
2017 Sep 18
1
Do I need to modify the AddrLoc of LLD for ARC target?
Hello Leslie,
I don't know quite what to say as I don't know precisely what your
question is? If I am not being precise enough please can you put some
explicit questions in? From what I can see in the output, here are
some comments.
>From your arc mapfiles it looks like that in the output both linker's
have given the .text output section the correct base address given the
2017 Sep 19
1
Do I need to modify the AddrLoc of LLD for ARC target?
Hello Leslie,
The errors coming from the gnu assembler are due to the file being
assembled in Arm state, to get rid of the errors you'll either need to
put a .thumb directive in the file, or pass -mthumb to the assembler
via arm-linux-gnu-gcc -Wa,-mthumb (I think).
I'm not able to explain what you are seeing in your print out as it
doesn't quite match the map file. Looking at your
2016 Jun 03
2
[RFC][LLD][ARM] Initial ARM port for LLD
Hello everyone,
The review http://reviews.llvm.org/D20951 implements initial support
for the ARM architecture in LLD. To keep the patch size down, and to
avoid the complexities of interworking between ARM and Thumb, there
is just enough support for an ARM only Hello World to link and run on
ARM Linux [*].
My main aim is to get this functionality committed as the basis of an
ARM port and would
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
2019 Dec 27
2
[LLD][ELF] Symbol/Relocation manipulation.
I'd like to convert the following
call A at GDPLT //R_HEX_GD_PLT_B22_PCREL
to
call __tls_get_addr //R_HEX_B22_PCREL
"A" is a TLS variable and preceding code has prepared for the call.
When the R_HEX_GD_PLT_B22_PCREL is found it will initially point to the TLS variable so at that point I'd like to define a __tls_get_addr symbol and update the relocation's type and symbol
2016 Oct 18
3
RFC: LLD: creating linker-generated sections as input sections instead of output sections
This idea popped up in the review thread for https://reviews.llvm.org/D25627
.
Problem:
Currently, LLD creates special sections that are not just concatenations of
input sections but need link-time data generation, such as .got, .plt,
interp, .mips.options, etc., as output sections. We have OutputSectionBase
subclasses (e.g. GotSection, PltSection, etc.) to create data. Even though
this scheme
2017 Jul 31
3
[RFC] Profile guided section layout
Hi Rafael,
On 07/31/2017 04:20 PM, Rafael Avila de Espindola via llvm-dev wrote:
> However, do we need to start with instrumentation? The original paper
> uses sampling with good results and current intel cpus can record every
> branch in a program.
>
> I would propose starting with just an lld patch that reads the call
> graph from a file. The format would be very similar to
2017 Mar 10
3
[ELF] [RFC] Padding between executable sections
Hi,
I was doing some experiments with LLD and noticed that it pads out
OutputSections with null bytes in all cases (as far as I could tell).
However, for executable sections on some targets, 0x00 forms part of an
executable instruction that is not nop. In particular, for x86_64 targets
at least, the sequence 0x00 0x00 is an add instruction. This can result in
confusing disassembly.
For example,