Skip to content

Commit cb8f43f

Browse files
committed
Replace duplicated functions with function aliases.
In the outline assembly code, we don't have separate `_readonly` implementations, so use function aliases instead of having two copies of the code.
1 parent a0f58f7 commit cb8f43f

File tree

2 files changed

+19
-129
lines changed

2 files changed

+19
-129
lines changed

src/imp/linux_raw/arch/outline/nr_last.rs

Lines changed: 9 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ extern "C" {
5656

5757
#[inline]
5858
#[must_use]
59-
pub(in crate::imp) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg<R0> {
59+
pub(in crate::imp) unsafe fn syscall0(nr: SyscallNumber<'_>) -> RetReg<R0> {
6060
rustix_syscall0_nr_last(nr)
6161
}
6262
#[inline]
@@ -66,14 +66,6 @@ pub(in crate::imp) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>)
6666
}
6767
#[inline]
6868
#[must_use]
69-
pub(in crate::imp) unsafe fn syscall1_readonly(
70-
nr: SyscallNumber<'_>,
71-
a0: ArgReg<'_, A0>,
72-
) -> RetReg<R0> {
73-
rustix_syscall1_nr_last(a0, nr)
74-
}
75-
#[inline]
76-
#[must_use]
7769
pub(in crate::imp) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! {
7870
rustix_syscall1_noreturn_nr_last(a0, nr)
7971
}
@@ -88,15 +80,6 @@ pub(in crate::imp) unsafe fn syscall2(
8880
}
8981
#[inline]
9082
#[must_use]
91-
pub(in crate::imp) unsafe fn syscall2_readonly(
92-
nr: SyscallNumber<'_>,
93-
a0: ArgReg<'_, A0>,
94-
a1: ArgReg<'_, A1>,
95-
) -> RetReg<R0> {
96-
rustix_syscall2_nr_last(a0, a1, nr)
97-
}
98-
#[inline]
99-
#[must_use]
10083
pub(in crate::imp) unsafe fn syscall3(
10184
nr: SyscallNumber<'_>,
10285
a0: ArgReg<'_, A0>,
@@ -107,16 +90,6 @@ pub(in crate::imp) unsafe fn syscall3(
10790
}
10891
#[inline]
10992
#[must_use]
110-
pub(in crate::imp) unsafe fn syscall3_readonly(
111-
nr: SyscallNumber<'_>,
112-
a0: ArgReg<'_, A0>,
113-
a1: ArgReg<'_, A1>,
114-
a2: ArgReg<'_, A2>,
115-
) -> RetReg<R0> {
116-
rustix_syscall3_nr_last(a0, a1, a2, nr)
117-
}
118-
#[inline]
119-
#[must_use]
12093
pub(in crate::imp) unsafe fn syscall4(
12194
nr: SyscallNumber<'_>,
12295
a0: ArgReg<'_, A0>,
@@ -128,17 +101,6 @@ pub(in crate::imp) unsafe fn syscall4(
128101
}
129102
#[inline]
130103
#[must_use]
131-
pub(in crate::imp) unsafe fn syscall4_readonly(
132-
nr: SyscallNumber<'_>,
133-
a0: ArgReg<'_, A0>,
134-
a1: ArgReg<'_, A1>,
135-
a2: ArgReg<'_, A2>,
136-
a3: ArgReg<'_, A3>,
137-
) -> RetReg<R0> {
138-
rustix_syscall4_nr_last(a0, a1, a2, a3, nr)
139-
}
140-
#[inline]
141-
#[must_use]
142104
pub(in crate::imp) unsafe fn syscall5(
143105
nr: SyscallNumber<'_>,
144106
a0: ArgReg<'_, A0>,
@@ -151,18 +113,6 @@ pub(in crate::imp) unsafe fn syscall5(
151113
}
152114
#[inline]
153115
#[must_use]
154-
pub(in crate::imp) unsafe fn syscall5_readonly(
155-
nr: SyscallNumber<'_>,
156-
a0: ArgReg<'_, A0>,
157-
a1: ArgReg<'_, A1>,
158-
a2: ArgReg<'_, A2>,
159-
a3: ArgReg<'_, A3>,
160-
a4: ArgReg<'_, A4>,
161-
) -> RetReg<R0> {
162-
rustix_syscall5_nr_last(a0, a1, a2, a3, a4, nr)
163-
}
164-
#[inline]
165-
#[must_use]
166116
pub(in crate::imp) unsafe fn syscall6(
167117
nr: SyscallNumber<'_>,
168118
a0: ArgReg<'_, A0>,
@@ -174,16 +124,11 @@ pub(in crate::imp) unsafe fn syscall6(
174124
) -> RetReg<R0> {
175125
rustix_syscall6_nr_last(a0, a1, a2, a3, a4, a5, nr)
176126
}
177-
#[inline]
178-
#[must_use]
179-
pub(in crate::imp) unsafe fn syscall6_readonly(
180-
nr: SyscallNumber<'_>,
181-
a0: ArgReg<'_, A0>,
182-
a1: ArgReg<'_, A1>,
183-
a2: ArgReg<'_, A2>,
184-
a3: ArgReg<'_, A3>,
185-
a4: ArgReg<'_, A4>,
186-
a5: ArgReg<'_, A5>,
187-
) -> RetReg<R0> {
188-
rustix_syscall6_nr_last(a0, a1, a2, a3, a4, a5, nr)
189-
}
127+
128+
// We don't have separate `_readonly` implementations, so these can just be
129+
// aliases to their non-`_readonly` counterparts.
130+
pub(in crate::imp) use {
131+
syscall0 as syscall0_readonly, syscall1 as syscall1_readonly, syscall2 as syscall2_readonly,
132+
syscall3 as syscall3_readonly, syscall4 as syscall4_readonly, syscall5 as syscall5_readonly,
133+
syscall6 as syscall6_readonly,
134+
};

src/imp/linux_raw/arch/outline/x86.rs

Lines changed: 10 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#![allow(dead_code)]
1+
#![allow(dead_code, unused_imports)]
22

33
use crate::imp::reg::{ArgReg, RetReg, SyscallNumber, A0, A1, A2, A3, A4, A5, R0};
44
use crate::imp::vdso_wrappers::SyscallType;
@@ -59,7 +59,7 @@ extern "fastcall" {
5959

6060
#[inline]
6161
#[must_use]
62-
pub(in crate::imp) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg<R0> {
62+
pub(in crate::imp) unsafe fn syscall0(nr: SyscallNumber<'_>) -> RetReg<R0> {
6363
rustix_syscall0_nr_last_fastcall(nr)
6464
}
6565
#[inline]
@@ -69,14 +69,6 @@ pub(in crate::imp) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>)
6969
}
7070
#[inline]
7171
#[must_use]
72-
pub(in crate::imp) unsafe fn syscall1_readonly(
73-
nr: SyscallNumber<'_>,
74-
a0: ArgReg<'_, A0>,
75-
) -> RetReg<R0> {
76-
rustix_syscall1_nr_last_fastcall(a0, nr)
77-
}
78-
#[inline]
79-
#[must_use]
8072
pub(in crate::imp) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! {
8173
rustix_syscall1_noreturn_nr_last_fastcall(a0, nr)
8274
}
@@ -91,15 +83,6 @@ pub(in crate::imp) unsafe fn syscall2(
9183
}
9284
#[inline]
9385
#[must_use]
94-
pub(in crate::imp) unsafe fn syscall2_readonly(
95-
nr: SyscallNumber<'_>,
96-
a0: ArgReg<'_, A0>,
97-
a1: ArgReg<'_, A1>,
98-
) -> RetReg<R0> {
99-
rustix_syscall2_nr_last_fastcall(a1, a0, nr)
100-
}
101-
#[inline]
102-
#[must_use]
10386
pub(in crate::imp) unsafe fn syscall3(
10487
nr: SyscallNumber<'_>,
10588
a0: ArgReg<'_, A0>,
@@ -110,16 +93,6 @@ pub(in crate::imp) unsafe fn syscall3(
11093
}
11194
#[inline]
11295
#[must_use]
113-
pub(in crate::imp) unsafe fn syscall3_readonly(
114-
nr: SyscallNumber<'_>,
115-
a0: ArgReg<'_, A0>,
116-
a1: ArgReg<'_, A1>,
117-
a2: ArgReg<'_, A2>,
118-
) -> RetReg<R0> {
119-
rustix_syscall3_nr_last_fastcall(a1, a2, a0, nr)
120-
}
121-
#[inline]
122-
#[must_use]
12396
pub(in crate::imp) unsafe fn syscall4(
12497
nr: SyscallNumber<'_>,
12598
a0: ArgReg<'_, A0>,
@@ -131,17 +104,6 @@ pub(in crate::imp) unsafe fn syscall4(
131104
}
132105
#[inline]
133106
#[must_use]
134-
pub(in crate::imp) unsafe fn syscall4_readonly(
135-
nr: SyscallNumber<'_>,
136-
a0: ArgReg<'_, A0>,
137-
a1: ArgReg<'_, A1>,
138-
a2: ArgReg<'_, A2>,
139-
a3: ArgReg<'_, A3>,
140-
) -> RetReg<R0> {
141-
rustix_syscall4_nr_last_fastcall(a1, a2, a0, a3, nr)
142-
}
143-
#[inline]
144-
#[must_use]
145107
pub(in crate::imp) unsafe fn syscall5(
146108
nr: SyscallNumber<'_>,
147109
a0: ArgReg<'_, A0>,
@@ -154,18 +116,6 @@ pub(in crate::imp) unsafe fn syscall5(
154116
}
155117
#[inline]
156118
#[must_use]
157-
pub(in crate::imp) unsafe fn syscall5_readonly(
158-
nr: SyscallNumber<'_>,
159-
a0: ArgReg<'_, A0>,
160-
a1: ArgReg<'_, A1>,
161-
a2: ArgReg<'_, A2>,
162-
a3: ArgReg<'_, A3>,
163-
a4: ArgReg<'_, A4>,
164-
) -> RetReg<R0> {
165-
rustix_syscall5_nr_last_fastcall(a1, a2, a0, a3, a4, nr)
166-
}
167-
#[inline]
168-
#[must_use]
169119
pub(in crate::imp) unsafe fn syscall6(
170120
nr: SyscallNumber<'_>,
171121
a0: ArgReg<'_, A0>,
@@ -177,19 +127,14 @@ pub(in crate::imp) unsafe fn syscall6(
177127
) -> RetReg<R0> {
178128
rustix_syscall6_nr_last_fastcall(a1, a2, a0, a3, a4, a5, nr)
179129
}
180-
#[inline]
181-
#[must_use]
182-
pub(in crate::imp) unsafe fn syscall6_readonly(
183-
nr: SyscallNumber<'_>,
184-
a0: ArgReg<'_, A0>,
185-
a1: ArgReg<'_, A1>,
186-
a2: ArgReg<'_, A2>,
187-
a3: ArgReg<'_, A3>,
188-
a4: ArgReg<'_, A4>,
189-
a5: ArgReg<'_, A5>,
190-
) -> RetReg<R0> {
191-
rustix_syscall6_nr_last_fastcall(a1, a2, a0, a3, a4, a5, nr)
192-
}
130+
131+
// We don't have separate `_readonly` implementations, so these can just be
132+
// aliases to their non-`_readonly` counterparts.
133+
pub(in crate::imp) use {
134+
syscall0 as syscall0_readonly, syscall1 as syscall1_readonly, syscall2 as syscall2_readonly,
135+
syscall3 as syscall3_readonly, syscall4 as syscall4_readonly, syscall5 as syscall5_readonly,
136+
syscall6 as syscall6_readonly,
137+
};
193138

194139
// x86 prefers to route all syscalls through the vDSO, though this isn't
195140
// always possible, so it also has a special form for doing the dispatch.

0 commit comments

Comments
 (0)