- Jan 12, 2017
-
-
Eric Liu authored
Summary: elf::fatal is declared "noreturn". Reviewers: grimar Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D28607 llvm-svn: 291766
-
George Rimar authored
Intention of change is to get rid of code duplication. Decompressor was introduced in D28105. Change allows to get rid of few methods relative to decompression. Differential revision: https://reviews.llvm.org/D28106 llvm-svn: 291758
-
- Nov 26, 2016
-
-
Rui Ueyama authored
Config->ColorDiagnostics was of type enum before. Now it is just a boolean flag. Thanks Rafael for suggestion. llvm-svn: 287978
-
- Nov 25, 2016
-
-
Rui Ueyama authored
llvm-svn: 287950
-
Rui Ueyama authored
-color-diagnostics=auto is default because that's the same as Clang's default. When color is enabled, error or warning messages are colored like this. error: <bold>ld.lld</bold> <red>error:</red> foo.o: no such file warning: <bold>ld.lld</bold> <magenta>warning:</magenta> foo.o: no such file Differential Revision: https://reviews.llvm.org/D27117 llvm-svn: 287949
-
- Nov 24, 2016
-
-
Rui Ueyama authored
This patch changes the error message from too many errors emitted, stopping now to too many errors emitted, stopping now (use -error-limit=0 to see all errors) Thanks for Sean for the suggestion! llvm-svn: 287900
-
Rui Ueyama authored
HasError was always true if ErrorCount > 0, so we can use ErrorCount instead. llvm-svn: 287849
-
- Nov 23, 2016
-
-
Rui Ueyama authored
llvm-svn: 287794
-
Rui Ueyama authored
This is in the context of https://llvm.org/bugs/show_bug.cgi?id=31109. When LLD prints out errors for relocations, it tends to print out extremely large number of errors (like millions) because it would print out one error per relocation. This patch makes LLD bail out if it prints out more than 20 errors. You can configure the limitation using -error-limit argument. -error-limit=0 means no limit. I chose the flag name because Clang has the same feature as -ferror-limit. "f" doesn't make sense to us, so I omitted it. Differential Revision: https://reviews.llvm.org/D26981 llvm-svn: 287789
-
- Nov 11, 2016
-
-
Rui Ueyama authored
llvm_shutdown could write something to outs or errs, so we need to flush them after calling llvm_shutdown. llvm-svn: 286548
-
- Nov 10, 2016
-
-
Davide Italiano authored
In a non-LTO build is a nop. In a LTO build, we deallocate/destroy managed static and this allows us to get the output of, e.g., -time-passes without performing a full shutdown. Differential Revision: https://reviews.llvm.org/D26517 llvm-svn: 286493
-
- Oct 27, 2016
-
-
Rafael Espindola authored
Instead of having 3 section allocators per file, have 3 for all files. This is a substantial performance improvement for some cases. Linking chromium without gc speeds up by 1.065x. This requires using _exit in fatal since we have to avoid destructing an InputSection if fatal is called from the constructor. Thanks to Rui for the suggestion. llvm-svn: 285290
-
- Oct 19, 2016
-
-
Rui Ueyama authored
This is what other linkers and clang driver do. Differential Revision: https://reviews.llvm.org/D25780 llvm-svn: 284634
-
Eugene Leviant authored
Differential revision: https://reviews.llvm.org/D25729 llvm-svn: 284575
-
- Oct 07, 2016
-
-
George Rimar authored
createELFObj() may call error(...), for example when file is too short. In that case header is not set and following line lead to crash: EMachine = ELFObj.getHeader()->e_machine; Patch fixes the issue. Differential revision: https://reviews.llvm.org/D25233 llvm-svn: 283532
-
- Oct 06, 2016
-
-
Rui Ueyama authored
llvm-svn: 283488
-
- Sep 29, 2016
-
-
Rui Ueyama authored
It's better because it's a verb. llvm-svn: 282763
-
- Jul 18, 2016
-
-
Rafael Espindola authored
And make it easier to spot code going dead by using elf::. llvm-svn: 275858
-
- Jul 15, 2016
-
-
Rui Ueyama authored
We should write to ErrorOS instead. Normaly, *ErrorOS == errs(), but they can be different if LLD is embedded. llvm-svn: 275525
-
Rui Ueyama authored
Previously, it checked for the EC parameter and set HasError only when there was an error. But in most places we called error only when error had occurred, so this behavior was confusing. llvm-svn: 275517
-
- Jul 14, 2016
-
-
Lang Hames authored
llvm-svn: 275362
-
- Jul 07, 2016
-
-
Rafael Espindola authored
llvm-svn: 274755
-
- Jul 04, 2016
-
-
George Rimar authored
--fatal-warnings: Treat warnings as errors DIfferential revision: http://reviews.llvm.org/D21969 llvm-svn: 274504
-
- May 04, 2016
-
-
Rafael Espindola authored
This is both simpler and safer. If we crash at any point, there is a valid cpio file to reproduce the crash. Thanks to Rui for the suggestion. llvm-svn: 268495
-
- May 03, 2016
-
-
Rafael Espindola authored
We want --reproduce to * not rewrite scripts and thin archives * work with absolute paths Given that, it pretty much has to create a full directory tree. On windows that is problematic because of the very short maximum path limit. On most cases users can still work around it with "--repro c:\r", but that is annoying and not viable for automated testing. We then need to produce some form of archive with the files. The first option that comes to mind is .a files since we already have code for writing them. There are a few problems with them The format has a dedicated string table, so we cannot start writing it until all members are known. Regular implementations don't support creating directories. We could make llvm-ar support that, but that is probably not a good idea. The next natural option would be tar. The problem is that to support long path names (which is how this started) it needs a "pax extended header" making this an annoying format to write. The next option I looked at seems a natural fit: cpio files. They are available on pretty much every unix, support directories and long path names and are really easy to write. The only slightly annoying part is a terminator, but at least gnu cpio only prints a warning if it is missing, which is handy for crashes. This patch still makes an effort to always create it. llvm-svn: 268404
-
- Mar 13, 2016
-
-
Rui Ueyama authored
llvm-svn: 263363
-
Rui Ueyama authored
error returned true if there was an error. This allows us to replace the code like this if (EC) { error(EC, "something failed"); return; } with if (error(EC, "something failed")) return; I thought that that was a good idea, but it turned out that we only have two places to use this pattern. So this patch removes that feature. llvm-svn: 263362
-
- Mar 03, 2016
-
-
Rafael Espindola authored
llvm-svn: 262666
-
Rafael Espindola authored
llvm-svn: 262653
-
Rafael Espindola authored
This makes fatal return T when there is no error. This avoids the need for quite a few temporaries. llvm-svn: 262626
-
- Feb 28, 2016
-
-
Rafael Espindola authored
llvm-svn: 262159
-
- Feb 25, 2016
-
-
Rui Ueyama authored
llvm-svn: 261919
-
- Feb 02, 2016
-
-
Rui Ueyama authored
http://reviews.llvm.org/D16668 llvm-svn: 259597
-
Rui Ueyama authored
This reverts r259395 which reverted r259143. llvm-svn: 259572
-
- Feb 01, 2016
-
-
Nico Weber authored
llvm-svn: 259395
-
- Jan 29, 2016
-
-
Rui Ueyama authored
This patch let the driver keep going until it parses all command line options. http://reviews.llvm.org/D16645 llvm-svn: 259143
-
- Jan 28, 2016
-
-
Rui Ueyama authored
In many situations, we don't want to exit at the first error even in the process model. For example, it is better to report all undefined symbols rather than reporting the first one that the linker picked up randomly. In order to handle such errors, we don't need to wrap everything with ErrorOr (thanks for David Blaikie for pointing this out!) Instead, we can set a flag to record the fact that we found an error and keep it going until it reaches a reasonable checkpoint. This idea should be applicable to other places. For example, we can ignore broken relocations and check for errors after visiting all relocs. In this patch, I rename error to fatal, and introduce another version of error which doesn't call exit. That function instead sets HasError to true. Once HasError becomes true, it stays true, so that we know that there was an error if it is true. I think introducing a non-noreturn error reporting function is by itself a good idea, and it looks to me that this also provides a gradual path towards lld-as-a-library (or at least embed-lld-to-your-program) without sacrificing code readability with lots of ErrorOr's. http://reviews.llvm.org/D16641 llvm-svn: 259069
-
- Sep 24, 2015
-
-
Rui Ueyama authored
Patch from George Rimar! llvm-svn: 248524
-
- Aug 06, 2015
-
-
Rafael Espindola authored
llvm-svn: 244216
-
Rafael Espindola authored
This has a few advantages * Less C++ code (about 300 lines less). * Less machine code (about 14 KB of text on a linux x86_64 build). * It is more debugger friendly. Just set a breakpoint on the exit function and you get the complete lld stack trace of when the error was found. * It is a more robust API. The errors are handled early and we don't get a std::error_code hot potato being passed around. * In most cases the error function in a better position to print diagnostics (it has more context). llvm-svn: 244215
-