Commit Graph

2418 Commits

Author SHA1 Message Date
Rui Ueyama 752a8c3e55 ELF: Minimum alignment value is 1, not 0. NFC.
Maybe we can interpret alignment 0 as "don't care", but for
consistency, it's good to set 1 instead of 0 where we allow
any alignments.

llvm-svn: 234284
2015-04-07 03:44:26 +00:00
Rui Ueyama 0e46755821 ELF: Add a comment to ELFFile::findAtom.
Also changed the local variable names to avoid line wrapping.

llvm-svn: 234281
2015-04-07 02:52:34 +00:00
Rui Ueyama 11dcc79de1 Fix weird comment line-wrapping.
llvm-svn: 234279
2015-04-07 02:26:42 +00:00
Rui Ueyama f11343e68e Use early continue.
llvm-svn: 234278
2015-04-07 02:20:33 +00:00
Rui Ueyama add2a66c00 ELF: Move more code from createAtoms to handleGnuLinkOnceSection.
So that createAtoms become more readable.

llvm-svn: 234277
2015-04-07 02:11:56 +00:00
Rui Ueyama f122b91a02 ELF: Simplfiy ELFFile::createAtom.
createAtom function did too much in a single for-loop. This patch
splits the for-loop and extract COMDAT handling into a separate
function.

llvm-svn: 234276
2015-04-07 01:56:07 +00:00
Rui Ueyama c9f801504a ELF: Do not return error from handle{CommonSymbol,MergeString}.
llvm-svn: 234273
2015-04-07 01:14:24 +00:00
Rui Ueyama 29e56d06f2 ELF: Do not return error from handleAbsoluteSymbol.
This function never fails.

llvm-svn: 234272
2015-04-07 01:08:16 +00:00
Rui Ueyama 00ecdb53d0 ELF: Do not return error from handleUndefinedSymbol.
This function is not supposed to return an error value.

llvm-svn: 234271
2015-04-07 01:04:15 +00:00
Rui Ueyama 9918155779 ELF: Do not return error from handleDefinedSymbol.
handleDefinedSymbol has return type of ErrorOr<ELFDefinedAtom *>.
However, it never returns an error. We are not checking errors.
It's marked as ErrorOr "just in case". That's a bad engineering
practice.

This patch simplifies the return type of the function.

llvm-svn: 234269
2015-04-07 01:00:20 +00:00
Rui Ueyama 7c869e4821 ELF: Simplify CreateELF.
CreateELF was a combination of templates and C preprocessor macros.
This patch removes uses of macros.

http://reviews.llvm.org/D8810

llvm-svn: 234253
2015-04-06 23:02:47 +00:00
Davide Italiano 553e118147 [GNU] Implement --enable-new-dtags/--disable-new-dtags
PR:		23036
Differential Revision:	http://reviews.llvm.org/D8836

llvm-svn: 234240
2015-04-06 21:45:31 +00:00
Rui Ueyama 0ac129903a ELF: Do not mix link-once and group sections.
Previously, we put both link-once and group sections into the same map
and seaparated them out when we use them. Apparently we should put them
into seaprate maps in the first place.

This piece of code is added recently, and I still don't understand all
of them. Looks like we need to clean this up even more.

llvm-svn: 234223
2015-04-06 21:21:43 +00:00
Simon Atanasyan c437888f5a Replace the `createImplicitFiles` method return type with `void`
All instances of the `createImplicitFiles` always return `true` and this
return value is used nowhere.

llvm-svn: 234205
2015-04-06 20:43:35 +00:00
Rui Ueyama 230d2ec75f Remove return after report_fatal_error which has noreturn attribute.
llvm-svn: 234204
2015-04-06 20:25:18 +00:00
Rui Ueyama 02b5a800c5 Fix weird line-wrapping.
llvm-svn: 234203
2015-04-06 20:10:09 +00:00
Rui Ueyama 0fbf5aa205 Use llvm::cast at where we don't expect a null value.
llvm-svn: 234199
2015-04-06 19:45:32 +00:00
Simon Atanasyan fa58038914 [Mips] Guard modification of register usage masks by mutex
llvm-svn: 234167
2015-04-06 16:07:19 +00:00
Simon Atanasyan 596dae5fc2 [LinkerScript] Handle symbols defined in linker scripts in case of shared lib
This patch is a follow-up to the rL232409 and allows define symbols
in a linker script in case of linking shared library.

llvm-svn: 234163
2015-04-06 15:15:01 +00:00
Simon Atanasyan a19820ddb4 [ELF] Use override keyword instead of virtual
No functional changes.

llvm-svn: 234162
2015-04-06 15:09:39 +00:00
Simon Atanasyan ac17bfd699 [ELF] Use override keyword instead of virtual
No functional changes.

llvm-svn: 234157
2015-04-06 13:26:15 +00:00
Simon Atanasyan 3dac3ba595 [ELF] Remove redundant forward class declarations
No functional changes.

llvm-svn: 234156
2015-04-06 13:26:10 +00:00
Simon Atanasyan cd9f268b50 [Mips] Remove redundant non-template MipsRelocationHandler class
llvm-svn: 234155
2015-04-06 13:26:04 +00:00
Simon Atanasyan 58a7fd48dc [Mips] Replace MipsRelocationHandler::readAddend() by a regular function
The readAddend() does not depend on MipsRelocationHandler and should not
be its member function.

llvm-svn: 234154
2015-04-06 13:25:58 +00:00
Simon Atanasyan 3a8691a27a [Mips] Reformat the code with clang-format
llvm-svn: 234153
2015-04-06 13:25:52 +00:00
Denis Protivensky 2000211ff3 [AArch64] Fix error in AARCH64_ADR_GOT_PAGE handler
The error was introduced during mechanical replacement
of raw memory reads/writes to use readxxle/writexxle functions
in r230725.

Noted and fixed by Suprateeka R Hegde <hegdesmailbox@gmail.com>

llvm-svn: 234144
2015-04-06 07:44:59 +00:00
Davide Italiano fd52bbcf58 Strip .strtab and .symtab when --strip-all is used.
This matches other linkers behaviour. Moreover, there's really
no need to keep them around.

Reported by: Rafael Avila de Espindola

PR:		22890
llvm-svn: 234130
2015-04-05 22:47:54 +00:00
Benjamin Kramer 02613337e3 [elf] Fix a silly memory leak. std::string has a non-trivial dtor.
llvm-svn: 234120
2015-04-05 15:53:20 +00:00
Simon Atanasyan efc006b573 [Mips] Rename MipsLinkingContext class method
getMergeReginfoMask => getMergedReginfoMask

llvm-svn: 234116
2015-04-05 09:01:53 +00:00
Simon Atanasyan 4c5b23f6df [Mips] Support writing .MIPS.options section into the linked file
In case of MIPS N64 ABI linker should merge registers usage masks stored
in the input .MIPS.options sections and save result into the output
.MIPS.options section.

llvm-svn: 234115
2015-04-05 09:01:46 +00:00
Simon Atanasyan 3ceaceb26a [Mips] Do not use array initializer to fix Windows build bots
llvm-svn: 234105
2015-04-04 19:48:29 +00:00
Simon Atanasyan c3899d2234 [Mips] Support writing .reginfo section into the linked file
In case of MIPS O32 ABI linker should merge registers usage masks stored
in the input .reginfo sections and save result into the output .reginfo
section.

The ABI states that the .reginfo section should be put into the separate
segment. This requirement is not implemented in this patch.

llvm-svn: 234103
2015-04-04 19:13:32 +00:00
Simon Atanasyan 1d359d3b5b [Hexagon] Remove duplicated typedef
The `HexagonELFType` is declared in the HexagonLinkingContext.h.

llvm-svn: 234089
2015-04-04 05:19:58 +00:00
Simon Atanasyan 1649aea9c6 [Hexagon][Mips] Rename template arguments <arch>ELFType to ELFT
In all other ELF related classes we use `ELFT` abbreviation.

