|
1 | 1 | use crate::abi::Endian;
|
2 |
| -use crate::spec::{LinkerFlavor, Cc, Lld, PanicStrategy, TargetOptions}; |
| 2 | +use crate::spec::{LinkerFlavor, cvs, Cc, Lld, PanicStrategy, TargetOptions}; |
3 | 3 |
|
4 | 4 | pub(crate) fn opts() -> TargetOptions {
|
5 |
| - let linker_script = r" |
6 |
| - PHDRS |
7 |
| - { |
8 |
| - text PT_LOAD ; |
9 |
| - rodata PT_LOAD ; |
10 |
| - dynamic PT_DYNAMIC ; |
11 |
| - } |
12 |
| - |
13 |
| - SECTIONS |
14 |
| - { |
15 |
| - . = SIZEOF_HEADERS; |
16 |
| - .text : { *(.text*) } :text |
17 |
| - .rodata : { *(.rodata*) } :rodata |
18 |
| - .data.rel.ro : { *(.data.rel.ro*) } :rodata |
19 |
| - .dynamic : { *(.dynamic) } :dynamic |
20 |
| - } |
21 |
| - "; |
22 |
| - let pre_link_args = TargetOptions::link_args( |
23 |
| - LinkerFlavor::Gnu(Cc::No, Lld::No), |
24 |
| - &["--threads=1", "-z", "notext"], |
25 |
| - ); |
26 |
| - TargetOptions { |
27 |
| - allow_asm: true, |
28 |
| - endian: Endian::Little, |
29 |
| - c_int_width: "64".into(), |
30 |
| - env: "".into(), |
31 |
| - features: "+solana".into(), |
32 |
| - vendor: "solana".into(), |
33 |
| - linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes), |
34 |
| - linker: Some("rust-lld".into()), |
35 |
| - link_script: Some(linker_script.into()), |
36 |
| - pre_link_args, |
37 |
| - executables: true, |
38 |
| - dll_prefix: "".into(), |
39 |
| - dynamic_linking: true, |
40 |
| - only_cdylib: true, |
41 |
| - no_default_libraries: true, |
42 |
| - panic_strategy: PanicStrategy::Abort, |
43 |
| - position_independent_executables: true, |
44 |
| - requires_lto: false, |
45 |
| - singlethread: true, |
46 |
| - max_atomic_width: Some(64), |
47 |
| - eh_frame_header: false, |
48 |
| - main_needs_argc_argv: false, |
49 |
| - emit_debug_gdb_scripts: false, |
50 |
| - .. Default::default() |
51 |
| - } |
| 5 | + let linker_script = r" |
| 6 | +PHDRS |
| 7 | +{ |
| 8 | + text PT_LOAD ; |
| 9 | + rodata PT_LOAD ; |
| 10 | + data PT_LOAD ; |
| 11 | + dynamic PT_DYNAMIC ; |
| 12 | +} |
| 13 | +
|
| 14 | +SECTIONS |
| 15 | +{ |
| 16 | + . = SIZEOF_HEADERS; |
| 17 | + .text : { *(.text*) } :text |
| 18 | + .rodata : { *(.rodata*) } :rodata |
| 19 | + .data.rel.ro : { *(.data.rel.ro*) } :rodata |
| 20 | + .dynamic : { *(.dynamic) } :dynamic |
| 21 | + .dynsym : { *(.dynsym) } :data |
| 22 | + .dynstr : { *(.dynstr) } :data |
| 23 | + .rel.dyn : { *(.rel.dyn) } :data |
| 24 | + /DISCARD/ : { |
| 25 | + *(.eh_frame*) |
| 26 | + *(.gnu.hash*) |
| 27 | + *(.hash*) |
| 28 | + } |
| 29 | +} |
| 30 | +"; |
| 31 | + let pre_link_args = TargetOptions::link_args( |
| 32 | + LinkerFlavor::Gnu(Cc::No, Lld::No), |
| 33 | + &["--threads=1", "-z", "notext"], |
| 34 | + ); |
| 35 | + |
| 36 | + TargetOptions { |
| 37 | + allow_asm: true, |
| 38 | + c_int_width: "64".into(), |
| 39 | + dll_prefix: "".into(), |
| 40 | + dynamic_linking: true, |
| 41 | + eh_frame_header: false, |
| 42 | + emit_debug_gdb_scripts: false, |
| 43 | + endian: Endian::Little, |
| 44 | + env: "".into(), |
| 45 | + executables: true, |
| 46 | + features: "+solana".into(), |
| 47 | + families: cvs!["solana"], |
| 48 | + link_script: Some(linker_script.into()), |
| 49 | + linker: Some("rust-lld".into()), |
| 50 | + linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes), |
| 51 | + main_needs_argc_argv: false, |
| 52 | + max_atomic_width: Some(64), |
| 53 | + no_default_libraries: true, |
| 54 | + only_cdylib: true, |
| 55 | + os: "solana".into(), |
| 56 | + panic_strategy: PanicStrategy::Abort, |
| 57 | + position_independent_executables: true, |
| 58 | + pre_link_args, |
| 59 | + requires_lto: false, |
| 60 | + singlethread: true, |
| 61 | + vendor: "solana".into(), |
| 62 | + c_enum_min_bits: Some(32), |
| 63 | + .. Default::default() |
| 64 | + } |
52 | 65 | }
|
0 commit comments