Skip to content

Commit b8a6620

Browse files
committed
no aeabi_mem* symbols on iOS, weak symbols on thumb, normal symbols elsewhere
1 parent 75c6ccc commit b8a6620

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

src/arm.rs

+25-13
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,16 @@ pub unsafe fn __aeabi_ldivmod() {
6161

6262
// FIXME: The `*4` and `*8` variants should be defined as aliases.
6363

64+
#[cfg(not(target_os = "ios"))]
6465
#[cfg_attr(not(feature = "mangled-names"), no_mangle)]
65-
#[linkage = "weak"]
66+
#[cfg_attr(thumb, linkage = "weak")]
6667
pub unsafe extern "aapcs" fn __aeabi_memcpy(dest: *mut u8, src: *const u8, n: usize) {
6768
mem::memcpy(dest, src, n);
6869
}
6970

71+
#[cfg(not(target_os = "ios"))]
7072
#[cfg_attr(not(feature = "mangled-names"), no_mangle)]
71-
#[linkage = "weak"]
73+
#[cfg_attr(thumb, linkage = "weak")]
7274
pub unsafe extern "aapcs" fn __aeabi_memcpy4(dest: *mut u8, src: *const u8, mut n: usize) {
7375
let mut dest = dest as *mut u32;
7476
let mut src = src as *mut u32;
@@ -83,39 +85,45 @@ pub unsafe extern "aapcs" fn __aeabi_memcpy4(dest: *mut u8, src: *const u8, mut
8385
__aeabi_memcpy(dest as *mut u8, src as *const u8, n);
8486
}
8587

88+
#[cfg(not(target_os = "ios"))]
8689
#[cfg_attr(not(feature = "mangled-names"), no_mangle)]
87-
#[linkage = "weak"]
90+
#[cfg_attr(thumb, linkage = "weak")]
8891
pub unsafe extern "aapcs" fn __aeabi_memcpy8(dest: *mut u8, src: *const u8, n: usize) {
8992
__aeabi_memcpy4(dest, src, n);
9093
}
9194

95+
#[cfg(not(target_os = "ios"))]
9296
#[cfg_attr(not(feature = "mangled-names"), no_mangle)]
93-
#[linkage = "weak"]
97+
#[cfg_attr(thumb, linkage = "weak")]
9498
pub unsafe extern "aapcs" fn __aeabi_memmove(dest: *mut u8, src: *const u8, n: usize) {
9599
mem::memmove(dest, src, n);
96100
}
97101

102+
#[cfg(not(target_os = "ios"))]
98103
#[cfg_attr(not(feature = "mangled-names"), no_mangle)]
99-
#[linkage = "weak"]
104+
#[cfg_attr(thumb, linkage = "weak")]
100105
pub unsafe extern "aapcs" fn __aeabi_memmove4(dest: *mut u8, src: *const u8, n: usize) {
101106
__aeabi_memmove(dest, src, n);
102107
}
103108

109+
#[cfg(not(target_os = "ios"))]
104110
#[cfg_attr(not(feature = "mangled-names"), no_mangle)]
105-
#[linkage = "weak"]
111+
#[cfg_attr(thumb, linkage = "weak")]
106112
pub unsafe extern "aapcs" fn __aeabi_memmove8(dest: *mut u8, src: *const u8, n: usize) {
107113
__aeabi_memmove(dest, src, n);
108114
}
109115

110-
// Note the different argument order
116+
#[cfg(not(target_os = "ios"))]
111117
#[cfg_attr(not(feature = "mangled-names"), no_mangle)]
112-
#[linkage = "weak"]
118+
#[cfg_attr(thumb, linkage = "weak")]
113119
pub unsafe extern "aapcs" fn __aeabi_memset(dest: *mut u8, n: usize, c: i32) {
120+
// Note the different argument order
114121
mem::memset(dest, c, n);
115122
}
116123

124+
#[cfg(not(target_os = "ios"))]
117125
#[cfg_attr(not(feature = "mangled-names"), no_mangle)]
118-
#[linkage = "weak"]
126+
#[cfg_attr(thumb, linkage = "weak")]
119127
pub unsafe extern "aapcs" fn __aeabi_memset4(dest: *mut u8, mut n: usize, c: i32) {
120128
let mut dest = dest as *mut u32;
121129

@@ -131,26 +139,30 @@ pub unsafe extern "aapcs" fn __aeabi_memset4(dest: *mut u8, mut n: usize, c: i32
131139
__aeabi_memset(dest as *mut u8, n, byte as i32);
132140
}
133141

142+
#[cfg(not(target_os = "ios"))]
134143
#[cfg_attr(not(feature = "mangled-names"), no_mangle)]
135-
#[linkage = "weak"]
144+
#[cfg_attr(thumb, linkage = "weak")]
136145
pub unsafe extern "aapcs" fn __aeabi_memset8(dest: *mut u8, n: usize, c: i32) {
137146
__aeabi_memset4(dest, n, c);
138147
}
139148

149+
#[cfg(not(target_os = "ios"))]
140150
#[cfg_attr(not(feature = "mangled-names"), no_mangle)]
141-
#[linkage = "weak"]
151+
#[cfg_attr(thumb, linkage = "weak")]
142152
pub unsafe extern "aapcs" fn __aeabi_memclr(dest: *mut u8, n: usize) {
143153
__aeabi_memset(dest, n, 0);
144154
}
145155

156+
#[cfg(not(target_os = "ios"))]
146157
#[cfg_attr(not(feature = "mangled-names"), no_mangle)]
147-
#[linkage = "weak"]
158+
#[cfg_attr(thumb, linkage = "weak")]
148159
pub unsafe extern "aapcs" fn __aeabi_memclr4(dest: *mut u8, n: usize) {
149160
__aeabi_memset4(dest, n, 0);
150161
}
151162

163+
#[cfg(not(target_os = "ios"))]
152164
#[cfg_attr(not(feature = "mangled-names"), no_mangle)]
153-
#[linkage = "weak"]
165+
#[cfg_attr(thumb, linkage = "weak")]
154166
pub unsafe extern "aapcs" fn __aeabi_memclr8(dest: *mut u8, n: usize) {
155167
__aeabi_memset4(dest, n, 0);
156168
}

0 commit comments

Comments
 (0)