foreach my $rom ( @roms ) {
- # Update base length
- $baserom->{length} += $rom->{length};
-
# Merge initialisation entry point
merge_entry_points ( $baserom->{init}, $rom->{init}, $offset );
merge_entry_points ( $baserom_pnp->{bev}, $rom_pnp->{bev}, $offset );
}
+ # Update iPXE header, if present
+ my $baserom_ipxe = $baserom->ipxe_header;
+ my $rom_ipxe = $rom->ipxe_header;
+ if ( $baserom_ipxe ) {
+
+ # Update shrunk length
+ $baserom_ipxe->{shrunk_length} = ( $baserom->{length} +
+ ( $rom_ipxe ?
+ $rom_ipxe->{shrunk_length} :
+ $rom->{length} ) );
+
+ # Fix checksum
+ $baserom_ipxe->fix_checksum();
+ }
+
+ # Update base length
+ $baserom->{length} += $rom->{length};
+
# Fix checksum for this ROM segment
$rom->fix_checksum();