#include <stdio.h>
/* 32-bit ELF base types. */
typedef unsigned int Elf32_Addr;
typedef unsigned short Elf32_Half;
typedef unsigned int Elf32_Off;
typedef signed int Elf32_Sword;
typedef unsigned int Elf32_Word;
/* 64-bit ELF base types. */
typedef unsigned long long Elf64_Addr;
typedef unsigned short Elf64_Half;
typedef signed short Elf64_SHalf;
typedef unsigned long long Elf64_Off;
typedef signed int Elf64_Sword;
typedef unsigned int Elf64_Word;
typedef unsigned long long Elf64_Xword;
typedef signed long long Elf64_Sxword;
#define EI_NIDENT 16
typedef struct {
unsigned char e_ident[EI_NIDENT];
Elf32_Half e_type;
Elf32_Half e_machine;
Elf32_Word e_version;
Elf32_Addr e_entry;
Elf32_Off e_phoff;
Elf32_Off e_shoff;
Elf32_Word e_flags;
Elf32_Half e_ehsize;
Elf32_Half e_phentsize;
Elf32_Half e_phnum;
Elf32_Half e_shentsize;
Elf32_Half e_shnum;
Elf32_Half e_shstrndx;
} Elf32_Ehdr;
typedef struct {
unsigned char e_ident[EI_NIDENT];
Elf64_Half e_type;
Elf64_Half e_machine;
Elf64_Word e_version;
Elf64_Addr e_entry;
Elf64_Off e_phoff;
Elf64_Off e_shoff;
Elf64_Word e_flags;
Elf64_Half e_ehsize;
Elf64_Half e_phentsize;
Elf64_Half e_phnum;
Elf64_Half e_shentsize;
Elf64_Half e_shnum;
Elf64_Half e_shstrndx;
} Elf64_Ehdr;
int main(void) {
// your code goes here
printf("sizeof: %i\n", sizeof Elf32_Ehdr
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovKiAzMi1iaXQgRUxGIGJhc2UgdHlwZXMuICovCnR5cGVkZWYgdW5zaWduZWQgaW50IEVsZjMyX0FkZHI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgRWxmMzJfSGFsZjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgRWxmMzJfT2ZmOwp0eXBlZGVmIHNpZ25lZCBpbnQgRWxmMzJfU3dvcmQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IEVsZjMyX1dvcmQ7CgovKiA2NC1iaXQgRUxGIGJhc2UgdHlwZXMuICovCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEVsZjY0X0FkZHI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgRWxmNjRfSGFsZjsKdHlwZWRlZiBzaWduZWQgc2hvcnQgRWxmNjRfU0hhbGY7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEVsZjY0X09mZjsKdHlwZWRlZiBzaWduZWQgaW50IEVsZjY0X1N3b3JkOwp0eXBlZGVmIHVuc2lnbmVkIGludCBFbGY2NF9Xb3JkOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBFbGY2NF9Yd29yZDsKdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIEVsZjY0X1N4d29yZDsKCiNkZWZpbmUgRUlfTklERU5UIDE2Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgY2hhciAgIGVfaWRlbnRbRUlfTklERU5UXTsKICAgICAgICBFbGYzMl9IYWxmICAgICAgZV90eXBlOwogICAgICAgIEVsZjMyX0hhbGYgICAgICBlX21hY2hpbmU7CiAgICAgICAgRWxmMzJfV29yZCAgICAgIGVfdmVyc2lvbjsKICAgICAgICBFbGYzMl9BZGRyICAgICAgZV9lbnRyeTsKICAgICAgICBFbGYzMl9PZmYgICAgICAgZV9waG9mZjsKICAgICAgICBFbGYzMl9PZmYgICAgICAgZV9zaG9mZjsKICAgICAgICBFbGYzMl9Xb3JkICAgICAgZV9mbGFnczsKICAgICAgICBFbGYzMl9IYWxmICAgICAgZV9laHNpemU7CiAgICAgICAgRWxmMzJfSGFsZiAgICAgIGVfcGhlbnRzaXplOwogICAgICAgIEVsZjMyX0hhbGYgICAgICBlX3BobnVtOwogICAgICAgIEVsZjMyX0hhbGYgICAgICBlX3NoZW50c2l6ZTsKICAgICAgICBFbGYzMl9IYWxmICAgICAgZV9zaG51bTsKICAgICAgICBFbGYzMl9IYWxmICAgICAgZV9zaHN0cm5keDsKfSBFbGYzMl9FaGRyOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGNoYXIgICBlX2lkZW50W0VJX05JREVOVF07CiAgICAgICAgRWxmNjRfSGFsZiAgICAgIGVfdHlwZTsKICAgICAgICBFbGY2NF9IYWxmICAgICAgZV9tYWNoaW5lOwogICAgICAgIEVsZjY0X1dvcmQgICAgICBlX3ZlcnNpb247CiAgICAgICAgRWxmNjRfQWRkciAgICAgIGVfZW50cnk7CiAgICAgICAgRWxmNjRfT2ZmICAgICAgIGVfcGhvZmY7CiAgICAgICAgRWxmNjRfT2ZmICAgICAgIGVfc2hvZmY7CiAgICAgICAgRWxmNjRfV29yZCAgICAgIGVfZmxhZ3M7CiAgICAgICAgRWxmNjRfSGFsZiAgICAgIGVfZWhzaXplOwogICAgICAgIEVsZjY0X0hhbGYgICAgICBlX3BoZW50c2l6ZTsKICAgICAgICBFbGY2NF9IYWxmICAgICAgZV9waG51bTsKICAgICAgICBFbGY2NF9IYWxmICAgICAgZV9zaGVudHNpemU7CiAgICAgICAgRWxmNjRfSGFsZiAgICAgIGVfc2hudW07CiAgICAgICAgRWxmNjRfSGFsZiAgICAgIGVfc2hzdHJuZHg7Cn0gRWxmNjRfRWhkcjsKCgppbnQgbWFpbih2b2lkKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglwcmludGYoInNpemVvZjogJWlcbiIsIHNpemVvZiBFbGYzMl9FaGRyKTsKCQoJcmV0dXJuIDA7Cn0K