- Aug 13, 2013
-
-
Hans Wennborg authored
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
-
Rui Ueyama authored
This is a temporary measure because the semantics of the common symbol is actually more compilcated than the simple mergeable symbol. llvm-svn: 188235
-
- Aug 12, 2013
-
-
Rui Ueyama authored
Patch by Ron Ofir. llvm-svn: 188187
-
Rui Ueyama authored
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
-
Rui Ueyama authored
llvm-svn: 188152
-
Rui Ueyama authored
llvm-svn: 188150
-
- Aug 09, 2013
-
-
Daniel Dunbar authored
llvm-svn: 188093
-
Rui Ueyama authored
llvm-svn: 188090
-
Rui Ueyama authored
__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
-
Rui Ueyama authored
llvm-svn: 188049
-
Rui Ueyama authored
llvm-svn: 188046
-
Rui Ueyama authored
llvm-svn: 188045
-
Rui Ueyama authored
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
-
Michael J. Spencer authored
llvm-svn: 188021
-
- Aug 08, 2013
-
-
Rui Ueyama authored
llvm-svn: 188011
-
- Aug 07, 2013
-
-
Rui Ueyama authored
Also change some local variable names: "ti" -> "context" and "_targetInfo" -> "_context". Differential Revision: http://llvm-reviews.chandlerc.com/D1301 llvm-svn: 187823
-
- Aug 03, 2013
-
-
Rui Ueyama authored
llvm-svn: 187690
-
Rui Ueyama authored
llvm-svn: 187688
-
Rui Ueyama authored
Thanks to Hans' patch (r187675), OptTable now handles "--", so we don't need this code in LLD. llvm-svn: 187683
-
Rui Ueyama authored
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
-
- Aug 02, 2013
-
-
Rui Ueyama authored
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
-
Rui Ueyama authored
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
-
Rui Ueyama authored
llvm-svn: 187670
-
Rui Ueyama authored
llvm-svn: 187665
-
Rui Ueyama authored
Patch by Ron Ofir. llvm-svn: 187664
-
Rui Ueyama authored
llvm-svn: 187645
-
Rui Ueyama authored
A instance of the class always represents a BSS atom, so we don't need to look at the symbol or the section to retrieve its attributes. llvm-svn: 187643
-
- Aug 01, 2013
-
-
Hans Wennborg authored
It is not needed after LLVM r187546. llvm-svn: 187551
-
Rui Ueyama authored
llvm-svn: 187548
-
Rui Ueyama authored
This patch does not change the behavior of LLD, but changes the output of the help text. We want to show the help text with Windows style indicator rather than Unix style indicator. llvm-svn: 187544
-
Hans Wennborg authored
This depends on LLVM r187537. The SUPPORT_ALIASARGS macro will be removed once all option parsing clients have been updated. llvm-svn: 187541
-
Rui Ueyama authored
llvm-svn: 187539
-
Rui Ueyama authored
This reverts commit r187390 because we should not handle argv's quotes ourselves. In Windows, unlike Unix, quotes are not processed by the shell. Instead the C startup routine parses it as described in http://msdn.microsoft.com/en-us/library/a1y7w461.aspx and pass the results to main(). So, at the time when the control reaches main(), quotes that should be removed has already been removed. We still need to handle quotes in the response file and in .drectve section ourselves. That will be addressed in different patches. llvm-svn: 187534
-
- Jul 31, 2013
-
-
Rui Ueyama authored
llvm-svn: 187505
-
Rui Ueyama authored
llvm-svn: 187484
-
Rui Ueyama authored
llvm-svn: 187461
-
Rui Ueyama authored
llvm-svn: 187460
-
- Jul 30, 2013
-
-
Rui Ueyama authored
The BSS atom is similar to the regular defined atom, but it's different in the sense that it does not have contents. Until now we assumed all the defined atoms have its contents. That did not fit well to the BSS atom. llvm-svn: 187453
-
Rui Ueyama authored
The command line option in .drectve section may be quoted by double quotes, and if that's the case we have to remove them. llvm-svn: 187390
-
Rui Ueyama authored
This patch removes hacky mangle() function, which strips all decorations uncondtitionally. LLD now interprets Import Name/Type field in the import library properly as described in the Microsoft PE/COFF Spec. llvm-svn: 187388
-