When outputting ELF segments in LAR, the utility will use the segment
number from ELF as segment number in the file. This works nicely when there are no skips (e.g. not PT_LOAD segments, which are discarded). If one segment is skipped, we get a bump: normal/payload0/segment0 (27288 bytes, lzma compressed to 14506 bytes @0x64c0) normal/payload0/segment2 (211136 bytes, lzma compressed to 70905 bytes @0x9dc0) The LAR loader wont load segment2, and in this particular case, grub2-lb will only boot into rescue mode (segment0 contains it). Attached patch adds a counter for segment number in the LAR utility to solve this bug: normal/payload0/segment0 (27288 bytes, lzma compressed to 14506 bytes @0x64c0) normal/payload0/segment1 (211136 bytes, lzma compressed to 70905 bytes @0x9dc0) Also the eagle eyed can see that I merged in Uwe's multiple-payload patch into current stage1, which includes the segment support. And this means that grub2-lb without any hacks works when loaded from LAR segments. Signed-off-by: Alex Beregszaszi <alex@rtfs.hu> Acked-by: Ronald G. Minnich <rminnich@gmail.com> Acked-by: Uwe Hermann <uwe@hermann-uwe.de> git-svn-id: svn://coreboot.org/repository/LinuxBIOSv3@498 f3766cd6-281f-0410-b1cd-43a5c92072e9
This commit is contained in:
parent
b21bb44f50
commit
c8ea006269
1 changed files with 2 additions and 1 deletions
|
|
@ -79,6 +79,7 @@ int output_elf_segments(struct lar *lar, char *name, char *filebuf,
|
|||
u32 entry;
|
||||
int i;
|
||||
int size;
|
||||
int segment = 0;
|
||||
char *header;
|
||||
char ename[64];
|
||||
int headers;
|
||||
|
|
@ -153,7 +154,7 @@ int output_elf_segments(struct lar *lar, char *name, char *filebuf,
|
|||
entry, phdr[i].p_paddr);
|
||||
}
|
||||
/* ok, copy it out */
|
||||
sprintf(ename, "%s/segment%d", name, i);
|
||||
sprintf(ename, "%s/segment%d", name, segment++);
|
||||
complen = lar_compress(&header[phdr[i].p_offset], size, temp, &thisalgo);
|
||||
ret = lar_add_entry(lar, ename, temp, complen, size,
|
||||
phdr[i].p_paddr, entry, thisalgo);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue