mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 11:02:59 +02:00
It turns out that we emitted completely wrong common EH frame since the early beginning! The "z" CIE augmentation mark indicates that there is an extra word containing the size of augmentation section. However, even for frames w/o any augmentation data we emitted size uleb! (this is the case of "unwinding through C code"). Thus frame moves information was emitterd completely wrong.
llvm-svn: 96287
This commit is contained in:
parent
4d16d87eb1
commit
559e34c5fc
@ -147,13 +147,15 @@ void DwarfException::EmitCIE(const Function *PersonalityFn, unsigned Index) {
|
||||
Asm->EmitInt8(RI->getDwarfRegNum(RI->getRARegister(), true));
|
||||
EOL("CIE Return Address Column");
|
||||
|
||||
EmitULEB128(AugmentationSize, "Augmentation Size");
|
||||
if (Augmentation[0]) {
|
||||
EmitULEB128(AugmentationSize, "Augmentation Size");
|
||||
|
||||
// If there is a personality, we need to indicate the function's location.
|
||||
if (PersonalityFn) {
|
||||
EmitEncodingByte(PerEncoding, "Personality");
|
||||
EmitReference(PersonalityFn, PerEncoding);
|
||||
EOL("Personality");
|
||||
// If there is a personality, we need to indicate the function's location.
|
||||
if (PersonalityFn) {
|
||||
EmitEncodingByte(PerEncoding, "Personality");
|
||||
EmitReference(PersonalityFn, PerEncoding);
|
||||
EOL("Personality");
|
||||
}
|
||||
if (UsesLSDA[Index])
|
||||
EmitEncodingByte(LSDAEncoding, "LSDA");
|
||||
if (FDEEncoding != dwarf::DW_EH_PE_absptr)
|
||||
|
Loading…
Reference in New Issue
Block a user