1*7304104dSAndroid Build Coastguard Worker /* Abstract description of component ELF types. 2*7304104dSAndroid Build Coastguard Worker Copyright (C) 1998, 1999, 2000, 2002, 2004, 2007, 2015 Red Hat, Inc. 3*7304104dSAndroid Build Coastguard Worker This file is part of elfutils. 4*7304104dSAndroid Build Coastguard Worker Written by Ulrich Drepper <[email protected]>, 1998. 5*7304104dSAndroid Build Coastguard Worker 6*7304104dSAndroid Build Coastguard Worker This file is free software; you can redistribute it and/or modify 7*7304104dSAndroid Build Coastguard Worker it under the terms of either 8*7304104dSAndroid Build Coastguard Worker 9*7304104dSAndroid Build Coastguard Worker * the GNU Lesser General Public License as published by the Free 10*7304104dSAndroid Build Coastguard Worker Software Foundation; either version 3 of the License, or (at 11*7304104dSAndroid Build Coastguard Worker your option) any later version 12*7304104dSAndroid Build Coastguard Worker 13*7304104dSAndroid Build Coastguard Worker or 14*7304104dSAndroid Build Coastguard Worker 15*7304104dSAndroid Build Coastguard Worker * the GNU General Public License as published by the Free 16*7304104dSAndroid Build Coastguard Worker Software Foundation; either version 2 of the License, or (at 17*7304104dSAndroid Build Coastguard Worker your option) any later version 18*7304104dSAndroid Build Coastguard Worker 19*7304104dSAndroid Build Coastguard Worker or both in parallel, as here. 20*7304104dSAndroid Build Coastguard Worker 21*7304104dSAndroid Build Coastguard Worker elfutils is distributed in the hope that it will be useful, but 22*7304104dSAndroid Build Coastguard Worker WITHOUT ANY WARRANTY; without even the implied warranty of 23*7304104dSAndroid Build Coastguard Worker MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 24*7304104dSAndroid Build Coastguard Worker General Public License for more details. 25*7304104dSAndroid Build Coastguard Worker 26*7304104dSAndroid Build Coastguard Worker You should have received copies of the GNU General Public License and 27*7304104dSAndroid Build Coastguard Worker the GNU Lesser General Public License along with this program. If 28*7304104dSAndroid Build Coastguard Worker not, see <http://www.gnu.org/licenses/>. */ 29*7304104dSAndroid Build Coastguard Worker 30*7304104dSAndroid Build Coastguard Worker /* ELF header. */ 31*7304104dSAndroid Build Coastguard Worker #define Ehdr(Bits, Ext) \ 32*7304104dSAndroid Build Coastguard Worker START (Bits, Ehdr, Ext##Ehdr) \ 33*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (unsigned char e_ident[EI_NIDENT];) \ 34*7304104dSAndroid Build Coastguard Worker TYPE_XLATE (memmove (tdest->e_ident, tsrc->e_ident, EI_NIDENT);) \ 35*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), e_type) \ 36*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), e_machine) \ 37*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), e_version) \ 38*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Addr), e_entry) \ 39*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Off), e_phoff) \ 40*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Off), e_shoff) \ 41*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), e_flags) \ 42*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), e_ehsize) \ 43*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), e_phentsize) \ 44*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), e_phnum) \ 45*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), e_shentsize) \ 46*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), e_shnum) \ 47*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), e_shstrndx) \ 48*7304104dSAndroid Build Coastguard Worker END (Bits, Ext##Ehdr) 49*7304104dSAndroid Build Coastguard Worker 50*7304104dSAndroid Build Coastguard Worker #define Ehdr32(Ext) \ 51*7304104dSAndroid Build Coastguard Worker Ehdr(32, Ext) 52*7304104dSAndroid Build Coastguard Worker #define Ehdr64(Ext) \ 53*7304104dSAndroid Build Coastguard Worker Ehdr(64, Ext) 54*7304104dSAndroid Build Coastguard Worker 55*7304104dSAndroid Build Coastguard Worker 56*7304104dSAndroid Build Coastguard Worker /* Program header. */ 57*7304104dSAndroid Build Coastguard Worker #define Phdr32(Ext) \ 58*7304104dSAndroid Build Coastguard Worker START (32, Phdr, Ext##Phdr) \ 59*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), p_type) \ 60*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Off), p_offset) \ 61*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Addr), p_vaddr) \ 62*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Addr), p_paddr) \ 63*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), p_filesz) \ 64*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), p_memsz) \ 65*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), p_flags) \ 66*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), p_align) \ 67*7304104dSAndroid Build Coastguard Worker END (32, Ext##Phdr) 68*7304104dSAndroid Build Coastguard Worker #define Phdr64(Ext) \ 69*7304104dSAndroid Build Coastguard Worker START (64, Phdr, Ext##Phdr) \ 70*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Word), p_type) \ 71*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Word), p_flags) \ 72*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Off), p_offset) \ 73*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Addr), p_vaddr) \ 74*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Addr), p_paddr) \ 75*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Xword), p_filesz) \ 76*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Xword), p_memsz) \ 77*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Xword), p_align) \ 78*7304104dSAndroid Build Coastguard Worker END (64, Ext##Phdr) 79*7304104dSAndroid Build Coastguard Worker 80*7304104dSAndroid Build Coastguard Worker 81*7304104dSAndroid Build Coastguard Worker /* Section header. */ 82*7304104dSAndroid Build Coastguard Worker #define Shdr32(Ext) \ 83*7304104dSAndroid Build Coastguard Worker START (32, Shdr, Ext##Shdr) \ 84*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), sh_name) \ 85*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), sh_type) \ 86*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), sh_flags) \ 87*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Addr), sh_addr) \ 88*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Off), sh_offset) \ 89*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), sh_size) \ 90*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), sh_link) \ 91*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), sh_info) \ 92*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), sh_addralign) \ 93*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), sh_entsize) \ 94*7304104dSAndroid Build Coastguard Worker END (32, Ext##Shdr) 95*7304104dSAndroid Build Coastguard Worker #define Shdr64(Ext) \ 96*7304104dSAndroid Build Coastguard Worker START (64, Shdr, Ext##Shdr) \ 97*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Word), sh_name) \ 98*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Word), sh_type) \ 99*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Xword), sh_flags) \ 100*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Addr), sh_addr) \ 101*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Off), sh_offset) \ 102*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Xword), sh_size) \ 103*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Word), sh_link) \ 104*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Word), sh_info) \ 105*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Xword), sh_addralign) \ 106*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Xword), sh_entsize) \ 107*7304104dSAndroid Build Coastguard Worker END (64, Ext##Shdr) 108*7304104dSAndroid Build Coastguard Worker 109*7304104dSAndroid Build Coastguard Worker 110*7304104dSAndroid Build Coastguard Worker /* Symbol table. */ 111*7304104dSAndroid Build Coastguard Worker #define Sym32(Ext) \ 112*7304104dSAndroid Build Coastguard Worker START (32, Sym, Ext##Sym) \ 113*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), st_name) \ 114*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Addr), st_value) \ 115*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), st_size) \ 116*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (unsigned char st_info;) \ 117*7304104dSAndroid Build Coastguard Worker TYPE_XLATE (tdest->st_info = tsrc->st_info;) \ 118*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (unsigned char st_other;) \ 119*7304104dSAndroid Build Coastguard Worker TYPE_XLATE (tdest->st_other = tsrc->st_other;) \ 120*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Half), st_shndx) \ 121*7304104dSAndroid Build Coastguard Worker END (32, Ext##Sym) 122*7304104dSAndroid Build Coastguard Worker #define Sym64(Ext) \ 123*7304104dSAndroid Build Coastguard Worker START (64, Sym, Ext##Sym) \ 124*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Word), st_name) \ 125*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (unsigned char st_info;) \ 126*7304104dSAndroid Build Coastguard Worker TYPE_XLATE (tdest->st_info = tsrc->st_info;) \ 127*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (unsigned char st_other;) \ 128*7304104dSAndroid Build Coastguard Worker TYPE_XLATE (tdest->st_other = tsrc->st_other;) \ 129*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Half), st_shndx) \ 130*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Addr), st_value) \ 131*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Xword), st_size) \ 132*7304104dSAndroid Build Coastguard Worker END (64, Ext##Sym) 133*7304104dSAndroid Build Coastguard Worker 134*7304104dSAndroid Build Coastguard Worker 135*7304104dSAndroid Build Coastguard Worker /* Relocation. */ 136*7304104dSAndroid Build Coastguard Worker #define Rel32(Ext) \ 137*7304104dSAndroid Build Coastguard Worker START (32, Rel, Ext##Rel) \ 138*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Addr), r_offset) \ 139*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), r_info) \ 140*7304104dSAndroid Build Coastguard Worker END (32, Ext##Rel) 141*7304104dSAndroid Build Coastguard Worker #define Rel64(Ext) \ 142*7304104dSAndroid Build Coastguard Worker START (64, Rel, Ext##Rel) \ 143*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Addr), r_offset) \ 144*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Xword), r_info) \ 145*7304104dSAndroid Build Coastguard Worker END (64, Ext##Rel) 146*7304104dSAndroid Build Coastguard Worker 147*7304104dSAndroid Build Coastguard Worker #define Rela32(Ext) \ 148*7304104dSAndroid Build Coastguard Worker START (32, Rela, Ext##Rela) \ 149*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Addr), r_offset) \ 150*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), r_info) \ 151*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Sword), r_addend) \ 152*7304104dSAndroid Build Coastguard Worker END (32, Ext##Rela) 153*7304104dSAndroid Build Coastguard Worker #define Rela64(Ext) \ 154*7304104dSAndroid Build Coastguard Worker START (64, Rela, Ext##Rela) \ 155*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Addr), r_offset) \ 156*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Xword), r_info) \ 157*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Sxword), r_addend) \ 158*7304104dSAndroid Build Coastguard Worker END (64, Ext##Rela) 159*7304104dSAndroid Build Coastguard Worker 160*7304104dSAndroid Build Coastguard Worker 161*7304104dSAndroid Build Coastguard Worker /* Note entry header. */ 162*7304104dSAndroid Build Coastguard Worker #define Note(Bits, Ext) \ 163*7304104dSAndroid Build Coastguard Worker START (Bits, Nhdr, Ext##Nhdr) \ 164*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), n_namesz) \ 165*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), n_descsz) \ 166*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), n_type) \ 167*7304104dSAndroid Build Coastguard Worker END (Bits, Ext##Nhdr) 168*7304104dSAndroid Build Coastguard Worker 169*7304104dSAndroid Build Coastguard Worker #define Note32(Ext) \ 170*7304104dSAndroid Build Coastguard Worker Note (32, Ext) 171*7304104dSAndroid Build Coastguard Worker #define Note64(Ext) \ 172*7304104dSAndroid Build Coastguard Worker Note (64, Ext) 173*7304104dSAndroid Build Coastguard Worker 174*7304104dSAndroid Build Coastguard Worker 175*7304104dSAndroid Build Coastguard Worker /* Dynamic section data. */ 176*7304104dSAndroid Build Coastguard Worker #define Dyn32(Ext) \ 177*7304104dSAndroid Build Coastguard Worker START (32, Dyn, Ext##Dyn) \ 178*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Sword), d_tag) \ 179*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (union {) \ 180*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (ElfW2(32, Ext##Word) d_val;) \ 181*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (ElfW2(32, Ext##Addr) d_ptr;) \ 182*7304104dSAndroid Build Coastguard Worker TYPE_XLATE (Elf32_cvt_Addr1 (&tdest->d_un.d_val, &tsrc->d_un.d_val);) \ 183*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (ElfW2(32, Ext##Off) d_off;) \ 184*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (} d_un;) \ 185*7304104dSAndroid Build Coastguard Worker END (32, Ext##Dyn) 186*7304104dSAndroid Build Coastguard Worker #define Dyn64(Ext) \ 187*7304104dSAndroid Build Coastguard Worker START (64, Dyn, Ext##Dyn) \ 188*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Xword), d_tag) \ 189*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (union {) \ 190*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (ElfW2(64, Ext##Xword) d_val;) \ 191*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (ElfW2(64, Ext##Addr) d_ptr;) \ 192*7304104dSAndroid Build Coastguard Worker TYPE_XLATE (Elf64_cvt_Addr1 (&tdest->d_un.d_val, &tsrc->d_un.d_val);) \ 193*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (} d_un;) \ 194*7304104dSAndroid Build Coastguard Worker END (64, Ext##Dyn) 195*7304104dSAndroid Build Coastguard Worker 196*7304104dSAndroid Build Coastguard Worker 197*7304104dSAndroid Build Coastguard Worker #ifndef GENERATE_CONVERSION 198*7304104dSAndroid Build Coastguard Worker /* Version definitions. */ 199*7304104dSAndroid Build Coastguard Worker # define Verdef(Bits, Ext) \ 200*7304104dSAndroid Build Coastguard Worker START (Bits, Verdef, Ext##Verdef) \ 201*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), vd_version) \ 202*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), vd_flags) \ 203*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), vd_ndx) \ 204*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), vd_cnt) \ 205*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), vd_hash) \ 206*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), vd_aux) \ 207*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), vd_next) \ 208*7304104dSAndroid Build Coastguard Worker END (Bits, Ext##Verdef) 209*7304104dSAndroid Build Coastguard Worker 210*7304104dSAndroid Build Coastguard Worker # define Verdef32(Ext) \ 211*7304104dSAndroid Build Coastguard Worker Verdef (32, Ext) 212*7304104dSAndroid Build Coastguard Worker # define Verdef64(Ext) \ 213*7304104dSAndroid Build Coastguard Worker Verdef (64, Ext) 214*7304104dSAndroid Build Coastguard Worker 215*7304104dSAndroid Build Coastguard Worker # define Verdaux(Bits, Ext) \ 216*7304104dSAndroid Build Coastguard Worker START (Bits, Verdaux, Ext##Verdaux) \ 217*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), vda_name) \ 218*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), vda_next) \ 219*7304104dSAndroid Build Coastguard Worker END (Bits, Ext##Verdaux) 220*7304104dSAndroid Build Coastguard Worker 221*7304104dSAndroid Build Coastguard Worker # define Verdaux32(Ext) \ 222*7304104dSAndroid Build Coastguard Worker Verdaux (32, Ext) 223*7304104dSAndroid Build Coastguard Worker # define Verdaux64(Ext) \ 224*7304104dSAndroid Build Coastguard Worker Verdaux (64, Ext) 225*7304104dSAndroid Build Coastguard Worker 226*7304104dSAndroid Build Coastguard Worker /* Required versions. */ 227*7304104dSAndroid Build Coastguard Worker # define Verneed(Bits, Ext) \ 228*7304104dSAndroid Build Coastguard Worker START (Bits, Verneed, Ext##Verneed) \ 229*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), vn_version) \ 230*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), vn_cnt) \ 231*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), vn_file) \ 232*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), vn_aux) \ 233*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), vn_next) \ 234*7304104dSAndroid Build Coastguard Worker END (Bits, Ext##Verneed) 235*7304104dSAndroid Build Coastguard Worker 236*7304104dSAndroid Build Coastguard Worker # define Verneed32(Ext) \ 237*7304104dSAndroid Build Coastguard Worker Verneed (32, Ext) 238*7304104dSAndroid Build Coastguard Worker # define Verneed64(Ext) \ 239*7304104dSAndroid Build Coastguard Worker Verneed (64, Ext) 240*7304104dSAndroid Build Coastguard Worker 241*7304104dSAndroid Build Coastguard Worker # define Vernaux(Bits, Ext) \ 242*7304104dSAndroid Build Coastguard Worker START (Bits, Vernaux, Ext##Vernaux) \ 243*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), vna_hash) \ 244*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), vna_flags) \ 245*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), vna_other) \ 246*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), vna_name) \ 247*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), vna_next) \ 248*7304104dSAndroid Build Coastguard Worker END (Bits, Ext##Vernaux) 249*7304104dSAndroid Build Coastguard Worker 250*7304104dSAndroid Build Coastguard Worker # define Vernaux32(Ext) \ 251*7304104dSAndroid Build Coastguard Worker Vernaux (32, Ext) 252*7304104dSAndroid Build Coastguard Worker # define Vernaux64(Ext) \ 253*7304104dSAndroid Build Coastguard Worker Vernaux (64, Ext) 254*7304104dSAndroid Build Coastguard Worker #endif 255*7304104dSAndroid Build Coastguard Worker 256*7304104dSAndroid Build Coastguard Worker /* Symbol information. */ 257*7304104dSAndroid Build Coastguard Worker #define Syminfo(Bits, Ext) \ 258*7304104dSAndroid Build Coastguard Worker START (Bits, Syminfo, Ext##Syminfo) \ 259*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), si_boundto) \ 260*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), si_flags) \ 261*7304104dSAndroid Build Coastguard Worker END (Bits, Ext##Syminfo) 262*7304104dSAndroid Build Coastguard Worker 263*7304104dSAndroid Build Coastguard Worker #define Syminfo32(Ext) \ 264*7304104dSAndroid Build Coastguard Worker Syminfo (32, Ext) 265*7304104dSAndroid Build Coastguard Worker #define Syminfo64(Ext) \ 266*7304104dSAndroid Build Coastguard Worker Syminfo (64, Ext) 267*7304104dSAndroid Build Coastguard Worker 268*7304104dSAndroid Build Coastguard Worker /* Move information. */ 269*7304104dSAndroid Build Coastguard Worker #define Move(Bits, Ext) \ 270*7304104dSAndroid Build Coastguard Worker START (Bits, Move, Ext##Move) \ 271*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Xword), m_value) \ 272*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Xword), m_info) \ 273*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Xword), m_poffset) \ 274*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), m_repeat) \ 275*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Half), m_stride) \ 276*7304104dSAndroid Build Coastguard Worker END (Bits, Ext##Move) 277*7304104dSAndroid Build Coastguard Worker 278*7304104dSAndroid Build Coastguard Worker #define Move32(Ext) \ 279*7304104dSAndroid Build Coastguard Worker Move (32, Ext) 280*7304104dSAndroid Build Coastguard Worker #define Move64(Ext) \ 281*7304104dSAndroid Build Coastguard Worker Move (64, Ext) 282*7304104dSAndroid Build Coastguard Worker 283*7304104dSAndroid Build Coastguard Worker #define Lib(Bits, Ext) \ 284*7304104dSAndroid Build Coastguard Worker START (Bits, Lib, Ext##Lib) \ 285*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), l_name) \ 286*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), l_time_stamp) \ 287*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), l_checksum) \ 288*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), l_version) \ 289*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(Bits, Ext##Word), l_flags) \ 290*7304104dSAndroid Build Coastguard Worker END (Bits, Ext##Lib) 291*7304104dSAndroid Build Coastguard Worker 292*7304104dSAndroid Build Coastguard Worker #define Lib32(Ext) \ 293*7304104dSAndroid Build Coastguard Worker Lib (32, Ext) 294*7304104dSAndroid Build Coastguard Worker #define Lib64(Ext) \ 295*7304104dSAndroid Build Coastguard Worker Lib (64, Ext) 296*7304104dSAndroid Build Coastguard Worker 297*7304104dSAndroid Build Coastguard Worker #define auxv_t32(Ext) \ 298*7304104dSAndroid Build Coastguard Worker START (32, auxv_t, Ext##auxv_t) \ 299*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), a_type) \ 300*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (union {) \ 301*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (ElfW2(32, Ext##Word) a_val;) \ 302*7304104dSAndroid Build Coastguard Worker TYPE_XLATE (Elf32_cvt_Addr1 (&tdest->a_un.a_val, &tsrc->a_un.a_val);) \ 303*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (} a_un;) \ 304*7304104dSAndroid Build Coastguard Worker END (32, Ext##auxv_t) 305*7304104dSAndroid Build Coastguard Worker #define auxv_t64(Ext) \ 306*7304104dSAndroid Build Coastguard Worker START (64, auxv_t, Ext##auxv_t) \ 307*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Xword), a_type) \ 308*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (union {) \ 309*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (ElfW2(64, Ext##Xword) a_val;) \ 310*7304104dSAndroid Build Coastguard Worker TYPE_XLATE (Elf64_cvt_Addr1 (&tdest->a_un.a_val, &tsrc->a_un.a_val);) \ 311*7304104dSAndroid Build Coastguard Worker TYPE_EXTRA (} a_un;) \ 312*7304104dSAndroid Build Coastguard Worker END (64, Ext##auxv_t) 313*7304104dSAndroid Build Coastguard Worker 314*7304104dSAndroid Build Coastguard Worker /* Note that there is actual compression data right after the Chdr. 315*7304104dSAndroid Build Coastguard Worker So we also have a separate conversion function for the whole 316*7304104dSAndroid Build Coastguard Worker section. */ 317*7304104dSAndroid Build Coastguard Worker #define Chdr32(Ext) \ 318*7304104dSAndroid Build Coastguard Worker START (32, Chdr, Ext##Chdr) \ 319*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), ch_type) \ 320*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), ch_size) \ 321*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(32, Ext##Word), ch_addralign) \ 322*7304104dSAndroid Build Coastguard Worker END (32, Ext##Chdr) 323*7304104dSAndroid Build Coastguard Worker 324*7304104dSAndroid Build Coastguard Worker #define Chdr64(Ext) \ 325*7304104dSAndroid Build Coastguard Worker START (64, Chdr, Ext##Chdr) \ 326*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Word), ch_type) \ 327*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Word), ch_reserved) \ 328*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Xword), ch_size) \ 329*7304104dSAndroid Build Coastguard Worker TYPE_NAME (ElfW2(64, Ext##Xword), ch_addralign) \ 330*7304104dSAndroid Build Coastguard Worker END (64, Ext##Chdr) 331