| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
| |
We were creating undefined atoms for common symbols by mistake. That did not
lead to a link failure, for undefined atoms would be resolved by common symbols
in the same file, but that's a waste of resource.
llvm-svn: 189534
|
|
|
|
|
|
|
|
|
| |
We scanned the symbol table twice; first to gather all regular symbols, and
second to process aux symbols. That's a bit inefficient and complicated. We
can instead cache aux symbols in the first pass, to eliminate the need of the
second pass.
llvm-svn: 189525
|
|
|
|
|
|
| |
behavior.
llvm-svn: 189505
|
|
|
|
| |
llvm-svn: 189413
|
|
|
|
|
|
| |
Differential Revision: http://llvm-reviews.chandlerc.com/D1527
llvm-svn: 189318
|
|
|
|
| |
llvm-svn: 189310
|
|
|
|
| |
llvm-svn: 189308
|
|
|
|
|
|
|
|
|
| |
With this patch the entry symbol is treated as an undefined symbol, to force
the resolver to resolve the entry symbol.
Differential Revision: http://llvm-reviews.chandlerc.com/D1524
llvm-svn: 189307
|
|
|
|
|
|
|
| |
This should have been done in r187823 when I renamed LinkingContext
from TargetInfo. I missed a few files.
llvm-svn: 189298
|
|
|
|
|
|
| |
Patch by Jesús Serrano García.
llvm-svn: 189267
|
|
|
|
|
|
|
|
|
|
| |
The cleanup includes :-
* Rename ambiguous Header class to ELFHeader
* Convert Chunk contentype and kind to be a enumerated class
* Remove functions that are not being used, avoids future confusion
llvm-svn: 189209
|
|
|
|
| |
llvm-svn: 189207
|
|
|
|
| |
llvm-svn: 189197
|
|
|
|
|
|
|
|
| |
This change processes fini_array section in addition to processing
init_array sections. This also makes functions registered at compile
time for initialization and finalization to be run during execution
llvm-svn: 189196
|
|
|
|
|
|
|
|
|
| |
This completes the subsystem name parsing to support the identifiers that the
Microsoft link.exe linker supports. "windows" and "console" are left as the
first items as they are the expected common paths.
Signed-off-by: Saleem Abdulrasool <compnerd@compnerd.org>
llvm-svn: 189181
|
|
|
|
|
|
|
|
| |
in order to match link.exe's behaviour.
Patch by Ron Ofir.
llvm-svn: 189159
|
|
|
|
|
|
| |
Patch by Ron Ofir.
llvm-svn: 189151
|
|
|
|
|
|
|
|
| |
There may be relocations that may be pointing to the section
even if the section sizes are 0. We shouldnot ignore them
for that regard.
llvm-svn: 189139
|
|
|
|
|
|
|
| |
There is no change in functionality, this uses the defined way to access
the relocation section that belongs to a particular section.
llvm-svn: 189138
|
|
|
|
|
|
|
|
|
|
|
| |
typeTLV content type is used by Darwin to represent thread local
storage. A new contentType has to be made to represent ELF
thread local storage data. These have been set to
- typeThreadZeroFill (represents TBSS storage)
- typeThreadData (represents TDATA storage)
llvm-svn: 189137
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
BSS atoms dont take any file space in the Input file. They are associated
with a contentType(typeZeroFill). Similiar zero fill types also exist which
have the same meaning in terms of occupying file space in the Input.
These atoms have to be handled seperately when writing to the
lld's intermediate file or the lld test infrastructure.
Also adds a test.
llvm-svn: 189136
|
|
|
|
| |
llvm-svn: 189035
|
|
|
|
| |
llvm-svn: 189025
|
|
|
|
| |
llvm-svn: 188981
|
|
|
|
| |
llvm-svn: 188965
|
|
|
|
| |
llvm-svn: 188963
|
|
|
|
| |
llvm-svn: 188961
|
|
|
|
| |
llvm-svn: 188958
|
|
|
|
|
|
|
|
|
| |
This used to be handled automagically by the option parsing library,
but after LLVM r188314, we should handle it ourselves.
No functionality change, but adds a test.
llvm-svn: 188318
|
|
|
|
|
|
|
| |
This is a temporary measure because the semantics of the common symbol is
actually more compilcated than the simple mergeable symbol.
llvm-svn: 188235
|
|
|
|
|
|
| |
Patch by Ron Ofir.
llvm-svn: 188187
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The import name is not always the same as the symbol name. If the name/type
field in the import header is NOPREFIX or UNDECORATE, we need to strip some
characters from symbol to get its import name.
The Microsoft PE/COFF spec is vague if symbol contains more than two
consecutive characters to be stripped. We used to strip all characters,
but it doesn't seem right as we couldn't link against the system library
because of this name mangling. Looks like we shouldn't strip more than one
character.
llvm-svn: 188154
|
|
|
|
| |
llvm-svn: 188152
|
|
|
|
| |
llvm-svn: 188150
|
|
|
|
| |
llvm-svn: 188090
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
__ImageBase is a symbol having 4 byte integer equal to the image base address
of the resultant executable. The linker is expected to create the symbol as if
it were read from a file.
In order to emit the symbol contents only when the symbol is actually
referenced, we created a pseudo library file to wrap the linker generated
symbol. The library file member is emitted to the output only when the member
is actually referenced, which is suitable for our purpose.
llvm-svn: 188052
|
|
|
|
| |
llvm-svn: 188049
|
|
|
|
| |
llvm-svn: 188046
|
|
|
|
| |
llvm-svn: 188045
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The COMDAT section is a section with a special attribute to tell the linker
whether the symbols in the section are allowed to be merged or not. This patch
add a function to interpret the COMDAT data and set "merge" attribute to the
atoms accordingly.
LLD supports multiple policies to merge atoms; atoms can be merged by name or
by content. COFF supports them, and in addition to that, it supports
choose-the-largest-atom policy, which LLD currently does not support. I simply
mapped it to merge-by-name attribute for now, but we eventually have to support
that policy in the core linker.
llvm-svn: 188025
|
|
|
|
| |
llvm-svn: 188021
|
|
|
|
|
|
|
|
|
| |
Also change some local variable names: "ti" -> "context" and
"_targetInfo" -> "_context".
Differential Revision: http://llvm-reviews.chandlerc.com/D1301
llvm-svn: 187823
|
|
|
|
| |
llvm-svn: 187690
|
|
|
|
| |
llvm-svn: 187688
|
|
|
|
|
|
|
| |
Thanks to Hans' patch (r187675), OptTable now handles "--", so we don't
need this code in LLD.
llvm-svn: 187683
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The aim of this patch is to reduce the dependency from COFFDefinedAtom
to COFF structs defined in llvm/Object/COFF.h. Currently many attributes
of the atom are computed in the atom. That provide a simple interface but
does not work well in some cases.
There are some cases that the same type atom is created from different
parts of a COFF file. One example is the BSS atom, which can be created
from the defined symbol in the .bss section or from the undefined symbol.
Computing attributes from different sources in the atom complicates the
code. We should compute it outside the atom.
In the next patch, I'll move more code from Atoms.h to ReaderCOFF.cpp.
llvm-svn: 187681
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
The .drectve section contains linker command line options, and the linker is
expected to interpret them as if they were given via the command line. In this
patch, the command line parser in the driver is called from the object file
reader to parse the string.
I think this patch is important, because this is the first step towards mutable
TargetInfo. We had a discussion about that on llvm-commits mailing list before.
I haven't removed "const" from the function signature yet. Instead, I just use
cast to remove "const". This is a temporary aid for an experiment. If we don't
see any issue with this mutable TargetInfo appraoch, I'll change the function
signature, and rename the class LinkerContext from TargetInfo.
Reviewers: kledzik
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D1246
llvm-svn: 187677
|
|
|
|
|
|
|
|
| |
For an invalid input we should not call report_fatal_error(), because
when LLD is used as a library, we don't want to kill the whole app
because of a malformed input.
llvm-svn: 187673
|
|
|
|
|
|
| |
file error.
llvm-svn: 187670
|
|
|
|
| |
llvm-svn: 187665
|