mirror of
https://github.com/ventoy/Ventoy.git
synced 2025-01-16 01:03:18 -05:00
117 lines
2.5 KiB
Plaintext
117 lines
2.5 KiB
Plaintext
|
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.*)
|
||
|
}
|
||
|
}
|