* Backport from upstream:

- Fix booting FreeBSD >= 9.1 amd64 kernels (closes: #699002).
This commit is contained in:
Colin Watson 2013-01-28 11:09:55 +00:00
parent 90521ecd2a
commit 1dcca7d52b
4 changed files with 70 additions and 5 deletions

7
debian/changelog vendored
View File

@ -1,3 +1,10 @@
grub2 (2.00-13) UNRELEASED; urgency=low
* Backport from upstream:
- Fix booting FreeBSD >= 9.1 amd64 kernels (closes: #699002).
-- Colin Watson <cjwatson@debian.org> Mon, 28 Jan 2013 11:08:07 +0000
grub2 (2.00-12) experimental; urgency=low
* Silence output from running-in-container.

57
debian/patches/kfreebsd_9.1.patch vendored Normal file
View File

@ -0,0 +1,57 @@
Description: Fix booting FreeBSD >= 9.1 amd64 kernels
Author: Vladimir Serbinenko <phcoder@gmail.com>
Origin: upstream, http://bazaar.launchpad.net/~vcs-imports/grub/grub2-bzr/revision/4556
Bug-Debian: http://bugs.debian.org/699002
Forwarded: not-needed
Applied-Upstream: http://bazaar.launchpad.net/~vcs-imports/grub/grub2-bzr/revision/4556
Last-Update: 2013-01-28
Index: b/grub-core/loader/i386/bsd.c
===================================================================
--- a/grub-core/loader/i386/bsd.c
+++ b/grub-core/loader/i386/bsd.c
@@ -1309,7 +1309,7 @@
&& phdr->p_type != PT_DYNAMIC)
return 0;
- paddr = phdr->p_paddr & 0xFFFFFF;
+ paddr = phdr->p_paddr & 0xFFFFFFF;
if (paddr < kern_start)
kern_start = paddr;
@@ -1333,7 +1333,7 @@
}
*do_load = 1;
- phdr->p_paddr &= 0xFFFFFF;
+ phdr->p_paddr &= 0xFFFFFFF;
paddr = phdr->p_paddr;
*addr = (grub_addr_t) (paddr - kern_start + (grub_uint8_t *) kern_chunk_src);
@@ -1351,7 +1351,7 @@
&& phdr->p_type != PT_DYNAMIC)
return 0;
- paddr = phdr->p_paddr & 0xffffff;
+ paddr = phdr->p_paddr & 0xfffffff;
if (paddr < kern_start)
kern_start = paddr;
@@ -1375,7 +1375,7 @@
}
*do_load = 1;
- paddr = phdr->p_paddr & 0xffffff;
+ paddr = phdr->p_paddr & 0xfffffff;
*addr = (grub_addr_t) (paddr - kern_start + (grub_uint8_t *) kern_chunk_src);
@@ -1394,7 +1394,7 @@
{
grub_relocator_chunk_t ch;
- entry = elf->ehdr.ehdr32.e_entry & 0xFFFFFF;
+ entry = elf->ehdr.ehdr32.e_entry & 0xFFFFFFF;
err = grub_elf32_phdr_iterate (elf, filename,
grub_bsd_elf32_size_hook, NULL);
if (err)

View File

@ -33,3 +33,4 @@ gnulib_gets.patch
no_insmod_on_sb.patch
default_grub_d.patch
blacklist_1440x900x32.patch
kfreebsd_9.1.patch

View File

@ -1309,7 +1309,7 @@ grub_bsd_elf32_size_hook (grub_elf_t elf __attribute__ ((unused)),
&& phdr->p_type != PT_DYNAMIC)
return 0;
paddr = phdr->p_paddr & 0xFFFFFF;
paddr = phdr->p_paddr & 0xFFFFFFF;
if (paddr < kern_start)
kern_start = paddr;
@ -1333,7 +1333,7 @@ grub_bsd_elf32_hook (Elf32_Phdr * phdr, grub_addr_t * addr, int *do_load)
}
*do_load = 1;
phdr->p_paddr &= 0xFFFFFF;
phdr->p_paddr &= 0xFFFFFFF;
paddr = phdr->p_paddr;
*addr = (grub_addr_t) (paddr - kern_start + (grub_uint8_t *) kern_chunk_src);
@ -1351,7 +1351,7 @@ grub_bsd_elf64_size_hook (grub_elf_t elf __attribute__ ((unused)),
&& phdr->p_type != PT_DYNAMIC)
return 0;
paddr = phdr->p_paddr & 0xffffff;
paddr = phdr->p_paddr & 0xfffffff;
if (paddr < kern_start)
kern_start = paddr;
@ -1375,7 +1375,7 @@ grub_bsd_elf64_hook (Elf64_Phdr * phdr, grub_addr_t * addr, int *do_load)
}
*do_load = 1;
paddr = phdr->p_paddr & 0xffffff;
paddr = phdr->p_paddr & 0xfffffff;
*addr = (grub_addr_t) (paddr - kern_start + (grub_uint8_t *) kern_chunk_src);
@ -1394,7 +1394,7 @@ grub_bsd_load_elf (grub_elf_t elf, const char *filename)
{
grub_relocator_chunk_t ch;
entry = elf->ehdr.ehdr32.e_entry & 0xFFFFFF;
entry = elf->ehdr.ehdr32.e_entry & 0xFFFFFFF;
err = grub_elf32_phdr_iterate (elf, filename,
grub_bsd_elf32_size_hook, NULL);
if (err)