Hello community, here is the log from the commit of package gnu-efi for openSUSE:Factory checked in at 2015-09-08 17:36:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gnu-efi (Old) and /work/SRC/openSUSE:Factory/.gnu-efi.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnu-efi" Changes: -------- --- /work/SRC/openSUSE:Factory/gnu-efi/gnu-efi.changes 2015-06-18 06:36:32.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.gnu-efi.new/gnu-efi.changes 2015-09-08 17:37:51.000000000 +0200 @@ -1,0 +2,12 @@ +Tue Aug 18 04:24:16 UTC 2015 - g...@suse.com + +- Update to gnu-efi 3.0.3 + + Add URI Device Path + + Makes the symbols consistent between the linker scripts + + Added some missing error code descriptions + + Add setjump()/longjump() +- Drop patches + + gnu-efi-setjmp.patch + + gnu-efi-missing-error-code.patch + +------------------------------------------------------------------- Old: ---- gnu-efi-3.0.2.tar.bz2 gnu-efi-missing-error-code.patch gnu-efi-setjmp.patch New: ---- gnu-efi-3.0.3.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gnu-efi.spec ++++++ --- /var/tmp/diff_new_pack.vVSXd6/_old 2015-09-08 17:37:52.000000000 +0200 +++ /var/tmp/diff_new_pack.vVSXd6/_new 2015-09-08 17:37:52.000000000 +0200 @@ -17,7 +17,7 @@ Name: gnu-efi -Version: 3.0.2 +Version: 3.0.3 Release: 0 Summary: Library for EFI Applications License: BSD-3-Clause and GPL-2.0+ @@ -25,8 +25,6 @@ Url: http://sourceforge.net/projects/gnu-efi Source: http://sourceforge.net/projects/gnu-efi/files/gnu-efi-%{version}.tar.bz2 Source1: %{name}-rpmlintrc -Patch1: %{name}-setjmp.patch -Patch2: %{name}-missing-error-code.patch BuildRequires: kernel-source BuildRoot: %{_tmppath}/%{name}-%{version}-build ExclusiveArch: ia64 %ix86 x86_64 aarch64 %arm @@ -38,8 +36,6 @@ %prep %setup -q -%patch1 -p1 -%patch2 -p1 %build ########################## ++++++ gnu-efi-3.0.2.tar.bz2 -> gnu-efi-3.0.3.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/.gitignore new/gnu-efi-3.0.3/.gitignore --- old/gnu-efi-3.0.2/.gitignore 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/.gitignore 2015-08-17 22:06:47.000000000 +0200 @@ -1,4 +1,5 @@ *.efi +*.efi.debug *.o *.a *.tar.* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/ChangeLog new/gnu-efi-3.0.3/ChangeLog --- old/gnu-efi-3.0.2/ChangeLog 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/ChangeLog 2015-08-17 22:06:47.000000000 +0200 @@ -1,3 +1,309 @@ + Updated Changelog + + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit 37d7bee82a627999563069b090866076e055a871 +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Thu May 14 12:38:39 2015 -0400 + + Added some missing error code descriptions + + Signed-off-by: Peter Jones <pjo...@redhat.com> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit dae0b4b0b0d522caecf09123db2cf0250c37a169 +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Thu May 14 12:20:51 2015 -0400 + + Turns out we actually need setjmp in one of gnu-efi's prominent + users, and it seems to make more sense to put it here than in + the application. + + All of these are derived from the Tiano code, but I re-wrote the + x86_64 one because we use the ELF psABI calling conventions instead + of the MS ABI calling conventions. Which is to say you probably + shouldn't setjmp()/longjmp() between functions with EFIAPI (aka + __attribute__((ms_abi))) and those without. + + Signed-off-by: Peter Jones <pjo...@redhat.com> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit b5a8e93cec396381a6d2beee022abbf50100f2fd +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Fri Apr 10 08:49:50 2015 -0400 + + Bump version to 3.0.2 + + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit 01c9f11ed5ad55661e8fc8a3eee35c578564754b +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Fri Apr 10 08:46:40 2015 -0400 + + Fix ARM32 and AARCH64 builds + Without these added into SUBDIRS the initplat.c compilation will fail. + + Signed-off-by: Koen Kooi <koen.k...@linaro.org> + Acked-by: Ard Biesheuvel <ard.biesheu...@linaro.org> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit dada63fd3de148c6f8551d253355c113547cd5a0 +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Mon Mar 23 10:41:43 2015 -0400 + + [PATCH] _SPrint: fix NULL termination + + maxlen is the maximum string length not the buffer size. + + Signed-off-by: Jeremy Compostella <jeremy.composte...@intel.com> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit ce7098fb52e5fd4d16038964d029eb759f28eaaf +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Thu Feb 19 11:22:45 2015 -0500 + + Enable out-of-tree building + + This patch enables building gnu-efi outside of the source tree. + That in turn enables building for multiple architectures in parallel. + + The build directory is controlled by the OBJDIR make variable. It + defaults to the value of ARCH, and can be overridden from the command + line. + + This patch also cleans up some doubled slashes between INSTALLROOT + and PREFIX. + + Signed-off-by: Jonathan Boeing <jonathan.n.boe...@gmail.com> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit f64cef26270bfbe04f038da33f95ae3f14c071bc +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Tue Jan 6 15:49:50 2015 -0500 + + Since we're keeping this in git, it'd be nice not to see a bunch + of make targets in 'status' + + Signed-off-by: Peter Jones <pjo...@redhat.com> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit 322efb6b21ed0a5e42e8f124fd22bf0f8dbf01ae +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Mon Jan 5 13:20:43 2015 -0500 + + version number changed from VERSION = 3.0u to VERSION = 3.0.1 + + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit 09027207f7c18af6caa45a744fc15c90b2a829db +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Mon Jan 5 13:13:22 2015 -0500 + + From: Pete Batard <p...@akeo.ie> + Date: Wed, 10 Dec 2014 21:08:34 +0000 + Subject: [PATCH] fixes for MSVC compilation + + These fixes are needed to address the following error and warnings when compiling the library part + using Visual Studio 2013 Community Edition (as in https://github.com/pbatard/uefi-simple): + * "lib\x86_64\math.c(49): error C4235: nonstandard extension used : '_asm' keyword not supported + on this architecture" + * "lib\print.c(98): error C2059: syntax error : '('" due to placement of EFIAPI macro + * "lib\cmdline.c(94): warning C4090: 'function' : different 'const' qualifiers" + * "lib\smbios.c(25): warning C4068: unknown pragma" + * Also update macro definitions in "inc\<arch>\efibind.h" for MSVC + + Signed-off-by: Pete Batard <p...@akeo.ie> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit 15805ff38b83a72c2c7c96a24bd642ee1176d819 +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Tue Nov 25 14:23:21 2014 -0500 + + Add README.git file. Instructions on how to archive. + + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit b868aa75669723b7e32f46524822e17e388fe2ba +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Tue Nov 25 13:26:45 2014 -0500 + + This patch makes generating releases from git a very simple process; you + simply edit the makefile's "VERSION" line to the new version, commit + that as its own commit, and do: "make test-archive". That'll make a + file in the current directory gnu-efi-$VERSION.tar.bz2 , with its top + level directory gnu-efi-$VERSION/ and the source tree under that. + + Once you've tested that and you're sure it's what you want to release, + you do "make archive", which will tag a release in git and generate a + final tarball from it. You then push to the archive, being sure to + include the tag: + + git push origin master:master --tags + + And upload the archive wherever it's supposed to go. + + Signed-off-by: Peter Jones <pjo...@redhat.com> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit 530d68ba191850edafc6da22cb2df55bec0c5fa5 +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Tue Nov 25 10:09:50 2014 -0500 + + The gnu-efi-3.0 toplevel subdirectory is really annoying. Kill it. + + Signed-off-by: Peter Jones <pjo...@redhat.com> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit 00bd66ef46b59a1623a293491a8b2c65a6d61975 +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Mon Nov 24 14:33:09 2014 -0500 + + FreeBSD's binutils doesn't have "-j <glob>" support, so we need to + include non-globbed versions of .rel/.rela individually. + + Signed-off-by: Peter Jones <pjo...@redhat.com> + Signed-off-by: Bill Paul <wp...@windriver.com> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit 56eb64d3c06854b9b68d61e3c2d3bdf6ff2a9853 +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Mon Nov 24 14:27:14 2014 -0500 + + Right now we wind up trying to build gnuefi/.o from a source file that's + an empty string. This is caused by the macros trying to generate + install rules, but there's no real reason to have all that anyway. So + just have some static install rules that are simpler and don't generate + stuff on the fly. + + Signed-off-by: Peter Jones <pjo...@redhat.com> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit 65e28a90a7be9e990b360286cea31e63319217fb +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Mon Nov 24 12:17:45 2014 -0500 + + Add current OsIndications values. + + Signed-off-by: Peter Jones <pjo...@redhat.com> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com + +commit be231055ce14d17610f0d7b6133a87b99a22662b +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Mon Nov 24 12:15:34 2014 -0500 + + Add the QueryVariableInfo() API. + + Signed-off-by: Peter Jones <pjo...@redhat.com> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit 60efb7a2939b65a01e95aa8b535f1b756d984fba +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Mon Nov 24 12:13:23 2014 -0500 + + Add the capsule API. + + Signed-off-by: Peter Jones <pjo...@redhat.com> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit ef08b655d1f8dfbd9a0f3a86d5685b24695ef12f +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Mon Nov 17 16:05:42 2014 -0500 + + Fix Table Header misspelling. Change from EFI_TABLE_HEARDER to + EFI_TABLE_HEADER. + + Signed-Off-By: Nigel Croxon <nigel.cro...@hp.com> + +commit 370cce41da3fff41ba38feb1262002aff2d85ffd +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Thu Nov 6 14:41:40 2014 -0500 + + If CROSS_COMPILE is set, ignore the ARCH value supplied on the + command line and use the target machine of the cross compiler. + + Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit d32fb845433ff6fb38e81ae0d9273454e7d18197 +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Thu Nov 6 14:30:03 2014 -0500 + + Allow reuse of this file beyond GPL compatible software, + update the license of crt0-efi-aarch64.S to dual 2-clause BSD/GPLv2+. + + Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit aa1df67f48f3c035fa8891e1bb311ec21500d6d9 +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Tue Oct 21 11:08:47 2014 -0400 + + Add the missing Variable attributes + + From: Jeremy Compostella <jeremy.composte...@intel.com> + Date: Mon, 13 Oct 2014 17:50:50 +0200 + Subject: [PATCH] Add the missing Variable attributes + + Signed-off-by: Jeremy Compostella <jeremy.composte...@intel.com> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit 5706dff09364cbbec37f47e2fe1350747f631d74 +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Tue Aug 26 10:54:22 2014 -0400 + + From: David Decotigny <de...@googlers.com> + Date: Mon, 25 Aug 2014 13:28:49 -0700 + Subject: [PATCH] document that binutils >= 2.24 needed. + + commit ac983081 "Add support for non-PE/COFF capable objcopy" depends + on objcopy accepting wildcards for the section names. This feature is + available only with binutils >= 2.24 (binutils 2e62b7218 "PR + binutils/15033"). + + Signed-off-by: David Decotigny <de...@googlers.com> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit 6c10e225bc759d69af520a551b9d7b37f3ae0a82 +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Mon Aug 25 08:51:23 2014 -0400 + + From: David Decotigny <de...@googlers.com> + Date: Thu, 31 Jul 2014 18:19:16 -0700 + Subject: [PATCH 5/5] allow to use external stdarg.h + + in cases we use gnu-efi together with other libs that define stdarg.h, + break the tie by telling gnu-efi to use that stdarg.h . + + Signed-off-by: David Decotigny <de...@googlers.com> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit 16d65c0669258c8044e3549b2d9eb0cf0eb08f5a +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Tue Aug 19 12:07:00 2014 -0400 + + From: Ard Biesheuvel <ard.biesheu...@linaro.org> + Date: Mon, 11 Aug 2014 15:39:16 +0200 + Subject: [PATCH] Add support for 32-bit ARM + + This adds support for 32-bit ARM using an approach similar to the one used for + 64-bit ARM (AArch64), i.e., it does not rely on an objcopy that is aware of EFI + or PE/COFF, but lays out the entire PE/COFF header using the assembler. + + In the 32-bit ARM case (which does not have a division instruction), some code + has been imported from the Linux kernel to perform the division operations in + software. + + Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org> + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + +commit b28143d4fb4f6969dc0c87c853d3527d889951d7 +Author: Nigel Croxon <nigel.cro...@hp.com> +Date: Fri Aug 8 15:54:19 2014 -0400 + + Updated Changelog + + Signed-off-by: Nigel Croxon <nigel.cro...@hp.com> + commit 1525190354f5faac33015e17c9ba7ea2bb2be35b Author: Nigel Croxon <nigel.cro...@hp.com> Date: Fri Aug 8 15:35:09 2014 -0400 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/Make.defaults new/gnu-efi-3.0.3/Make.defaults --- old/gnu-efi-3.0.2/Make.defaults 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/Make.defaults 2015-08-17 22:06:47.000000000 +0200 @@ -140,13 +140,14 @@ -I$(TOPDIR)/inc/protocol ifeq (FreeBSD, $(findstring FreeBSD, $(OS))) -CFLAGS += $(ARCH3264) -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing \ +CFLAGS += $(ARCH3264) -g -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing \ -ffreestanding -fno-stack-protector else -CFLAGS += $(ARCH3264) -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing \ +CFLAGS += $(ARCH3264) -g -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing \ -fno-merge-constants -ffreestanding -fno-stack-protector \ -fno-stack-check endif ASFLAGS += $(ARCH3264) -LDFLAGS += -nostdlib --warn-common --no-undefined --fatal-warnings +LDFLAGS += -nostdlib --warn-common --no-undefined --fatal-warnings \ + --build-id=sha1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/Make.rules new/gnu-efi-3.0.3/Make.rules --- old/gnu-efi-3.0.2/Make.rules 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/Make.rules 2015-08-17 22:06:47.000000000 +0200 @@ -39,6 +39,12 @@ -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* \ -j .reloc $(FORMAT) $*.so $@ +%.efi.debug: %.so + $(OBJCOPY) -j .debug_info -j .debug_abbrev -j .debug_aranges \ + -j .debug_line -j .debug_str -j .debug_ranges \ + -j .note.gnu.build-id \ + $(FORMAT) $*.so $@ + %.so: %.o $(LD) $(LDFLAGS) $^ -o $@ $(LOADLIBES) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/Makefile new/gnu-efi-3.0.3/Makefile --- old/gnu-efi-3.0.2/Makefile 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/Makefile 2015-08-17 22:06:47.000000000 +0200 @@ -34,7 +34,7 @@ # SUCH DAMAGE. # -VERSION = 3.0.2 +VERSION = 3.0.3 SRCDIR = $(shell pwd) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/apps/Makefile new/gnu-efi-3.0.3/apps/Makefile --- old/gnu-efi-3.0.2/apps/Makefile 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/apps/Makefile 2015-08-17 22:06:47.000000000 +0200 @@ -61,7 +61,7 @@ TARGET_APPS = t.efi t2.efi t3.efi t4.efi t5.efi t6.efi \ printenv.efi t7.efi t8.efi tcc.efi modelist.efi \ route80h.efi drv0_use.efi AllocPages.efi \ - FreePages.efi + FreePages.efi setjmp.efi debughook.efi debughook.efi.debug TARGET_BSDRIVERS = drv0.efi TARGET_RTDRIVERS = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/apps/debughook.c new/gnu-efi-3.0.3/apps/debughook.c --- old/gnu-efi-3.0.2/apps/debughook.c 1970-01-01 01:00:00.000000000 +0100 +++ new/gnu-efi-3.0.3/apps/debughook.c 2015-08-17 22:06:47.000000000 +0200 @@ -0,0 +1,92 @@ +#include <efi.h> +#include <efilib.h> + +EFI_STATUS +GetVariableAttr(CHAR16 *var, UINT8 **data, UINTN *len, EFI_GUID owner, + UINT32 *attributes) +{ + EFI_STATUS efi_status; + + *len = 0; + + efi_status = uefi_call_wrapper(RT->GetVariable, 5, var, &owner, + NULL, len, NULL); + if (efi_status != EFI_BUFFER_TOO_SMALL) + return efi_status; + + *data = AllocateZeroPool(*len); + if (!*data) + return EFI_OUT_OF_RESOURCES; + + efi_status = uefi_call_wrapper(RT->GetVariable, 5, var, &owner, + attributes, len, *data); + + if (efi_status != EFI_SUCCESS) { + FreePool(*data); + *data = NULL; + } + return efi_status; +} + +EFI_STATUS +GetVariable(CHAR16 *var, UINT8 **data, UINTN *len, EFI_GUID owner) +{ + return GetVariableAttr(var, data, len, owner, NULL); +} + +EFI_GUID DUMMY_GUID = +{0x55aad538, 0x8f82, 0x4e2a, {0xa4,0xf0,0xbe, 0x59, 0x13, 0xb6, 0x5f, 0x1e}}; + +static void +__attribute__((__optimize__("0"))) +DebugHook(void) +{ + EFI_GUID guid = DUMMY_GUID; + UINT8 *data = NULL; + UINTN dataSize = 0; + EFI_STATUS efi_status; + volatile register UINTN x = 0; + extern char _text, _data; + + if (x) + return; + + efi_status = GetVariable(L"DUMMY_DEBUG", &data, &dataSize, guid); + if (EFI_ERROR(efi_status)) { + return; + } + + Print(L"add-symbol-file /usr/lib/debug/boot/efi/debughook.debug " + L"0x%08x -s .data 0x%08x\n", &_text, &_data); + + Print(L"Pausing for debugger attachment.\n"); + Print(L"To disable this, remove the EFI variable DUMMY_DEBUG-%g .\n", + &guid); + x = 1; + while (x++) { + /* Make this so it can't /totally/ DoS us. */ +#if defined(__x86_64__) || defined(__i386__) || defined(__i686__) + if (x > 4294967294) + break; + __asm__ __volatile__("pause"); +#elif defined(__aarch64__) + if (x > 1000) + break; + __asm__ __volatile__("wfi"); +#else + if (x > 12000) + break; + uefi_call_wrapper(BS->Stall, 1, 5000); +#endif + } + x = 1; +} + + +EFI_STATUS +efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab) +{ + InitializeLib(image, systab); + DebugHook(); + return EFI_SUCCESS; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/apps/setjmp.c new/gnu-efi-3.0.3/apps/setjmp.c --- old/gnu-efi-3.0.2/apps/setjmp.c 1970-01-01 01:00:00.000000000 +0100 +++ new/gnu-efi-3.0.3/apps/setjmp.c 2015-08-17 22:06:47.000000000 +0200 @@ -0,0 +1,31 @@ + +#include <efi.h> +#include <efilib.h> + +EFI_STATUS +efi_main( + EFI_HANDLE image_handle, + EFI_SYSTEM_TABLE *systab +) +{ + jmp_buf env; + int rc; + + InitializeLib(image_handle, systab); + rc = setjmp(&env); + Print(L"setjmp() = %d\n", rc); + + if (rc == 3) { + Print(L"3 worked\n"); + longjmp(&env, 0); + return 0; + } + + if (rc == 1) { + Print(L"0 got to be one yay\n"); + return 0; + } + + longjmp(&env, 3); + return 0; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/gnuefi/elf_aarch64_efi.lds new/gnu-efi-3.0.3/gnuefi/elf_aarch64_efi.lds --- old/gnu-efi-3.0.2/gnuefi/elf_aarch64_efi.lds 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/gnuefi/elf_aarch64_efi.lds 2015-08-17 22:06:47.000000000 +0200 @@ -4,6 +4,7 @@ SECTIONS { .text 0x0 : { + _text = .; *(.text.head) *(.text) *(.text.*) @@ -11,11 +12,13 @@ *(.srodata) *(.rodata*) . = ALIGN(16); - _etext = .; } + _etext = .; + _text_size = . - _text; .dynamic : { *(.dynamic) } .data : { + _data = .; *(.sdata) *(.data) *(.data1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/gnuefi/elf_arm_efi.lds new/gnu-efi-3.0.3/gnuefi/elf_arm_efi.lds --- old/gnu-efi-3.0.2/gnuefi/elf_arm_efi.lds 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/gnuefi/elf_arm_efi.lds 2015-08-17 22:06:47.000000000 +0200 @@ -4,6 +4,7 @@ SECTIONS { .text 0x0 : { + _text = .; *(.text.head) *(.text) *(.text.*) @@ -11,11 +12,13 @@ *(.srodata) *(.rodata*) . = ALIGN(16); - _etext = .; } + _etext = .; + _text_size = . - _text; .dynamic : { *(.dynamic) } .data : { + _data = .; *(.sdata) *(.data) *(.data1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/gnuefi/elf_ia32_efi.lds new/gnu-efi-3.0.3/gnuefi/elf_ia32_efi.lds --- old/gnu-efi-3.0.2/gnuefi/elf_ia32_efi.lds 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/gnuefi/elf_ia32_efi.lds 2015-08-17 22:06:47.000000000 +0200 @@ -9,13 +9,18 @@ . = ALIGN(4096); .text : { + _text = .; *(.text) *(.text.*) *(.gnu.linkonce.t.*) + . = ALIGN(16); } + _etext = .; + _text_size = . - _text; . = ALIGN(4096); .sdata : { + _data = .; *(.got.plt) *(.got) *(.srodata) @@ -55,6 +60,8 @@ *(.data.rel.ro) *(.data.rel*) } + _edata = .; + _data_size = . - _etext; . = ALIGN(4096); .reloc : /* This is the PECOFF .reloc section! */ { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/gnuefi/elf_ia32_fbsd_efi.lds new/gnu-efi-3.0.3/gnuefi/elf_ia32_fbsd_efi.lds --- old/gnu-efi-3.0.2/gnuefi/elf_ia32_fbsd_efi.lds 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/gnuefi/elf_ia32_fbsd_efi.lds 2015-08-17 22:06:47.000000000 +0200 @@ -9,13 +9,18 @@ . = ALIGN(4096); .text : { + _text = .; *(.text) *(.text.*) *(.gnu.linkonce.t.*) + . = ALIGN(16); } + _etext = .; + _text_size = . - _text; . = ALIGN(4096); .sdata : { + _data = .; *(.got.plt) *(.got) *(.srodata) @@ -55,6 +60,8 @@ *(.data.rel.ro) *(.data.rel*) } + _edata = .; + _data_size = . - _etext; . = ALIGN(4096); .reloc : /* This is the PECOFF .reloc section! */ { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/gnuefi/elf_ia64_efi.lds new/gnu-efi-3.0.3/gnuefi/elf_ia64_efi.lds --- old/gnu-efi-3.0.2/gnuefi/elf_ia64_efi.lds 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/gnuefi/elf_ia64_efi.lds 2015-08-17 22:06:47.000000000 +0200 @@ -9,14 +9,19 @@ . = ALIGN(4096); .text : { + _text = .; *(.text) *(.text.*) *(.gnu.linkonce.t.*) + . = ALIGN(16); } + _etext = .; + _text_size = . - _text; . = ALIGN(4096); __gp = ALIGN (8) + 0x200000; .sdata : { + _data = .; *(.got.plt) *(.got) *(.srodata) @@ -51,6 +56,8 @@ *(.rela.stab) *(.rela.ctors) } + _edata = .; + _data_size = . - _etext; . = ALIGN(4096); .reloc : /* This is the PECOFF .reloc section! */ { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/gnuefi/elf_x86_64_efi.lds new/gnu-efi-3.0.3/gnuefi/elf_x86_64_efi.lds --- old/gnu-efi-3.0.2/gnuefi/elf_x86_64_efi.lds 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/gnuefi/elf_x86_64_efi.lds 2015-08-17 22:06:47.000000000 +0200 @@ -15,10 +15,14 @@ . = ALIGN(4096); .text : { + _text = .; *(.text) *(.text.*) *(.gnu.linkonce.t.*) + . = ALIGN(16); } + _etext = .; + _text_size = . - _text; . = ALIGN(4096); .reloc : { @@ -27,6 +31,7 @@ . = ALIGN(4096); .data : { + _data = .; *(.rodata*) *(.got.plt) *(.got) @@ -41,6 +46,8 @@ *(COMMON) *(.rel.local) } + _edata = .; + _data_size = . - _etext; . = ALIGN(4096); .dynamic : { *(.dynamic) } . = ALIGN(4096); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/gnuefi/elf_x86_64_fbsd_efi.lds new/gnu-efi-3.0.3/gnuefi/elf_x86_64_fbsd_efi.lds --- old/gnu-efi-3.0.2/gnuefi/elf_x86_64_fbsd_efi.lds 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/gnuefi/elf_x86_64_fbsd_efi.lds 2015-08-17 22:06:47.000000000 +0200 @@ -15,8 +15,12 @@ . = ALIGN(4096); .text : { + _text = .; *(.text) + . = ALIGN(16); } + _etext = .; + _text_size = . - _text; .reloc : { *(.reloc) @@ -24,6 +28,7 @@ . = ALIGN(4096); .data : { + _data = .; *(.rodata*) *(.got.plt) *(.got) @@ -47,6 +52,8 @@ *(.rela.got) *(.rela.stab) } + _edata = .; + _data_size = . - _etext; . = ALIGN(4096); .dynsym : { *(.dynsym) } . = ALIGN(4096); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/inc/aarch64/efisetjmp_arch.h new/gnu-efi-3.0.3/inc/aarch64/efisetjmp_arch.h --- old/gnu-efi-3.0.2/inc/aarch64/efisetjmp_arch.h 1970-01-01 01:00:00.000000000 +0100 +++ new/gnu-efi-3.0.3/inc/aarch64/efisetjmp_arch.h 2015-08-17 22:06:47.000000000 +0200 @@ -0,0 +1,31 @@ +#ifndef GNU_EFI_AARCH64_SETJMP_H +#define GNU_EFI_AARCH64_SETJMP_H + +typedef struct { + /* GP regs */ + UINT64 X19; + UINT64 X20; + UINT64 X21; + UINT64 X22; + UINT64 X23; + UINT64 X24; + UINT64 X25; + UINT64 X26; + UINT64 X27; + UINT64 X28; + UINT64 FP; + UINT64 LR; + UINT64 IP0; + + /* FP regs */ + UINT64 D8; + UINT64 D9; + UINT64 D10; + UINT64 D11; + UINT64 D12; + UINT64 D13; + UINT64 D14; + UINT64 D15; +} __attribute__((__aligned__(8))) jmp_buf; + +#endif /* GNU_EFI_AARCH64_SETJMP_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/inc/arm/efisetjmp_arch.h new/gnu-efi-3.0.3/inc/arm/efisetjmp_arch.h --- old/gnu-efi-3.0.2/inc/arm/efisetjmp_arch.h 1970-01-01 01:00:00.000000000 +0100 +++ new/gnu-efi-3.0.3/inc/arm/efisetjmp_arch.h 2015-08-17 22:06:47.000000000 +0200 @@ -0,0 +1,19 @@ +#ifndef GNU_EFI_ARM_SETJMP_H +#define GNU_EFI_ARM_SETJMP_H + +typedef struct { + UINT32 R3; // A copy of R13 + UINT32 R4; + UINT32 R5; + UINT32 R6; + UINT32 R7; + UINT32 R8; + UINT32 R9; + UINT32 R10; + UINT32 R11; + UINT32 R12; + UINT32 R13; + UINT32 R14; +} __attribute__((__aligned__(4))) jmp_buf; + +#endif /* GNU_EFI_ARM_SETJMP_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/inc/efi.h new/gnu-efi-3.0.3/inc/efi.h --- old/gnu-efi-3.0.2/inc/efi.h 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/inc/efi.h 2015-08-17 22:06:47.000000000 +0200 @@ -50,5 +50,6 @@ #include "efiudp.h" #include "efitcp.h" #include "efipoint.h" +#include "efisetjmp.h" #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/inc/efidevp.h new/gnu-efi-3.0.3/inc/efidevp.h --- old/gnu-efi-3.0.2/inc/efidevp.h 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/inc/efidevp.h 2015-08-17 22:06:47.000000000 +0200 @@ -298,6 +298,17 @@ EFI_IPv6_ADDRESS GatewayIpAddress ; } IPv6_DEVICE_PATH; + +/** + * Uniform Resource Identifiers SubType. + * UEFI 2.0 specification version 2.4C § 9.3.5.23. + */ +#define MSG_URI_DP 24 +typedef struct _URI_DEVICE_PATH { + EFI_DEVICE_PATH Header; + CHAR8 Uri[1]; +} URI_DEVICE_PATH; + /** * Device Logical Unit SubType. * UEFI 2.0 specification version 2.4 § 9.3.5.8. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/inc/efisetjmp.h new/gnu-efi-3.0.3/inc/efisetjmp.h --- old/gnu-efi-3.0.2/inc/efisetjmp.h 1970-01-01 01:00:00.000000000 +0100 +++ new/gnu-efi-3.0.3/inc/efisetjmp.h 2015-08-17 22:06:47.000000000 +0200 @@ -0,0 +1,9 @@ +#ifndef GNU_EFI_SETJMP_H +#define GNU_EFI_SETJMP_H + +#include "efisetjmp_arch.h" + +extern UINTN setjmp(jmp_buf *env); +extern VOID longjmp(jmp_buf *env, UINTN value); + +#endif /* GNU_EFI_SETJMP_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/inc/ia32/efisetjmp_arch.h new/gnu-efi-3.0.3/inc/ia32/efisetjmp_arch.h --- old/gnu-efi-3.0.2/inc/ia32/efisetjmp_arch.h 1970-01-01 01:00:00.000000000 +0100 +++ new/gnu-efi-3.0.3/inc/ia32/efisetjmp_arch.h 2015-08-17 22:06:47.000000000 +0200 @@ -0,0 +1,15 @@ +#ifndef GNU_EFI_IA32_SETJMP_H +#define GNU_EFI_IA32_SETJMP_H + +typedef struct { + UINT32 Ebx; + UINT32 Esi; + UINT32 Edi; + UINT32 Ebp; + UINT32 Esp; + UINT32 Eip; +} __attribute__((__aligned__(4))) jmp_buf; + +#define JMPBUF_ALIGN 4 + +#endif /* GNU_EFI_IA32_SETJMP_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/inc/ia64/efisetjmp_arch.h new/gnu-efi-3.0.3/inc/ia64/efisetjmp_arch.h --- old/gnu-efi-3.0.2/inc/ia64/efisetjmp_arch.h 1970-01-01 01:00:00.000000000 +0100 +++ new/gnu-efi-3.0.3/inc/ia64/efisetjmp_arch.h 2015-08-17 22:06:47.000000000 +0200 @@ -0,0 +1,45 @@ +#ifndef GNU_EFI_IA64_SETJMP_H +#define GNU_EFI_IA64_SETJMP_H + +typedef struct { + UINT64 F2[2]; + UINT64 F3[2]; + UINT64 F4[2]; + UINT64 F5[2]; + UINT64 F16[2]; + UINT64 F17[2]; + UINT64 F18[2]; + UINT64 F19[2]; + UINT64 F20[2]; + UINT64 F21[2]; + UINT64 F22[2]; + UINT64 F23[2]; + UINT64 F24[2]; + UINT64 F25[2]; + UINT64 F26[2]; + UINT64 F27[2]; + UINT64 F28[2]; + UINT64 F29[2]; + UINT64 F30[2]; + UINT64 F31[2]; + UINT64 R4; + UINT64 R5; + UINT64 R6; + UINT64 R7; + UINT64 SP; + UINT64 BR0; + UINT64 BR1; + UINT64 BR2; + UINT64 BR3; + UINT64 BR4; + UINT64 BR5; + UINT64 InitialUNAT; + UINT64 AfterSpillUNAT; + UINT64 PFS; + UINT64 BSP; + UINT64 Predicates; + UINT64 LoopCount; + UINT64 FPSR; +} __attribute__((__aligned__(0x10))) jmp_buf; + +#endif /* GNU_EFI_IA64_SETJMP_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/inc/x86_64/efisetjmp_arch.h new/gnu-efi-3.0.3/inc/x86_64/efisetjmp_arch.h --- old/gnu-efi-3.0.2/inc/x86_64/efisetjmp_arch.h 1970-01-01 01:00:00.000000000 +0100 +++ new/gnu-efi-3.0.3/inc/x86_64/efisetjmp_arch.h 2015-08-17 22:06:47.000000000 +0200 @@ -0,0 +1,20 @@ +#ifndef GNU_EFI_X86_64_SETJMP_H +#define GNU_EFI_X86_64_SETJMP_H + +typedef struct { + UINT64 Rbx; + UINT64 Rsp; + UINT64 Rbp; + + UINT64 Rdi; + UINT64 Rsi; + UINT64 R12; + UINT64 R13; + UINT64 R14; + UINT64 R15; + UINT64 Rip; + UINT64 MxCsr; + UINT8 XmmBuffer[160]; // XMM6 - XMM15 +} __attribute__((__aligned__(8))) jmp_buf; + +#endif /* GNU_EFI_X86_64_SETJMP_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/lib/Makefile new/gnu-efi-3.0.3/lib/Makefile --- old/gnu-efi-3.0.2/lib/Makefile 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/lib/Makefile 2015-08-17 22:06:47.000000000 +0200 @@ -47,7 +47,7 @@ error event guid hand hw init lock \ misc print sread str cmdline \ runtime/rtlock runtime/efirtlib runtime/rtstr runtime/vm runtime/rtdata \ - $(ARCH)/initplat $(ARCH)/math + $(ARCH)/initplat $(ARCH)/math $(ARCH)/setjmp ifeq ($(ARCH),ia64) FILES += $(ARCH)/salpal $(ARCH)/palproc diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/lib/Makefile.orig new/gnu-efi-3.0.3/lib/Makefile.orig --- old/gnu-efi-3.0.2/lib/Makefile.orig 1970-01-01 01:00:00.000000000 +0100 +++ new/gnu-efi-3.0.3/lib/Makefile.orig 2015-08-17 22:06:47.000000000 +0200 @@ -0,0 +1,91 @@ +# +# Copyright (C) 1999-2001 Hewlett-Packard Co. +# Contributed by David Mosberger <dav...@hpl.hp.com> +# Contributed by Stephane Eranian <eran...@hpl.hp.com> +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials +# provided with the distribution. +# * Neither the name of Hewlett-Packard Co. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +# BE LIABLE FOR ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + +SRCDIR = . + +VPATH = $(SRCDIR) + +include $(SRCDIR)/../Make.defaults + +TOPDIR = $(SRCDIR)/.. + +CDIR = $(TOPDIR)/.. +FILES = boxdraw smbios console crc data debug dpath \ + error event guid hand hw init lock \ + misc print sread str cmdline \ + runtime/rtlock runtime/efirtlib runtime/rtstr runtime/vm runtime/rtdata \ + $(ARCH)/initplat $(ARCH)/math + +ifeq ($(ARCH),ia64) +FILES += $(ARCH)/salpal $(ARCH)/palproc +endif + +ifeq ($(ARCH),x86_64) +FILES += $(ARCH)/callwrap $(ARCH)/efi_stub +endif + +ifeq ($(ARCH),arm) +FILES += $(ARCH)/lib1funcs $(ARCH)/div64 +endif + +OBJS = $(FILES:%=%.o) + +SUBDIRS = ia32 x86_64 ia64 aarch64 arm runtime + +LIBDIRINSTALL = $(INSTALLROOT)$(LIBDIR) + +all: libsubdirs libefi.a + +.PHONY: libsubdirs +libsubdirs: + for sdir in $(SUBDIRS); do mkdir -p $$sdir; done + +libefi.a: $(patsubst %,libefi.a(%),$(OBJS)) + +clean: + rm -f libefi.a *~ $(OBJS) */*.o + +$(LIBDIRINSTALL): + mkdir -p $@ + +$(LIBDIRINSTALL)/libefi.a: libefi.a | $(LIBDIRINSTALL) + $(INSTALL) -m 644 $< $(dir $@) + +install: $(LIBDIRINSTALL)/libefi.a + +include $(SRCDIR)/../Make.rules + +.PHONY: libsubdirs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/lib/aarch64/setjmp.S new/gnu-efi-3.0.3/lib/aarch64/setjmp.S --- old/gnu-efi-3.0.2/lib/aarch64/setjmp.S 1970-01-01 01:00:00.000000000 +0100 +++ new/gnu-efi-3.0.3/lib/aarch64/setjmp.S 2015-08-17 22:06:47.000000000 +0200 @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved. + * This program and the accompanying materials are licensed and made +available + * under the terms and conditions of the BSD License which accompanies +this + * distribution. The full text of the license may be found at + * http://opensource.org/licenses/bsd-license.php. + * + * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" +BASIS, + * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR + * IMPLIED. + */ + .text + .p2align 3 + +#define GPR_LAYOUT \ + REG_PAIR (x19, x20, 0); \ + REG_PAIR (x21, x22, 16); \ + REG_PAIR (x23, x24, 32); \ + REG_PAIR (x25, x26, 48); \ + REG_PAIR (x27, x28, 64); \ + REG_PAIR (x29, x30, 80); \ + REG_ONE (x16, 96) + +#define FPR_LAYOUT \ + REG_PAIR(d8, d9, 112); \ + REG_PAIR(d10, d11, 128); \ + REG_PAIR(d12, d13, 144); \ + REG_PAIR(d14, d15, 160); + +#define REG_PAIR(REG1, REG2, OFFS) stp REG1, REG2, [x0, OFFS] +#define REG_ONE(REG1, OFFS) str REG1, [x0, OFFS] + + .globl setjmp + .type setjmp, @function +setjmp: + mov x16, sp + GPR_LAYOUT + FPR_LAYOUT + mov w0, #0 + ret + +#undef REG_PAIR +#undef REG_ONE + +#define REG_PAIR(REG1, REG2, OFFS) ldp REG1, REG2, [x0, OFFS] +#define REG_ONE(REG1, OFFS) ldr REG1, [x0, OFFS] + + .globl longjmp + .type longjmp, @function +longjmp: + GPR_LAYOUT + FPR_LAYOUT + mov sp, x16 + cmp w1, #0 + mov w0, #1 + csel w0, w1, w0, ne + br x30 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/lib/arm/setjmp.S new/gnu-efi-3.0.3/lib/arm/setjmp.S --- old/gnu-efi-3.0.2/lib/arm/setjmp.S 1970-01-01 01:00:00.000000000 +0100 +++ new/gnu-efi-3.0.3/lib/arm/setjmp.S 2015-08-17 22:06:47.000000000 +0200 @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved. + * This program and the accompanying materials are licensed and made +available + * under the terms and conditions of the BSD License which accompanies +this + * distribution. The full text of the license may be found at + * http://opensource.org/licenses/bsd-license.php. + * + * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" +BASIS, + * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR + * IMPLIED. + */ + .text + .arm + .globl setjmp + .type setjmp, @function +setjmp: + mov r3, r13 + stmia r0, {r3-r12,r14} + eor r0, r0, r0 + bx lr + + .globl longjmp + .type longjmp, @function +longjmp: + ldmia r0, {r3-r12,r14} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/lib/dpath.c new/gnu-efi-3.0.3/lib/dpath.c --- old/gnu-efi-3.0.2/lib/dpath.c 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/lib/dpath.c 2015-08-17 22:06:47.000000000 +0200 @@ -842,6 +842,19 @@ } static VOID +_DevPathUri ( + IN OUT POOL_PRINT *Str, + IN VOID *DevPath + ) +{ + URI_DEVICE_PATH *Uri; + + Uri = DevPath; + + CatPrint( Str, L"Uri(%a)", Uri->Uri ); +} + +static VOID _DevPathInfiniBand ( IN OUT POOL_PRINT *Str, IN VOID *DevPath @@ -1088,6 +1101,7 @@ { MESSAGING_DEVICE_PATH, MSG_MAC_ADDR_DP, _DevPathMacAddr}, { MESSAGING_DEVICE_PATH, MSG_IPv4_DP, _DevPathIPv4}, { MESSAGING_DEVICE_PATH, MSG_IPv6_DP, _DevPathIPv6}, + { MESSAGING_DEVICE_PATH, MSG_URI_DP, _DevPathUri}, { MESSAGING_DEVICE_PATH, MSG_INFINIBAND_DP, _DevPathInfiniBand}, { MESSAGING_DEVICE_PATH, MSG_UART_DP, _DevPathUart}, { MESSAGING_DEVICE_PATH , MSG_SATA_DP , _DevPathSata } , diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/lib/error.c new/gnu-efi-3.0.3/lib/error.c --- old/gnu-efi-3.0.2/lib/error.c 2015-04-10 14:49:50.000000000 +0200 +++ new/gnu-efi-3.0.3/lib/error.c 2015-08-17 22:06:47.000000000 +0200 @@ -47,6 +47,13 @@ { EFI_ICMP_ERROR, L"ICMP Error"}, { EFI_TFTP_ERROR, L"TFTP Error"}, { EFI_PROTOCOL_ERROR, L"Protocol Error"}, + { EFI_INCOMPATIBLE_VERSION, L"Incompatible Version"}, + { EFI_SECURITY_VIOLATION, L"Security Policy Violation"}, + { EFI_CRC_ERROR, L"CRC Error"}, + { EFI_END_OF_MEDIA, L"End of Media"}, + { EFI_END_OF_FILE, L"End of File"}, + { EFI_INVALID_LANGUAGE, L"Invalid Languages"}, + { EFI_COMPROMISED_DATA, L"Compromised Data"}, // warnings { EFI_WARN_UNKOWN_GLYPH, L"Warning Unknown Glyph"}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/lib/ia32/setjmp.S new/gnu-efi-3.0.3/lib/ia32/setjmp.S --- old/gnu-efi-3.0.2/lib/ia32/setjmp.S 1970-01-01 01:00:00.000000000 +0100 +++ new/gnu-efi-3.0.3/lib/ia32/setjmp.S 2015-08-17 22:06:47.000000000 +0200 @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved. + * This program and the accompanying materials are licensed and made +available + * under the terms and conditions of the BSD License which accompanies +this + * distribution. The full text of the license may be found at + * http://opensource.org/licenses/bsd-license.php. + * + * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" +BASIS, + * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR + * IMPLIED. + */ + .text + .globl setjmp + .type setjmp, @function +setjmp: + pop %ecx + movl (%esp), %edx + movl %ebx, (%edx) + movl %esi, 4(%edx) + movl %edi, 8(%edx) + movl %ebp, 12(%edx) + movl %esp, 16(%edx) + xorl %eax, %eax + jmp *%ecx + + .globl longjmp + .type longjmp, @function +longjmp: + pop %eax + pop %edx + pop %eax + movl (%edx), %ebx + movl 4(%edx), %esi + movl 8(%edx), %edi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/lib/ia64/setjmp.S new/gnu-efi-3.0.3/lib/ia64/setjmp.S --- old/gnu-efi-3.0.2/lib/ia64/setjmp.S 1970-01-01 01:00:00.000000000 +0100 +++ new/gnu-efi-3.0.3/lib/ia64/setjmp.S 2015-08-17 22:06:47.000000000 +0200 @@ -0,0 +1,200 @@ +/* + * Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved. + * This program and the accompanying materials are licensed and made +available + * under the terms and conditions of the BSD License which accompanies +this + * distribution. The full text of the license may be found at + * http://opensource.org/licenses/bsd-license.php. + * + * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" +BASIS, + * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR + * IMPLIED. + */ + .text + .globl setjmp + .type setjmp, @function +setjmp: + alloc loc = ar.pfs, 1, 2, 1, 0 + ;; + mov r14 = ar.unat + mov r15 = ar.bsp + add r10 = 0x10 * 20, in0 + ;; + stf.spill.nta [in0] = f2, 0x10 + st8.spill.nta [r10] = r4, 8 + mov r21 = b1 + ;; + stf.spill.nta [in0] = f3, 0x10 + st8.spill.nta [r10] = r5, 8 + mov r22 = b2 + ;; + stf.spill.nta [in0] = f4, 0x10 + st8.spill.nta [r10] = r6, 8 + mov r23 = b3 + ;; + stf.spill.nta [in0] = f5, 0x10 + st8.spill.nta [r10] = r7, 8 + mov r24 = b4 + ;; + stf.spill.nta [in0] = f16, 0x10 + st8.spill.nta [r10] = sp, 8 + mov r25 = b5 + ;; + stf.spill.nta [in0] = f17, 0x10 + st8.nta [r10] = loc1, 8 + mov r16 = pr + ;; + stf.spill.nta [in0] = f18, 0x10 + st8.nta [r10] = r21, 8 + mov r17 = ar.lc + ;; + stf.spill.nta [in0] = f19, 0x10 + st8.nta [r10] = r22, 8 + ;; + stf.spill.nta [in0] = f20, 0x10 + st8.nta [r10] = r23, 8 + ;; + stf.spill.nta [in0] = f21, 0x10 + st8.nta [r10] = r24, 8 + ;; + stf.spill.nta [in0] = f22, 0x10 + st8.nta [r10] = r25, 8 + ;; + stf.spill.nta [in0] = f23, 0x10 + mov r18 = ar.unat + ;; + stf.spill.nta [in0] = f24, 0x10 + st8.nta [r10] = r14, 8 + ;; + stf.spill.nta [in0] = f25, 0x10 + st8.nta [r10] = r18, 8 + ;; + stf.spill.nta [in0] = f26, 0x10 + st8.nta [r10] = loc0, 8 + ;; + stf.spill.nta [in0] = f27, 0x10 + st8.nta [r10] = r15, 8 + mov r8 = 0 + ;; + stf.spill.nta [in0] = f28, 0x10 + mov r19 = ar.fpsr + ;; + stf.spill.nta [in0] = f29, 0x10 + st8.nta [r10] = r16, 8 + mov ar.pfs = loc0 + ;; + stf.spill.nta [in0] = f30, 0x10 + st8.nta [r10] = r17, 8 + mov b0 = loc1 + ;; + stf.spill.nta [in0] = f31, 0x10 + st8.nta [r10] = r19 + ;; + mov ar.unat = r14 + br.ret.sptk b0 + ;; + + .globl longjmp + .type longjmp, @function + .regstk +longjmp: + add r10 = 0x10 * 20 + 8*14, in0 + movl r2 = ~(((1<<14) - 1) << 16) | 3) + ;; + ld8.nt1 r14 = [r10], -8*2 + mov r15 = ar.bspstore + ;; + ld8.nt1 r17 = [r10], -8 + mov r16 = ar.rsc + cmp.leu p6 = r14, r15 + ;; + ld8.nt1 r18 = [r10], -8 + ld8.nt1 r25 = [r10], -8 + and r2 = r16, r2 + ;; + ldf.fill.nt1 f2 = [in0], 0x10 + ld8.nt1 r24 = [r10], -8 + mov b5 = r25 + ;; + mov ar.rsc = r2 + ld8.nt1 r23 = [r10], -8 + mov b5 = r25 + ;; + mov ar.rsc = r2 + ld8.nt1 r23 = [r10], -8 + mov b4 = r24 + ;; + ldf.fill.nt1 f3 = [in0], 0x10 + mov ar.unat = r17 +(p6) br.spnt.many _skip_flushrs + ;; + flushrs + mov r15 = ar.bsp + ;; +_skip_flushrs: + mov r31 = ar.rnat + loadrs + ;; + ldf.fill.nt1 f4 = [in0], 0x10 + ld8.nt1 r22 = [r10], -8 + dep r2 = -1, r14, 3, 6 + ;; + ldf.fill.nt1 f5 = [in0], 0x10 + ld8.nt1 f21 = [r10], -8 + cmp p6 = r2, r15 + ;; + ld8.nt1 r20 = [r10], -0x10 +(p6) ld8.nta r31 = [r2] + mov b3 = r23 + ;; + ldf.fill.nt1 f16 = [in0], 0x10 + ld8.fill.nt1 r7 = [r10], -8 + mov b2 = r22 + ;; + ldf.fill.nt1 f17 = [in0], 0x10 + ld8.fill.nt1 r6 = [r10], -8 + mov b1 = r21 + ;; + ldf.fill.nt1 f18 = [in0], 0x10 + ld8.fill.nt1 r5 = [r10], -8 + mov b0 = r20 + ;; + ldf.fill.nt1 f19 = [in0], 0x10 + ld8.fill.nt1 r4 = [r10], 8*13 + ;; + ldf.fill.nt1 f20 = [in0], 0x10 + ld8.nt1 r19 = [r10], 0x10 + ;; + ldf.fill.nt1 f21 = [in0], 0x10 + ldf.nt1 f26 = [r10], 8 + mov ar.pfs = r19 + ;; + ldf.fill.nt1 f22 = [in0], 0x10 + ld8.nt1 r27 = [r10], 8 + mov pr = r26, -1 + ;; + ldf.fill.nt1 r23 = [in0], 0x10 + ld8.nt1 r28 = [r10], -17*8 - 0x10 + mov ar.lc = r27 + ;; + ldf.fill.nt1 f24 = [in0], 0x10 + ldf.fill.nt1 f25 = [in0], 0x10 + mov r8 = in1 + ;; + ldf.fill.nt1 f26 = [in0], 0x10 + ldf.fill.nt1 f31 = [r10], -0x10 + ;; + ldf.fill.nt1 f27 = [in0], 0x10 + ldf.fill.nt1 f30 = [r10], -0x10 + ;; + ldf.fill.nt1 f28 = [in0] + ldf.fill.nt1 f29 = [r10], 0x10*3 + 8*4 + ;; + ld8.fill.nt1 sp = [r10] + mov ar.unat = r18 + ;; + mov ar.bspstore = r14 + mov ar.rnat = r31 + ;; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnu-efi-3.0.2/lib/x86_64/setjmp.S new/gnu-efi-3.0.3/lib/x86_64/setjmp.S --- old/gnu-efi-3.0.2/lib/x86_64/setjmp.S 1970-01-01 01:00:00.000000000 +0100 +++ new/gnu-efi-3.0.3/lib/x86_64/setjmp.S 2015-08-17 22:06:47.000000000 +0200 @@ -0,0 +1,33 @@ + .text + .globl setjmp + .type setjmp, @function +setjmp: + pop %rsi + movq %rbx,0x00(%rdi) + movq %rsp,0x08(%rdi) + push %rsi + movq %rbp,0x10(%rdi) + movq %r12,0x18(%rdi) + movq %r13,0x20(%rdi) + movq %r14,0x28(%rdi) + movq %r15,0x30(%rdi) + movq %rsi,0x38(%rdi) + xor %rax,%rax + ret + + .globl longjmp + .type longjmp, @function +longjmp: + movl %esi, %eax + movq 0x00(%rdi), %rbx + movq 0x08(%rdi), %rsp + movq 0x10(%rdi), %rbp + movq 0x18(%rdi), %r12 + movq 0x20(%rdi), %r13 + movq 0x28(%rdi), %r14 + movq 0x30(%rdi), %r15 + xor %rdx,%rdx + mov $1,%rcx + cmp %rax,%rdx + cmove %rcx,%rax + jmp *0x38(%rdi)