[ipxe-devel] iPXE MemoryAllocationLib.c assert failures on Dell PowerEdge

Michael Brown mcb30 at ipxe.org
Fri Feb 2 23:44:59 UTC 2018


On 02/02/18 22:45, Daniel.Johnson1 at dell.com wrote:
> I’m a colleague of Lynn’s and wanted to put my old C experience to use 
> here, but have hit a snag.  I’m attempting to insert my hook early in 
> iPXE’s execution through __init_fn but it never executes.  The debug 
> text strings don’t even appear in the final binary unless I stuff the 
> code into something else, like ‘core/device.c’.  Am I missing something 
> in the following code?

The existence of an __init_fn doesn't cause the containing object to be 
included in the final binary; it just means that if something _else_ 
causes that object to be included then the __init_fn will be slotted in 
to the "init_fns" table and so the __init_fn will end up being called as 
part of initialise().

Since this is one-time debugging code that you're writing, you probably 
want to just call your dj1_wrap_init() function directly from the 
earliest possible point, i.e. from somewhere within efi_init().  Note 
that if it's too early in efi_init() then you may have some unexpected 
NULL pointers (e.g. for efi_systab).

Michael



More information about the ipxe-devel mailing list