-namespace llvm {
-
-namespace object {
-
-struct nlist_base {
- uint32_t n_strx;
- uint8_t n_type;
- uint8_t n_sect;
- uint16_t n_desc;
-};
-
-struct section_base {
- char sectname[16];
- char segname[16];
-};
-
-template<typename T>
-static void SwapStruct(T &Value);
-
-template<>
-void SwapStruct(MachO::any_relocation_info &H) {
- sys::swapByteOrder(H.r_word0);
- sys::swapByteOrder(H.r_word1);
-}
-
-template<>
-void SwapStruct(MachO::load_command &L) {
- sys::swapByteOrder(L.cmd);
- sys::swapByteOrder(L.cmdsize);
-}
-
-template<>
-void SwapStruct(nlist_base &S) {
- sys::swapByteOrder(S.n_strx);
- sys::swapByteOrder(S.n_desc);
-}
-
-template<>
-void SwapStruct(MachO::section &S) {
- sys::swapByteOrder(S.addr);
- sys::swapByteOrder(S.size);
- sys::swapByteOrder(S.offset);
- sys::swapByteOrder(S.align);
- sys::swapByteOrder(S.reloff);
- sys::swapByteOrder(S.nreloc);
- sys::swapByteOrder(S.flags);
- sys::swapByteOrder(S.reserved1);
- sys::swapByteOrder(S.reserved2);
-}
-
-template<>
-void SwapStruct(MachO::section_64 &S) {
- sys::swapByteOrder(S.addr);
- sys::swapByteOrder(S.size);
- sys::swapByteOrder(S.offset);
- sys::swapByteOrder(S.align);
- sys::swapByteOrder(S.reloff);
- sys::swapByteOrder(S.nreloc);
- sys::swapByteOrder(S.flags);
- sys::swapByteOrder(S.reserved1);
- sys::swapByteOrder(S.reserved2);
- sys::swapByteOrder(S.reserved3);
-}
-
-template<>
-void SwapStruct(MachO::nlist &S) {
- sys::swapByteOrder(S.n_strx);
- sys::swapByteOrder(S.n_desc);
- sys::swapByteOrder(S.n_value);
-}
-
-template<>
-void SwapStruct(MachO::nlist_64 &S) {
- sys::swapByteOrder(S.n_strx);
- sys::swapByteOrder(S.n_desc);
- sys::swapByteOrder(S.n_value);
-}
-
-template<>
-void SwapStruct(MachO::mach_header &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);
-}
-
-template<>
-void SwapStruct(MachO::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);
-}
-
-template<>
-void SwapStruct(MachO::symtab_command &C) {
- sys::swapByteOrder(C.cmd);
- sys::swapByteOrder(C.cmdsize);
- sys::swapByteOrder(C.symoff);
- sys::swapByteOrder(C.nsyms);
- sys::swapByteOrder(C.stroff);
- sys::swapByteOrder(C.strsize);
-}
-
-template<>
-void SwapStruct(MachO::dysymtab_command &C) {
- sys::swapByteOrder(C.cmd);
- sys::swapByteOrder(C.cmdsize);
- sys::swapByteOrder(C.ilocalsym);
- sys::swapByteOrder(C.nlocalsym);
- sys::swapByteOrder(C.iextdefsym);
- sys::swapByteOrder(C.nextdefsym);
- sys::swapByteOrder(C.iundefsym);
- sys::swapByteOrder(C.nundefsym);
- sys::swapByteOrder(C.tocoff);
- sys::swapByteOrder(C.ntoc);
- sys::swapByteOrder(C.modtaboff);
- sys::swapByteOrder(C.nmodtab);
- sys::swapByteOrder(C.extrefsymoff);
- sys::swapByteOrder(C.nextrefsyms);
- sys::swapByteOrder(C.indirectsymoff);
- sys::swapByteOrder(C.nindirectsyms);
- sys::swapByteOrder(C.extreloff);
- sys::swapByteOrder(C.nextrel);
- sys::swapByteOrder(C.locreloff);
- sys::swapByteOrder(C.nlocrel);
-}
-
-template<>
-void SwapStruct(MachO::linkedit_data_command &C) {
- sys::swapByteOrder(C.cmd);
- sys::swapByteOrder(C.cmdsize);
- sys::swapByteOrder(C.dataoff);
- sys::swapByteOrder(C.datasize);
-}
-
-template<>
-void SwapStruct(MachO::segment_command &C) {
- sys::swapByteOrder(C.cmd);
- sys::swapByteOrder(C.cmdsize);
- sys::swapByteOrder(C.vmaddr);
- sys::swapByteOrder(C.vmsize);
- sys::swapByteOrder(C.fileoff);
- sys::swapByteOrder(C.filesize);
- sys::swapByteOrder(C.maxprot);
- sys::swapByteOrder(C.initprot);
- sys::swapByteOrder(C.nsects);
- sys::swapByteOrder(C.flags);
-}
-
-template<>
-void SwapStruct(MachO::segment_command_64 &C) {
- sys::swapByteOrder(C.cmd);
- sys::swapByteOrder(C.cmdsize);
- sys::swapByteOrder(C.vmaddr);
- sys::swapByteOrder(C.vmsize);
- sys::swapByteOrder(C.fileoff);
- sys::swapByteOrder(C.filesize);
- sys::swapByteOrder(C.maxprot);
- sys::swapByteOrder(C.initprot);
- sys::swapByteOrder(C.nsects);
- sys::swapByteOrder(C.flags);
-}
-
-template<>
-void SwapStruct(uint32_t &C) {
- sys::swapByteOrder(C);
-}
-
-template<>
-void SwapStruct(MachO::linker_options_command &C) {
- sys::swapByteOrder(C.cmd);
- sys::swapByteOrder(C.cmdsize);
- sys::swapByteOrder(C.count);
-}
-
-template<>
-void SwapStruct(MachO::version_min_command&C) {
- sys::swapByteOrder(C.cmd);
- sys::swapByteOrder(C.cmdsize);
- sys::swapByteOrder(C.version);
- sys::swapByteOrder(C.reserved);
-}
-
-template<>
-void SwapStruct(MachO::dylib_command&C) {
- sys::swapByteOrder(C.cmd);
- sys::swapByteOrder(C.cmdsize);
- sys::swapByteOrder(C.dylib.name);
- sys::swapByteOrder(C.dylib.timestamp);
- sys::swapByteOrder(C.dylib.current_version);
- sys::swapByteOrder(C.dylib.compatibility_version);
-}
-
-template<>
-void SwapStruct(MachO::data_in_code_entry &C) {
- sys::swapByteOrder(C.offset);
- sys::swapByteOrder(C.length);
- sys::swapByteOrder(C.kind);