[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 5/7] mkimage: allow linking at address 0
From: |
Ian Campbell |
Subject: |
[PATCH 5/7] mkimage: allow linking at address 0 |
Date: |
Sun, 29 Dec 2013 18:47:34 +0000 |
Running from address 0 is plausible at least in principal. Use the maximum
possible address as a sentinal instead.
Signed-off-by: Ian Campbell <address@hidden>
---
util/grub-mkimagexx.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
index 759e838..b4216ff 100644
--- a/util/grub-mkimagexx.c
+++ b/util/grub-mkimagexx.c
@@ -64,6 +64,8 @@
static Elf_Addr SUFFIX (entry_point);
+#define INVALID_START_ADDR (~((Elf_Addr)0))
+
static void
SUFFIX (generate_elf) (const struct grub_install_image_target_desc
*image_target,
int note, char **core_img, size_t *core_size,
@@ -380,7 +382,7 @@ SUFFIX (relocate_symbols) (Elf_Ehdr *e, Elf_Shdr *sections,
{
Elf_Word symtab_size, sym_size, num_syms;
Elf_Off symtab_offset;
- Elf_Addr start_address = 0;
+ Elf_Addr start_address = INVALID_START_ADDR;
Elf_Sym *sym;
Elf_Word i;
Elf_Shdr *strtab_section;
@@ -439,7 +441,7 @@ SUFFIX (relocate_symbols) (Elf_Ehdr *e, Elf_Shdr *sections,
(unsigned long long) sym->st_value,
(unsigned long long) section_addresses[cur_index]);
- if (! start_address)
+ if (start_address == INVALID_START_ADDR)
if (strcmp (name, "_start") == 0 || strcmp (name, "start") == 0)
start_address = sym->st_value;
}
@@ -1602,7 +1604,7 @@ SUFFIX (load_image) (const char *kernel_path, size_t
*exec_size,
ia64jmp_off
+ image_target->vaddr_offset,
image_target);
- if (*start == 0)
+ if (*start == INVALID_START_ADDR)
grub_util_error ("start symbol is not defined");
SUFFIX (entry_point) = (Elf_Addr) *start;
@@ -1664,3 +1666,4 @@ SUFFIX (load_image) (const char *kernel_path, size_t
*exec_size,
#undef Elf_Section
#undef ELF_ST_TYPE
#undef XEN_NOTE_SIZE
+#undef INVALID_START_ADDR
--
1.8.4.rc3
- [PATCH 0/7] arm-uboot: support for different RAM bases, Ian Campbell, 2013/12/29
- [PATCH 2/7] mkimage: Replace hardcoded 0x400 in R_ARM_ABS32 relocation, Ian Campbell, 2013/12/29
- [PATCH 1/7] mkimage: Refactor IMAGE_EFI checks into a function grub_image_needs_reloc., Ian Campbell, 2013/12/29
- [PATCH 3/7] mkimage: account for space for trampolines earlier, Ian Campbell, 2013/12/29
- [PATCH 4/7] mkimage: make R_ARM_ABS32 debug output more consistent, Ian Campbell, 2013/12/29
- [PATCH 5/7] mkimage: allow linking at address 0,
Ian Campbell <=
- [PATCH 6/7] mkimage: support images which require full relocation at mkimage time., Ian Campbell, 2013/12/29
- [PATCH 7/7] arm-uboot: support relocation at installation time, Ian Campbell, 2013/12/29
- Re: [PATCH 0/7] arm-uboot: support for different RAM bases, Ian Campbell, 2013/12/29
- Re: [PATCH 0/7] arm-uboot: support for different RAM bases, Leif Lindholm, 2013/12/29