vfs: check userland buffers before reading them.
[haiku.git] / src / system / ldscripts / ppc / kernel.ld
blobfbeb669074507e78ce957fbf6ec9c70cebd9c6d8
1 OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc")
2 OUTPUT_ARCH(powerpc)
4 ENTRY(_start)
5 SEARCH_DIR("libgcc");
6 SECTIONS
8         . = 0x80000000 + SIZEOF_HEADERS;
10         .interp : { *(.interp) }
11         .hash : { *(.hash) }
12         .dynsym : { *(.dynsym) }
13         .dynstr : { *(.dynstr) }
14         .gnu.version : { *(.gnu.version) }
15         .gnu.version_d : { *(.gnu.version_d) }
16         .gnu.version_r : { *(.gnu.version_r) }
18         .rel.dyn : {
19                 *(.rel.init)
20                 *(.rel.text .rel.text.* .rel.gnu.linkonce.t*)
21                 *(.rel.fini)
22                 *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r*)
23                 *(.rel.data.rel.ro*)
24                 *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
25                 *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
26                 *(.rel.ctors)
27                 *(.rel.dtors)
28                 *(.rel.got)
29                 *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*)
30                 *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*)
31                 *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*)
32                 *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*)
33                 *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
34         }
36         .rela.dyn : {
37                 *(.rela.init)
38                 *(.rela.text .rela.text.* .rela.gnu.linkonce.t*)
39                 *(.rela.fini)
40                 *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r*)
41                 *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
42                 *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
43                 *(.rela.ctors)
44                 *(.rela.dtors)
45                 *(.rela.got)
46                 *(.rela.got1)
47                 *(.rela.got2)
48                 *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
49                 *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
50                 *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
51                 *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
52                 *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
53         }
54         .init : { *(.init) } =0x60000000
56         /* text/read-only data */
57         .text : {
58                 *(.text .stub .text.* .gnu.linkonce.t.*)
59         } =0x60000000
61         .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
62         .rodata1 : { *(.rodata1) }
63         .sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) }
64         .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
66         /* writable data  */
67         /* align to the same offset in the next page (for performance reasons
68            (not that it really matters in the kernel)) */
69         . = ALIGN(0x1000) + 0x1000 + (. & (0x1000 - 1));
71         __ctor_list = .;
72         .ctors : { *(.ctors) }
73         __ctor_end = .;
75         .dynamic : { *(.dynamic) }
77         __data_start = .;
78         .data : { *(.data .gnu.linkonce.d.*) }
80         .got : { *(.got.plt) *(.got) }
81         
82         .sdata : { *(.sdata .sdata.* .gnu.linkonce.s.*) }
84         /* uninitialized data (in same segment as writable data) */
85         __bss_start = .;
86         .sbss : { *(.sbss .sbss.* .gnu.linkonce.sb.*) }
87         .bss : {
88                 *(.bss .bss.* .gnu.linkonce.b.*)
89                 . = ALIGN(0x1000);
90         }
92         _end = . ;
94   /* Stabs debugging sections.  */
95   .stab 0 : { *(.stab) }
96   .stabstr 0 : { *(.stabstr) }
97   /* DWARF debug sections.
98      Symbols in the DWARF debugging sections are relative to the beginning
99      of the section so we begin them at 0.  */
100   /* DWARF 1 */
101   .debug          0 : { *(.debug) }
102   .line           0 : { *(.line) }
103   /* GNU DWARF 1 extensions */
104   .debug_srcinfo  0 : { *(.debug_srcinfo) }
105   .debug_sfnames  0 : { *(.debug_sfnames) }
106   /* DWARF 1.1 and DWARF 2 */
107   .debug_aranges  0 : { *(.debug_aranges) }
108   .debug_pubnames 0 : { *(.debug_pubnames) }
109   /* DWARF 2 */
110   .debug_info     0 : { *(.debug_info) }
111   .debug_abbrev   0 : { *(.debug_abbrev) }
112   .debug_line     0 : { *(.debug_line) }
113   .debug_frame    0 : { *(.debug_frame) }
114   .debug_str      0 : { *(.debug_str) }
115   .debug_loc      0 : { *(.debug_loc) }
116   .debug_macinfo  0 : { *(.debug_macinfo) }
117   /* SGI/MIPS DWARF 2 extensions */
118   .debug_weaknames 0 : { *(.debug_weaknames) }
119   .debug_funcnames 0 : { *(.debug_funcnames) }
120   .debug_typenames 0 : { *(.debug_typenames) }
121   .debug_varnames  0 : { *(.debug_varnames) }
122   /* These must appear regardless of  .  */
125         /* Strip unnecessary stuff */
126         /DISCARD/ : { *(.comment .note .eh_frame .dtors .debug_*) }