mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-23 01:24:30 +00:00
extracting swapStruct into include/llvm/Support/MachO.h (no functional change)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213361 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -959,6 +959,13 @@ namespace llvm {
|
||||
};
|
||||
|
||||
// Structs from <mach-o/nlist.h>
|
||||
struct nlist_base {
|
||||
uint32_t n_strx;
|
||||
uint8_t n_type;
|
||||
uint8_t n_sect;
|
||||
uint16_t n_desc;
|
||||
};
|
||||
|
||||
struct nlist {
|
||||
uint32_t n_strx;
|
||||
uint8_t n_type;
|
||||
@ -975,6 +982,206 @@ namespace llvm {
|
||||
uint64_t n_value;
|
||||
};
|
||||
|
||||
|
||||
// Byte order swapping functions for MachO structs
|
||||
|
||||
inline void swapStruct(mach_header &mh) {
|
||||
sys::swapByteOrder(mh.magic);
|
||||
sys::swapByteOrder(mh.cputype);
|
||||
sys::swapByteOrder(mh.cpusubtype);
|
||||
sys::swapByteOrder(mh.filetype);
|
||||
sys::swapByteOrder(mh.ncmds);
|
||||
sys::swapByteOrder(mh.sizeofcmds);
|
||||
sys::swapByteOrder(mh.flags);
|
||||
}
|
||||
|
||||
inline void swapStruct(mach_header_64 &H) {
|
||||
sys::swapByteOrder(H.magic);
|
||||
sys::swapByteOrder(H.cputype);
|
||||
sys::swapByteOrder(H.cpusubtype);
|
||||
sys::swapByteOrder(H.filetype);
|
||||
sys::swapByteOrder(H.ncmds);
|
||||
sys::swapByteOrder(H.sizeofcmds);
|
||||
sys::swapByteOrder(H.flags);
|
||||
sys::swapByteOrder(H.reserved);
|
||||
}
|
||||
|
||||
inline void swapStruct(load_command &lc) {
|
||||
sys::swapByteOrder(lc.cmd);
|
||||
sys::swapByteOrder(lc.cmdsize);
|
||||
}
|
||||
|
||||
inline void swapStruct(symtab_command &lc) {
|
||||
sys::swapByteOrder(lc.cmd);
|
||||
sys::swapByteOrder(lc.cmdsize);
|
||||
sys::swapByteOrder(lc.symoff);
|
||||
sys::swapByteOrder(lc.nsyms);
|
||||
sys::swapByteOrder(lc.stroff);
|
||||
sys::swapByteOrder(lc.strsize);
|
||||
}
|
||||
|
||||
inline void swapStruct(segment_command_64 &seg) {
|
||||
sys::swapByteOrder(seg.cmd);
|
||||
sys::swapByteOrder(seg.cmdsize);
|
||||
sys::swapByteOrder(seg.vmaddr);
|
||||
sys::swapByteOrder(seg.vmsize);
|
||||
sys::swapByteOrder(seg.fileoff);
|
||||
sys::swapByteOrder(seg.filesize);
|
||||
sys::swapByteOrder(seg.maxprot);
|
||||
sys::swapByteOrder(seg.initprot);
|
||||
sys::swapByteOrder(seg.nsects);
|
||||
sys::swapByteOrder(seg.flags);
|
||||
}
|
||||
|
||||
inline void swapStruct(segment_command &seg) {
|
||||
sys::swapByteOrder(seg.cmd);
|
||||
sys::swapByteOrder(seg.cmdsize);
|
||||
sys::swapByteOrder(seg.vmaddr);
|
||||
sys::swapByteOrder(seg.vmsize);
|
||||
sys::swapByteOrder(seg.fileoff);
|
||||
sys::swapByteOrder(seg.filesize);
|
||||
sys::swapByteOrder(seg.maxprot);
|
||||
sys::swapByteOrder(seg.initprot);
|
||||
sys::swapByteOrder(seg.nsects);
|
||||
sys::swapByteOrder(seg.flags);
|
||||
}
|
||||
|
||||
inline void swapStruct(section_64 §) {
|
||||
sys::swapByteOrder(sect.addr);
|
||||
sys::swapByteOrder(sect.size);
|
||||
sys::swapByteOrder(sect.offset);
|
||||
sys::swapByteOrder(sect.align);
|
||||
sys::swapByteOrder(sect.reloff);
|
||||
sys::swapByteOrder(sect.nreloc);
|
||||
sys::swapByteOrder(sect.flags);
|
||||
sys::swapByteOrder(sect.reserved1);
|
||||
sys::swapByteOrder(sect.reserved2);
|
||||
}
|
||||
|
||||
inline void swapStruct(section §) {
|
||||
sys::swapByteOrder(sect.addr);
|
||||
sys::swapByteOrder(sect.size);
|
||||
sys::swapByteOrder(sect.offset);
|
||||
sys::swapByteOrder(sect.align);
|
||||
sys::swapByteOrder(sect.reloff);
|
||||
sys::swapByteOrder(sect.nreloc);
|
||||
sys::swapByteOrder(sect.flags);
|
||||
sys::swapByteOrder(sect.reserved1);
|
||||
sys::swapByteOrder(sect.reserved2);
|
||||
}
|
||||
|
||||
inline void swapStruct(dyld_info_command &info) {
|
||||
sys::swapByteOrder(info.cmd);
|
||||
sys::swapByteOrder(info.cmdsize);
|
||||
sys::swapByteOrder(info.rebase_off);
|
||||
sys::swapByteOrder(info.rebase_size);
|
||||
sys::swapByteOrder(info.bind_off);
|
||||
sys::swapByteOrder(info.bind_size);
|
||||
sys::swapByteOrder(info.weak_bind_off);
|
||||
sys::swapByteOrder(info.weak_bind_size);
|
||||
sys::swapByteOrder(info.lazy_bind_off);
|
||||
sys::swapByteOrder(info.lazy_bind_size);
|
||||
sys::swapByteOrder(info.export_off);
|
||||
sys::swapByteOrder(info.export_size);
|
||||
}
|
||||
|
||||
inline void swapStruct(dylib_command &d) {
|
||||
sys::swapByteOrder(d.cmd);
|
||||
sys::swapByteOrder(d.cmdsize);
|
||||
sys::swapByteOrder(d.dylib.name);
|
||||
sys::swapByteOrder(d.dylib.timestamp);
|
||||
sys::swapByteOrder(d.dylib.current_version);
|
||||
sys::swapByteOrder(d.dylib.compatibility_version);
|
||||
}
|
||||
|
||||
inline void swapStruct(dylinker_command &d) {
|
||||
sys::swapByteOrder(d.cmd);
|
||||
sys::swapByteOrder(d.cmdsize);
|
||||
sys::swapByteOrder(d.name);
|
||||
}
|
||||
|
||||
inline void swapStruct(entry_point_command &e) {
|
||||
sys::swapByteOrder(e.cmd);
|
||||
sys::swapByteOrder(e.cmdsize);
|
||||
sys::swapByteOrder(e.entryoff);
|
||||
sys::swapByteOrder(e.stacksize);
|
||||
}
|
||||
|
||||
inline void swapStruct(dysymtab_command &dst) {
|
||||
sys::swapByteOrder(dst.cmd);
|
||||
sys::swapByteOrder(dst.cmdsize);
|
||||
sys::swapByteOrder(dst.ilocalsym);
|
||||
sys::swapByteOrder(dst.nlocalsym);
|
||||
sys::swapByteOrder(dst.iextdefsym);
|
||||
sys::swapByteOrder(dst.nextdefsym);
|
||||
sys::swapByteOrder(dst.iundefsym);
|
||||
sys::swapByteOrder(dst.nundefsym);
|
||||
sys::swapByteOrder(dst.tocoff);
|
||||
sys::swapByteOrder(dst.ntoc);
|
||||
sys::swapByteOrder(dst.modtaboff);
|
||||
sys::swapByteOrder(dst.nmodtab);
|
||||
sys::swapByteOrder(dst.extrefsymoff);
|
||||
sys::swapByteOrder(dst.nextrefsyms);
|
||||
sys::swapByteOrder(dst.indirectsymoff);
|
||||
sys::swapByteOrder(dst.nindirectsyms);
|
||||
sys::swapByteOrder(dst.extreloff);
|
||||
sys::swapByteOrder(dst.nextrel);
|
||||
sys::swapByteOrder(dst.locreloff);
|
||||
sys::swapByteOrder(dst.nlocrel);
|
||||
}
|
||||
|
||||
inline void swapStruct(any_relocation_info &reloc) {
|
||||
sys::swapByteOrder(reloc.r_word0);
|
||||
sys::swapByteOrder(reloc.r_word1);
|
||||
}
|
||||
|
||||
inline void swapStruct(nlist_base &S) {
|
||||
sys::swapByteOrder(S.n_strx);
|
||||
sys::swapByteOrder(S.n_desc);
|
||||
}
|
||||
|
||||
inline void swapStruct(nlist &sym) {
|
||||
sys::swapByteOrder(sym.n_strx);
|
||||
sys::swapByteOrder(sym.n_desc);
|
||||
sys::swapByteOrder(sym.n_value);
|
||||
}
|
||||
|
||||
inline void swapStruct(nlist_64 &sym) {
|
||||
sys::swapByteOrder(sym.n_strx);
|
||||
sys::swapByteOrder(sym.n_desc);
|
||||
sys::swapByteOrder(sym.n_value);
|
||||
}
|
||||
|
||||
inline void swapStruct(linkedit_data_command &C) {
|
||||
sys::swapByteOrder(C.cmd);
|
||||
sys::swapByteOrder(C.cmdsize);
|
||||
sys::swapByteOrder(C.dataoff);
|
||||
sys::swapByteOrder(C.datasize);
|
||||
}
|
||||
|
||||
inline void swapStruct(linker_options_command &C) {
|
||||
sys::swapByteOrder(C.cmd);
|
||||
sys::swapByteOrder(C.cmdsize);
|
||||
sys::swapByteOrder(C.count);
|
||||
}
|
||||
|
||||
inline void swapStruct(version_min_command&C) {
|
||||
sys::swapByteOrder(C.cmd);
|
||||
sys::swapByteOrder(C.cmdsize);
|
||||
sys::swapByteOrder(C.version);
|
||||
sys::swapByteOrder(C.reserved);
|
||||
}
|
||||
|
||||
inline void swapStruct(data_in_code_entry &C) {
|
||||
sys::swapByteOrder(C.offset);
|
||||
sys::swapByteOrder(C.length);
|
||||
sys::swapByteOrder(C.kind);
|
||||
}
|
||||
|
||||
inline void swapStruct(uint32_t &C) {
|
||||
sys::swapByteOrder(C);
|
||||
}
|
||||
|
||||
// Get/Set functions from <mach-o/nlist.h>
|
||||
|
||||
static inline uint16_t GET_LIBRARY_ORDINAL(uint16_t n_desc) {
|
||||
|
Reference in New Issue
Block a user