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:
Vladimir 'phcoder' Serbinenko 2012-02-12 18:43:39 +01:00
parent 306fc0741f
commit 0331e102c9
9 changed files with 102 additions and 45 deletions

View file

@ -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:

View file

@ -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:

View file

@ -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;
}