llvm-svn: 234088
2015-04-04 05:19:51 +00:00
Rui Ueyama a5f1ae1ad0 ELF: Use short variable names in <Arch>RelocationHandlers.cpp.
Functions in the files are hard to read because of line wrapping.
Use shorter names for local variables so that the lines fit
within 80 columns.

llvm-svn: 234087
2015-04-04 04:22:27 +00:00
Rui Ueyama b2e6190aca Remove redundant anonymous namespace.
llvm-svn: 234085
2015-04-04 04:10:08 +00:00
Rui Ueyama 09f8b75b52 ELF: Merge ELFTargets.h with ELFLinkingContext.h.
These functions are "constructors" of the LinkingContexts. We already
have auxiliary classes and functions for ELFLinkingContext in the header.
They fall in the same category.

llvm-svn: 234082
2015-04-04 03:24:42 +00:00
Rui Ueyama 59b0bfef0d ELF: Return TargetRelocationHandler instead of <ArcH>TargetRelocationHandler.
getRelocationHandler is a public interface to get an instance of
TargetRelocationHandler. We don't use any member function other than
applyRelocations to a returned instance. Returning a base class instance
suffices here. (If a return type is a derived class, it looks like we were
using derived classes features.)

llvm-svn: 234081
2015-04-04 02:59:52 +00:00
Rui Ueyama 55f5b2b277 Remove a parameter for file extension from canParse.
canParse took three parameters -- file magic, filename extension and
memory buffer. All but YAMLReader ignored the second parameter.
This patch removes the parameter.

llvm-svn: 234080
2015-04-04 02:44:36 +00:00
Rui Ueyama 103cb33d08 ELF: Make private members private.
llvm-svn: 234077
2015-04-04 02:26:17 +00:00
Rui Ueyama aa1eb0c2a5 ELF: Remove ELF{Object,DSO}Reader alias templates.
Because of the previous change (r234074), ELFObjectReader became just
an alias for ELFReader. We can replace all occurrences of ELFObjectReader
with ELFReader.

In this patch, I also replaced ELFDSOReader to remove the alias template.

llvm-svn: 234076
2015-04-04 02:16:26 +00:00
Rui Ueyama db9e9d83b6 ELF: Teach File classes about their file magics.
So that we can remove one template parameter from ELFReader.
ELF port is heavily templatized, and I want to reduce the usage
where possible.

llvm-svn: 234074
2015-04-04 02:07:30 +00:00
Rui Ueyama 22f0b3f1a5 s/context/ctx/g on lib/Driver/Driver.cpp.
llvm-svn: 234073
2015-04-04 01:37:25 +00:00
Rui Ueyama c6fcfd4178 Remove unused member function declarations.
llvm-svn: 234072
2015-04-04 01:37:23 +00:00
Rui Ueyama 21d22ca11a Remove unused includes and forward declarations.
llvm-svn: 234070
2015-04-04 00:25:22 +00:00
Rui Ueyama 4d200e3859 Remove unused functions.
llvm-svn: 234069
2015-04-04 00:12:27 +00:00
Rui Ueyama 133933bb42 ELF: Define mergeHeaderFlags to ELFLinkingContext.
Only MIPS defined the member function, but this feature is not actually
MIPS-specific. Also, the dependency to the MIPS-only member function
prevented us from merging <Arch>ELF{Object,DSO}Reader classes.

This patch moves the feature from MipsLinkingContext to LinkingContext.

llvm-svn: 234068
2015-04-04 00:10:14 +00:00
Simon Atanasyan a2404f898a [ELF] Remove unused typedef
llvm-svn: 234066
2015-04-03 23:07:18 +00:00
Simon Atanasyan c36c80c2f2 [ELF] Merge Layout and TargetLayout class
It is enough to have single TargetLayout class.

llvm-svn: 234065
2015-04-03 23:07:13 +00:00
Rui Ueyama 25a0d3dd64 ELF: Merge ELF{Object,DSO}Reader implementations.
The two classes are the same other than a few exceptions.
This patch merges them using templates.

llvm-svn: 234060
2015-04-03 22:12:18 +00:00