From 8381cbab1a80b2c71df79fb8c33f480cfbca52bb Mon Sep 17 00:00:00 2001 From: Yuki OKUSHI Date: Sat, 30 Mar 2019 18:50:19 +0900 Subject: [PATCH] Add target_mcount option --- src/librustc_target/spec/aarch64_unknown_linux_gnu.rs | 1 + src/librustc_target/spec/aarch64_unknown_linux_musl.rs | 1 + src/librustc_target/spec/aarch64_unknown_netbsd.rs | 7 +++++-- src/librustc_target/spec/arm_unknown_linux_gnueabi.rs | 1 + src/librustc_target/spec/arm_unknown_linux_gnueabihf.rs | 1 + src/librustc_target/spec/arm_unknown_linux_musleabi.rs | 1 + src/librustc_target/spec/arm_unknown_linux_musleabihf.rs | 1 + src/librustc_target/spec/armv4t_unknown_linux_gnueabi.rs | 1 + src/librustc_target/spec/armv5te_unknown_linux_gnueabi.rs | 1 + .../spec/armv5te_unknown_linux_musleabi.rs | 1 + src/librustc_target/spec/armv6_unknown_freebsd.rs | 1 + src/librustc_target/spec/armv6_unknown_netbsd_eabihf.rs | 1 + src/librustc_target/spec/armv7_unknown_cloudabi_eabihf.rs | 7 +++++-- src/librustc_target/spec/armv7_unknown_freebsd.rs | 1 + src/librustc_target/spec/armv7_unknown_linux_gnueabihf.rs | 1 + .../spec/armv7_unknown_linux_musleabihf.rs | 1 + src/librustc_target/spec/armv7_unknown_netbsd_eabihf.rs | 1 + src/librustc_target/spec/i686_apple_darwin.rs | 7 +++++-- src/librustc_target/spec/i686_unknown_netbsd.rs | 7 +++++-- src/librustc_target/spec/mips64_unknown_linux_gnuabi64.rs | 1 + .../spec/mips64el_unknown_linux_gnuabi64.rs | 1 + src/librustc_target/spec/mips_unknown_linux_gnu.rs | 1 + src/librustc_target/spec/mips_unknown_linux_musl.rs | 7 +++++-- src/librustc_target/spec/mips_unknown_linux_uclibc.rs | 1 + src/librustc_target/spec/mipsel_unknown_linux_gnu.rs | 1 + src/librustc_target/spec/mipsel_unknown_linux_musl.rs | 7 +++++-- src/librustc_target/spec/mipsel_unknown_linux_uclibc.rs | 1 + src/librustc_target/spec/mipsisa32r6_unknown_linux_gnu.rs | 1 + .../spec/mipsisa32r6el_unknown_linux_gnu.rs | 1 + .../spec/mipsisa64r6_unknown_linux_gnuabi64.rs | 1 + .../spec/mipsisa64r6el_unknown_linux_gnuabi64.rs | 1 + src/librustc_target/spec/mod.rs | 8 +++++++- src/librustc_target/spec/powerpc64_unknown_freebsd.rs | 7 +++++-- src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs | 7 +++++-- src/librustc_target/spec/powerpc64_unknown_linux_musl.rs | 7 +++++-- src/librustc_target/spec/powerpc64le_unknown_linux_gnu.rs | 7 +++++-- .../spec/powerpc64le_unknown_linux_musl.rs | 7 +++++-- src/librustc_target/spec/powerpc_unknown_linux_gnu.rs | 7 +++++-- src/librustc_target/spec/powerpc_unknown_linux_gnuspe.rs | 7 +++++-- src/librustc_target/spec/powerpc_unknown_linux_musl.rs | 7 +++++-- src/librustc_target/spec/powerpc_unknown_netbsd.rs | 7 +++++-- src/librustc_target/spec/sparc64_unknown_netbsd.rs | 7 +++++-- src/librustc_target/spec/x86_64_apple_darwin.rs | 7 +++++-- src/librustc_target/spec/x86_64_rumprun_netbsd.rs | 7 +++++-- src/librustc_target/spec/x86_64_unknown_netbsd.rs | 7 +++++-- 45 files changed, 127 insertions(+), 39 deletions(-) diff --git a/src/librustc_target/spec/aarch64_unknown_linux_gnu.rs b/src/librustc_target/spec/aarch64_unknown_linux_gnu.rs index e772d8b532c..59a28573641 100644 --- a/src/librustc_target/spec/aarch64_unknown_linux_gnu.rs +++ b/src/librustc_target/spec/aarch64_unknown_linux_gnu.rs @@ -17,6 +17,7 @@ pub fn target() -> TargetResult { linker_flavor: LinkerFlavor::Gcc, options: TargetOptions { abi_blacklist: super::arm_base::abi_blacklist(), + target_mcount: "\01_mcount".to_string(), .. base }, }) diff --git a/src/librustc_target/spec/aarch64_unknown_linux_musl.rs b/src/librustc_target/spec/aarch64_unknown_linux_musl.rs index 8123ee82ed5..781b1322f5a 100644 --- a/src/librustc_target/spec/aarch64_unknown_linux_musl.rs +++ b/src/librustc_target/spec/aarch64_unknown_linux_musl.rs @@ -17,6 +17,7 @@ pub fn target() -> TargetResult { linker_flavor: LinkerFlavor::Gcc, options: TargetOptions { abi_blacklist: super::arm_base::abi_blacklist(), + target_mcount: "\01_mcount".to_string(), .. base }, }) diff --git a/src/librustc_target/spec/aarch64_unknown_netbsd.rs b/src/librustc_target/spec/aarch64_unknown_netbsd.rs index 47ae08ade9a..455cbebb91e 100644 --- a/src/librustc_target/spec/aarch64_unknown_netbsd.rs +++ b/src/librustc_target/spec/aarch64_unknown_netbsd.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::netbsd_base::opts(); @@ -16,6 +16,9 @@ pub fn target() -> TargetResult { target_env: String::new(), target_vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "__mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/arm_unknown_linux_gnueabi.rs b/src/librustc_target/spec/arm_unknown_linux_gnueabi.rs index f291818ba80..1173d18634e 100644 --- a/src/librustc_target/spec/arm_unknown_linux_gnueabi.rs +++ b/src/librustc_target/spec/arm_unknown_linux_gnueabi.rs @@ -18,6 +18,7 @@ pub fn target() -> TargetResult { options: TargetOptions { features: "+strict-align,+v6".to_string(), abi_blacklist: super::arm_base::abi_blacklist(), + target_mcount: "\01__gnu_mcount_nc".to_string(), .. base }, }) diff --git a/src/librustc_target/spec/arm_unknown_linux_gnueabihf.rs b/src/librustc_target/spec/arm_unknown_linux_gnueabihf.rs index 32b509d9721..6fc7c46be3b 100644 --- a/src/librustc_target/spec/arm_unknown_linux_gnueabihf.rs +++ b/src/librustc_target/spec/arm_unknown_linux_gnueabihf.rs @@ -18,6 +18,7 @@ pub fn target() -> TargetResult { options: TargetOptions { features: "+strict-align,+v6,+vfp2".to_string(), abi_blacklist: super::arm_base::abi_blacklist(), + target_mcount: "\01__gnu_mcount_nc".to_string(), .. base } }) diff --git a/src/librustc_target/spec/arm_unknown_linux_musleabi.rs b/src/librustc_target/spec/arm_unknown_linux_musleabi.rs index 7637577e7e8..7a2a4e85e4a 100644 --- a/src/librustc_target/spec/arm_unknown_linux_musleabi.rs +++ b/src/librustc_target/spec/arm_unknown_linux_musleabi.rs @@ -23,6 +23,7 @@ pub fn target() -> TargetResult { linker_flavor: LinkerFlavor::Gcc, options: TargetOptions { abi_blacklist: super::arm_base::abi_blacklist(), + target_mcount: "\01mcount".to_string(), .. base }, }) diff --git a/src/librustc_target/spec/arm_unknown_linux_musleabihf.rs b/src/librustc_target/spec/arm_unknown_linux_musleabihf.rs index 9def151b3ef..b7aa1952cb0 100644 --- a/src/librustc_target/spec/arm_unknown_linux_musleabihf.rs +++ b/src/librustc_target/spec/arm_unknown_linux_musleabihf.rs @@ -23,6 +23,7 @@ pub fn target() -> TargetResult { linker_flavor: LinkerFlavor::Gcc, options: TargetOptions { abi_blacklist: super::arm_base::abi_blacklist(), + target_mcount: "\01mcount".to_string(), .. base }, }) diff --git a/src/librustc_target/spec/armv4t_unknown_linux_gnueabi.rs b/src/librustc_target/spec/armv4t_unknown_linux_gnueabi.rs index 7cd4b14cdeb..59c15f1610d 100644 --- a/src/librustc_target/spec/armv4t_unknown_linux_gnueabi.rs +++ b/src/librustc_target/spec/armv4t_unknown_linux_gnueabi.rs @@ -19,6 +19,7 @@ pub fn target() -> TargetResult { // Atomic operations provided by compiler-builtins max_atomic_width: Some(32), abi_blacklist: super::arm_base::abi_blacklist(), + target_mcount: "\01__gnu_mcount_nc".to_string(), .. base } }) diff --git a/src/librustc_target/spec/armv5te_unknown_linux_gnueabi.rs b/src/librustc_target/spec/armv5te_unknown_linux_gnueabi.rs index 15f61482771..a1a61a69d05 100644 --- a/src/librustc_target/spec/armv5te_unknown_linux_gnueabi.rs +++ b/src/librustc_target/spec/armv5te_unknown_linux_gnueabi.rs @@ -19,6 +19,7 @@ pub fn target() -> TargetResult { // Atomic operations provided by compiler-builtins max_atomic_width: Some(32), abi_blacklist: super::arm_base::abi_blacklist(), + target_mcount: "\01__gnu_mcount_nc".to_string(), .. base } }) diff --git a/src/librustc_target/spec/armv5te_unknown_linux_musleabi.rs b/src/librustc_target/spec/armv5te_unknown_linux_musleabi.rs index 74915b942ea..9b44a54715e 100644 --- a/src/librustc_target/spec/armv5te_unknown_linux_musleabi.rs +++ b/src/librustc_target/spec/armv5te_unknown_linux_musleabi.rs @@ -22,6 +22,7 @@ pub fn target() -> TargetResult { // Atomic operations provided by compiler-builtins max_atomic_width: Some(32), abi_blacklist: super::arm_base::abi_blacklist(), + target_mcount: "\01mcount".to_string(), .. base } }) diff --git a/src/librustc_target/spec/armv6_unknown_freebsd.rs b/src/librustc_target/spec/armv6_unknown_freebsd.rs index 39886a16a74..e706c8281d2 100644 --- a/src/librustc_target/spec/armv6_unknown_freebsd.rs +++ b/src/librustc_target/spec/armv6_unknown_freebsd.rs @@ -18,6 +18,7 @@ pub fn target() -> TargetResult { features: "+v6,+vfp2".to_string(), max_atomic_width: Some(64), abi_blacklist: super::arm_base::abi_blacklist(), + target_mcount: "\01__gnu_mcount_nc".to_string(), .. base } }) diff --git a/src/librustc_target/spec/armv6_unknown_netbsd_eabihf.rs b/src/librustc_target/spec/armv6_unknown_netbsd_eabihf.rs index e460b6c574a..b056776bdfb 100644 --- a/src/librustc_target/spec/armv6_unknown_netbsd_eabihf.rs +++ b/src/librustc_target/spec/armv6_unknown_netbsd_eabihf.rs @@ -18,6 +18,7 @@ pub fn target() -> TargetResult { options: TargetOptions { features: "+v6,+vfp2".to_string(), abi_blacklist: super::arm_base::abi_blacklist(), + target_mcount: "__mcount".to_string(), .. base } }) diff --git a/src/librustc_target/spec/armv7_unknown_cloudabi_eabihf.rs b/src/librustc_target/spec/armv7_unknown_cloudabi_eabihf.rs index a6c7fb537c7..70d4985ab86 100644 --- a/src/librustc_target/spec/armv7_unknown_cloudabi_eabihf.rs +++ b/src/librustc_target/spec/armv7_unknown_cloudabi_eabihf.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::cloudabi_base::opts(); @@ -19,6 +19,9 @@ pub fn target() -> TargetResult { target_env: String::new(), target_vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "\01mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/armv7_unknown_freebsd.rs b/src/librustc_target/spec/armv7_unknown_freebsd.rs index ba63fd2bf05..0f9ee5d44a9 100644 --- a/src/librustc_target/spec/armv7_unknown_freebsd.rs +++ b/src/librustc_target/spec/armv7_unknown_freebsd.rs @@ -18,6 +18,7 @@ pub fn target() -> TargetResult { features: "+v7,+vfp3,+d16,+thumb2,-neon".to_string(), max_atomic_width: Some(64), abi_blacklist: super::arm_base::abi_blacklist(), + target_mcount: "\01__gnu_mcount_nc".to_string(), .. base } }) diff --git a/src/librustc_target/spec/armv7_unknown_linux_gnueabihf.rs b/src/librustc_target/spec/armv7_unknown_linux_gnueabihf.rs index f16215433c7..afba6f608ee 100644 --- a/src/librustc_target/spec/armv7_unknown_linux_gnueabihf.rs +++ b/src/librustc_target/spec/armv7_unknown_linux_gnueabihf.rs @@ -23,6 +23,7 @@ pub fn target() -> TargetResult { cpu: "generic".to_string(), max_atomic_width: Some(64), abi_blacklist: super::arm_base::abi_blacklist(), + target_mcount: "\01__gnu_mcount_nc".to_string(), .. base } }) diff --git a/src/librustc_target/spec/armv7_unknown_linux_musleabihf.rs b/src/librustc_target/spec/armv7_unknown_linux_musleabihf.rs index 45a26966b71..516d0401adf 100644 --- a/src/librustc_target/spec/armv7_unknown_linux_musleabihf.rs +++ b/src/librustc_target/spec/armv7_unknown_linux_musleabihf.rs @@ -26,6 +26,7 @@ pub fn target() -> TargetResult { cpu: "generic".to_string(), max_atomic_width: Some(64), abi_blacklist: super::arm_base::abi_blacklist(), + target_mcount: "\01mcount".to_string(), .. base } }) diff --git a/src/librustc_target/spec/armv7_unknown_netbsd_eabihf.rs b/src/librustc_target/spec/armv7_unknown_netbsd_eabihf.rs index 44e2636e918..e2d55e9317b 100644 --- a/src/librustc_target/spec/armv7_unknown_netbsd_eabihf.rs +++ b/src/librustc_target/spec/armv7_unknown_netbsd_eabihf.rs @@ -19,6 +19,7 @@ pub fn target() -> TargetResult { cpu: "generic".to_string(), max_atomic_width: Some(64), abi_blacklist: super::arm_base::abi_blacklist(), + target_mcount: "__mcount".to_string(), .. base } }) diff --git a/src/librustc_target/spec/i686_apple_darwin.rs b/src/librustc_target/spec/i686_apple_darwin.rs index c8a61296d33..a82ff33ce1d 100644 --- a/src/librustc_target/spec/i686_apple_darwin.rs +++ b/src/librustc_target/spec/i686_apple_darwin.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::apple_base::opts(); @@ -19,6 +19,9 @@ pub fn target() -> TargetResult { target_env: String::new(), target_vendor: "apple".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "\01mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/i686_unknown_netbsd.rs b/src/librustc_target/spec/i686_unknown_netbsd.rs index e8a9f29ea5f..99130e93dad 100644 --- a/src/librustc_target/spec/i686_unknown_netbsd.rs +++ b/src/librustc_target/spec/i686_unknown_netbsd.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::netbsd_base::opts(); @@ -18,6 +18,9 @@ pub fn target() -> TargetResult { target_env: String::new(), target_vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "__mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/mips64_unknown_linux_gnuabi64.rs b/src/librustc_target/spec/mips64_unknown_linux_gnuabi64.rs index 3b38e64050f..b2ea8a6f388 100644 --- a/src/librustc_target/spec/mips64_unknown_linux_gnuabi64.rs +++ b/src/librustc_target/spec/mips64_unknown_linux_gnuabi64.rs @@ -17,6 +17,7 @@ pub fn target() -> TargetResult { cpu: "mips64r2".to_string(), features: "+mips64r2".to_string(), max_atomic_width: Some(64), + target_mcount: "_mcount".to_string(), ..super::linux_base::opts() }, diff --git a/src/librustc_target/spec/mips64el_unknown_linux_gnuabi64.rs b/src/librustc_target/spec/mips64el_unknown_linux_gnuabi64.rs index 0f6cd86d616..48aea4a39b0 100644 --- a/src/librustc_target/spec/mips64el_unknown_linux_gnuabi64.rs +++ b/src/librustc_target/spec/mips64el_unknown_linux_gnuabi64.rs @@ -17,6 +17,7 @@ pub fn target() -> TargetResult { cpu: "mips64r2".to_string(), features: "+mips64r2".to_string(), max_atomic_width: Some(64), + target_mcount: "_mcount".to_string(), ..super::linux_base::opts() }, diff --git a/src/librustc_target/spec/mips_unknown_linux_gnu.rs b/src/librustc_target/spec/mips_unknown_linux_gnu.rs index b4d29c5fbea..e360abdb38d 100644 --- a/src/librustc_target/spec/mips_unknown_linux_gnu.rs +++ b/src/librustc_target/spec/mips_unknown_linux_gnu.rs @@ -16,6 +16,7 @@ pub fn target() -> TargetResult { cpu: "mips32r2".to_string(), features: "+mips32r2,+fpxx,+nooddspreg".to_string(), max_atomic_width: Some(32), + target_mcount: "_mcount".to_string(), ..super::linux_base::opts() }, diff --git a/src/librustc_target/spec/mips_unknown_linux_musl.rs b/src/librustc_target/spec/mips_unknown_linux_musl.rs index c56c6e38229..3f5428de950 100644 --- a/src/librustc_target/spec/mips_unknown_linux_musl.rs +++ b/src/librustc_target/spec/mips_unknown_linux_musl.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::linux_musl_base::opts(); @@ -17,6 +17,9 @@ pub fn target() -> TargetResult { target_env: "musl".to_string(), target_vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "_mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/mips_unknown_linux_uclibc.rs b/src/librustc_target/spec/mips_unknown_linux_uclibc.rs index cb02769c7df..8116b8c9cc8 100644 --- a/src/librustc_target/spec/mips_unknown_linux_uclibc.rs +++ b/src/librustc_target/spec/mips_unknown_linux_uclibc.rs @@ -16,6 +16,7 @@ pub fn target() -> TargetResult { cpu: "mips32r2".to_string(), features: "+mips32r2,+soft-float".to_string(), max_atomic_width: Some(32), + target_mcount: "_mcount".to_string(), ..super::linux_base::opts() }, diff --git a/src/librustc_target/spec/mipsel_unknown_linux_gnu.rs b/src/librustc_target/spec/mipsel_unknown_linux_gnu.rs index ed49ddd4993..7e9d8cd942a 100644 --- a/src/librustc_target/spec/mipsel_unknown_linux_gnu.rs +++ b/src/librustc_target/spec/mipsel_unknown_linux_gnu.rs @@ -17,6 +17,7 @@ pub fn target() -> TargetResult { cpu: "mips32r2".to_string(), features: "+mips32r2,+fpxx,+nooddspreg".to_string(), max_atomic_width: Some(32), + target_mcount: "_mcount".to_string(), ..super::linux_base::opts() }, diff --git a/src/librustc_target/spec/mipsel_unknown_linux_musl.rs b/src/librustc_target/spec/mipsel_unknown_linux_musl.rs index bcc49cf5ffe..56ad2940feb 100644 --- a/src/librustc_target/spec/mipsel_unknown_linux_musl.rs +++ b/src/librustc_target/spec/mipsel_unknown_linux_musl.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::linux_musl_base::opts(); @@ -17,6 +17,9 @@ pub fn target() -> TargetResult { target_env: "musl".to_string(), target_vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "_mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/mipsel_unknown_linux_uclibc.rs b/src/librustc_target/spec/mipsel_unknown_linux_uclibc.rs index 205f328a24c..a8152011efa 100644 --- a/src/librustc_target/spec/mipsel_unknown_linux_uclibc.rs +++ b/src/librustc_target/spec/mipsel_unknown_linux_uclibc.rs @@ -17,6 +17,7 @@ pub fn target() -> TargetResult { cpu: "mips32r2".to_string(), features: "+mips32r2,+soft-float".to_string(), max_atomic_width: Some(32), + target_mcount: "_mcount".to_string(), ..super::linux_base::opts() }, diff --git a/src/librustc_target/spec/mipsisa32r6_unknown_linux_gnu.rs b/src/librustc_target/spec/mipsisa32r6_unknown_linux_gnu.rs index f4729145849..36b83c63fca 100644 --- a/src/librustc_target/spec/mipsisa32r6_unknown_linux_gnu.rs +++ b/src/librustc_target/spec/mipsisa32r6_unknown_linux_gnu.rs @@ -16,6 +16,7 @@ pub fn target() -> TargetResult { cpu: "mips32r6".to_string(), features: "+mips32r6".to_string(), max_atomic_width: Some(32), + target_mcount: "_mcount".to_string(), ..super::linux_base::opts() }, diff --git a/src/librustc_target/spec/mipsisa32r6el_unknown_linux_gnu.rs b/src/librustc_target/spec/mipsisa32r6el_unknown_linux_gnu.rs index f4f98d33571..717ae3f1d20 100644 --- a/src/librustc_target/spec/mipsisa32r6el_unknown_linux_gnu.rs +++ b/src/librustc_target/spec/mipsisa32r6el_unknown_linux_gnu.rs @@ -17,6 +17,7 @@ pub fn target() -> TargetResult { cpu: "mips32r6".to_string(), features: "+mips32r6".to_string(), max_atomic_width: Some(32), + target_mcount: "_mcount".to_string(), ..super::linux_base::opts() }, diff --git a/src/librustc_target/spec/mipsisa64r6_unknown_linux_gnuabi64.rs b/src/librustc_target/spec/mipsisa64r6_unknown_linux_gnuabi64.rs index 7faed3adc79..3f7d233e55f 100644 --- a/src/librustc_target/spec/mipsisa64r6_unknown_linux_gnuabi64.rs +++ b/src/librustc_target/spec/mipsisa64r6_unknown_linux_gnuabi64.rs @@ -17,6 +17,7 @@ pub fn target() -> TargetResult { cpu: "mips64r6".to_string(), features: "+mips64r6".to_string(), max_atomic_width: Some(64), + target_mcount: "_mcount".to_string(), ..super::linux_base::opts() }, diff --git a/src/librustc_target/spec/mipsisa64r6el_unknown_linux_gnuabi64.rs b/src/librustc_target/spec/mipsisa64r6el_unknown_linux_gnuabi64.rs index 58a814a759e..4f41b8323a9 100644 --- a/src/librustc_target/spec/mipsisa64r6el_unknown_linux_gnuabi64.rs +++ b/src/librustc_target/spec/mipsisa64r6el_unknown_linux_gnuabi64.rs @@ -17,6 +17,7 @@ pub fn target() -> TargetResult { cpu: "mips64r6".to_string(), features: "+mips64r6".to_string(), max_atomic_width: Some(64), + target_mcount: "_mcount".to_string(), ..super::linux_base::opts() }, diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs index fdb1db645c3..7654d3932e3 100644 --- a/src/librustc_target/spec/mod.rs +++ b/src/librustc_target/spec/mod.rs @@ -759,7 +759,10 @@ pub struct TargetOptions { /// to opt out. The default is "aliases". /// /// Workaround for: https://github.com/rust-lang/rust/issues/57356 - pub merge_functions: MergeFunctions + pub merge_functions: MergeFunctions, + + /// Use platform dependent mcount function + pub target_mcount: String } impl Default for TargetOptions { @@ -843,6 +846,7 @@ fn default() -> TargetOptions { simd_types_indirect: true, override_export_symbols: None, merge_functions: MergeFunctions::Aliases, + target_mcount: "mcount".to_string(), } } } @@ -1148,6 +1152,7 @@ macro_rules! key { key!(simd_types_indirect, bool); key!(override_export_symbols, opt_list); key!(merge_functions, MergeFunctions)?; + key!(target_mcount); if let Some(array) = obj.find("abi-blacklist").and_then(Json::as_array) { for name in array.iter().filter_map(|abi| abi.as_string()) { @@ -1362,6 +1367,7 @@ macro_rules! target_option_val { target_option_val!(simd_types_indirect); target_option_val!(override_export_symbols); target_option_val!(merge_functions); + target_option_val!(target_mcount); if default.abi_blacklist != self.options.abi_blacklist { d.insert("abi-blacklist".to_string(), self.options.abi_blacklist.iter() diff --git a/src/librustc_target/spec/powerpc64_unknown_freebsd.rs b/src/librustc_target/spec/powerpc64_unknown_freebsd.rs index 360876b9ff5..fc881db6b09 100644 --- a/src/librustc_target/spec/powerpc64_unknown_freebsd.rs +++ b/src/librustc_target/spec/powerpc64_unknown_freebsd.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::freebsd_base::opts(); @@ -17,6 +17,9 @@ pub fn target() -> TargetResult { target_env: String::new(), target_vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "_mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs b/src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs index c16db7583f3..89e68ab3062 100644 --- a/src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs +++ b/src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult, RelroLevel}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult, RelroLevel}; pub fn target() -> TargetResult { let mut base = super::linux_base::opts(); @@ -21,6 +21,9 @@ pub fn target() -> TargetResult { target_env: "gnu".to_string(), target_vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "_mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/powerpc64_unknown_linux_musl.rs b/src/librustc_target/spec/powerpc64_unknown_linux_musl.rs index ac0b7431f91..be91dc44b93 100644 --- a/src/librustc_target/spec/powerpc64_unknown_linux_musl.rs +++ b/src/librustc_target/spec/powerpc64_unknown_linux_musl.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::linux_musl_base::opts(); @@ -17,6 +17,9 @@ pub fn target() -> TargetResult { target_env: "musl".to_string(), target_vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "_mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/powerpc64le_unknown_linux_gnu.rs b/src/librustc_target/spec/powerpc64le_unknown_linux_gnu.rs index 038b925a286..784e3b09094 100644 --- a/src/librustc_target/spec/powerpc64le_unknown_linux_gnu.rs +++ b/src/librustc_target/spec/powerpc64le_unknown_linux_gnu.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::linux_base::opts(); @@ -17,6 +17,9 @@ pub fn target() -> TargetResult { target_env: "gnu".to_string(), target_vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "_mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/powerpc64le_unknown_linux_musl.rs b/src/librustc_target/spec/powerpc64le_unknown_linux_musl.rs index 57103345f0a..a3cf47fc5e0 100644 --- a/src/librustc_target/spec/powerpc64le_unknown_linux_musl.rs +++ b/src/librustc_target/spec/powerpc64le_unknown_linux_musl.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::linux_musl_base::opts(); @@ -17,6 +17,9 @@ pub fn target() -> TargetResult { target_env: "musl".to_string(), target_vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "_mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/powerpc_unknown_linux_gnu.rs b/src/librustc_target/spec/powerpc_unknown_linux_gnu.rs index 38a801d5ab5..ff52fbc179b 100644 --- a/src/librustc_target/spec/powerpc_unknown_linux_gnu.rs +++ b/src/librustc_target/spec/powerpc_unknown_linux_gnu.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::linux_base::opts(); @@ -16,6 +16,9 @@ pub fn target() -> TargetResult { target_env: "gnu".to_string(), target_vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "_mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/powerpc_unknown_linux_gnuspe.rs b/src/librustc_target/spec/powerpc_unknown_linux_gnuspe.rs index 675b2c749d6..1868c42be39 100644 --- a/src/librustc_target/spec/powerpc_unknown_linux_gnuspe.rs +++ b/src/librustc_target/spec/powerpc_unknown_linux_gnuspe.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::linux_base::opts(); @@ -16,6 +16,9 @@ pub fn target() -> TargetResult { target_env: "gnu".to_string(), target_vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "_mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/powerpc_unknown_linux_musl.rs b/src/librustc_target/spec/powerpc_unknown_linux_musl.rs index 240443aa98d..1ad2201092c 100644 --- a/src/librustc_target/spec/powerpc_unknown_linux_musl.rs +++ b/src/librustc_target/spec/powerpc_unknown_linux_musl.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::linux_musl_base::opts(); @@ -16,6 +16,9 @@ pub fn target() -> TargetResult { target_env: "musl".to_string(), target_vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "_mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/powerpc_unknown_netbsd.rs b/src/librustc_target/spec/powerpc_unknown_netbsd.rs index 10e7089cf1c..6cc3a6c2ef3 100644 --- a/src/librustc_target/spec/powerpc_unknown_netbsd.rs +++ b/src/librustc_target/spec/powerpc_unknown_netbsd.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::netbsd_base::opts(); @@ -16,6 +16,9 @@ pub fn target() -> TargetResult { target_env: String::new(), target_vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "__mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/sparc64_unknown_netbsd.rs b/src/librustc_target/spec/sparc64_unknown_netbsd.rs index 78d53e69e8b..09d1debef41 100644 --- a/src/librustc_target/spec/sparc64_unknown_netbsd.rs +++ b/src/librustc_target/spec/sparc64_unknown_netbsd.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::netbsd_base::opts(); @@ -17,6 +17,9 @@ pub fn target() -> TargetResult { target_env: String::new(), target_vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "__mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/x86_64_apple_darwin.rs b/src/librustc_target/spec/x86_64_apple_darwin.rs index 0911ce06c13..fecc20c01c5 100644 --- a/src/librustc_target/spec/x86_64_apple_darwin.rs +++ b/src/librustc_target/spec/x86_64_apple_darwin.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::apple_base::opts(); @@ -19,6 +19,9 @@ pub fn target() -> TargetResult { target_env: String::new(), target_vendor: "apple".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "\01mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/x86_64_rumprun_netbsd.rs b/src/librustc_target/spec/x86_64_rumprun_netbsd.rs index a2c706c4c72..f6861f2a687 100644 --- a/src/librustc_target/spec/x86_64_rumprun_netbsd.rs +++ b/src/librustc_target/spec/x86_64_rumprun_netbsd.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::netbsd_base::opts(); @@ -24,6 +24,9 @@ pub fn target() -> TargetResult { target_env: String::new(), target_vendor: "rumprun".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "__mcount".to_string(), + .. base + }, }) } diff --git a/src/librustc_target/spec/x86_64_unknown_netbsd.rs b/src/librustc_target/spec/x86_64_unknown_netbsd.rs index ffc4f1d5c49..6f4ab4995b5 100644 --- a/src/librustc_target/spec/x86_64_unknown_netbsd.rs +++ b/src/librustc_target/spec/x86_64_unknown_netbsd.rs @@ -1,4 +1,4 @@ -use crate::spec::{LinkerFlavor, Target, TargetResult}; +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult}; pub fn target() -> TargetResult { let mut base = super::netbsd_base::opts(); @@ -18,6 +18,9 @@ pub fn target() -> TargetResult { target_env: String::new(), target_vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, - options: base, + options: TargetOptions { + target_mcount: "__mcount".to_string(), + .. base + }, }) } -- 2.44.0