]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Efiemu stylistic fixes and gettext.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 12 Feb 2012 17:43:39 +0000 (18:43 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 12 Feb 2012 17:43:39 +0000 (18:43 +0100)
* 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.

ChangeLog
grub-core/efiemu/i386/loadcore32.c
grub-core/efiemu/i386/loadcore64.c
grub-core/efiemu/i386/pc/cfgtables.c
grub-core/efiemu/loadcore.c
grub-core/efiemu/loadcore_common.c
grub-core/efiemu/main.c
grub-core/efiemu/symbols.c
include/grub/efiemu/efiemu.h

index 5aec20e5df4a49650043c8ea8782a802f88c6c96..09c8e0356ecd9deea15ccfebb27275d1f0176193 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       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.
+
 2012-02-12  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/commands/i386/pc/play.c (grub_cmd_play): Improve error
index 05fed4b949e7c8145cd23a34e8b08057cac73d64..e746df8df447f80aac488456be93c82ac6165b2a 100644 (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:
index 6303019b9d8cf77f068a825a0c8a364d65153c3f..e49d0b6ff17e02e22e09b306d0a6a32a3b083b78 100644 (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:
index 7b6a40c87ef950c85ef88a279740d6b51f41bbc5..492c07c4687d262759a86442cf3657b8d8e90224 100644 (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;
     }
 
index 1be4a2cecfff48768053c0ca0759129bb80861dd..6968b3719cab557e4975a54935c90d3f49b4bf64 100644 (file)
@@ -120,9 +120,9 @@ grub_efiemu_get_string (unsigned offset, const Elf_Ehdr *e)
   unsigned i;
   Elf_Shdr *s;
 
-  for (i = 0, s = (Elf_Shdr *)((char *) e + e->e_shoff);
+  for (i = 0, s = (Elf_Shdr *) ((char *) e + e->e_shoff);
        i < e->e_shnum;
-       i++, s = (Elf_Shdr *)((char *) s + e->e_shentsize))
+       i++, s = (Elf_Shdr *) ((char *) s + e->e_shentsize))
     if (s->sh_type == SHT_STRTAB && offset < s->sh_size)
       return (char *) e + s->sh_offset + offset;
   return 0;
@@ -135,9 +135,9 @@ grub_efiemu_init_segments (grub_efiemu_segment_t *segs, const Elf_Ehdr *e)
   unsigned i;
   Elf_Shdr *s;
 
-  for (i = 0, s = (Elf_Shdr *)((char *) e + e->e_shoff);
+  for (i = 0, s = (Elf_Shdr *) ((char *) e + e->e_shoff);
        i < e->e_shnum;
-       i++, s = (Elf_Shdr *)((char *) s + e->e_shentsize))
+       i++, s = (Elf_Shdr *) ((char *) s + e->e_shentsize))
     {
       if (s->sh_flags & SHF_ALLOC)
        {
@@ -257,7 +257,8 @@ grub_efiemu_resolve_symbols (grub_efiemu_segment_t segs, Elf_Ehdr *e)
          /* Resolve a global symbol.  */
          if (sym->st_name != 0 && sym->st_shndx == 0)
            {
-             if ((err = grub_efiemu_resolve_symbol (name, &handle, &off)))
+             err = grub_efiemu_resolve_symbol (name, &handle, &off);
+             if (err)
                return err;
              grub_efiemu_elfsyms[i].handle = handle;
              grub_efiemu_elfsyms[i].off = off;
@@ -267,34 +268,43 @@ grub_efiemu_resolve_symbols (grub_efiemu_segment_t segs, Elf_Ehdr *e)
          break;
 
        case STT_OBJECT:
-         if ((err = grub_efiemu_get_section_addr
-              (segs, sym->st_shndx, &handle, &off)))
+         err = grub_efiemu_get_section_addr (segs, sym->st_shndx,
+                                             &handle, &off);
+         if (err)
            return err;
 
          off += sym->st_value;
          if (bind != STB_LOCAL)
-           if ((err = grub_efiemu_register_symbol (name, handle, off)))
-             return err;
+           {
+             err = grub_efiemu_register_symbol (name, handle, off);
+             if (err)
+               return err;
+           }
          grub_efiemu_elfsyms[i].handle = handle;
          grub_efiemu_elfsyms[i].off = off;
          break;
 
        case STT_FUNC:
-         if ((err = grub_efiemu_get_section_addr
-              (segs, sym->st_shndx, &handle, &off)))
+         err = grub_efiemu_get_section_addr (segs, sym->st_shndx,
+                                             &handle, &off);
+         if (err)
            return err;
 
          off += sym->st_value;
          if (bind != STB_LOCAL)
-           if ((err = grub_efiemu_register_symbol (name, handle, off)))
-             return err;
+           {
+             err = grub_efiemu_register_symbol (name, handle, off);
+             if (err)
+               return err;
+           }
          grub_efiemu_elfsyms[i].handle = handle;
          grub_efiemu_elfsyms[i].off = off;
          break;
 
        case STT_SECTION:
-         if ((err = grub_efiemu_get_section_addr
-              (segs, sym->st_shndx, &handle, &off)))
+         err = grub_efiemu_get_section_addr (segs, sym->st_shndx,
+                                             &handle, &off);
+         if (err)
            {
              grub_efiemu_elfsyms[i].handle = 0;
              grub_efiemu_elfsyms[i].off = 0;
@@ -322,7 +332,8 @@ grub_efiemu_resolve_symbols (grub_efiemu_segment_t segs, Elf_Ehdr *e)
 
 /* Load runtime to the memory and request memory for definitive location*/
 grub_err_t
-SUFFIX (grub_efiemu_loadcore_init) (void *core, grub_size_t core_size,
+SUFFIX (grub_efiemu_loadcore_init) (void *core, const char *filename,
+                                   grub_size_t core_size,
                                    grub_efiemu_segment_t *segments)
 {
   Elf_Ehdr *e = (Elf_Ehdr *) core;
@@ -333,11 +344,14 @@ SUFFIX (grub_efiemu_loadcore_init) (void *core, grub_size_t core_size,
 
   /* Make sure that every section is within the core.  */
   if ((grub_size_t) core_size < e->e_shoff + e->e_shentsize * e->e_shnum)
-    return grub_error (GRUB_ERR_BAD_OS, "ELF sections outside core");
+    return grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
+                      filename);
 
-  if ((err = grub_efiemu_init_segments (segments, core)))
+  err = grub_efiemu_init_segments (segments, core);
+  if (err)
     return err;
-  if ((err = grub_efiemu_count_symbols (core)))
+  err = grub_efiemu_count_symbols (core);
+  if (err)
     return err;
 
   grub_efiemu_request_symbols (1);
index af3d4eac9988ddfbf1f68a79de67ddea054924e3..64d79608f0c4efb82a412721c975570983e341db 100644 (file)
@@ -111,7 +111,8 @@ grub_efiemu_loadcore_unload(void)
 
 /* Load runtime file and do some initial preparations */
 grub_err_t
-grub_efiemu_loadcore_init (grub_file_t file)
+grub_efiemu_loadcore_init (grub_file_t file,
+                          const char *filename)
 {
   grub_err_t err;
 
@@ -140,7 +141,8 @@ grub_efiemu_loadcore_init (grub_file_t file)
   switch (grub_efiemu_mode)
     {
     case GRUB_EFIEMU32:
-      err = grub_efiemu_loadcore_init32 (efiemu_core, efiemu_core_size,
+      err = grub_efiemu_loadcore_init32 (efiemu_core, filename,
+                                        efiemu_core_size,
                                         &efiemu_segments);
       if (err)
        {
@@ -152,7 +154,8 @@ grub_efiemu_loadcore_init (grub_file_t file)
       break;
 
     case GRUB_EFIEMU64:
-      err = grub_efiemu_loadcore_init64 (efiemu_core, efiemu_core_size,
+      err = grub_efiemu_loadcore_init64 (efiemu_core, filename,
+                                        efiemu_core_size,
                                         &efiemu_segments);
       if (err)
        {
index 3dc9c9744685c7f5fb1f0792acc59b6757086244..f2140ad291dbef06dc2b013fe75f760250820a96 100644 (file)
@@ -201,7 +201,7 @@ grub_efiemu_load_file (const char *filename)
 
   grub_dprintf ("efiemu", "mm initialized\n");
 
-  err = grub_efiemu_loadcore_init (file);
+  err = grub_efiemu_loadcore_init (file, filename);
   if (err)
     {
       grub_file_close (file);
index 9ea70ced9a885a7d26afdd21c16d113e754c77f4..cc148552d459c8834626041eec08d3729e7ec357 100644 (file)
@@ -223,7 +223,7 @@ grub_efiemu_set_virtual_address_map (grub_efi_uintn_t memory_map_size,
 
   /* Ensure that we are called only once */
   if (*ptv_relocated)
-    return grub_error (GRUB_ERR_BAD_ARGUMENT, "EfiEmu is already relocated");
+    return grub_error (GRUB_ERR_BUG, "EfiEmu is already relocated");
   *ptv_relocated = 1;
 
   /* Correct addresses using information supplied by grub */
index 530e18c828382c30fb75141fdb0d06a5a7991191..4ce3fc92d00aa5e873517e958e927322bb67b7cb 100644 (file)
@@ -152,9 +152,12 @@ struct grub_efiemu_elf_sym
 
 int grub_efiemu_check_header32 (void *ehdr, grub_size_t size);
 int grub_efiemu_check_header64 (void *ehdr, grub_size_t size);
-grub_err_t grub_efiemu_loadcore_init32 (void *core, grub_size_t core_size,
+grub_err_t grub_efiemu_loadcore_init32 (void *core,
+                                       const char *filename,
+                                       grub_size_t core_size,
                                        grub_efiemu_segment_t *segments);
-grub_err_t grub_efiemu_loadcore_init64 (void *core, grub_size_t core_size,
+grub_err_t grub_efiemu_loadcore_init64 (void *core, const char *filename,
+                                       grub_size_t core_size,
                                        grub_efiemu_segment_t *segments);
 grub_err_t grub_efiemu_loadcore_load32 (void *core,
                                        grub_size_t core_size,
@@ -165,7 +168,8 @@ grub_err_t grub_efiemu_loadcore_load64 (void *core,
 grub_err_t grub_efiemu_loadcore_unload32 (void);
 grub_err_t grub_efiemu_loadcore_unload64 (void);
 grub_err_t grub_efiemu_loadcore_unload(void);
-grub_err_t grub_efiemu_loadcore_init (grub_file_t file);
+grub_err_t grub_efiemu_loadcore_init (grub_file_t file,
+                                     const char *filename);
 grub_err_t grub_efiemu_loadcore_load (void);
 
 /* Configuration tables manipulation. Definitions and functions */