@@ -13,20 +13,8 @@ use core::str::FromStr;
13
13
pub ( super ) struct MapsEntry {
14
14
/// start (inclusive) and limit (exclusive) of address range.
15
15
address : ( usize , usize ) ,
16
- /// The perms field are the permissions for the entry
17
- ///
18
- /// r = read
19
- /// w = write
20
- /// x = execute
21
- /// s = shared
22
- /// p = private (copy on write)
23
- perms : [ char ; 4 ] ,
24
16
/// Offset into the file (or "whatever").
25
17
offset : u64 ,
26
- /// device (major, minor)
27
- dev : ( usize , usize ) ,
28
- /// inode on the device. 0 indicates that no inode is associated with the memory region (e.g. uninitalized data aka BSS).
29
- inode : usize ,
30
18
/// Usually the file backing the mapping.
31
19
///
32
20
/// Note: The man page for proc includes a note about "coordination" by
@@ -132,30 +120,13 @@ impl FromStr for MapsEntry {
132
120
} else {
133
121
return Err ( "Couldn't parse address range" ) ;
134
122
} ;
135
- let perms: [ char ; 4 ] = {
136
- let mut chars = perms_str. chars ( ) ;
137
- let mut c = || chars. next ( ) . ok_or ( "insufficient perms" ) ;
138
- let perms = [ c ( ) ?, c ( ) ?, c ( ) ?, c ( ) ?] ;
139
- if chars. next ( ) . is_some ( ) {
140
- return Err ( "too many perms" ) ;
141
- }
142
- perms
143
- } ;
123
+
144
124
let offset = hex64 ( offset_str) ?;
145
- let dev = if let Some ( ( major, minor) ) = dev_str. split_once ( ':' ) {
146
- ( hex ( major) ?, hex ( minor) ?)
147
- } else {
148
- return Err ( "Couldn't parse dev" ) ;
149
- } ;
150
- let inode = hex ( inode_str) ?;
151
125
let pathname = pathname_str. into ( ) ;
152
126
153
127
Ok ( MapsEntry {
154
128
address,
155
- perms,
156
129
offset,
157
- dev,
158
- inode,
159
130
pathname,
160
131
} )
161
132
}
@@ -172,10 +143,7 @@ fn check_maps_entry_parsing_64bit() {
172
143
. unwrap( ) ,
173
144
MapsEntry {
174
145
address: ( 0xffffffffff600000 , 0xffffffffff601000 ) ,
175
- perms: [ '-' , '-' , 'x' , 'p' ] ,
176
146
offset: 0x00000000 ,
177
- dev: ( 0x00 , 0x00 ) ,
178
- inode: 0x0 ,
179
147
pathname: "[vsyscall]" . into( ) ,
180
148
}
181
149
) ;
@@ -187,10 +155,7 @@ fn check_maps_entry_parsing_64bit() {
187
155
. unwrap( ) ,
188
156
MapsEntry {
189
157
address: ( 0x7f5985f46000 , 0x7f5985f48000 ) ,
190
- perms: [ 'r' , 'w' , '-' , 'p' ] ,
191
158
offset: 0x00039000 ,
192
- dev: ( 0x103 , 0x06 ) ,
193
- inode: 0x76021795 ,
194
159
pathname: "/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2" . into( ) ,
195
160
}
196
161
) ;
@@ -200,10 +165,7 @@ fn check_maps_entry_parsing_64bit() {
200
165
. unwrap( ) ,
201
166
MapsEntry {
202
167
address: ( 0x35b1a21000 , 0x35b1a22000 ) ,
203
- perms: [ 'r' , 'w' , '-' , 'p' ] ,
204
168
offset: 0x00000000 ,
205
- dev: ( 0x00 , 0x00 ) ,
206
- inode: 0x0 ,
207
169
pathname: Default :: default ( ) ,
208
170
}
209
171
) ;
@@ -224,10 +186,7 @@ fn check_maps_entry_parsing_32bit() {
224
186
. unwrap( ) ,
225
187
MapsEntry {
226
188
address: ( 0x08056000 , 0x08077000 ) ,
227
- perms: [ 'r' , 'w' , '-' , 'p' ] ,
228
189
offset: 0x00000000 ,
229
- dev: ( 0x00 , 0x00 ) ,
230
- inode: 0x0 ,
231
190
pathname: "[heap]" . into( ) ,
232
191
}
233
192
) ;
@@ -239,10 +198,7 @@ fn check_maps_entry_parsing_32bit() {
239
198
. unwrap( ) ,
240
199
MapsEntry {
241
200
address: ( 0xb7c79000 , 0xb7e02000 ) ,
242
- perms: [ 'r' , '-' , '-' , 'p' ] ,
243
201
offset: 0x00000000 ,
244
- dev: ( 0x08 , 0x01 ) ,
245
- inode: 0x60662705 ,
246
202
pathname: "/usr/lib/locale/locale-archive" . into( ) ,
247
203
}
248
204
) ;
@@ -252,10 +208,7 @@ fn check_maps_entry_parsing_32bit() {
252
208
. unwrap( ) ,
253
209
MapsEntry {
254
210
address: ( 0xb7e02000 , 0xb7e03000 ) ,
255
- perms: [ 'r' , 'w' , '-' , 'p' ] ,
256
211
offset: 0x00000000 ,
257
- dev: ( 0x00 , 0x00 ) ,
258
- inode: 0x0 ,
259
212
pathname: Default :: default ( ) ,
260
213
}
261
214
) ;
@@ -266,10 +219,7 @@ fn check_maps_entry_parsing_32bit() {
266
219
. unwrap( ) ,
267
220
MapsEntry {
268
221
address: ( 0xb7c79000 , 0xb7e02000 ) ,
269
- perms: [ 'r' , '-' , '-' , 'p' ] ,
270
222
offset: 0x00000000 ,
271
- dev: ( 0x08 , 0x01 ) ,
272
- inode: 0x60662705 ,
273
223
pathname: "/executable/path/with some spaces" . into( ) ,
274
224
}
275
225
) ;
@@ -280,10 +230,7 @@ fn check_maps_entry_parsing_32bit() {
280
230
. unwrap( ) ,
281
231
MapsEntry {
282
232
address: ( 0xb7c79000 , 0xb7e02000 ) ,
283
- perms: [ 'r' , '-' , '-' , 'p' ] ,
284
233
offset: 0x00000000 ,
285
- dev: ( 0x08 , 0x01 ) ,
286
- inode: 0x60662705 ,
287
234
pathname: "/executable/path/with multiple-continuous spaces " . into( ) ,
288
235
}
289
236
) ;
@@ -294,10 +241,7 @@ fn check_maps_entry_parsing_32bit() {
294
241
. unwrap( ) ,
295
242
MapsEntry {
296
243
address: ( 0xb7c79000 , 0xb7e02000 ) ,
297
- perms: [ 'r' , '-' , '-' , 'p' ] ,
298
244
offset: 0x00000000 ,
299
- dev: ( 0x08 , 0x01 ) ,
300
- inode: 0x60662705 ,
301
245
pathname: "/executable/path/starts-with-spaces" . into( ) ,
302
246
}
303
247
) ;
0 commit comments