ia64/xen-unstable

view tools/ioemu/x86_32.ld @ 7238:971e7c7411b3

Raise an exception if an error appears on the pipes to our children, and make
sure that the child's pipes are closed even under that exception. Move the
handling of POLLHUP to the end of the loop, so that we guarantee to read any
remaining data from the child if POLLHUP and POLLIN appear at the same time.

Signed-off-by: Ewan Mellor <ewan@xensource.com>
author emellor@ewan
date Thu Oct 06 10:13:11 2005 +0100 (2005-10-06)
parents 580d5a4fff25
children
line source
1 /* ld script to make i386 Linux kernel
2 * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>;
3 */
4 OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
5 OUTPUT_ARCH(i386)
6 SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/alpha-unknown-linux-gnu/lib);
7 ENTRY(_start)
8 SECTIONS
9 {
10 /* Read-only sections, merged into text segment: */
11 . = 0x60000000 + SIZEOF_HEADERS;
12 .interp : { *(.interp) }
13 .hash : { *(.hash) }
14 .dynsym : { *(.dynsym) }
15 .dynstr : { *(.dynstr) }
16 .gnu.version : { *(.gnu.version) }
17 .gnu.version_d : { *(.gnu.version_d) }
18 .gnu.version_r : { *(.gnu.version_r) }
19 .rel.text :
20 { *(.rel.text) *(.rel.gnu.linkonce.t*) }
21 .rela.text :
22 { *(.rela.text) *(.rela.gnu.linkonce.t*) }
23 .rel.data :
24 { *(.rel.data) *(.rel.gnu.linkonce.d*) }
25 .rela.data :
26 { *(.rela.data) *(.rela.gnu.linkonce.d*) }
27 .rel.rodata :
28 { *(.rel.rodata) *(.rel.gnu.linkonce.r*) }
29 .rela.rodata :
30 { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
31 .rel.got : { *(.rel.got) }
32 .rela.got : { *(.rela.got) }
33 .rel.ctors : { *(.rel.ctors) }
34 .rela.ctors : { *(.rela.ctors) }
35 .rel.dtors : { *(.rel.dtors) }
36 .rela.dtors : { *(.rela.dtors) }
37 .rel.init : { *(.rel.init) }
38 .rela.init : { *(.rela.init) }
39 .rel.fini : { *(.rel.fini) }
40 .rela.fini : { *(.rela.fini) }
41 .rel.bss : { *(.rel.bss) }
42 .rela.bss : { *(.rela.bss) }
43 .rel.plt : { *(.rel.plt) }
44 .rela.plt : { *(.rela.plt) }
45 .init : { *(.init) } =0x47ff041f
46 .text :
47 {
48 *(.text)
49 /* .gnu.warning sections are handled specially by elf32.em. */
50 *(.gnu.warning)
51 *(.gnu.linkonce.t*)
52 } =0x47ff041f
53 _etext = .;
54 PROVIDE (etext = .);
55 .fini : { *(.fini) } =0x47ff041f
56 . = ALIGN(32 / 8);
57 PROVIDE (__preinit_array_start = .);
58 .preinit_array : { *(.preinit_array) }
59 PROVIDE (__preinit_array_end = .);
60 PROVIDE (__init_array_start = .);
61 .init_array : { *(.init_array) }
62 PROVIDE (__init_array_end = .);
63 PROVIDE (__fini_array_start = .);
64 .fini_array : { *(.fini_array) }
65 PROVIDE (__fini_array_end = .);
66 .rodata : { *(.rodata) *(.gnu.linkonce.r*) }
67 .rodata1 : { *(.rodata1) }
68 .reginfo : { *(.reginfo) }
69 /* Adjust the address for the data segment. We want to adjust up to
70 the same address within the page on the next page up. */
71 . = ALIGN(0x100000) + (. & (0x100000 - 1));
72 .data :
73 {
74 *(.data)
75 *(.gnu.linkonce.d*)
76 CONSTRUCTORS
77 }
78 .data1 : { *(.data1) }
79 .ctors :
80 {
81 *(.ctors)
82 }
83 .dtors :
84 {
85 *(.dtors)
86 }
87 .plt : { *(.plt) }
88 .got : { *(.got.plt) *(.got) }
89 .dynamic : { *(.dynamic) }
90 /* We want the small data sections together, so single-instruction offsets
91 can access them all, and initialized data all before uninitialized, so
92 we can shorten the on-disk segment size. */
93 .sdata : { *(.sdata) }
94 _edata = .;
95 PROVIDE (edata = .);
96 __bss_start = .;
97 .sbss : { *(.sbss) *(.scommon) }
98 .bss :
99 {
100 *(.dynbss)
101 *(.bss)
102 *(COMMON)
103 }
104 _end = . ;
105 PROVIDE (end = .);
106 /* Stabs debugging sections. */
107 .stab 0 : { *(.stab) }
108 .stabstr 0 : { *(.stabstr) }
109 .stab.excl 0 : { *(.stab.excl) }
110 .stab.exclstr 0 : { *(.stab.exclstr) }
111 .stab.index 0 : { *(.stab.index) }
112 .stab.indexstr 0 : { *(.stab.indexstr) }
113 .comment 0 : { *(.comment) }
114 /* DWARF debug sections.
115 Symbols in the DWARF debugging sections are relative to the beginning
116 of the section so we begin them at 0. */
117 /* DWARF 1 */
118 .debug 0 : { *(.debug) }
119 .line 0 : { *(.line) }
120 /* GNU DWARF 1 extensions */
121 .debug_srcinfo 0 : { *(.debug_srcinfo) }
122 .debug_sfnames 0 : { *(.debug_sfnames) }
123 /* DWARF 1.1 and DWARF 2 */
124 .debug_aranges 0 : { *(.debug_aranges) }
125 .debug_pubnames 0 : { *(.debug_pubnames) }
126 /* DWARF 2 */
127 .debug_info 0 : { *(.debug_info) }
128 .debug_abbrev 0 : { *(.debug_abbrev) }
129 .debug_line 0 : { *(.debug_line) }
130 .debug_frame 0 : { *(.debug_frame) }
131 .debug_str 0 : { *(.debug_str) }
132 .debug_loc 0 : { *(.debug_loc) }
133 .debug_macinfo 0 : { *(.debug_macinfo) }
134 /* SGI/MIPS DWARF 2 extensions */
135 .debug_weaknames 0 : { *(.debug_weaknames) }
136 .debug_funcnames 0 : { *(.debug_funcnames) }
137 .debug_typenames 0 : { *(.debug_typenames) }
138 .debug_varnames 0 : { *(.debug_varnames) }
139 /* These must appear regardless of . */
140 }