diff options
| author | Dmitry Mikulin <dmitry.mikulin@sony.com> | 2017-05-24 16:48:31 +0000 |
|---|---|---|
| committer | Dmitry Mikulin <dmitry.mikulin@sony.com> | 2017-05-24 16:48:31 +0000 |
| commit | fd0c844fbb86f964ac7d0054557683217518cf9a (patch) | |
| tree | 35cd947b3ae768479106603cc2001758718c06b5 | |
| parent | 50a17397242b22e8c8830fb04b815eee6a2ed0e1 (diff) | |
| download | bcm5719-llvm-fd0c844fbb86f964ac7d0054557683217518cf9a.tar.gz bcm5719-llvm-fd0c844fbb86f964ac7d0054557683217518cf9a.zip | |
Do not track section types of previous sections, always use PROGBITS for dummy sections.
Fix for PR33029.
llvm-svn: 303770
| -rw-r--r-- | lld/ELF/LinkerScript.cpp | 4 | ||||
| -rw-r--r-- | lld/test/ELF/linkerscript/arm-lscript.s | 9 |
2 files changed, 10 insertions, 3 deletions
diff --git a/lld/ELF/LinkerScript.cpp b/lld/ELF/LinkerScript.cpp index e3c08a34246..6eed99db3d7 100644 --- a/lld/ELF/LinkerScript.cpp +++ b/lld/ELF/LinkerScript.cpp @@ -684,7 +684,6 @@ void LinkerScript::adjustSectionsBeforeSorting() { // '.' is assigned to, but creating these section should not have any bad // consequeces and gives us a section to put the symbol in. uint64_t Flags = SHF_ALLOC; - uint32_t Type = SHT_PROGBITS; for (int I = 0, E = Opt.Commands.size(); I != E; ++I) { auto *Cmd = dyn_cast<OutputSectionCommand>(Opt.Commands[I]); @@ -692,14 +691,13 @@ void LinkerScript::adjustSectionsBeforeSorting() { continue; if (OutputSection *Sec = Cmd->Sec) { Flags = Sec->Flags; - Type = Sec->Type; continue; } if (isAllSectionDescription(*Cmd)) continue; - auto *OutSec = make<OutputSection>(Cmd->Name, Type, Flags); + auto *OutSec = make<OutputSection>(Cmd->Name, SHT_PROGBITS, Flags); OutSec->SectionIndex = I; OutputSections->push_back(OutSec); Cmd->Sec = OutSec; diff --git a/lld/test/ELF/linkerscript/arm-lscript.s b/lld/test/ELF/linkerscript/arm-lscript.s new file mode 100644 index 00000000000..c377764e977 --- /dev/null +++ b/lld/test/ELF/linkerscript/arm-lscript.s @@ -0,0 +1,9 @@ +// REQUIRES: arm +// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t.o +// RUN: echo "SECTIONS { \ +// RUN: .rel.dyn : { } \ +// RUN: .zed : { PROVIDE_HIDDEN (foobar = .); } \ +// RUN: }" > %t.script +// This is a test case for PR33029. Making sure that linker can digest +// the above script without dumping core. +// RUN: ld.lld -emit-relocs -T %t.script %t.o -shared -o %t.so |

