mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 02:33:06 +01:00
[AVR] Enable emission of debug information
Prior to this, the code was missing AVR-specific relocation logic in RelocVisitor.h. This patch teaches RelocVisitor about R_AVR_16 and R_AVR_32. Debug information is emitted in the final object file, and understood by 'avr-readelf --debug-dump' from AVR-GCC. llvm-dwarfdump is yet to understand how to dump AVR DWARF symbols. llvm-svn: 351720
This commit is contained in:
parent
762baddef7
commit
b12b974df1
@ -100,6 +100,8 @@ private:
|
||||
case Triple::arm:
|
||||
case Triple::armeb:
|
||||
return visitARM(Rel, R, Value);
|
||||
case Triple::avr:
|
||||
return visitAVR(Rel, R, Value);
|
||||
case Triple::lanai:
|
||||
return visitLanai(Rel, R, Value);
|
||||
case Triple::mipsel:
|
||||
@ -258,6 +260,16 @@ private:
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64_t visitAVR(uint32_t Rel, RelocationRef R, uint64_t Value) {
|
||||
if (Rel == ELF::R_AVR_16) {
|
||||
return (Value + getELFAddend(R)) & 0xFFFF;
|
||||
} else if (Rel == ELF::R_AVR_32) {
|
||||
return (Value + getELFAddend(R)) & 0xFFFFFFFF;
|
||||
}
|
||||
HasError = true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64_t visitLanai(uint32_t Rel, RelocationRef R, uint64_t Value) {
|
||||
if (Rel == ELF::R_LANAI_32)
|
||||
return (Value + getELFAddend(R)) & 0xFFFFFFFF;
|
||||
|
@ -23,6 +23,7 @@ AVRMCAsmInfo::AVRMCAsmInfo(const Triple &TT) {
|
||||
PrivateGlobalPrefix = ".L";
|
||||
UsesELFSectionDirectiveForBSS = true;
|
||||
UseIntegratedAssembler = true;
|
||||
SupportsDebugInformation = true;
|
||||
}
|
||||
|
||||
} // end of namespace llvm
|
||||
|
Loading…
Reference in New Issue
Block a user