Annotation of qemu/roms/ipxe/src/arch/i386/scripts/i386.lds, revision 1.1

1.1     ! root        1: /* -*- sh -*- */
        !             2: 
        !             3: /*
        !             4:  * Linker script for i386 images
        !             5:  *
        !             6:  */
        !             7: 
        !             8: SECTIONS {
        !             9: 
        !            10:     /* Each section starts at a virtual address of zero.
        !            11:      *
        !            12:      * We guarantee alignment of virtual addresses to any alignment
        !            13:      * specified by the constituent object files (e.g. via
        !            14:      * __attribute__((aligned(x)))).  Load addresses are guaranteed
        !            15:      * only up to _max_align.  Provided that all loader and relocation
        !            16:      * code honours _max_align, this means that physical addresses are
        !            17:      * also guaranteed up to _max_align.
        !            18:      *
        !            19:      * Note that when using -DKEEP_IT_REAL, the UNDI segments are only
        !            20:      * guaranteed to be loaded on a paragraph boundary (i.e. 16-byte
        !            21:      * alignment).  Using _max_align>16 will therefore not guarantee
        !            22:      * >16-byte alignment of physical addresses when -DKEEP_IT_REAL is
        !            23:      * used (though virtual addresses will still be fully aligned).
        !            24:      *
        !            25:      */
        !            26: 
        !            27:     PROVIDE ( _max_align = 16 );
        !            28: 
        !            29:     /*
        !            30:      * The prefix
        !            31:      *
        !            32:      */
        !            33: 
        !            34:     .prefix 0x0 : AT ( _prefix_lma ) {
        !            35:        _prefix = .;
        !            36:        *(.prefix)
        !            37:        *(.prefix.*)
        !            38:        _mprefix = .;
        !            39:     } .bss.prefix (NOLOAD) : AT ( _end_lma ) {
        !            40:        _eprefix = .;
        !            41:     }
        !            42:     _prefix_filesz     = ABSOLUTE ( _mprefix - _prefix );
        !            43:     _prefix_memsz      = ABSOLUTE ( _eprefix - _prefix );
        !            44: 
        !            45:     /*
        !            46:      * The 16-bit (real-mode) code section
        !            47:      *
        !            48:      */
        !            49: 
        !            50:     .text16.early 0x0 : AT ( _text16_early_lma ) {
        !            51:        _text16 = .;
        !            52:        KEEP(*(.text16.null))
        !            53:        KEEP(*(.text16.null.*))
        !            54:        . += 1;                         /* Prevent NULL being valid */
        !            55:        *(.text16.early)
        !            56:        *(.text16.early.*)
        !            57:        _etext16_early = .;
        !            58:     } .text16.late ALIGN ( _max_align ) : AT ( _text16_late_lma ) {
        !            59:        _text16_late = .;
        !            60:        *(.text16)
        !            61:        *(.text16.*)
        !            62:        _mtext16 = .;
        !            63:     } .bss.text16 (NOLOAD) : AT ( _end_lma ) {
        !            64:        _etext16 = .;
        !            65:     }
        !            66:     _text16_early_filesz = ABSOLUTE ( _etext16_early - _text16 );
        !            67:     _text16_early_memsz        = ABSOLUTE ( _etext16_early - _text16 );
        !            68:     _text16_late_filesz        = ABSOLUTE ( _mtext16 - _text16_late );
        !            69:     _text16_late_memsz = ABSOLUTE ( _etext16 - _text16_late );
        !            70:     _text16_memsz      = ABSOLUTE ( _etext16 - _text16 );
        !            71: 
        !            72:     /*
        !            73:      * The 16-bit (real-mode) data section
        !            74:      *
        !            75:      */
        !            76: 
        !            77:     .data16 0x0 : AT ( _data16_lma ) {
        !            78:        _data16 = .;
        !            79:        . += 1;                         /* Prevent NULL being valid */
        !            80:        *(.rodata16)
        !            81:        *(.rodata16.*)
        !            82:        *(.data16)
        !            83:        *(.data16.*)
        !            84:        _mdata16 = .;
        !            85:     } .bss.data16 (NOLOAD) : AT ( _end_lma ) {
        !            86:        *(.bss16)
        !            87:        *(.bss16.*)
        !            88:        *(.stack16)
        !            89:        *(.stack16.*)
        !            90:        _edata16 = .;
        !            91:     }
        !            92:     _data16_filesz     = ABSOLUTE ( _mdata16 - _data16 );
        !            93:     _data16_memsz      = ABSOLUTE ( _edata16 - _data16 );
        !            94: 
        !            95:     /*
        !            96:      * The 32-bit sections
        !            97:      *
        !            98:      */
        !            99: 
        !           100:     .textdata 0x0 : AT ( _textdata_lma ) {
        !           101:        _textdata = .;
        !           102:        KEEP(*(.text.null_trap))
        !           103:        KEEP(*(.text.null_trap.*))
        !           104:        . += 1;                         /* Prevent NULL being valid */
        !           105:        *(.text)
        !           106:        *(.text.*)
        !           107:        *(.rodata)
        !           108:        *(.rodata.*)
        !           109:        *(.data)
        !           110:        *(.data.*)
        !           111:        KEEP(*(SORT(.tbl.*)))   /* Various tables.  See include/tables.h */
        !           112:        _mtextdata = .;
        !           113:     } .bss.textdata (NOLOAD) : AT ( _end_lma ) {
        !           114:        *(.bss)
        !           115:        *(.bss.*)
        !           116:        *(COMMON)
        !           117:        *(.stack)
        !           118:        *(.stack.*)
        !           119:        _etextdata = .;
        !           120:     }
        !           121:     _textdata_filesz   = ABSOLUTE ( _mtextdata - _textdata );
        !           122:     _textdata_memsz    = ABSOLUTE ( _etextdata - _textdata );
        !           123: 
        !           124:     /*
        !           125:      * Compressor information block
        !           126:      *
        !           127:      */
        !           128: 
        !           129:     .zinfo 0x0 : AT ( _zinfo_lma ) {
        !           130:        _zinfo = .;
        !           131:        KEEP(*(.zinfo))
        !           132:        KEEP(*(.zinfo.*))
        !           133:        _mzinfo = .;
        !           134:     } .bss.zinfo (NOLOAD) : AT ( _end_lma ) {
        !           135:        _ezinfo = .;
        !           136:     }
        !           137:     _zinfo_filesz      = ABSOLUTE ( _mzinfo - _zinfo );
        !           138:     _zinfo_memsz       = ABSOLUTE ( _ezinfo - _zinfo );
        !           139: 
        !           140:     /*
        !           141:      * Weak symbols that need zero values if not otherwise defined
        !           142:      *
        !           143:      */
        !           144: 
        !           145:     .weak 0x0 : AT ( _end_lma ) {
        !           146:        _weak = .;
        !           147:        *(.weak)
        !           148:        *(.weak.*)
        !           149:        _eweak = .;
        !           150:     }
        !           151:     _assert = ASSERT ( ( _weak == _eweak ), ".weak is non-zero length" );
        !           152: 
        !           153:     /*
        !           154:      * Dispose of the comment and note sections to make the link map
        !           155:      * easier to read
        !           156:      *
        !           157:      */
        !           158: 
        !           159:     /DISCARD/ : {
        !           160:        *(.comment)
        !           161:        *(.comment.*)
        !           162:        *(.note)
        !           163:        *(.note.*)
        !           164:        *(.eh_frame)
        !           165:        *(.eh_frame.*)
        !           166:        *(.rel)
        !           167:        *(.rel.*)
        !           168:        *(.einfo)
        !           169:        *(.einfo.*)
        !           170:        *(.discard)
        !           171:        *(.discard.*)
        !           172:     }
        !           173: 
        !           174:     /*
        !           175:      * Load address calculations.  In older versions of ld, ALIGN()
        !           176:      * can operate only on the location counter, so we use that.
        !           177:      *
        !           178:      */
        !           179: 
        !           180:     .                  = 0;
        !           181: 
        !           182:     .                  = ALIGN ( _max_align );
        !           183:     _prefix_lma                = .;
        !           184:     .                  += _prefix_filesz;
        !           185: 
        !           186:     .                  = ALIGN ( _max_align );
        !           187:     _text16_early_lma  = .;
        !           188:     .                  += _text16_early_filesz;
        !           189: 
        !           190:     .                  = ALIGN ( _max_align );
        !           191:     _payload_lma       = .;
        !           192:     _text16_late_lma   = .;
        !           193:     .                  += _text16_late_filesz;
        !           194: 
        !           195:     .                  = ALIGN ( _max_align );
        !           196:     _data16_lma                = .;
        !           197:     .                  += _data16_filesz;
        !           198: 
        !           199:     .                  = ALIGN ( _max_align );
        !           200:     _textdata_lma      = .;
        !           201:     .                  += _textdata_filesz;
        !           202: 
        !           203:     _filesz            = .; /* Do not include zinfo block in file size */
        !           204: 
        !           205:     .                  = ALIGN ( _max_align );
        !           206:     _zinfo_lma         = .;
        !           207:     .                  += _zinfo_filesz;
        !           208: 
        !           209:     .                  = ALIGN ( _max_align );
        !           210:     _end_lma           = .;
        !           211: 
        !           212:     /*
        !           213:      * Values calculated to save code from doing it
        !           214:      *
        !           215:      */
        !           216:     _text16_memsz_pgh  = ( ( _text16_memsz + 15 ) / 16 );
        !           217:     _data16_memsz_pgh  = ( ( _data16_memsz + 15 ) / 16 );
        !           218:     _textdata_memsz_pgh        = ( ( _textdata_memsz + 15 ) / 16 );
        !           219:     _textdata_memsz_kb = ( ( _textdata_memsz + 1023 ) / 1024 );
        !           220: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.