~ubuntu-branches/ubuntu/quantal/gnu-efi/quantal-proposed

« back to all changes in this revision

Viewing changes to ChangeLog

  • Committer: Package Import Robot
  • Author(s): Steve Langasek
  • Date: 2013-09-24 14:21:08 UTC
  • mfrom: (17.1.6 trunk)
  • Revision ID: package-import@ubuntu.com-20130924142108-wrui7yjsl3sqh2kr
Tags: 3.0u+debian-1ubuntu2~12.10.0
Backport gnu-efi from saucy to quantal to support new versions of
shim.  LP: #1229572.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
2013-06-12 Nigel Croxon <nigel.croxon@hp.com>
 
2
    Disable MMX and SSE
 
3
    
 
4
    GCC 4.8.0 adds some optimizations that will use movups/movaps (and use
 
5
    %xmm* registers) when they're faster, and of course that won't work at
 
6
    all since UEFI firmwares aren't guaranteed to initialize the mmx/sse
 
7
    instructions.
 
8
    
 
9
    This will be even more annoying, since most UEFI firmwares don't
 
10
    initialize the #DE or #UD trap handlers, and your backtrace will be a
 
11
    random path through uninitialized memory, occasionally including
 
12
    whatever address the IDT has for #UD, but also addresses like "0x4" and
 
13
    "0x507" that you don't normally expect to see in your call path.
 
14
    
 
15
    Signed-off-by: Peter Jones <pjones@redhat.com>
 
16
 
 
17
    Author: Nigel Croxon <nigel.croxon@hp.com>
 
18
    Date:   Wed Jun 12 10:29:40 2013 -0400
 
19
 
 
20
    bug in make 3.82 expand to odd values
 
21
    
 
22
    Some Makefiles tickle a bug in make 3.82 that cause libefi.a
 
23
    and libgnuefi.a dependencies to expand to the odd values:
 
24
    
 
25
    libefi.a: boxdraw.o) smbios.o) ...
 
