mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-31 10:34:17 +00:00
Fix a regression in .pop_section.
It was calling ChangeSection with the wrong current section, eventually leading to a crash. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239335 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8176f933d9
commit
279ef837e8
@ -307,11 +307,15 @@ public:
|
||||
bool PopSection() {
|
||||
if (SectionStack.size() <= 1)
|
||||
return false;
|
||||
MCSectionSubPair oldSection = SectionStack.pop_back_val().first;
|
||||
MCSectionSubPair curSection = SectionStack.back().first;
|
||||
auto I = SectionStack.end();
|
||||
--I;
|
||||
MCSectionSubPair OldSection = I->first;
|
||||
--I;
|
||||
MCSectionSubPair NewSection = I->first;
|
||||
|
||||
if (oldSection != curSection)
|
||||
ChangeSection(curSection.first, curSection.second);
|
||||
if (OldSection != NewSection)
|
||||
ChangeSection(NewSection.first, NewSection.second);
|
||||
SectionStack.pop_back();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
21
test/MC/ELF/popsection.s
Normal file
21
test/MC/ELF/popsection.s
Normal file
@ -0,0 +1,21 @@
|
||||
// RUN: llvm-mc -filetype=obj %s -o - -triple x86_64-pc-linux | llvm-readobj -s - | FileCheck %s
|
||||
|
||||
// This used to crash. Test that it create an empty section instead.
|
||||
|
||||
.pushsection foo
|
||||
.popsection
|
||||
|
||||
// CHECK: Section {
|
||||
// CHECK: Index: 5
|
||||
// CHECK-NEXT: Name: foo
|
||||
// CHECK-NEXT: Type: SHT_PROGBITS
|
||||
// CHECK-NEXT: Flags [ (0x0)
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Address: 0x0
|
||||
// CHECK-NEXT: Offset:
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Link: 0
|
||||
// CHECK-NEXT: Info: 0
|
||||
// CHECK-NEXT: AddressAlignment: 1
|
||||
// CHECK-NEXT: EntrySize: 0
|
||||
// CHECK-NEXT: }
|
Loading…
x
Reference in New Issue
Block a user