@@ -232,6 +232,7 @@ impl fmt::Debug for c_void {
232
232
not( target_arch = "aarch64" ) ,
233
233
not( target_arch = "powerpc" ) ,
234
234
not( target_arch = "s390x" ) ,
235
+ not( target_arch = "xtensa" ) ,
235
236
not( target_arch = "x86_64" )
236
237
) ,
237
238
all( target_arch = "aarch64" , any( target_os = "macos" , target_os = "ios" ) ) ,
@@ -261,6 +262,7 @@ pub struct VaListImpl<'f> {
261
262
not( target_arch = "aarch64" ) ,
262
263
not( target_arch = "powerpc" ) ,
263
264
not( target_arch = "s390x" ) ,
265
+ not( target_arch = "xtensa" ) ,
264
266
not( target_arch = "x86_64" )
265
267
) ,
266
268
all( target_arch = "aarch64" , any( target_os = "macos" , target_os = "ios" ) ) ,
@@ -368,6 +370,24 @@ pub struct VaListImpl<'f> {
368
370
_marker : PhantomData < & ' f mut & ' f c_void > ,
369
371
}
370
372
373
+ /// xtensa ABI implementation of a `va_list`.
374
+ #[ cfg( target_arch = "xtensa" ) ]
375
+ #[ repr( C ) ]
376
+ #[ derive( Debug ) ]
377
+ #[ unstable(
378
+ feature = "c_variadic" ,
379
+ reason = "the `c_variadic` feature has not been properly tested on \
380
+ all supported platforms",
381
+ issue = "44930"
382
+ ) ]
383
+ #[ lang = "va_list" ]
384
+ pub struct VaListImpl < ' f > {
385
+ stk : * mut i32 ,
386
+ reg : * mut i32 ,
387
+ ndx : i32 ,
388
+ _marker : PhantomData < & ' f mut & ' f i32 > ,
389
+ }
390
+
371
391
/// A wrapper for a `va_list`
372
392
#[ repr( transparent) ]
373
393
#[ derive( Debug ) ]
@@ -383,6 +403,7 @@ pub struct VaList<'a, 'f: 'a> {
383
403
not( target_arch = "aarch64" ) ,
384
404
not( target_arch = "powerpc" ) ,
385
405
not( target_arch = "s390x" ) ,
406
+ not( target_arch = "xtensa" ) ,
386
407
not( target_arch = "x86_64" )
387
408
) ,
388
409
all( target_arch = "aarch64" , any( target_os = "macos" , target_os = "ios" ) ) ,
@@ -398,6 +419,7 @@ pub struct VaList<'a, 'f: 'a> {
398
419
target_arch = "aarch64" ,
399
420
target_arch = "powerpc" ,
400
421
target_arch = "s390x" ,
422
+ target_arch = "xtensa" ,
401
423
target_arch = "x86_64"
402
424
) ,
403
425
any( not( target_arch = "aarch64" ) , not( any( target_os = "macos" , target_os = "ios" ) ) ) ,
@@ -416,6 +438,7 @@ pub struct VaList<'a, 'f: 'a> {
416
438
not( target_arch = "aarch64" ) ,
417
439
not( target_arch = "powerpc" ) ,
418
440
not( target_arch = "s390x" ) ,
441
+ not( target_arch = "xtensa" ) ,
419
442
not( target_arch = "x86_64" )
420
443
) ,
421
444
all( target_arch = "aarch64" , any( target_os = "macos" , target_os = "ios" ) ) ,
@@ -443,6 +466,7 @@ impl<'f> VaListImpl<'f> {
443
466
target_arch = "aarch64" ,
444
467
target_arch = "powerpc" ,
445
468
target_arch = "s390x" ,
469
+ target_arch = "xtensa" ,
446
470
target_arch = "x86_64"
447
471
) ,
448
472
any( not( target_arch = "aarch64" ) , not( any( target_os = "macos" , target_os = "ios" ) ) ) ,
0 commit comments