| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Intel's C compiler (icc) chokes on the zero-length arrays that we
currently use as part of the mechanism for accessing linker table
entries. Abstract away the zero-length arrays, to make a port to icc
easier.
Introduce macros such as for_each_table_entry() to simplify the common
case of iterating over all entries in a linker table.
Represent table names as #defined string constants rather than
unquoted literals; this avoids visual confusion between table names
and C variable or type names, and also allows us to force a
compilation error in the event of incorrect table names.
|
|
|
|
| |
When chaining COMBOOT images, the old images now get freed correctly.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Multi-level menus via COMBOOT rely on the COMBOOT program being able
to exit and invoke a new COMBOOT program (the next menu). This works,
but rapidly (within about five iterations) runs out of space in gPXE's
internal stack, since each new image is executed in a new function
context.
Fix by allowing tail recursion between images; an image can now
specify a replacement image for itself, and image_exec() will perform
the necessary tail recursion.
|
|
|
|
|
|
|
|
|
| |
Clearing the LOADED flag actually prevents users from doing clever things
such as loading an image, then loading a patch image, then executing the
first image. (image_exec() checks for IMAGE_LOADED, so this sequence of
operations will fail if the LOADED flag gets cleared.)
This reverts commit 14c080020fb37cb34fe74213393f47bd2ad8b9bc.
|
|
|
|
|
|
| |
Loading an image may overwrite part or all of any previously-loaded
images, so we should clear the LOADED flag for all images prior to
attempting to load a new image.
|
|
|
|
|
| |
executing any image, not just a script. (This will enable pxelinux to
use relative URIs, should it wish to.)
|
|
|
|
| |
Some shuffling around of the image management code; this needs tidying up.
|
| |
|
|
|
|
|
| |
allows us to avoid execution loops without having to hack around the
image registration order.
|
| |
|
| |
|
|
|
|
|
| |
reflect the fact that they allocate and deallocate user memory (i.e.
things reached through a userptr_t).
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
took out the contract to eventually call efree() when it called fetch().
Maintain the most recently loaded image at the start of the list, so that
imgautoselect() will pick it.
|
| |
|
|
|
|
| |
returns the allocated buffer.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
refer to them by name from the command line, or build them into a
multiboot module list.
Use setting image->type to disambiguate between "not my image" and "bad
image"; this avoids relying on specific values of the error code.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
for use by malloc().
This breaks the image-loading code (which previously used the heap to
allocate the buffer for downloading the image), but that's not a major
concern since I'm going to tear out all the image formats within the next
couple of days anyway. Byebye, NBI! :)
|
| |
|
|
|