summaryrefslogtreecommitdiffstats
path: root/lld/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h
diff options
context:
space:
mode:
authorSimon Atanasyan <simon@atanasyan.com>2014-11-06 05:53:10 +0000
committerSimon Atanasyan <simon@atanasyan.com>2014-11-06 05:53:10 +0000
commitb915d07a8e62839ca745a48fc54d2c7ed793ebcd (patch)
tree325a59a03a613970db9f69766b32611b0e8f0d5c /lld/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h
parent4c6bd6a10d06be042837df9004d7a5afc5ebca70 (diff)
downloadbcm5719-llvm-b915d07a8e62839ca745a48fc54d2c7ed793ebcd.tar.gz
bcm5719-llvm-b915d07a8e62839ca745a48fc54d2c7ed793ebcd.zip
[Mips] Check ELF flags to prevent linking of incompatible files
1. The path checks ELF header flags to prevent linking of incompatible files. For example we do not allow to link files with different ABI, -mnan flags, some combination of target CPU etc. 2. The patch merge ELF header flags from input object files to put their combination to the generated file. For example, if some input files have EF_MIPS_NOREORDER flag we need to put this flag to the output file header. I use the `parseFile()` (not `canParse()`) method because in case of recognition of incorrect input flags combination we should show detailed error message and stop the linking process and should not try to use another `Reader`. llvm-svn: 221439
Diffstat (limited to 'lld/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h')
-rw-r--r--lld/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/lld/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h b/lld/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h
index f62cf98f3c8..3a6df13b09d 100644
--- a/lld/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h
+++ b/lld/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h
@@ -24,7 +24,8 @@ template <class ELFT>
class MipsDynamicLibraryWriter : public DynamicLibraryWriter<ELFT> {
public:
MipsDynamicLibraryWriter(MipsLinkingContext &ctx,
- MipsTargetLayout<ELFT> &layout);
+ MipsTargetLayout<ELFT> &layout,
+ MipsELFFlagsMerger &elfFlagsMerger);
protected:
// Add any runtime files and their atoms to the output
@@ -51,9 +52,11 @@ private:
template <class ELFT>
MipsDynamicLibraryWriter<ELFT>::MipsDynamicLibraryWriter(
- MipsLinkingContext &ctx, MipsTargetLayout<ELFT> &layout)
- : DynamicLibraryWriter<ELFT>(ctx, layout), _writeHelper(ctx, layout),
- _mipsContext(ctx), _mipsTargetLayout(layout) {}
+ MipsLinkingContext &ctx, MipsTargetLayout<ELFT> &layout,
+ MipsELFFlagsMerger &elfFlagsMerger)
+ : DynamicLibraryWriter<ELFT>(ctx, layout),
+ _writeHelper(ctx, layout, elfFlagsMerger), _mipsContext(ctx),
+ _mipsTargetLayout(layout) {}
template <class ELFT>
bool MipsDynamicLibraryWriter<ELFT>::createImplicitFiles(
OpenPOWER on IntegriCloud