Efiemu stylistic fixes and gettext.
* grub-core/efiemu/i386/loadcore32.c (grub_arch_efiemu_relocate_symbols32): Avoid set in if. * grub-core/efiemu/i386/loadcore64.c (grub_arch_efiemu_relocate_symbols64): Likewise. * grub-core/efiemu/i386/pc/cfgtables.c (grub_machine_efiemu_init_tables): Likewise. * grub-core/efiemu/loadcore.c (grub_efiemu_resolve_symbols): Likewise. (grub_efiemu_loadcore_initXX): Add a filename argument. All users updated. Improved error message. * grub-core/efiemu/loadcore_common.c (grub_efiemu_loadcore_init): Add a filename argument. All users updated. * grub-core/efiemu/symbols.c (grub_efiemu_set_virtual_address_map): Reclassify double relocation as GRUB_ERR_BUG.
This commit is contained in:
parent
306fc0741f
commit
0331e102c9
9 changed files with 102 additions and 45 deletions
|
@ -87,18 +87,23 @@ grub_arch_efiemu_relocate_symbols32 (grub_efiemu_segment_t segs,
|
|||
switch (ELF32_R_TYPE (rel->r_info))
|
||||
{
|
||||
case R_386_32:
|
||||
if ((err = grub_efiemu_write_value
|
||||
(addr, sym.off + *addr, sym.handle, 0,
|
||||
seg->ptv_rel_needed, sizeof (grub_uint32_t))))
|
||||
err = grub_efiemu_write_value (addr, sym.off + *addr,
|
||||
sym.handle, 0,
|
||||
seg->ptv_rel_needed,
|
||||
sizeof (grub_uint32_t));
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
break;
|
||||
|
||||
case R_386_PC32:
|
||||
if ((err = grub_efiemu_write_value
|
||||
(addr, sym.off + *addr - rel->r_offset
|
||||
- seg->off, sym.handle, seg->handle,
|
||||
seg->ptv_rel_needed, sizeof (grub_uint32_t))))
|
||||
err = grub_efiemu_write_value (addr, sym.off + *addr
|
||||
- rel->r_offset
|
||||
- seg->off, sym.handle,
|
||||
seg->handle,
|
||||
seg->ptv_rel_needed,
|
||||
sizeof (grub_uint32_t));
|
||||
if (err)
|
||||
return err;
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -88,25 +88,35 @@ grub_arch_efiemu_relocate_symbols64 (grub_efiemu_segment_t segs,
|
|||
switch (ELF64_R_TYPE (rel->r_info))
|
||||
{
|
||||
case R_X86_64_64:
|
||||
if ((err = grub_efiemu_write_value
|
||||
(addr, *addr64 + rel->r_addend + sym.off, sym.handle,
|
||||
0, seg->ptv_rel_needed, sizeof (grub_uint64_t))))
|
||||
err = grub_efiemu_write_value (addr,
|
||||
*addr64 + rel->r_addend
|
||||
+ sym.off, sym.handle,
|
||||
0, seg->ptv_rel_needed,
|
||||
sizeof (grub_uint64_t));
|
||||
if (err)
|
||||
return err;
|
||||
break;
|
||||
|
||||
case R_X86_64_PC32:
|
||||
if ((err = grub_efiemu_write_value
|
||||
(addr, *addr32 + rel->r_addend + sym.off
|
||||
- rel->r_offset - seg->off, sym.handle, seg->handle,
|
||||
seg->ptv_rel_needed, sizeof (grub_uint32_t))))
|
||||
err = grub_efiemu_write_value (addr,
|
||||
*addr32 + rel->r_addend
|
||||
+ sym.off
|
||||
- rel->r_offset - seg->off,
|
||||
sym.handle, seg->handle,
|
||||
seg->ptv_rel_needed,
|
||||
sizeof (grub_uint32_t));
|
||||
if (err)
|
||||
return err;
|
||||
break;
|
||||
|
||||
case R_X86_64_32:
|
||||
case R_X86_64_32S:
|
||||
if ((err = grub_efiemu_write_value
|
||||
(addr, *addr32 + rel->r_addend + sym.off, sym.handle,
|
||||
0, seg->ptv_rel_needed, sizeof (grub_uint32_t))))
|
||||
err = grub_efiemu_write_value (addr,
|
||||
*addr32 + rel->r_addend
|
||||
+ sym.off, sym.handle,
|
||||
0, seg->ptv_rel_needed,
|
||||
sizeof (grub_uint32_t));
|
||||
if (err)
|
||||
return err;
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -67,7 +67,8 @@ grub_machine_efiemu_init_tables (void)
|
|||
if (ptr < (grub_uint8_t *) 0x100000)
|
||||
{
|
||||
grub_dprintf ("efiemu", "Registering SMBIOS\n");
|
||||
if ((err = grub_efiemu_register_configuration_table (smbios, 0, 0, ptr)))
|
||||
err = grub_efiemu_register_configuration_table (smbios, 0, 0, ptr);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue