소스 검색

Update Changelog for non-git users

root 12 년 전
부모
커밋
8cb1e8771f
1개의 변경된 파일183개의 추가작업 그리고 0개의 파일을 삭제
  1. 183 0
      gnu-efi-3.0/ChangeLog

+ 183 - 0
gnu-efi-3.0/ChangeLog

@@ -1,3 +1,186 @@
+2013-06-12 Nigel Croxon <nigel.croxon@hp.com>
+    Disable MMX and SSE
+    
+    GCC 4.8.0 adds some optimizations that will use movups/movaps (and use
+    %xmm* registers) when they're faster, and of course that won't work at
+    all since UEFI firmwares aren't guaranteed to initialize the mmx/sse
+    instructions.
+    
+    This will be even more annoying, since most UEFI firmwares don't
+    initialize the #DE or #UD trap handlers, and your backtrace will be a
+    random path through uninitialized memory, occasionally including
+    whatever address the IDT has for #UD, but also addresses like "0x4" and
+    "0x507" that you don't normally expect to see in your call path.
+    
+    Signed-off-by: Peter Jones <pjones@redhat.com>
+
+    Author: Nigel Croxon <nigel.croxon@hp.com>
+    Date:   Wed Jun 12 10:29:40 2013 -0400
+
+    bug in make 3.82 expand to odd values
+    
+    Some Makefiles tickle a bug in make 3.82 that cause libefi.a
+    and libgnuefi.a dependencies to expand to the odd values:
+    
+    libefi.a: boxdraw.o) smbios.o) ...
+    libgnuefi.a(reloc_x86_64.o:
+    
+    The patch replaces libgnuefi.a($(OBJS)) & libefi.a($(OBJS))
+    with an equivalent expansion that should work with any make
+    that supports $(patsubst).
+
+    Author: Nigel Croxon <nigel.croxon@hp.com>
+    Date:   Wed Jun 12 09:53:01 2013 -0400
+
+    support .text.* sections on x86_64
+    
+    Group them in .text. Also add vague linkage sections in .text.
+    
+    Signed-off-by: David Decotigny <decot@googlers.com>
+
+    Author: Nigel Croxon <nigel.croxon@hp.com>
+    Date:   Wed Jun 12 09:51:36 2013 -0400
+
+    cleanup and fix Make.defaults
+    
+    Reorder variables in Make.defaults so that they are grouped by
+    functions. Also fixed ifeq (x,y) to have required syntax and make it
+    work for ARCH amd64->x86_64 renaming on BSD. Also provides top-level
+    Makefile with a "mkvars" target that displays effective variables.
+    
+    Signed-off-by: David Decotigny <decot@googlers.com>
+
+    Author: Nigel Croxon <nigel.croxon@hp.com>
+    Date:   Wed Jun 12 09:47:16 2013 -0400
+
+    automatically determine number of uefi_call_wrapper() args on x86_64
+    
+    Instead of asking developers to explicitly pass the number of
+    parameters to the functions that get called, we determine them
+    automatically at preprocessing time. This should result in more
+    robust code.
+    
+    Argument va_num is now ignored in x86_64 code, both with and
+    without HAVE_USE_MS_ABI.
+    
+    Credits to the macro magic given in the comments.
+    
+    Signed-off-by: David Decotigny <decot@googlers.com>
+
+    Author: Nigel Croxon <nigel.croxon@hp.com>
+    Date:   Wed Jun 12 09:38:10 2013 -0400
+
+    fix parameter-passing corruption on x86_64 for >= 5 args
+    
+    On x86_64 without HAVE_USE_MS_ABI support, uefi_call_wrapper() is a
+    variadic function. Parameters >=5 are copied to the stack and, when
+    passed small immediate values (and possibly other parameters), gcc
+    would emit a movl instruction before calling uefi_call_wrapper(). As a
+    result, only the lower 32b of these stack values are significant, the
+    upper 32b potentially contain garbage. Considering that
+    uefi_call_wrapper() assumes these arguments are clean 64b values
+    before calling the efi_callX() trampolines, the latter may be passed
+    garbage. This makes calling functions like
+    EFI_PCI_IO_PROTOCOL.Mem.Read()/Write() or BS->OpenProtocol() quite
+    unreliable.
+    
+    This patch fixes this by turning uefi_call_wrapper() into a macro that
+    allows to expose the efi_callX() trampoline signatures to the callers,
+    so that gcc can know upfront that it has to pass all arguments to
+    efi_callX() as clean 64b values (eg. movq for immediates). The
+    _cast64_efi_callX macros are just here to avoid a gcc warning, they do
+    nothing otherwise.
+    
+    Signed-off-by: David Decotigny <decot@googlers.com>
+
+    Author: noxorc <nigel.croxon@hp.com>
+    Date:   Wed May 15 15:26:16 2013 -0400
+
+    - Removes the ElfW() macro usage from reloc_ia32.c and reloc_x86_64.c. These
+    macros only exist in link.h on Linux. On FreeBSD, the equivalent macro is
+    __ElfN(). But the macro usage is redundant. You're only going to compile the
+    ia32 file for IA32 binaries and the x86_64 file for X64 binaries. If you had
+    just one file built for both cases, then using the macro might make more
+    sense.
+    
+    - Removes the "#define foo_t efi_foo_t" macros from reloc_ia32.c and
+    reloc_x86_64.c.
+    
+    - Modifies inc/x86_64/efibind.h and inc/ia32/efibind.h to use the new
+    definitions for uint64_t, int64_t and int8_t. The 64-bit types are now defined
+    as:
+    
+            typedef int __attribute__((__mode__(__DI__)))           int64_t;
+            typedef unsigned int __attribute__((__mode__(__DI__)))  uint64_t;
+    
+    This removes the conflict between the host types dragged in by elf.h and the
+    type definitions in efibind.h that made the #define foo_t efi_foo_t" hack
+    necessary. Also, int8_t is now defined as signed char instead of just char
+    (assuming char == signed char is apparently not good enough).
+    
+    - Also modifies these files to use stdint.h instead of stdint-gcc.h. It's
+    unclear if this is completely correct, but stdint-gcc.h is not present with
+    all GCC installs, and if you use -std=c99 or later you will force this case to
+    be hit. This also can break clang, which doesn't have a stdint-gcc.h at all.
+    
+    - Removes the #include of <link.h> from reloc_ia32.c and reloc_x86_64.c (since
+    with the previous changes it's not needed anymore).
+    
+    - Places the #include of <elf.h> after #include <efi>/#include <efilib.h> so
+    that we know the types will always be defined properly, in case you build on a
+    system where <elf.h> doesn't automatically pull in the right header files to
+    define all the needed types. (This actually happens on VxWorks. It's harmless
+    elsewhere. If you don't care about VxWorks, you can leave this out.)
+    
+    - Modifies setjmp_ia32.S and setjmp_x86_64.S so to change "function" to
+    @function. The clang compiler doesn't like the former. Clang and GCC both like
+    the latter.
+    
+    - Modifles Make.defaults so that if ARCH is detected as "amd64," it's changed
+    to "x86_64." It happens that uname -m on 64-bit FreeBSD reports the former
+    rather than the latter, which breaks the build. This may also be the case on
+    some other OSes. There's a way to force uname(1) to return x86_64 as the
+    machine type, but this way is a little friendlier.
+    
+    - Creates gnuefi/elf_ia32_fbsd_efi.lds which specifies the object file type as
+    elf-ia32-freebsd. This is required for building on FreeBSD/i386, not just
+    FreeBSD/amd64.
+    
+    - Modifies apps/Makefile to always use
+    $(TOPDIR)/gnuefi/elf_$(ARCH)_fbsd_efi.lds when building on either 32-bit or
+    64-bit FreeBSD instead of just for the x86_64 case.
+    
+    - Changed LDFLAGS in Make.defaults to include --no-undefined. This will cause
+    linking to fail if there are any unsatisfied symbols when creating foo.so
+    during any of the app builds, as opposed to just silently succeeding and
+    producing an unusable binary.
+    
+    - Changed CFLAGS to include -ffreestanding -fno-stack-protector -fno-stack-
+    check. This prevents clang from inserting a call to memset() when compiling
+    the RtZeroMem() and RtSetMem() routines in lib/runtime/efirtlib.c and guards
+    against the native compiler in some Linux distros from adding in stack
+    checking code which relies on libc help that isn't present in the EFI runtime
+    environment.
+    
+    This does the following:
+    
+    - Cleans up the ia32 and x86-64 relocation code a bit (tries to break the
+    dependency between the host ELF headers and the EFI runtime environment)
+    - Avoids the dependency on stdint-gcc.h which may not always be available
+    - Allows GNU EFI to build out of the box on both FreeBSD/i386 and
+    FreeBSD/amd64
+    - Allows GNU EFI to build out of the box with either GCC or clang on
+    FreeBSD/i386 and FreeBSD/amd64 9.0 and later.
+    - Makes things a little easier to port to VxWorks
+    - Avoids creating un-runable binaries with unresolved symbol definitions
+    (which can be very confusing to debug)
+
+    Author: noxorc <nigel.croxon@hp.com>
+    Date:   Wed May 8 16:29:45 2013 -0400
+
+    Add the definitions for TCP, UDP and IP, for both IPv4 and IPv6.
+
+
 2013-05-02 Nigel Croxon <nigel.croxon@hp.com>
 	* Chnage from Matt Fleming <matt.fleming@intel.com>
 	  - Preparation for adding the networking protocol definitions.