mirror of
https://github.com/ventoy/Ventoy.git
synced 2025-12-22 11:36:17 +00:00
1. Optimization for WIMBOOT mode.
2. Add WIMBOOT for UEFI mode.
This commit is contained in:
116
wimboot/wimboot-2.7.3/src/script.lds
Normal file
116
wimboot/wimboot-2.7.3/src/script.lds
Normal file
@@ -0,0 +1,116 @@
|
||||
SECTIONS {
|
||||
|
||||
/* Align sections to keep PE tools happy */
|
||||
alignment = 16;
|
||||
|
||||
/* Virtual addresses start at 0x20000 */
|
||||
. = 0x20000;
|
||||
_start = .;
|
||||
|
||||
/* bzImage prefix */
|
||||
_prefix_pos = 0;
|
||||
.prefix : AT ( _prefix_pos ) {
|
||||
_prefix = .;
|
||||
*(.prefix)
|
||||
*(.prefix.*)
|
||||
. = ALIGN ( alignment );
|
||||
_eprefix = .;
|
||||
}
|
||||
_prefix_len = ABSOLUTE ( _eprefix ) - ABSOLUTE ( _prefix );
|
||||
|
||||
/* Real-mode uninitialised data section */
|
||||
.bss16 ( NOLOAD ) : {
|
||||
_bss16 = .;
|
||||
*(.stack16)
|
||||
*(.stack16.*)
|
||||
*(.bss16)
|
||||
*(.bss16.*)
|
||||
. = ALIGN ( alignment );
|
||||
_ebss16 = .;
|
||||
}
|
||||
_bss16_len = ABSOLUTE ( _ebss16 ) - ABSOLUTE ( _bss16 );
|
||||
|
||||
/* Payload section */
|
||||
_payload_pos = ( _prefix_pos + _prefix_len );
|
||||
.payload : AT ( _payload_pos ) {
|
||||
_payload = .;
|
||||
/* Portions that must be accessible in 16-bit modes */
|
||||
_text16 = .;
|
||||
*(.text16)
|
||||
*(.text16.*)
|
||||
_etext16 = .;
|
||||
_data16 = .;
|
||||
*(.rodata16)
|
||||
*(.rodata16.*)
|
||||
*(.data16)
|
||||
*(.data16.*)
|
||||
_edata16 = .;
|
||||
/* Portions that need not be accessible in 16-bit modes */
|
||||
_text = .;
|
||||
*(.text)
|
||||
*(.text.*)
|
||||
_etext = .;
|
||||
_data = .;
|
||||
*(.rodata)
|
||||
*(.rodata.*)
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
. = ALIGN ( alignment );
|
||||
_edata = .;
|
||||
_epayload = .;
|
||||
}
|
||||
_text16_len = ABSOLUTE ( _etext16 ) - ABSOLUTE ( _text16 );
|
||||
_data16_len = ABSOLUTE ( _edata16 ) - ABSOLUTE ( _data16 );
|
||||
_text_len = ABSOLUTE ( _etext ) - ABSOLUTE ( _text );
|
||||
_data_len = ABSOLUTE ( _edata ) - ABSOLUTE ( _data );
|
||||
_payload_len = ABSOLUTE ( _epayload ) - ABSOLUTE ( _payload );
|
||||
|
||||
/* bootmgr.exe hardcodes the address 0x30000 for use as a
|
||||
* buffer accessible by real-mode code. We can't fit our
|
||||
* .text, .data, and .bss below this region, so explicitly
|
||||
* place the .bss higher in memory.
|
||||
*/
|
||||
_forbidden_start = 0x30000;
|
||||
_forbidden_end = 0x40000;
|
||||
|
||||
/* Uninitialised data section */
|
||||
.bss ( NOLOAD ) : {
|
||||
_bss = .;
|
||||
ASSERT ( ABSOLUTE ( . ) <= ABSOLUTE ( _forbidden_start ),
|
||||
"Binary is too large" );
|
||||
. = ABSOLUTE ( _forbidden_end );
|
||||
*(.bss)
|
||||
*(.bss.*)
|
||||
*(COMMON)
|
||||
*(.stack)
|
||||
*(.stack.*)
|
||||
. = ALIGN ( alignment );
|
||||
_ebss = .;
|
||||
}
|
||||
_bss_len = ABSOLUTE ( _ebss ) - ABSOLUTE ( _bss );
|
||||
|
||||
/* Relocations section */
|
||||
_reloc_pos = ( _payload_pos + _payload_len );
|
||||
_reloc = .;
|
||||
|
||||
_end = .;
|
||||
|
||||
_text_total_len = ( _text_len + _text16_len );
|
||||
_data_total_len = ( _data_len + _data16_len );
|
||||
_bss_total_len = ( _bss_len + _bss16_len );
|
||||
|
||||
/* Symbols required by i386.x86_64 objects */
|
||||
__i386__start = _start;
|
||||
__i386__end = _end;
|
||||
|
||||
/DISCARD/ : {
|
||||
*(.comment)
|
||||
*(.comment.*)
|
||||
*(.note)
|
||||
*(.note.*)
|
||||
*(.eh_frame)
|
||||
*(.eh_frame.*)
|
||||
*(.rel)
|
||||
*(.rel.*)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user