completely wrong. Chebychev (Remez), Padé, and maybe Taylor.
[fmap.git] / x86_64_sse2_x87 / ld.simple
blob86a1d8d4d5e1f1f70a76a421d0564b2402c53249
1 /*
2  * We target -pie -z combreloc.
3  * We pack everything in one segment, then we don't optimize on boundaries
4  * related to the various system page sizes.
5  */
6 /* default, big, little */
7 OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
8 OUTPUT_ARCH(i386:x86-64)
9 ENTRY(fmap_entry)
10 /* Table of segments. They can overlay themselves depending on their content. */
11 PHDRS 
12
13         headers_seg PT_PHDR PHDRS;
14         interp_seg PT_INTERP;
15         dynamic_seg PT_DYNAMIC;
16         rwe_seg PT_LOAD FILEHDR PHDRS FLAGS(7);
18 SECTIONS
20   . = SIZEOF_HEADERS;
21   .interp         : { *(.interp) } : interp_seg : rwe_seg
22   .hash           : { *(.hash) } : rwe_seg
23   .gnu.hash       : { *(.gnu.hash) } : rwe_seg
24   .dynsym         : { *(.dynsym) } : rwe_seg
25   .dynstr         : { *(.dynstr) } : rwe_seg
26   .gnu.version    : { *(.gnu.version) } : rwe_seg
27   .gnu.version_r  : { *(.gnu.version_r) } : rwe_seg
28   .gnu.version_d  : { *(.gnu.version_d) } : rwe_seg
29   .rela.dyn       :
30   {
31       *(.rela.init)
32       *(.rela.text .rela.text.*)
33       *(.rela.fini)
34       *(.rela.rodata .rela.rodata.*)
35       *(.rela.data .rela.data.*)
36       *(.rela.ctors)
37       *(.rela.dtors)
38       *(.rela.got)
39       *(.rela.bss .rela.bss.*)
40       *(.rela.ifunc)
41   } : rwe_seg
42   .rela.plt       : { *(.rela.plt) } : rwe_seg
43   /* "command line order" concatened glibc crti.S and crtn.S (prolog) with the "magic" function _init which will make the linker pick it for DT_INIT */
44   .init           : { KEEP (*(SORT_NONE(.init))) } : rwe_seg
45   .plt            : { *(.plt) } : rwe_seg
46   .plt.got        : { *(.plt.got) } : rwe_seg
47   .text           : { *(.text) } : rwe_seg
48   /* "command line order" concatened glibc crti.S and crtn.S (prolog) with the "magic" function _fini which will make the linker pick it for DT_FINI */
49   .fini           : { KEEP (*(SORT_NONE(.fini))) } : rwe_seg
50   .init_array     :
51   {
52     /* we don't have any, but those "magic" symbols are required by glibc csu */
53     PROVIDE_HIDDEN (__init_array_start = .);
54     PROVIDE_HIDDEN (__init_array_end = .); /* see above */
55   } : rwe_seg
56   .dynamic        : { *(.dynamic) } : dynamic_seg : rwe_seg
57   .got            : { *(.got) } : rwe_seg
58   .got.plt        : { *(.got.plt) } : rwe_seg
59   .data           : { *(.data) } : rwe_seg
60   .rodata         : { *(.rodata .rodata.*) } : rwe_seg
61   .bss            : { *(.dynbss) *(.bss) } : rwe_seg
62   /DISCARD/ : { *(.note.GNU-stack) *(.eh_frame*) *(.note.ABI-tag) }