ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/ldscripts/freebsd-i386.ld
Revision: 1.1
Committed: 2006-03-15T06:54:34Z (18 years, 8 months ago) by gbeauche
Branch: MAIN
CVS Tags: nigel-build-19, HEAD
Log Message:
freebsd linker script

File Contents

# User Rev Content
1 gbeauche 1.1 /* Script for -z combreloc: combine and sort reloc sections */
2     OUTPUT_FORMAT("elf32-i386-freebsd", "elf32-i386-freebsd", "elf32-i386-freebsd")
3     OUTPUT_ARCH(i386)
4     ENTRY(_start)
5     SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
6     SECTIONS
7     {
8     /* Read-only sections, merged into text segment: */
9     . = 0x78048000 + 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) }
17     .rel.dyn :
18     {
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.data.* .rel.gnu.linkonce.d.*)
24     *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
25     *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
26     *(.rel.ctors)
27     *(.rel.dtors)
28     *(.rel.got)
29     *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
30     }
31     .rela.dyn :
32     {
33     *(.rela.init)
34     *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
35     *(.rela.fini)
36     *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
37     *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
38     *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
39     *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
40     *(.rela.ctors)
41     *(.rela.dtors)
42     *(.rela.got)
43     *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
44     }
45     .rel.plt : { *(.rel.plt) }
46     .rela.plt : { *(.rela.plt) }
47     .init :
48     {
49     KEEP (*(.init))
50     } =0x90909090
51     .plt : { *(.plt) }
52     .text :
53     {
54     *(.text .stub .text.* .gnu.linkonce.t.*)
55     /* .gnu.warning sections are handled specially by elf32.em. */
56     *(.gnu.warning)
57     } =0x90909090
58     .fini :
59     {
60     KEEP (*(.fini))
61     } =0x90909090
62     PROVIDE (__etext = .);
63     PROVIDE (_etext = .);
64     PROVIDE (etext = .);
65     .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
66     .rodata1 : { *(.rodata1) }
67     .eh_frame_hdr : { *(.eh_frame_hdr) }
68     /* Adjust the address for the data segment. We want to adjust up to
69     the same address within the page on the next page up. */
70     . = ALIGN (0x1000) - ((0x1000 - .) & (0x1000 - 1)); . = DATA_SEGMENT_ALIGN (0x1000, 0x1000);
71     /* Ensure the __preinit_array_start label is properly aligned. We
72     could instead move the label definition inside the section, but
73     the linker would then create the section even if it turns out to
74     be empty, which isn't pretty. */
75     . = ALIGN(32 / 8);
76     PROVIDE (__preinit_array_start = .);
77     .preinit_array : { *(.preinit_array) }
78     PROVIDE (__preinit_array_end = .);
79     PROVIDE (__init_array_start = .);
80     .init_array : { *(.init_array) }
81     PROVIDE (__init_array_end = .);
82     PROVIDE (__fini_array_start = .);
83     .fini_array : { *(.fini_array) }
84     PROVIDE (__fini_array_end = .);
85     .data :
86     {
87     *(.data .data.* .gnu.linkonce.d.*)
88     SORT(CONSTRUCTORS)
89     }
90     .data1 : { *(.data1) }
91     .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
92     .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
93     .eh_frame : { KEEP (*(.eh_frame)) }
94     .gcc_except_table : { *(.gcc_except_table) }
95     .dynamic : { *(.dynamic) }
96     .ctors :
97     {
98     /* gcc uses crtbegin.o to find the start of
99     the constructors, so we make sure it is
100     first. Because this is a wildcard, it
101     doesn't matter if the user does not
102     actually link against crtbegin.o; the
103     linker won't look for a file to match a
104     wildcard. The wildcard also means that it
105     doesn't matter which directory crtbegin.o
106     is in. */
107     KEEP (*crtbegin*.o(.ctors))
108     /* We don't want to include the .ctor section from
109     from the crtend.o file until after the sorted ctors.
110     The .ctor section from the crtend file contains the
111     end of ctors marker and it must be last */
112     KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
113     KEEP (*(SORT(.ctors.*)))
114     KEEP (*(.ctors))
115     }
116     .dtors :
117     {
118     KEEP (*crtbegin*.o(.dtors))
119     KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
120     KEEP (*(SORT(.dtors.*)))
121     KEEP (*(.dtors))
122     }
123     .jcr : { KEEP (*(.jcr)) }
124     .got : { *(.got.plt) *(.got) }
125     _edata = .;
126     PROVIDE (edata = .);
127     __bss_start = .;
128     .bss :
129     {
130     *(.dynbss)
131     *(.bss .bss.* .gnu.linkonce.b.*)
132     *(COMMON)
133     /* Align here to ensure that the .bss section occupies space up to
134     _end. Align after .bss to ensure correct alignment even if the
135     .bss section disappears because there are no input sections. */
136     . = ALIGN(32 / 8);
137     }
138     . = ALIGN(32 / 8);
139     _end = .;
140     PROVIDE (end = .);
141     . = DATA_SEGMENT_END (.);
142     /* Stabs debugging sections. */
143     .stab 0 : { *(.stab) }
144     .stabstr 0 : { *(.stabstr) }
145     .stab.excl 0 : { *(.stab.excl) }
146     .stab.exclstr 0 : { *(.stab.exclstr) }
147     .stab.index 0 : { *(.stab.index) }
148     .stab.indexstr 0 : { *(.stab.indexstr) }
149     .comment 0 : { *(.comment) }
150     /* DWARF debug sections.
151     Symbols in the DWARF debugging sections are relative to the beginning
152     of the section so we begin them at 0. */
153     /* DWARF 1 */
154     .debug 0 : { *(.debug) }
155     .line 0 : { *(.line) }
156     /* GNU DWARF 1 extensions */
157     .debug_srcinfo 0 : { *(.debug_srcinfo) }
158     .debug_sfnames 0 : { *(.debug_sfnames) }
159     /* DWARF 1.1 and DWARF 2 */
160     .debug_aranges 0 : { *(.debug_aranges) }
161     .debug_pubnames 0 : { *(.debug_pubnames) }
162     /* DWARF 2 */
163     .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
164     .debug_abbrev 0 : { *(.debug_abbrev) }
165     .debug_line 0 : { *(.debug_line) }
166     .debug_frame 0 : { *(.debug_frame) }
167     .debug_str 0 : { *(.debug_str) }
168     .debug_loc 0 : { *(.debug_loc) }
169     .debug_macinfo 0 : { *(.debug_macinfo) }
170     /* SGI/MIPS DWARF 2 extensions */
171     .debug_weaknames 0 : { *(.debug_weaknames) }
172     .debug_funcnames 0 : { *(.debug_funcnames) }
173     .debug_typenames 0 : { *(.debug_typenames) }
174     .debug_varnames 0 : { *(.debug_varnames) }
175     }