- Jul 21, 2016
-
-
Rafael Espindola authored
Not all relocations from a .eh_frame that point to an executable section should be ignored. In particular, the relocation finding the personality function should not. This is a reduction from trying to bootstrap a static lld on linux. llvm-svn: 276329
-
George Rimar authored
It is called basic because: CONSTANT expression can refer to COMMONPAGESIZE and MAXPAGESIZE. This sizes are usually different and used for possible optimization of memory consumption. More details are here: https://sourceware.org/ml/binutils/2002-02/msg00265.html We currently do not support this optimization, so both CONSTANT(MAXPAGESIZE) and CONSTANT(COMMONPAGESIZE) just return Target->PageSize value. DATA_SEGMENT_ALIGN and DATA_SEGMENT_END are used as a part of opt. The latter one is just ignored now. According to documentation DATA_SEGMENT_ALIGN has 2 possible calculation, but since we do not support mentioned opt - it is always calculated now as (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - 1))). In general this should work for now until we deside to support this opt. Differential revision: https://reviews.llvm.org/D19663 llvm-svn: 276323
-
Rui Ueyama authored
llvm-svn: 276322
-
Reid Kleckner authored
It doesn't appear to like this pattern: for (auto X : Xs) if (...) { ... } else ...; We have heard anecdotes that range based for loops are implemented as a token rewrite in MSVC's lexer, and that the most challenging part of the rewrite is finding the end of the for loop. That makes sense, given that it's a lexer. llvm-svn: 276315
-
Eugene Leviant authored
llvm-svn: 276301
-
George Rimar authored
LinkerScript<ELFT>::assignAddresses is becoming larger and looks it can be good time for splitting. I expect to can more SectionsCommand's there, and dispatching some of them separatelly can help to keep method smaller either. Differential revision: https://reviews.llvm.org/D22506 llvm-svn: 276300
-
George Rimar authored
Had 3 testcases failtures: ELF/eh-frame-merge.s ELF/gc-sections-eh.s ELF/gc-sections-lsda.s Problem was that OutputOff is size_t, which is 32 for this configuration and next condition never was checked correctly: if (PieceI->OutputOff == (uintX_t)-1) continue; llvm-svn: 276296
-
Konstantin Zhuravlyov authored
Differential Revision: https://reviews.llvm.org/D21654 llvm-svn: 276295
-
George Rimar authored
This adds InputSectionDescription command to represent the input section declaration. This leads to next cleanup: SectionRule removed. ScriptConfiguration::Sections mamber removed. LinkerScript<ELFT>::getOutputSection() removed. Differential revision: https://reviews.llvm.org/D22617 llvm-svn: 276283
-
Rafael Espindola authored
This opens the way for having a different Piece type for EhInputSection. llvm-svn: 276275
-
Rui Ueyama authored
r275711 for "speedng up symbol version handling" was committed by misunderstanding; the benchmark number was measured with a debug build. The number with a release build didn't actually change. This patch removes false optimizations added in that patch. llvm-svn: 276267
-
Rui Ueyama authored
This change simplifies interaction between Writer and the linker script because we can make needsInterpSection() a file-scope function. llvm-svn: 276261
-
Eugene Leviant authored
llvm-svn: 276260
-
George Rimar authored
Previously OutputSectionCommand::Filler was introduced, but unused. Patch fixes that. Differential revision: https://reviews.llvm.org/D22615 llvm-svn: 276253
-
George Rimar authored
Approach uses LLVM-style RTTI for representing the linker script commands in a form of tree for future simplification of parsing. Core idea and code sample belongs to Rui Ueyama. Differential revision: https://reviews.llvm.org/D22604 llvm-svn: 276243
-
- Jul 20, 2016
-
-
Simon Atanasyan authored
llvm-svn: 276176
-
Rafael Espindola authored
We no longer need it for relocations in .eh_frame. The only relocations that point to .eh_frame are the ones trying to find the output .eh_frame. This actually fixes a bug in the symbol value code. It was not handling -1 as an indicator for a piece not being included in the output. llvm-svn: 276175
-
Simon Atanasyan authored
llvm-svn: 276173
-
Simon Atanasyan authored
LLD still does not produce a correct combination of MIPS ELF flags if input files have different sets of ELF flags (i.e. EF_MIPS_ARCH_32 and EF_MIPS_ARCH_32R2). But now we do not stick to "R2" ABI version and can emit EF_MIPS_ARCH_32R6 for example. llvm-svn: 276172
-
Rui Ueyama authored
llvm-svn: 276165
-
Rui Ueyama authored
This way is consistent with createSections. llvm-svn: 276164
-
Rui Ueyama authored
llvm-svn: 276163
-
Rui Ueyama authored
llvm-svn: 276162
-
Rafael Espindola authored
llvm-svn: 276157
-
Chandler Carruth authored
but things happened to work on some platforms prior to r276133. This should be the complete set (I hope). llvm-svn: 276155
-
Rafael Espindola authored
We will need to do something like this to support range extension thunks since that process is iterative. Doing this also has the advantage that when doing the regular relocation scan the offset in the output section is known and we can just store that. This reduces the number of times we have to run getOffset and I think will allow a more specialized .eh_frame representation. By itself this is already a performance win. firefox master 7.295045737 patch 7.209466989 0.98826892235 chromium master 4.531254468 patch 4.509221804 0.995137623774 chromium fast master 1.836928973 patch 1.823805241 0.992855612714 the gold plugin master 0.379768791 patch 0.380043405 1.00072310839 clang master 0.642698284 patch 0.642215663 0.999249070657 llvm-as master 0.036665467 patch 0.036456225 0.994293213284 the gold plugin fsds master 0.40395817 patch 0.404384555 1.0010555177 clang fsds master 0.722045545 patch 0.720946135 0.998477367518 llvm-as fsds master 0.03292646 patch 0.032759965 0.994943428477 scylla master 3.427376378 patch 3.368316181 0.98276810292 llvm-svn: 276146
-
Rafael Espindola authored
Thanks to George Rimar for finding the problem. llvm-svn: 276144
-
Rui Ueyama authored
This patch simplifies output section management by making Factory class have ownership of sections that creates. Differential Revision: https://reviews.llvm.org/D22575 llvm-svn: 276141
-
George Rimar authored
Previously it was harder to read and also has a error: command kind was not checked. Differential revision: https://reviews.llvm.org/D22574 llvm-svn: 276137
-
Eugene Leviant authored
llvm-svn: 276133
-
George Rimar authored
llvm-svn: 276126
-
Peter Smith authored
- R_ARM_TLS_LDM32 - R_ARM_TLS_LDO32 The local dynamic implementation and tests follows the same model as the other ARM TLS models. The R_ARM_TLS_LDO32 is implemented as R_ABS expr type as the getVA() for a TLS symbol will return the offset from the start of the TLS block. Differential Revision https://reviews.llvm.org/D22563 llvm-svn: 276123
-
Eugene Leviant authored
llvm-svn: 276121
-
George Rimar authored
Under MSVS 2015 I observed integral constant overflow warning when aggregate initialization was used to init the bit field. Patch fixes that. llvm-svn: 276118
-
Rafael Espindola authored
In here we are iterating relocations in order, so we can do the same with the pieces of .eh_frame and avoid a binary search. The link times I got with this patch were: firefox master 7.22977811 patch 7.141041442 0.987726225252 chromium master 4.478966851 patch 4.506602207 1.00617002914 chromium fast master 1.894713371 patch 1.866446889 0.98508139414 the gold plugin master 0.386193907 patch 0.382374918 0.990111213743 clang master 0.654849589 patch 0.647899815 0.989387220949 llvm-as master 0.037212718 patch 0.036858172 0.990472450843 the gold plugin fsds master 0.410876711 patch 0.407418613 0.991583611562 clang fsds master 0.734623069 patch 0.728237526 0.991307728726 llvm-as fsds master 0.033446197 patch 0.03302833 0.987506292569 scylla master 3.38134402 patch 3.414188846 1.00971354166 llvm-svn: 276108
-
Peter Smith authored
Add relocations and identification functions for the Initial Exec and Global Dynamic TLS model defined in Addenda to, and Errata in, the ABI for the ARM Architecture. ARM uses variant 1 of the thread local storage data structures as defined in ELF Handling for Thread-Local Storage. The "experimental" descriptor based model that can be selected in gcc, but not clang with -mtls-dialect=gnu2 is not supported. The relocations R_ARM_TLS_LE12 and R_ARM_TLS_IE12GP are not supported, I know of no ARM Toolchain that supports these relocations as they limit the size of the TLS block. No code relaxation is supported as the standard ARM TLS model puts the relocations on literal data. Support for the local dynamic model will come in a follow up patch. Differential Revision: https://reviews.llvm.org/D22462 llvm-svn: 276095
-
- Jul 19, 2016
-
-
Rafael Espindola authored
llvm-svn: 275972
-
Eugene Leviant authored
llvm-svn: 275965
-
George Rimar authored
llvm-svn: 275961
-
George Rimar authored
llvm-svn: 275959
-