diff --git a/.gnu-efi.metadata b/.gnu-efi.metadata new file mode 100644 index 0000000..9ac36ca --- /dev/null +++ b/.gnu-efi.metadata @@ -0,0 +1 @@ +c31638487a21ef39aa1d3626e3722a897fa53450 SOURCES/gnu-efi_3.0u.orig.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/0001-fix-compilation-on-x86_64-without-HAVE_USE_MS_ABI.patch b/SOURCES/0001-fix-compilation-on-x86_64-without-HAVE_USE_MS_ABI.patch new file mode 100644 index 0000000..b2447a1 --- /dev/null +++ b/SOURCES/0001-fix-compilation-on-x86_64-without-HAVE_USE_MS_ABI.patch @@ -0,0 +1,29 @@ +From 023ad973f8260ab88445ae36365ce309eff8e59b Mon Sep 17 00:00:00 2001 +From: Nigel Croxon +Date: Tue, 25 Jun 2013 08:45:44 -0400 +Subject: [PATCH 1/3] fix compilation on x86_64 without HAVE_USE_MS_ABI + +make -C apps would fail on tcc.c because uefi_call_wrapper() doesn't +deal correctly with efi_call0-type invocation. Fixed by this patch. + +Signed-off-by: David Decotigny +--- + inc/x86_64/efibind.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/inc/x86_64/efibind.h b/inc/x86_64/efibind.h +index 065a965..2133798 100644 +--- a/inc/x86_64/efibind.h ++++ b/inc/x86_64/efibind.h +@@ -368,7 +368,7 @@ UINT64 efi_call10(void *func, UINT64 arg1, UINT64 arg2, UINT64 arg3, + + /* main wrapper (va_num ignored) */ + #define uefi_call_wrapper(func,va_num,...) \ +- __VA_ARG_NSUFFIX__(_cast64_efi_call, __VA_ARGS__) (func, __VA_ARGS__) ++ __VA_ARG_NSUFFIX__(_cast64_efi_call, __VA_ARGS__) (func , ##__VA_ARGS__) + + #endif + #define EFI_FUNCTION __attribute__((ms_abi)) +-- +1.8.3.1 + diff --git a/SOURCES/0002-be-more-pedantic-when-linking.patch b/SOURCES/0002-be-more-pedantic-when-linking.patch new file mode 100644 index 0000000..2593258 --- /dev/null +++ b/SOURCES/0002-be-more-pedantic-when-linking.patch @@ -0,0 +1,46 @@ +From f99c72fe642e7ccc00012f01b8fc2adf8f93a79c Mon Sep 17 00:00:00 2001 +From: Nigel Croxon +Date: Tue, 25 Jun 2013 08:47:03 -0400 +Subject: [PATCH 2/3] be more pedantic when linking + +Don't allow duplicate symbols, abort upon first error. +also make sure the linker script comes last for apps. + +Signed-off-by: David Decotigny +--- + Make.defaults | 2 +- + apps/Makefile | 8 ++++++-- + 2 files changed, 7 insertions(+), 3 deletions(-) + +diff --git a/Make.defaults b/Make.defaults +index a22a1b4..6b4b6de 100644 +--- a/Make.defaults ++++ b/Make.defaults +@@ -114,4 +114,4 @@ CFLAGS += $(ARCH3264) -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing \ + -fno-merge-constants -ffreestanding -fno-stack-protector \ + -fno-stack-check + ASFLAGS += $(ARCH3264) +-LDFLAGS += -nostdlib --no-undefined ++LDFLAGS += -nostdlib --warn-common --no-undefined --fatal-warnings +diff --git a/apps/Makefile b/apps/Makefile +index 773bc08..6834e14 100644 +--- a/apps/Makefile ++++ b/apps/Makefile +@@ -52,8 +52,12 @@ ifneq (,$(findstring FreeBSD,$(OS))) + LDSCRIPT = $(TOPDIR)/gnuefi/elf_$(ARCH)_fbsd_efi.lds + endif + +-LDFLAGS += -T $(LDSCRIPT) -shared -Bsymbolic -L../lib -L../gnuefi $(CRTOBJS) +-LOADLIBES = -lefi -lgnuefi $(shell $(CC) $(ARCH3264) -print-libgcc-file-name) ++LDFLAGS += -shared -Bsymbolic -L../lib -L../gnuefi $(CRTOBJS) ++ ++LOADLIBES += -lefi -lgnuefi ++LOADLIBES += $(shell $(CC) $(ARCH3264) -print-libgcc-file-name) ++LOADLIBES += -T $(LDSCRIPT) ++ + FORMAT = efi-app-$(ARCH) + + TARGETS = t.efi t2.efi t3.efi t4.efi t5.efi t6.efi printenv.efi t7.efi tcc.efi modelist.efi route80h.efi +-- +1.8.3.1 + diff --git a/SOURCES/0003-Sample-boot-service-driver.patch b/SOURCES/0003-Sample-boot-service-driver.patch new file mode 100644 index 0000000..4a85a56 --- /dev/null +++ b/SOURCES/0003-Sample-boot-service-driver.patch @@ -0,0 +1,371 @@ +From b2a2a1fa80dd57be7d5445f1c2fbbe25feedd39d Mon Sep 17 00:00:00 2001 +From: Nigel Croxon +Date: Tue, 25 Jun 2013 08:53:58 -0400 +Subject: [PATCH 3/3] Sample boot service driver. + +Signed-off-by: David Decotigny +--- + apps/Makefile | 11 +++- + apps/drv0.c | 193 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + apps/drv0.h | 37 +++++++++++ + apps/drv0_use.c | 79 +++++++++++++++++++++++ + 4 files changed, 319 insertions(+), 1 deletion(-) + create mode 100644 apps/drv0.c + create mode 100644 apps/drv0.h + create mode 100644 apps/drv0_use.c + +diff --git a/apps/Makefile b/apps/Makefile +index 6834e14..8643ba1 100644 +--- a/apps/Makefile ++++ b/apps/Makefile +@@ -60,10 +60,19 @@ LOADLIBES += -T $(LDSCRIPT) + + FORMAT = efi-app-$(ARCH) + +-TARGETS = t.efi t2.efi t3.efi t4.efi t5.efi t6.efi printenv.efi t7.efi tcc.efi modelist.efi route80h.efi ++TARGET_APPS = t.efi t2.efi t3.efi t4.efi t5.efi t6.efi \ ++ printenv.efi t7.efi tcc.efi modelist.efi \ ++ route80h.efi drv0_use.efi ++TARGET_BSDRIVERS = drv0.efi ++TARGET_RTDRIVERS = ++ ++TARGETS = $(TARGET_APPS) $(TARGET_BSDRIVERS) $(TARGET_RTDRIVERS) + + all: $(TARGETS) + ++$(TARGET_BSDRIVERS): FORMAT=efi-bsdrv-$(ARCH) ++$(TARGET_RTDRIVERS): FORMAT=efi-rtdrv-$(ARCH) ++ + clean: + rm -f $(TARGETS) *~ *.o *.so + +diff --git a/apps/drv0.c b/apps/drv0.c +new file mode 100644 +index 0000000..126e8e7 +--- /dev/null ++++ b/apps/drv0.c +@@ -0,0 +1,193 @@ ++/* ++ * Copyright (C) 2013 David Decotigny ++ * ++ * Sample EFI shell session, together with drv0_use.efi: ++ * ++ * # Loading first instance: ++ * ++ * fs0:\> load drv0.efi ++ * Driver instance loaded successfully. ++ * load: Image fs0:\drv0.efi loaded at 2FD7C000 - Success ++ * ++ * # Testing 1st instance: ++ * ++ * fs0:\> drv0_use.efi ++ * Playing with driver instance 0... ++ * Hello Sample UEFI Driver! ++ * Hello was called 1 time(s). ++ * ++ * fs0:\> drv0_use.efi ++ * Playing with driver instance 0... ++ * Hello Sample UEFI Driver! ++ * Hello was called 2 time(s). ++ * ++ * # Loading another instance: ++ * ++ * fs0:\> load drv0.efi ++ * Driver instance loaded successfully. ++ * load: Image fs0:\drv0.efi loaded at 2FD6D000 - Success ++ * ++ * # Using both instances: ++ * ++ * fs0:\> drv0_use.efi ++ * Playing with driver instance 0... ++ * Hello Sample UEFI Driver! ++ * Hello was called 3 time(s). ++ * Playing with driver instance 1... ++ * Hello Sample UEFI Driver! ++ * Hello was called 1 time(s). ++ * ++ * fs0:\> drv0_use.efi ++ * Playing with driver instance 0... ++ * Hello Sample UEFI Driver! ++ * Hello was called 4 time(s). ++ * Playing with driver instance 1... ++ * Hello Sample UEFI Driver! ++ * Hello was called 2 time(s). ++ * ++ * # Removing 1st instance: ++ * ++ * fs0:\> dh ++ * Handle dump ++ * 1: Image(DxeCore) ++ * [...] ++ * 79: Image(\/drv0.efi) ImageDevPath (..A,0x800,0x17F7DF)/\/drv0.efi) ++ * 7A: Image(\/drv0.efi) ImageDevPath (..A,0x800,0x17F7DF)/\/drv0.efi) ++ * ++ * fs0:\> unload 79 ++ * 79: Image(\/drv0.efi) ImageDevPath (..A,0x800,0x17F7DF)/\/drv0.efi) ++ * Unload driver image (y/n)? y ++ * Driver instance unloaded. ++ * unload: Success ++ * ++ * # Only 2nd instance remaining: ++ * ++ * fs0:\> drv0_use.efi ++ * Playing with driver instance 0... ++ * Hello Sample UEFI Driver! ++ * Hello was called 3 time(s). ++ * ++ * # Removing 2nd/last instance: ++ * ++ * fs0:\> dh ++ * Handle dump ++ * 1: Image(DxeCore) ++ * [...] ++ * 79: Image(\/drv0.efi) ImageDevPath (..A,0x800,0x17F7DF)/\/drv0.efi) ++ * ++ * fs0:\> unload 79 ++ * 79: Image(\/drv0.efi) ImageDevPath (..A,0x800,0x17F7DF)/\/drv0.efi) ++ * Unload driver image (y/n)? y ++ * Driver instance unloaded. ++ * unload: Success ++ * ++ * # Expect error: no other drv0 instance left ++ * ++ * fs0:\> drv0_use.efi ++ * Error looking up handles for proto: 14 ++ */ ++ ++#include ++#include ++#include "drv0.h" ++ ++ ++static const EFI_GUID GnuEfiAppsDrv0ProtocolGuid ++ = GNU_EFI_APPS_DRV0_PROTOCOL_GUID; ++ ++static struct { ++ GNU_EFI_APPS_DRV0_PROTOCOL Proto; ++ UINTN Counter; ++} InternalGnuEfiAppsDrv0ProtocolData; ++ ++ ++static ++EFI_STATUS ++EFI_FUNCTION ++Drv0SayHello( ++ IN struct _GNU_EFI_APPS_DRV0_PROTOCOL *This, ++ IN const CHAR16 *HelloWho ++ ) ++{ ++ if (! HelloWho) ++ return EFI_INVALID_PARAMETER; ++ ++ Print(L"Hello %s!\n", HelloWho); ++ InternalGnuEfiAppsDrv0ProtocolData.Counter ++; ++ return EFI_SUCCESS; ++} ++ ++ ++static ++EFI_STATUS ++EFI_FUNCTION ++Drv0GetNumberOfHello( ++ IN struct _GNU_EFI_APPS_DRV0_PROTOCOL *This, ++ OUT UINTN *NumberOfHello ++ ) ++{ ++ if (! NumberOfHello) ++ return EFI_INVALID_PARAMETER; ++ ++ *NumberOfHello = InternalGnuEfiAppsDrv0ProtocolData.Counter; ++ return EFI_SUCCESS; ++} ++ ++ ++static ++EFI_STATUS ++EFI_FUNCTION ++Drv0Unload(IN EFI_HANDLE ImageHandle) ++{ ++ LibUninstallProtocolInterfaces(ImageHandle, ++ &GnuEfiAppsDrv0ProtocolGuid, ++ &InternalGnuEfiAppsDrv0ProtocolData.Proto, ++ NULL); ++ Print(L"Driver instance unloaded.\n", ImageHandle); ++ return EFI_SUCCESS; ++} ++ ++ ++EFI_STATUS ++efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SysTab) ++{ ++ EFI_STATUS Status; ++ EFI_LOADED_IMAGE *LoadedImage = NULL; ++ ++ InitializeLib(ImageHandle, SysTab); ++ ++ /* Initialize global protocol definition + data */ ++ InternalGnuEfiAppsDrv0ProtocolData.Proto.SayHello ++ = (GNU_EFI_APPS_DRV0_SAY_HELLO) Drv0SayHello; ++ InternalGnuEfiAppsDrv0ProtocolData.Proto.GetNumberOfHello ++ = (GNU_EFI_APPS_DRV0_GET_NUMBER_OF_HELLO) Drv0GetNumberOfHello; ++ InternalGnuEfiAppsDrv0ProtocolData.Counter = 0; ++ ++ /* Grab handle to this image: we'll attach our proto instance to it */ ++ Status = uefi_call_wrapper(BS->OpenProtocol, 6, ++ ImageHandle, &LoadedImageProtocol, ++ &LoadedImage, ImageHandle, ++ NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ if (EFI_ERROR(Status)) { ++ Print(L"Could not open loaded image protocol: %d\n", Status); ++ return Status; ++ } ++ ++ /* Attach our proto to the current driver image */ ++ Status = LibInstallProtocolInterfaces( ++ &ImageHandle, &GnuEfiAppsDrv0ProtocolGuid, ++ &InternalGnuEfiAppsDrv0ProtocolData.Proto, NULL); ++ if (EFI_ERROR(Status)) { ++ Print(L"Error registering driver instance: %d\n", Status); ++ return Status; ++ } ++ ++ /* Register Unload callback, used to unregister current protocol ++ * instance from system */ ++ LoadedImage->Unload = (EFI_IMAGE_UNLOAD)Drv0Unload; ++ ++ Print(L"Driver instance loaded successfully.\n"); ++ return EFI_SUCCESS; /* at this point, this instance stays resident ++ * until image is unloaded, eg. with shell's unload, ++ * ExitBootServices() */ ++} +diff --git a/apps/drv0.h b/apps/drv0.h +new file mode 100644 +index 0000000..26d2ffd +--- /dev/null ++++ b/apps/drv0.h +@@ -0,0 +1,37 @@ ++#ifndef _GNU_EFI_APPS_DRV0_H_ ++#define _GNU_EFI_APPS_DRV0_H_ ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++/* UEFI naming conventions */ ++#define GNU_EFI_APPS_DRV0_PROTOCOL_GUID \ ++{ 0xe4dcafd0, 0x586c, 0x4b3d, {0x86, 0xe7, 0x28, 0xde, 0x7f, 0xcc, 0x04, 0xb8} } ++ ++INTERFACE_DECL(_GNU_EFI_APPS_DRV0_PROTOCOL); ++ ++typedef ++EFI_STATUS ++(EFIAPI *GNU_EFI_APPS_DRV0_SAY_HELLO) ( ++ IN struct _GNU_EFI_APPS_DRV0_PROTOCOL *This, ++ IN const CHAR16 *HelloWho ++ ); ++ ++typedef ++EFI_STATUS ++(EFIAPI *GNU_EFI_APPS_DRV0_GET_NUMBER_OF_HELLO) ( ++ IN struct _GNU_EFI_APPS_DRV0_PROTOCOL *This, ++ OUT UINTN *NumberOfHello ++ ); ++ ++typedef struct _GNU_EFI_APPS_DRV0_PROTOCOL { ++ GNU_EFI_APPS_DRV0_SAY_HELLO SayHello; ++ GNU_EFI_APPS_DRV0_GET_NUMBER_OF_HELLO GetNumberOfHello; ++} GNU_EFI_APPS_DRV0_PROTOCOL; ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif +diff --git a/apps/drv0_use.c b/apps/drv0_use.c +new file mode 100644 +index 0000000..f7c5869 +--- /dev/null ++++ b/apps/drv0_use.c +@@ -0,0 +1,79 @@ ++/* ++ * Copyright (C) 2013 David Decotigny ++ * ++ * See drv0.c for an example session. ++ */ ++ ++#include ++#include ++#include "drv0.h" ++ ++ ++static EFI_GUID GnuEfiAppsDrv0ProtocolGuid ++ = GNU_EFI_APPS_DRV0_PROTOCOL_GUID; ++ ++ ++static ++EFI_STATUS ++PlayWithGnuEfiAppsDrv0Protocol(IN EFI_HANDLE DrvHandle) { ++ EFI_STATUS Status; ++ GNU_EFI_APPS_DRV0_PROTOCOL *drv = NULL; ++ UINTN NumberOfHello = 0; ++ ++ Status = uefi_call_wrapper(BS->OpenProtocol, 6, ++ DrvHandle, ++ &GnuEfiAppsDrv0ProtocolGuid, ++ &drv, ++ DrvHandle, ++ NULL, ++ EFI_OPEN_PROTOCOL_GET_PROTOCOL); ++ if (EFI_ERROR(Status)) { ++ Print(L"Cannot open proto: %d\n", Status); ++ return Status; ++ } ++ ++ Status = uefi_call_wrapper(drv->SayHello, 2, drv, L"Sample UEFI Driver"); ++ if (EFI_ERROR(Status)) { ++ Print(L"Cannot call SayHello: %d\n", Status); ++ } ++ ++ Status = uefi_call_wrapper(drv->GetNumberOfHello, 2, drv, &NumberOfHello); ++ if (EFI_ERROR(Status)) { ++ Print(L"Cannot call GetNumberOfHello: %d\n", Status); ++ } else { ++ Print(L"Hello was called %d time(s).\n", NumberOfHello); ++ } ++ ++ return EFI_SUCCESS; ++} ++ ++ ++EFI_STATUS ++efi_main (EFI_HANDLE Image, EFI_SYSTEM_TABLE *SysTab) ++{ ++ EFI_STATUS Status; ++ EFI_HANDLE *Handles = NULL; ++ UINTN i, NoHandles = 0; ++ ++ InitializeLib(Image, SysTab); ++ ++ Status = LibLocateHandle(ByProtocol, &GnuEfiAppsDrv0ProtocolGuid, ++ NULL, &NoHandles, &Handles); ++ if (EFI_ERROR(Status)) { ++ Print(L"Error looking up handles for proto: %d\n", Status); ++ return Status; ++ } ++ ++ for (i = 0 ; i < NoHandles ; ++i) ++ { ++ Print(L"Playing with driver instance %d...\n", i); ++ Status = PlayWithGnuEfiAppsDrv0Protocol(Handles[i]); ++ if (EFI_ERROR(Status)) ++ Print(L"Error playing with instance %d, skipping\n", i); ++ } ++ ++ if (Handles) ++ FreePool(Handles); ++ ++ return EFI_SUCCESS; ++} +-- +1.8.3.1 + diff --git a/SPECS/gnu-efi.spec b/SPECS/gnu-efi.spec new file mode 100644 index 0000000..b2b8923 --- /dev/null +++ b/SPECS/gnu-efi.spec @@ -0,0 +1,269 @@ +Summary: Development Libraries and headers for EFI +Name: gnu-efi +Version: 3.0u +Release: 1%{?dist} +Group: Development/System +License: BSD +URL: ftp://ftp.hpl.hp.com/pub/linux-ia64 +Source: ftp://ftp.hpl.hp.com/pub/linux-ia64/gnu-efi_%{version}.orig.tar.gz +Patch0001: 0001-fix-compilation-on-x86_64-without-HAVE_USE_MS_ABI.patch +Patch0002: 0002-be-more-pedantic-when-linking.patch +Patch0003: 0003-Sample-boot-service-driver.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +ExclusiveArch: x86_64 +BuildRequires: git + +%define debug_package %{nil} + +# Figure out the right file path to use +%if 0%{?rhel} +%global efidir redhat +%endif +%if 0%{?fedora} +%global efidir fedora +%endif + +%description +This package contains development headers and libraries for developing +applications that run under EFI (Extensible Firmware Interface). + +%package devel +Summary: Development Libraries and headers for EFI +Group: Development/System +Obsoletes: gnu-efi < %{version}-%{release} + +%description devel +This package contains development headers and libraries for developing +applications that run under EFI (Extensible Firmware Interface). + +%package utils +Summary: Utilities for EFI systems +Group: Applications/System + +%description utils +This package contains utilties for debugging and developing EFI systems. + +%prep +%setup -q -n gnu-efi-3.0 +git init +git config user.email "pjones@fedoraproject.org" +git config user.name "Fedora Ninjas" +git add . +git commit -a -q -m "%{version} baseline." +git am %{patches} - 3.0u-1 +- Reflect that we're not supporting this on anything but x86_64. + Related: rhbz#1017861 + +* Tue Sep 24 2013 Peter Jones - 3.0u-0.1 +- Update to 3.0u + Related: rhbz#996863 +- Split out subpackages so -devel can be multilib +- Fix path in apps subpackage to vary by distro. + +* Thu Jul 25 2013 Peter Jones - 3.0q-3 +- Revert to 3.0q + Related: rhbz#978766 + +* Fri Jun 07 2013 Peter Jones - 3.0t-0.1 +- Update to 3.0t +- Don't allow use of mmx or sse registers. + +* Thu May 16 2013 Peter Jones - 3.0s-2 +- Update to 3.0s + Related: rhbz#963359 + +* Thu Feb 14 2013 Fedora Release Engineering - 3.0q-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Fri Jul 27 2012 Matthew Garrett - 3.0q-1 +- Update to current upstream +- License change - GPLv2+ to BSD + +* Thu Jul 19 2012 Fedora Release Engineering - 3.0e-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed Apr 25 2012 Peter Jones - 3.0e-17 +- Align .reloc section as well to make secureboot work (mfleming) + +* Fri Jan 13 2012 Fedora Release Engineering - 3.0e-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Thu Aug 11 2011 Peter Jones - 3.0e-15 +- Correctly pad the stack when doing uefi calls + Related: rhbz#677468 +- Add ability to write UEFI callbacks and drivers +- Add test harness for ABI Calling Conventions + +* Thu Jun 16 2011 Peter Jones - 3.0e-14 +- Handle uninitialized GOP driver gracefully. + +* Wed Feb 09 2011 Fedora Release Engineering - 3.0e-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Sep 10 2010 Peter Jones - 3.0e-12 +- Add "modelist.efi" test utility in apps/ + +* Mon Jul 26 2010 Peter Jones - 3.0e-11 +- Add PciIo headers. + +* Fri Jul 23 2010 Peter Jones - 3.0e-10 +- Add UEFI 2.x boot services. + +* Tue Aug 11 2009 Peter Jones - 3.0e-9 +- Change ExclusiveArch to reflect arch changes in repos. + +* Fri Jul 24 2009 Fedora Release Engineering - 3.0e-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Fri Apr 03 2009 Peter Jones - 3.0e-7 +- Use nickc's workaround for #492183 + +* Tue Mar 31 2009 Peter Jones - 3.0e-6.1 +- Make a test package for nickc. + +* Thu Mar 12 2009 Chris Lumens 3.0e-6 +- Add IA64 back into the list of build arches (#489544). + +* Mon Mar 02 2009 Peter Jones - 3.0e-5 +- Switch to i586 from i386. + +* Tue Feb 24 2009 Fedora Release Engineering - 3.0e-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Fri Feb 13 2009 Peter Jones - 3.0e-3 +- Pad sections out in the provided linker scripts to make sure they all of + some content. + +* Fri Oct 03 2008 Peter Jones - 3.0e-2 +- Fix install paths on x86_64. + +* Thu Oct 02 2008 Peter Jones - 3.0e-1 +- Update to 3.0e +- Fix relocation bug in 3.0e + +* Tue Jul 29 2008 Tom "spot" Callaway - 3.0d-6 +- fix license tag + +* Mon Jul 28 2008 Peter Jones - 3.0d-5 +- Remove ia64 palproc code since its license isn't usable. +- Remove ia64 from ExclusiveArch since it can't build... + +* Thu Mar 27 2008 Peter Jones - 3.0d-4 +- Fix uefi_call_wrapper(x, 10, ...) . +- Add efi_main wrappers and EFI_CALL() macro so drivers are possible. + +* Mon Feb 18 2008 Fedora Release Engineering - 3.0d-3 +- Autorebuild for GCC 4.3 + +* Fri Jan 11 2008 Peter Jones - 3.0d-2 +- Get rid of a bogus #ifdef . + +* Wed Dec 19 2007 Peter Jones - 3.0d-1 +- Update to 3.0d + +* Tue Jun 12 2007 Chris Lumens - 3.0c-2 +- Fixes for package review (#225846). + +* Wed Jul 12 2006 Jesse Keating - 3.0c-1.1 +- rebuild + +* Thu Apr 27 2006 Chris Lumens 3.0c-1 +- Upgrade to gnu-efi-3.0c. +- Enable build on i386. + +* Tue Feb 07 2006 Jesse Keating - 3.0a-7.2 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Thu Mar 3 2005 Jeremy Katz - 3.0a-7 +- rebuild with gcc 4 + +* Tue Sep 21 2004 Jeremy Katz - 3.0a-6 +- add fix from Jesse Barnes for newer binutils (#129197) + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Wed Apr 21 2004 Jeremy Katz - 3.0a-4 +- actually add the patch + +* Tue Apr 20 2004 Bill Nottingham 3.0a-3 +- add patch to coalesce some relocations (#120080, ) + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Fri Oct 4 2002 Jeremy Katz +- rebuild in new environment + +* Sun Jul 8 2001 Bill Nottingham +- update to 3.0 + +* Tue Jun 5 2001 Bill Nottingham +- add fix for invocations from the boot manager menu (#42222) + +* Tue May 22 2001 Bill Nottingham +- add bugfix for efibootmgr () + +* Mon May 21 2001 Bill Nottingham +- update to 2.5 +- add in efibootmgr from Dell () + +* Thu May 3 2001 Bill Nottingham +- fix booting of kernels with extra arguments (#37711) + +* Wed Apr 25 2001 Bill Nottingham +- take out Stephane's initrd patch + +* Fri Apr 20 2001 Bill Nottingham +- fix the verbosity patch to not break passing arguments to images + +* Wed Apr 18 2001 Bill Nottingham +- update to 2.0, build elilo, obsolete eli + +* Tue Dec 5 2000 Bill Nottingham +- update to 1.1 + +* Thu Oct 26 2000 Bill Nottingham +- add patch for new toolchain, update to 1.0 + +* Thu Aug 17 2000 Bill Nottingham +- update to 0.9