- Oct 22, 2013
-
-
Rui Ueyama authored
llvm-svn: 193186
-
Rui Ueyama authored
llvm-svn: 193173
-
Rui Ueyama authored
uiAccess argument's type is not really boolean. It's string. llvm-svn: 193171
-
Alp Toker authored
llvm-svn: 193155
-
Rui Ueyama authored
This option is used for the manifest file too. llvm-svn: 193145
-
Rui Ueyama authored
llvm-svn: 193143
-
Rui Ueyama authored
llvm-svn: 193142
-
Rui Ueyama authored
The manifest file is an XML file that conveys some information to the loader, such as whether the executable needs to run as Administrator or not. This patch is to parse command line option for manifest file. Actual XML file generation will be done in a separate patch. llvm-svn: 193141
-
Rui Ueyama authored
Because MSVC11 doesn't like this new C++11 feature. The last commit broke the buildbot. llvm-svn: 193127
-
Rui Ueyama authored
llvm-svn: 193122
-
- Oct 19, 2013
-
-
Rui Ueyama authored
llvm-svn: 193030
-
Rui Ueyama authored
This patch fixes a bug in r190608. The results of a comparison function passed to std::sort must be transitive, which is, if a < b and b < c, and if a != b, a < c must be also true. CompareAtoms::compare did not actually guarantee the transitivity. As a result the sort results were sometimes just wrong. Consider there are three atoms, X, Y, and Z, whose file ordinals are 1, 2, 3, respectively. Z has a property "layout-after X". In this case, all the following conditionals become true: X < Y because X's ordinal is less than Y's Y < Z because Y's ordinal is less than Z's Z < X because of the layout-after relationship This is not of course transitive. The reason why this happened is because we used follow-on relationships for comparison if two atoms falls in the same follow-on chain, but we used each atom's properties if they did not. This patch fixes the issue by using follow-on root atoms for comparison to get consistent results. Differential Revision: http://llvm-reviews.chandlerc.com/D1980 llvm-svn: 193029
-
Rui Ueyama authored
We should dead-strip atoms only if they are created for COMDAT symbols. If we remove non-COMDAT atoms from a binary, it will no longer be guaranteed that the binary will work correctly. In COFF, you can manipulate the order of section contents in the resulting binary by section name. For example, if you have four sections .data$unique_prefix_{a,b,c,d}, it's guaranteed that the contents of A, B, C, and D will be consecutive in the resulting .data section in that order. Thus, you can access B's and C's contents by incrementing a pointer pointing to A until it reached to D. That's why we cannot dead-strip B or C even if no one is directly referencing to them. Some object files in the standard library actually use that technique. llvm-svn: 193017
-
- Oct 18, 2013
-
-
Rui Ueyama authored
INT 3 (machine code 0xCC) will raise an interrupt when executed. That is better for filling the gap than NOP because we want to stop the execution immediately when the control reached to non-code address. llvm-svn: 192945
-
Shankar Easwaran authored
There is no test as currently there is no call to the NativeWriter. Future commits will add calls to the NativeWriter. llvm-svn: 192944
-
Rui Ueyama authored
llvm-svn: 192943
-
Rui Ueyama authored
llvm-svn: 192942
-
Rui Ueyama authored
Instead of showing multiple lines of debug messages, show only one message by CompareAtoms::operator(). Here is an example. Before: Sorting _main .text Sorting by sectionPos(2,2) Sorting by override Sorting _main .text Sorting by sectionPos(2,2) Sorting by override After: Layout: '_main' > '.text' (override (1, 0)) Layout: '_main' > '.text' (override (1, 0)) Differential Revision: http://llvm-reviews.chandlerc.com/D1964 llvm-svn: 192941
-
Shankar Easwaran authored
llvm-svn: 192939
-
Rui Ueyama authored
llvm-svn: 192930
-
- Oct 16, 2013
-
-
Rui Ueyama authored
Dead-strip root symbols can be undefined atoms, but should not really be nonexistent, because dead-strip root symbols should be added to initial undefined atoms at startup. Whenever you look up its name in the symbol table, some type of atom will always exist. llvm-svn: 192831
-
Rui Ueyama authored
llvm-svn: 192830
-
Rui Ueyama authored
llvm-svn: 192772
-
Rui Ueyama authored
We want to make the program to exit with non-zero exit code if there's an error during dead stripping. llvm-svn: 192771
-
- Oct 14, 2013
-
-
Nick Kledzik authored
llvm-svn: 192627
-
Shankar Easwaran authored
llvm-svn: 192614
-
- Oct 12, 2013
-
-
Rui Ueyama authored
llvm-svn: 192509
-
- Oct 11, 2013
-
-
Shankar Easwaran authored
There are aliases for --start-group/--end-group options represented by -( and -) respectively in the command line. This change adds and improves the test for the alias options to be tested. Looks like users use this option widely than explicitly using --start-group/--end-group. llvm-svn: 192470
-
Rui Ueyama authored
llvm-svn: 192427
-
Rui Ueyama authored
llvm-svn: 192424
-
Rui Ueyama authored
allowRemainingUndefines() is already checked in Resolver::resolve(), so we don't need to check it again after returning from it. It's actually not only superfluous but buggy because a failure of resolve() does not always mean that there is a remaining undefines. llvm-svn: 192423
-
Rui Ueyama authored
llvm-svn: 192422
-
Rui Ueyama authored
This eliminates _elements's size check from the loop. llvm-svn: 192418
-
Rui Ueyama authored
llvm-svn: 192416
-
Rui Ueyama authored
This patch also handles errors other than no_more_files error. They were silently ignored. llvm-svn: 192415
-
Shankar Easwaran authored
llvm-svn: 192414
-
Shankar Easwaran authored
This also reverts the LayoutPass to use std::sort as all files have an ordinal now. llvm-svn: 192409
-
Rui Ueyama authored
llvm-svn: 192401
-
- Oct 10, 2013
-
-
Shankar Easwaran authored
llvm-svn: 192369
-
Rui Ueyama authored
-- so that command line options to specify new input files, such as /defaultlib:foo, is handled properly. Such options were ignored before this patch. llvm-svn: 192342
-