Diff for /qemu/elf_ops.h between versions 1.1.1.4 and 1.1.1.5

version 1.1.1.4, 2018/04/24 16:50:30 version 1.1.1.5, 2018/04/24 17:20:34
Line 67  static int glue(symfind, SZ)(const void  Line 67  static int glue(symfind, SZ)(const void 
     int result = 0;      int result = 0;
     if (key->st_value < sym->st_value) {      if (key->st_value < sym->st_value) {
         result = -1;          result = -1;
     } else if (key->st_value > sym->st_value + sym->st_size) {      } else if (key->st_value >= sym->st_value + sym->st_size) {
         result = 1;          result = 1;
     }      }
     return result;      return result;
Line 82  static const char *glue(lookup_symbol, S Line 82  static const char *glue(lookup_symbol, S
     key.st_value = orig_addr;      key.st_value = orig_addr;
   
     sym = bsearch(&key, syms, s->disas_num_syms, sizeof(*syms), glue(symfind, SZ));      sym = bsearch(&key, syms, s->disas_num_syms, sizeof(*syms), glue(symfind, SZ));
     if (sym != 0) {      if (sym != NULL) {
         return s->disas_strtab + sym->st_name;          return s->disas_strtab + sym->st_name;
     }      }
   
Line 185  static int glue(load_elf, SZ)(int fd, in Line 185  static int glue(load_elf, SZ)(int fd, in
     struct elf_phdr *phdr = NULL, *ph;      struct elf_phdr *phdr = NULL, *ph;
     int size, i, total_size;      int size, i, total_size;
     elf_word mem_size;      elf_word mem_size;
     uint64_t addr, low = 0, high = 0;      uint64_t addr, low = (uint64_t)-1, high = 0;
     uint8_t *data = NULL;      uint8_t *data = NULL;
   
     if (read(fd, &ehdr, sizeof(ehdr)) != sizeof(ehdr))      if (read(fd, &ehdr, sizeof(ehdr)) != sizeof(ehdr))
Line 194  static int glue(load_elf, SZ)(int fd, in Line 194  static int glue(load_elf, SZ)(int fd, in
         glue(bswap_ehdr, SZ)(&ehdr);          glue(bswap_ehdr, SZ)(&ehdr);
     }      }
   
     if (ELF_MACHINE != ehdr.e_machine)      switch (ELF_MACHINE) {
         goto fail;          case EM_PPC64:
               if (EM_PPC64 != ehdr.e_machine)
                   if (EM_PPC != ehdr.e_machine)
                       goto fail;
               break;
           case EM_X86_64:
               if (EM_X86_64 != ehdr.e_machine)
                   if (EM_386 != ehdr.e_machine)
                       goto fail;
               break;
           default:
               if (ELF_MACHINE != ehdr.e_machine)
                   goto fail;
       }
   
     if (pentry)      if (pentry)
         *pentry = (uint64_t)(elf_sword)ehdr.e_entry;          *pentry = (uint64_t)(elf_sword)ehdr.e_entry;
Line 236  static int glue(load_elf, SZ)(int fd, in Line 249  static int glue(load_elf, SZ)(int fd, in
             cpu_physical_memory_write_rom(addr, data, mem_size);              cpu_physical_memory_write_rom(addr, data, mem_size);
   
             total_size += mem_size;              total_size += mem_size;
             if (!low || addr < low)              if (addr < low)
                 low = addr;                  low = addr;
             if (!high || (addr + mem_size) > high)              if ((addr + mem_size) > high)
                 high = addr + mem_size;                  high = addr + mem_size;
   
             qemu_free(data);              qemu_free(data);

Removed from v.1.1.1.4  
changed lines
  Added in v.1.1.1.5


unix.superglobalmegacorp.com