26
    libgnuefi.a(reloc_x86_64.o:
 
27
    
 
28
    The patch replaces libgnuefi.a($(OBJS)) & libefi.a($(OBJS))
 
29
    with an equivalent expansion that should work with any make
 
30
    that supports $(patsubst).
 
31
 
 
32
    Author: Nigel Croxon <nigel.croxon@hp.com>
 
33
    Date:   Wed Jun 12 09:53:01 2013 -0400
 
34
 
 
35
    support .text.* sections on x86_64
 
36
    
 
37
    Group them in .text. Also add vague linkage sections in .text.
 
38
    
 
39
    Signed-off-by: David Decotigny <decot@googlers.com>
 
40
 
 
41
    Author: Nigel Croxon <nigel.croxon@hp.com>
 
42
    Date:   Wed Jun 12 09:51:36 2013 -0400
 
43
 
 
44
    cleanup and fix Make.defaults
 
45
    
 
46
    Reorder variables in Make.defaults so that they are grouped by
 
47
    functions. Also fixed ifeq (x,y) to have required syntax and make it
 
48
    work for ARCH amd64->x86_64 renaming on BSD. Also provides top-level
 
49
    Makefile with a "mkvars" target that displays effective variables.
 
50
    
 
51
    Signed-off-by: David Decotigny <decot@googlers.com>
 
52
 
 
53
    Author: Nigel Croxon <nigel.croxon@hp.com>
 
54
    Date:   Wed Jun 12 09:47:16 2013 -0400
 
55
 
 
56
    automatically determine number of uefi_call_wrapper() args on x86_64
 
57
    
 
58
    Instead of asking developers to explicitly pass the number of
 
59
    parameters to the functions that get called, we determine them
 
60
    automatically at preprocessing time. This should result in more
 
61
    robust code.
 
62
    
 
63
    Argument va_num is now ignored in x86_64 code, both with and
 
64
    without HAVE_USE_MS_ABI.
 
65
    
 
66
    Credits to the macro magic given in the comments.
 
67
    
 
68
    Signed-off-by: David Decotigny <decot@googlers.com>
 
69
 
 
70
    Author: Nigel Croxon <nigel.croxon@hp.com>
 
71
    Date:   Wed Jun 12 09:38:10 2013 -0400
 
72
 
 
73
    fix parameter-passing corruption on x86_64 for >= 5 args
 
74
    
 
75
    On x86_64 without HAVE_USE_MS_ABI support, uefi_call_wrapper() is a
 
76
    variadic function. Parameters >=5 are copied to the stack and, when
 
77
    passed small immediate values (and possibly other parameters), gcc
 
78
    would emit a movl instruction before calling uefi_call_wrapper(). As a
 
79
    result, only the lower 32b of these stack values are significant, the
 
80
    upper 32b potentially contain garbage. Considering that
 
81
    uefi_call_wrapper() assumes these arguments are clean 64b values
 
82
    before calling the efi_callX() trampolines, the latter may be passed
 
83
    garbage. This makes calling functions like
 
84
    EFI_PCI_IO_PROTOCOL.Mem.Read()/Write() or BS->OpenProtocol() quite
 
85
    unreliable.
 
86
    
 
87
    This patch fixes this by turning uefi_call_wrapper() into a macro that
 
88
    allows to expose the efi_callX() trampoline signatures to the callers,
 
89
    so that gcc can know upfront that it has to pass all arguments to
 
90
    efi_callX() as clean 64b values (eg. movq for immediates). The
 
91
    _cast64_efi_callX macros are just here to avoid a gcc warning, they do
 
92
    nothing otherwise.
 
93
    
 
94
    Signed-off-by: David Decotigny <decot@googlers.com>
 
95
 
 
96
    Author: noxorc <nigel.croxon@hp.com>
 
97
    Date:   Wed May 15 15:26:16 2013 -0400
 
98
 
 
99
    - Removes the ElfW() macro usage from reloc_ia32.c and reloc_x86_64.c. These
 
100
    macros only exist in link.h on Linux. On FreeBSD, the equivalent macro is
 
101
    __ElfN(). But the macro usage is redundant. You're only going to compile the
 
102
    ia32 file for IA32 binaries and the x86_64 file for X64 binaries. If you had
 
103
    just one file built for both cases, then using the macro might make more
 
104
    sense.
 
105
    
 
106
    - Removes the "#define foo_t efi_foo_t" macros from reloc_ia32.c and
 
107
    reloc_x86_64.c.
 
108
    
 
109
    - Modifies inc/x86_64/efibind.h and inc/ia32/efibind.h to use the new
 
110
    definitions for uint64_t, int64_t and int8_t. The 64-bit types are now defined
 
111
    as:
 
112
    
 
113
            typedef int __attribute__((__mode__(__DI__)))           int64_t;
 
114
            typedef unsigned int __attribute__((__mode__(__DI__)))  uint64_t;
 
115
    
 
116
    This removes the conflict between the host types dragged in by elf.h and the
 
117
    type definitions in efibind.h that made the #define foo_t efi_foo_t" hack
 
118
    necessary. Also, int8_t is now defined as signed char instead of just char
 
119
    (assuming char == signed char is apparently not good enough).
 
120
    
 
121
    - Also modifies these files to use stdint.h instead of stdint-gcc.h. It's
 
122
    unclear if this is completely correct, but stdint-gcc.h is not present with
 
123
    all GCC installs, and if you use -std=c99 or later you will force this case to
 
124
    be hit. This also can break clang, which doesn't have a stdint-gcc.h at all.
 
125
    
 
126
    - Removes the #include of <link.h> from reloc_ia32.c and reloc_x86_64.c (since
 
127
    with the previous changes it's not needed anymore).
 
128
    
 
129
    - Places the #include of <elf.h> after #include <efi>/#include <efilib.h> so
 
130
    that we know the types will always be defined properly, in case you build on a
 
131
    system where <elf.h> doesn't automatically pull in the right header files to
 
132
    define all the needed types. (This actually happens on VxWorks. It's harmless
 
133
    elsewhere. If you don't care about VxWorks, you can leave this out.)
 
134
    
 
135
    - Modifies setjmp_ia32.S and setjmp_x86_64.S so to change "function" to
 
136
    @function. The clang compiler doesn't like the former. Clang and GCC both like
 
137
    the latter.
 
138
    
 
139
    - Modifles Make.defaults so that if ARCH is detected as "amd64," it's changed
 
140
    to "x86_64." It happens that uname -m on 64-bit FreeBSD reports the former
 
141
    rather than the latter, which breaks the build. This may also be the case on
 
142
    some other OSes. There's a way to force uname(1) to return x86_64 as the
 
143
    machine type, but this way is a little friendlier.
 
144
    
 
145
    - Creates gnuefi/elf_ia32_fbsd_efi.lds which specifies the object file type as
 
146
    elf-ia32-freebsd. This is required for building on FreeBSD/i386, not just
 
147
    FreeBSD/amd64.
 
148
    
 
149
    - Modifies apps/Makefile to always use
 
150
    $(TOPDIR)/gnuefi/elf_$(ARCH)_fbsd_efi.lds when building on either 32-bit or
 
151
    64-bit FreeBSD instead of just for the x86_64 case.
 
152
    
 
153
    - Changed LDFLAGS in Make.defaults to include --no-undefined. This will cause
 
154
    linking to fail if there are any unsatisfied symbols when creating foo.so
 
155
    during any of the app builds, as opposed to just silently succeeding and
 
156
    producing an unusable binary.
 
157
    
 
158
    - Changed CFLAGS to include -ffreestanding -fno-stack-protector -fno-stack-
 
159
    check. This prevents clang from inserting a call to memset() when compiling
 
160
    the RtZeroMem() and RtSetMem() routines in lib/runtime/efirtlib.c and guards
 
161
    against the native compiler in some Linux distros from adding in stack
 
162
    checking code which relies on libc help that isn't present in the EFI runtime
 
163
    environment.
 
164
    
 
165
    This does the following:
 
166
    
 
167
    - Cleans up the ia32 and x86-64 relocation code a bit (tries to break the
 
168
    dependency between the host ELF headers and the EFI runtime environment)
 
169
    - Avoids the dependency on stdint-gcc.h which may not always be available
 
170
    - Allows GNU EFI to build out of the box on both FreeBSD/i386 and
 
171
    FreeBSD/amd64
 
172
    - Allows GNU EFI to build out of the box with either GCC or clang on
 
173
    FreeBSD/i386 and FreeBSD/amd64 9.0 and later.
 
174
    - Makes things a little easier to port to VxWorks
 
175
    - Avoids creating un-runable binaries with unresolved symbol definitions
 
176
    (which can be very confusing to debug)
 
177
 
 
178
    Author: noxorc <nigel.croxon@hp.com>
 
179
    Date:   Wed May 8 16:29:45 2013 -0400
 
180
 
 
181
    Add the definitions for TCP, UDP and IP, for both IPv4 and IPv6.
 
182
 
 
183
 
 
184
2013-05-02 Nigel Croxon <nigel.croxon@hp.com>
 
185
        * Chnage from Matt Fleming <matt.fleming@intel.com>
 
186
          - Preparation for adding the networking protocol definitions.
 
187
            Add the service binding protocol.
 
188
 
 
189
2013-02-21 Nigel Croxon <nigel.croxon@hp.com>
 
190
        * Change from Peter Jones <pjones@redhat.com>
 
191
          - Previously we were incorrectly passing 3 functions with
 
192
            the System V ABI to UEFI functions as EFI ABI functions.
 
193
            Mark them as EFIAPI so the compiler will (in our new
 
194
            GNU_EFI_USE_MS_ABI world) use the correct ABI.
 
195
          - These need to be EFIAPI functions because in some cases
 
196
            they call ST->ConOut->OutputString(), which is an EFIAPI
 
197
            function. (Which means that previously in cases that 
 
198
            needed "cdecl", these didn't work right.)
 
199
          - If the compiler version is new enough, and GNU_EFI_USE_MS_ABI
 
200
            is defined, use the function attribute ms_abi on everything
 
201
            defined with "EFIAPI".  Such calls will no longer go through
 
202
            efi_call*, and as such will be properly type-checked.
 
203
          - Honor PREFIX and LIBDIR correctly when passed in during the build.
 
204
          - Add machine type defines for i386, arm/thumb, ia64, ebc, x86_64.
 
205
          - __STDC_VERSION__ never actually gets defined unless there's a
 
206
            --std=... line.  So we were accidentally defining lots of c99
 
207
            types ourself. Since it's 2012, use --std=c11 where appropriate,
 
208
            and if it's defined and we're using gcc, actually include gcc's
 
209
            stdint definitions.
 
210
          - New test application added: route80h. This is a test program
 
211
            for PciIo.  It routes ioport 80h on ICH10 to PCI. This is also
 
212
            useful on a very limited set of hardware to enable use of
 
213
            a port 80h debug card.
 
214
          - New test applcation added: modelist. This lists video modes
 
215
            the GOP driver is showing us.
 
216
        * Change from Finnbarr Murphy
 
217
          - https://sourceforge.net/p/gnu-efi/feature-requests/2/
 
218
            Please add the following status codes to <efierr.h>
 
219
            EFI_INCOMPATIBLE_VERSION 25
 
220
            EFI_SECURITY_VIOLATION 26 
 
221
            EFI_CRC_ERROR 27 
 
222
            EFI_END_OF_MEDIA 28 
 
223
            EFI_END_OF_FILE 31 
 
224
            EFI_INVALID_LANGUAGE 32 
 
225
            EFI_COMPROMISED_DATA 33
 
226
        * Change from SourceForge.net Bug report
 
227
          - https://sourceforge.net/p/gnu-efi/bugs/5/
 
228
            BufferSize is a UINT64 *. The file shipped with GNU EFI is from
 
229
            1998 whereas the latest one is from 2004. I suspect Intel changed
 
230
            the API in order handle 64-bit systems.
 
231
        * Change from Felipe Contreras <felipe.contreras@gmail.com>
 
232
          - The current code seems to screw the stack at certain points.
 
233
            Multiple people have complained that gummiboot hangs right away,
 
234
            which is in part the fault of gummiboot, but happens only
 
235
            because the stack gets screwed. x86_64 EFI already aligns the
 
236
            stack, so there's no need for so much code to find a proper
 
237
            alignment, we always need to shift by 8 anyway.
 
238
        * Change from A. Steinmetz
 
239
          - https://sourceforge.net/p/gnu-efi/patches/1/
 
240
            The patch prepares for elilo to support uefi pxe over ipv6
 
241
            See uefi spec 2.3.1 errata c page 963 as reference.
 
242
            Verfied on an ASUS Sabertooth X79 BIOS Rev. 2104 system which
 
243
            is able to do an IPv6 UEFI PXE boot.
 
244
        * Release 3.0t
 
245
 
 
246
2012-09-21 Nigel Croxon <nigel.croxon@hp.com>
 
247
        * Change from Peter Jones <pjones@redhat.com>
 
248
          - EFI Block I/O protocol versions 2 and 3 provide more information
 
249
            regarding physical disk layout, including alingment offset at the
 
250
            beginning of the disk ("LowestAlignedLba"), logical block size
 
251
            ("LogicalBlocksPerPhysicalBlock"), and optimal block transfer size
 
252
            ("OptimalTransferLengthGranularity").
 
253
        * Release 3.0r
 
254
 
 
255
2012-04-30 Nigel Croxon <nigel.croxon@hp.com>
 
256
        * Change from Matt Fleming <matt.fleming@intel.com>
 
257
          -  The .reloc section is now 4096-byte boundary for x86_64.
 
258
             Without this patch the .reloc section will not adhere to
 
259
             the alignment value in the FileAlignment field (512 bytes by
 
260
             default) of the PE/COFF header. This results in a signed
 
261
             executable failing to boot in a secure boot environment.
 
262
        * Release 3.0q
 
263
 
 
264
2011-12-12 Nigel Croxon <nigel.croxon@hp.com>
 
265
        * Changes from Fenghua Yu <fenghua.yu@intel.com>
 
266
          - This fixes redefined types compilation failure for tcc.c on x86_64 machines.
 
267
        * Release 3.0p
 
268
 
 
269
2011-11-15 Nigel Croxon <nigel.croxon@hp.com>
 
270
        * Changes from Darren Hart <dvhart@linux.intel.com>
 
271
          - Conditionally assign toolchain binaries to allow overriding them.
 
272
          - Force a dependency on lib for gnuefi.
 
273
        * Release 3.0n
 
274
 
 
275
2011-08-23 Nigel Croxon <nigel.croxon@hp.com>
 
276
        * Changes from Peter Jones <pjones@redhat.com>
 
277
          - Add guarantee 16-byte stack alignment on x86_64.
 
278
          - Add routine to make callbacks work.
 
279
          - Add apps/tcc.efi to test calling convention.
 
280
        * Release 3.0m
 
281
 
 
282
2011-07-22 Nigel Croxon <nigel.croxon@hp.com>
 
283
        * Changed Makefiles from GPL to BSD.
 
284
        * Changes from Peter Jones <pjones@redhat.com>
 
285
          - Add ifdefs for ia64 to mirror ia32 and x86-64 so that
 
286
            one can build with GCC.
 
287
          - Add headers for PciIo.
 
288
          - Add the UEFI 2.x bits for EFI_BOOT_SERVICES
 
289
          - Add an ignore for .note.GNU-stack section in X86-64 linker maps.
 
290
        * Release 3.0l
 
291
 
 
292
2011-04-07  Nigel Croxon <nigel.croxon@hp.com>
 
293
        * Change license from GPL to BSD.
 
294
        * Release 3.0j
 
295
 
1
296
2009-09-12  Julien BLACHE <jb@jblache.org>
2
297
        * Add support for FreeBSD.
3
298
        * Release 3.0i