summaryrefslogtreecommitdiffstats
path: root/llvm/tools
Commit message (Collapse)AuthorAgeFilesLines
...
* [llvm-cov] Rearrange entries in report index.Eli Friedman2017-08-093-13/+58
| | | | | | | | | | | | | | Files which don't contain any functions are likely useless; don't include them in the main table. Put the links at the bottom of the page, in case someone wants to figure out coverage for code inside a macro. Not sure if this is the best solution, but it seems like an improvement. Differential Revision: https://reviews.llvm.org/D36298 llvm-svn: 310518
* [PDB] Fix an issue writing the publics stream.Zachary Turner2017-08-091-18/+37
| | | | | | | | | | | | | In the refactor to merge the publics and globals stream, a bug was introduced that wrote the wrong value for one of the fields of the PublicsStreamHeader. This caused debugging in WinDbg to break. We had no way of dumping any of these fields, so in addition to fixing the bug I've added dumping support for them along with a test that verifies the correct value is written. llvm-svn: 310439
* [PDB] Fix linking of function symbols and local variables.Zachary Turner2017-08-083-7/+38
| | | | | | | | | | | | | | | | | | | | | | | | The compiler outputs PROC32_ID symbols into the object files for functions, and these symbols have an embedded type index which, when copied to the PDB, refer to the IPI stream. However, the symbols themselves are also converted into regular symbols (e.g. S_GPROC32_ID -> S_GPROC32), and type indices in the regular symbol records refer to the TPI stream. So this patch applies two fixes to function records. 1. It converts ID symbols to the proper non-ID record type. 2. After remapping the type index from the object file's index space to the PDB file/IPI stream's index space, it then remaps that index to the TPI stream's index space by. Besides functions, during the remapping process we were also discarding symbol record types which we did not recognize. In particular, we were discarding S_BPREL32 records, which is what MSVC uses to describe local variables on the stack. So this patch fixes that as well by copying them to the PDB. Differential Revision: https://reviews.llvm.org/D36426 llvm-svn: 310394
* dsymutil: support dwarf version mismatches between object and clang moduleAdrian Prantl2017-08-081-1/+3
| | | | | | | | | | This adds a missing call to maybeUpdateMaxDwarfVersion when visitng a clang module. Failing to do so will cause a failure when emitting DWARF 4 forms into a CU that AsmPrinter believes to be DWARF 2. rdar://problem/33666528 llvm-svn: 310392
* [llvm-pdbutil] Don't crash when a section contrib's isect is invalid.Zachary Turner2017-08-071-2/+6
| | | | llvm-svn: 310298
* [llvm-objdump] Use PRIx64 for output of ARM64_RELOC_ADDENDSimon Dardis2017-08-071-1/+1
| | | | llvm-svn: 310250
* [llvm][llvm-objcopy] When outputting to binary don't output segments that ↵Petr Hosek2017-08-041-2/+6
| | | | | | | | | | | | | | | | | cover no sections Sometimes LLD will produce a PT_LOAD segment that only covers the headers (and covers no sections). GNU objcopy does not output the segment contents for these sections. In particular this is an issue in building magenta because the final link step for the kernel would produce just such a PT_LOAD segment. This change is to support this case and to match what GNU objcopy does in this case. Patch by Jake Ehrlich Differential Revision: https://reviews.llvm.org/D36196 llvm-svn: 310149
* Enable llvm-pdbutil to list enumerations using native PDB readerAdrian McCarthy2017-08-041-14/+18
| | | | | | | | | | | | | | | This extends the native reader to enable llvm-pdbutil to list the enums in a PDB and it includes a simple test. It does not yet list the values in the enumerations, which requires an actual implementation of NativeEnumSymbol::FindChildren. To exercise this code, use a command like: llvm-pdbutil pretty -native -enums foo.pdb Differential Revision: https://reviews.llvm.org/D35738 llvm-svn: 310144
* [pdbutil] When dumping section contribs, show the section name.Zachary Turner2017-08-041-40/+75
| | | | llvm-svn: 310128
* Reland "[llvm][llvm-objcopy] Added support for outputting to binary in ↵Petr Hosek2017-08-044-88/+192
| | | | | | | | | | | | | | | | llvm-objcopy" This change adds the "-O binary" flag which directs llvm-objcopy to output the object file to the same format as GNU objcopy does when given the flag "-O binary". This was done by splitting the Object class into two subclasses ObjectELF and ObjectBianry which each output a different format but relay on the same code to read in the Object in Object. Patch by Jake Ehrlich Differential Revision: https://reviews.llvm.org/D34480 llvm-svn: 310127
* [llvm-pdbutil] Dump image section headers.Zachary Turner2017-08-044-7/+96
| | | | | | | | | | Image section headers are stored in the DBI stream, but we had no way to dump them. This patch adds dumping support, along with some tests that LLD actually dumps them correctly. Differential Revision: https://reviews.llvm.org/D36332 llvm-svn: 310107
* [Polly][PM] Register polly passes with the opt tool for the new-pm pathPhilip Pfaffe2017-08-041-0/+11
| | | | | | | | | | | | | | Summary: When polly is linked into the tools because of the LLVM_POLLY_LINK_INTO_TOOLS option being set, we need to register its passes with the PassBuilder. Because polly is linked in, we can directly call its callback registration method, which registers the appropriate callbacks with the new PM's PassBuilder. This essentially follows exactly the way it worked with the legacy PM. Reviewers: grosser, chandlerc, bollu Reviewed By: grosser Subscribers: pollydev, llvm-commits Differential Revision: https://reviews.llvm.org/D36273 llvm-svn: 310043
* Revert "[llvm][llvm-objcopy] Added support for outputting to binary in ↵Petr Hosek2017-08-044-192/+88
| | | | | | | | | | llvm-objcopy" This breaks the build on clang-s390x-linux. This reverts commit r310018. llvm-svn: 310026
* Reland "[llvm][llvm-objcopy] Added support for outputting to binary in ↵Petr Hosek2017-08-044-88/+192
| | | | | | | | | | | | | | | | llvm-objcopy" This change adds the "-O binary" flag which directs llvm-objcopy to output the object file to the same format as GNU objcopy does when given the flag "-O binary". This was done by splitting the Object class into two subclasses ObjectELF and ObjectBianry which each output a different format but relay on the same code to read in the Object in Object. Patch by Jake Ehrlich Differential Revision: https://reviews.llvm.org/D34480 llvm-svn: 310018
* [llvm-cov] Ignore unclosed line segments when setting line countsVedant Kumar2017-08-042-22/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes a slight change to the way llvm-cov determines line execution counts. If there are multiple line segments on a line, the line count is the max count among the regions which start *and* end on the line. This avoids an issue posed by deferred regions which start on the same line as a terminated region, e.g: if (false) return; //< The line count should be 0, even though a new region //< starts at the semi-colon. foo(); Another change is that counts from line segments which don't correspond to region entries are considered. This enables the first change, and corrects an outstanding issue (see the showLineExecutionCounts.cpp test change). This is related to D35925. Testing: check-profile, llvm-cov lit tests Differential Revision: https://reviews.llvm.org/D36014 llvm-svn: 310012
* [llvm-cov] NFC: make_unique-ify two allocationsVedant Kumar2017-08-041-4/+4
| | | | llvm-svn: 310011
* [llvm-pdbutil] Add an option to only dump specific module indices.Zachary Turner2017-08-033-45/+56
| | | | | | | | | Often something interesting (like a symbol) is in a particular module, and you don't want to dump symbols from all other 300 modules to see the one you want. This adds a -modi option so that we only dump the specified module. llvm-svn: 310000
* [GlobalISel] Make GlobalISel a non-optional library.Quentin Colombet2017-08-031-5/+1
| | | | | | | | With this change, the GlobalISel library gets always built. In particular, this is not possible to opt GlobalISel out of the build using the LLVM_BUILD_GLOBAL_ISEL variable any more. llvm-svn: 309990
* [llvm-pdbutil] Allow diff to force module equivalencies.Zachary Turner2017-08-033-21/+83
| | | | | | | | | | | Sometimes the normal module equivalence detection algorithm doesn't quite work. For example, you might build the same program with MSVC and clang-cl, outputting to different object files, exes, and PDBs, then compare them. If the object files have different names though, then they won't be treated as equivalent. This way we can force specific module indices to be treated as equivalent. llvm-svn: 309983
* Delete Default and JITDefault code modelsRafael Espindola2017-08-034-60/+10
| | | | | | | | | | | | | | | IMHO it is an antipattern to have a enum value that is Default. At any given piece of code it is not clear if we have to handle Default or if has already been mapped to a concrete value. In this case in particular, only the target can do the mapping and it is nice to make sure it is always done. This deletes the two default enum values of CodeModel and uses an explicit Optional<CodeModel> when it is possible that it is unspecified. llvm-svn: 309911
* [Coverage] Add an API to retrive all instantiations of a function (NFC)Vedant Kumar2017-08-024-48/+67
| | | | | | | | | | | | | | | | | | | | | | | | | The CoverageMapping::getInstantiations() API retrieved all function records corresponding to functions with more than one instantiation (e.g template functions with multiple specializations). However, there was no simple way to determine *which* function a given record was an instantiation of. This was an oversight, since it's useful to aggregate coverage information over all instantiations of a function. llvm-cov works around this by building a mapping of source locations to instantiation sets, but this duplicates logic that libCoverage already has (see FunctionInstantiationSetCollector). This change adds a new API, CoverageMapping::getInstantiationGroups(), which returns a list of InstantiationGroups. A group contains records for each instantiation of some particular function, and also provides utilities to get the total execution count within the group, the source location of the common definition, etc. This lets removes some hacky logic in llvm-cov by reusing FunctionInstantiationSetCollector and makes the CoverageMapping API friendlier for other clients. llvm-svn: 309904
* [llvm-cov] Respect the value of the -show-instantiations optionVedant Kumar2017-08-021-1/+3
| | | | | | | Make `-show-instantiations=false` actually skip displaying instantiation sub-views, instead of simply ignoring the option. llvm-svn: 309903
* [pdbutil] Add a command to dump the FPM.Zachary Turner2017-08-026-1/+43
| | | | | | | | | | | | | | Recently problems have been discovered in the way we write the FPM (free page map). In order to fix this, we first need to establish a baseline about what a correct FPM looks like using an MSVC generated PDB, so that we can then make our own generated PDBs match. And in order to do this, the dumper needs a mode where it can dump an FPM so that we can write tests for it. This patch adds a command to dump the FPM, as well as a test against a known-good PDB. llvm-svn: 309894
* Don't pass the code model to MCRafael Espindola2017-08-024-18/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | I was surprised to see the code model being passed to MC. After all, it assembles code, it doesn't create it. The one place it is used is in the expansion of .cfi directives to handle .eh_frame being more that 2gb away from the code. As far as I can tell, gnu assembler doesn't even have an option to enable this. Compiling a c file with gcc -mcmodel=large produces a regular looking .eh_frame. This is probably because in practice linker parse and recreate .eh_frames. In llvm this is used because the JIT can place the code and .eh_frame very far apart. Ideally we would fix the jit and delete this option. This is hard. Apart from confusion another problem with the current interface is that most callers pass CodeModel::Default, which is bad since MC has no way to map it to the target default if it actually needed to. This patch then replaces the argument with a boolean with a default value. The vast majority of users don't ever need to look at it. In fact, only CodeGen and llvm-mc use it and llvm-mc just to enable more testing. llvm-svn: 309884
* Fix the bug that parseAAPipeline is not invoked in runNewPMPasses in release ↵Dehao Chen2017-08-021-0/+6
| | | | | | | | | | | | | | | | compiler. Summary: The logic is guarded by "assert". Reviewers: davidxl, davide, chandlerc Reviewed By: davide, chandlerc Subscribers: sanjoy, llvm-commits, mehdi_amini Differential Revision: https://reviews.llvm.org/D36195 llvm-svn: 309787
* Revert "Reland "[llvm][llvm-objcopy] Added support for outputting to binary ↵Petr Hosek2017-08-024-191/+88
| | | | | | | | | | in llvm-objcopy"" This is failing to compile on 32-bit ARM bots. This reverts commit r309768. llvm-svn: 309771
* Reland "[llvm][llvm-objcopy] Added support for outputting to binary in ↵Petr Hosek2017-08-014-88/+191
| | | | | | | | | | | | | | | | llvm-objcopy" This change adds the "-O binary" flag which directs llvm-objcopy to output the object file to the same format as GNU objcopy does when given the flag "-O binary". This was done by splitting the Object class into two subclasses ObjectELF and ObjectBianry which each output a different format but relay on the same code to read in the Object in Object. Patch by Jake Ehrlich Differential Revision: https://reviews.llvm.org/D34480 llvm-svn: 309768
* [llvm-cov] Allow specifying distinct architectures for each loaded binaryVedant Kumar2017-08-011-9/+16
| | | | | | | | | | | The coverage tool needs to know which slice to look at when it's handed a universal binary. Some projects need to look at aggregate coverage reports for a variety of slices in different binaries: this patch adds support for these kinds of projects to llvm-cov. rdar://problem/33579007 llvm-svn: 309747
* Revert "[llvm][llvm-objcopy] Added support for outputting to binary in ↵Petr Hosek2017-08-014-189/+91
| | | | | | | | | | | llvm-objcopy" The change seems to be failing on bots which are using gcc and bfd.ld as a host compiler and linker. This reverts commit r309658. llvm-svn: 309660
* [llvm][llvm-objcopy] Added support for outputting to binary in llvm-objcopyPetr Hosek2017-08-014-91/+189
| | | | | | | | | | | | | | This change adds the "-O binary" flag which directs llvm-objcopy to output the object file to the same format as GNU objcopy does when given the flag "-O binary". This was done by splitting the Object class into two subclasses ObjectELF and ObjectBianry which each output a different format but relay on the same code to read in the Object in Object. Patch by Jake Ehrlich Differential Revision: https://reviews.llvm.org/D34480 llvm-svn: 309658
* Reland "[LLVM][llvm-objcopy] Added basic plumbing to get things started"Petr Hosek2017-08-017-0/+650
| | | | | | | | | | | | | | | As discussed on llvm-dev I've implemented the first basic steps towards llvm-objcopy/llvm-objtool (name pending). This change adds the ability to copy (without modification) 64-bit little endian ELF executables that have SHT_PROGBITS, SHT_NOBITS, SHT_NULL and SHT_STRTAB sections. Patch by Jake Ehrlich Differential Revision: https://reviews.llvm.org/D33964 llvm-svn: 309643
* [llc][NFC] Update message in assert.Quentin Colombet2017-07-311-1/+1
| | | | llvm-svn: 309600
* [TargetPassConfig] Feature generic options to setup start/stop-after/beforeQuentin Colombet2017-07-311-79/+27
| | | | | | | | | | | | | | | | This patch refactors the code used in llc such that all the users of the addPassesToEmitFile API have access to a homogeneous way of handling start/stop-after/before options right out of the box. In particular, just invoking addPassesToEmitFile will set the proper pipeline without additional effort (modulo parsing a .mir file if the start-before/after options are used. NFC. Differential Revision: https://reviews.llvm.org/D30913 llvm-svn: 309599
* [Modules] llvm-config: Exclude CMAKE_CFG_INTDIR. It isn't used in headers.NAKAMURA Takumi2017-07-311-0/+6
| | | | | | This is part of https://reviews.llvm.org/D35559 llvm-svn: 309552
* gold/CMakeLists.txt: Prune (-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64).NAKAMURA Takumi2017-07-311-4/+0
| | | | | | | They are handled in HandleLLVMOptions.cmake for -m32. They are not required for -m64. llvm-svn: 309532
* Prune trailing linefeed at eof.NAKAMURA Takumi2017-07-311-1/+0
| | | | llvm-svn: 309531
* DebugInfo: Provide option for explicitly specifying the name of the DWP fileDavid Blaikie2017-07-301-2/+8
| | | | | | | | | | | | | | | | If you've archived the DWP file somewhere it's probably useful to be able to just tell llvm-symbolizer where it is when you're symbolizing stack traces from the binary. This only provides a mechanism for specifying a single DWP file, good if you're symbolizing a program with a single DWP file, but it's likely if the program is dynamically linked that you might have a DWP for each dynamic library - in which case this feature won't help (at least as it's surfaced in llvm-symbolizer for now) - in theory it could be extended to specify a collection of DWP files that could all be consulted for split CU hash resolution. llvm-svn: 309498
* [llvm] Update MachOObjectFile::exports interfaceAlexander Shaposhnikov2017-07-292-3/+2
| | | | | | | | | | This diff removes the second argument of the method MachOObjectFile::exports. In all in-tree uses this argument is equal to "this" and without this argument the interface seems to be cleaner. Test plan: make check-all llvm-svn: 309462
* [LTO] llvm-lto2: Add option to load sample profileTobias Edler von Koch2017-07-281-0/+6
| | | | | | | | | | | | | | Summary: This exposes LTO's Conf.SampleProfile as a command line option (-lto-sample-profile-file) for testing via the llvm-lto2 utility. Reviewers: pcc, danielcdh Subscribers: mehdi_amini, inglorion, llvm-commits Differential Revision: https://reviews.llvm.org/D36030 llvm-svn: 309456
* [llvm-pdbutil] Clean up ExitOnError usage to add ": " to our errorsReid Kleckner2017-07-271-12/+12
| | | | | | | | | The banner parameter is supposed to end in a separator, like ": ". Otherwise, we get ugly errors like: Error while reading publics streamNative error: blah blah llvm-svn: 309332
* Revert "Reland "[LLVM][llvm-objcopy] Added basic plumbing to get things ↵Petr Hosek2017-07-277-653/+0
| | | | | | | | | | started"" This change is failing tests on Windows bots due to permissions. This reverts commit r309249. llvm-svn: 309251
* Reland "[LLVM][llvm-objcopy] Added basic plumbing to get things started"Petr Hosek2017-07-277-0/+653
| | | | | | | | | | | | | | | As discussed on llvm-dev I've implemented the first basic steps towards llvm-objcopy/llvm-objtool (name pending). This change adds the ability to copy (without modification) 64-bit little endian ELF executables that have SHT_PROGBITS, SHT_NOBITS, SHT_NULL and SHT_STRTAB sections. Patch by Jake Ehrlich Differential Revision: https://reviews.llvm.org/D33964 llvm-svn: 309249
* Make new PM honor -fdebug-info-for-profilingDehao Chen2017-07-261-1/+7
| | | | | | | | | | | | | | Summary: The new PM needs to invoke add-discriminator pass when building with -fdebug-info-for-profiling. Reviewers: chandlerc, davidxl Reviewed By: chandlerc Subscribers: sanjoy, llvm-commits Differential Revision: https://reviews.llvm.org/D35744 llvm-svn: 309121
* Follow up for r307085: a better fix for a dangling StringRef.Alexander Kornienko2017-07-261-6/+2
| | | | llvm-svn: 309092
* Add test coverage for new PM PGOOpt handling.Dehao Chen2017-07-261-1/+29
| | | | | | | | | | | | | | Summary: This patch adds flags and tests to cover the PGOOpt handling logic in new PM. Reviewers: chandlerc, davide Reviewed By: chandlerc Subscribers: sanjoy, llvm-commits Differential Revision: https://reviews.llvm.org/D35807 llvm-svn: 309076
* [gold] Enable data-sections by default for the gold-plugin.Davide Italiano2017-07-261-1/+2
| | | | | | Follow up to r309056. llvm-svn: 309075
* Move manifest utils into separate lib, to reduce libxml2 deps.Eric Beckmann2017-07-263-2/+3
| | | | | | | | | | | | | | | | Summary: Previously were in support. Since many many things depend on support, were all forced to also depend on libxml2, which we only want in a few cases. This puts all the libxml2 deps in a separate lib to be used only in a few places. Reviewers: ruiu, thakis, rnk Subscribers: mgorny, hiraditya, llvm-commits Differential Revision: https://reviews.llvm.org/D35819 llvm-svn: 309070
* [PDB] Improve GSI hash table dumping for publics and globalsReid Kleckner2017-07-264-38/+85
| | | | | | | | | | | | | | | The PDB "symbol stream" actually contains symbol records for the publics and the globals stream. The globals and publics streams are essentially hash tables that point into a single stream of records. In order to match cvdump's behavior, we need to only dump symbol records referenced from the hash table. This patch implements that, and then implements global stream dumping, since it's just a subset of public stream dumping. Now we shouldn't see S_PROCREF or S_GDATA32 records when dumping publics, and instead we should see those record in the globals stream. llvm-svn: 309066
* Reapply "llvm-mt: implement simple merging of manifests, not factoring ↵Eric Beckmann2017-07-261-1/+0
| | | | | | | | | | namespaces. This time with correct #if. This reverts commit 9cf4eca0e0383040c1ff1416815c7f649650c2a0. llvm-svn: 309064
* [gold] Enable function-sections by default.Davide Italiano2017-07-251-0/+3
| | | | | | | | | | This is needed, among others, to respect --section-ordering-file with LTO. I'll follow up with a similar change for data sections. I hope every version of gold available on the bots has support for --section-ordering file. llvm-svn: 309056
OpenPOWER on IntegriCloud