@@ -42,7 +42,7 @@ use crate::spec::crt_objects::{CrtObjects, LinkSelfContainedDefault};
42
42
use rustc_data_structures:: stable_hasher:: { HashStable , StableHasher } ;
43
43
use rustc_fs_util:: try_canonicalize;
44
44
use rustc_serialize:: { Decodable , Decoder , Encodable , Encoder } ;
45
- use rustc_span:: symbol:: { sym, Symbol } ;
45
+ use rustc_span:: symbol:: { kw , sym, Symbol } ;
46
46
use serde_json:: Value ;
47
47
use std:: borrow:: Cow ;
48
48
use std:: collections:: BTreeMap ;
@@ -655,6 +655,43 @@ pub enum RelocModel {
655
655
RopiRwpi ,
656
656
}
657
657
658
+ impl RelocModel {
659
+ pub fn desc ( & self ) -> & str {
660
+ match * self {
661
+ RelocModel :: Static => "static" ,
662
+ RelocModel :: Pic => "pic" ,
663
+ RelocModel :: Pie => "pie" ,
664
+ RelocModel :: DynamicNoPic => "dynamic-no-pic" ,
665
+ RelocModel :: Ropi => "ropi" ,
666
+ RelocModel :: Rwpi => "rwpi" ,
667
+ RelocModel :: RopiRwpi => "ropi-rwpi" ,
668
+ }
669
+ }
670
+ pub const fn desc_symbol ( & self ) -> Symbol {
671
+ match * self {
672
+ RelocModel :: Static => kw:: Static ,
673
+ RelocModel :: Pic => sym:: pic,
674
+ RelocModel :: Pie => sym:: pie,
675
+ RelocModel :: DynamicNoPic => sym:: dynamic_no_pic,
676
+ RelocModel :: Ropi => sym:: ropi,
677
+ RelocModel :: Rwpi => sym:: rwpi,
678
+ RelocModel :: RopiRwpi => sym:: ropi_rwpi,
679
+ }
680
+ }
681
+
682
+ pub const fn all ( ) -> [ Symbol ; 7 ] {
683
+ [
684
+ RelocModel :: Static . desc_symbol ( ) ,
685
+ RelocModel :: Pic . desc_symbol ( ) ,
686
+ RelocModel :: Pie . desc_symbol ( ) ,
687
+ RelocModel :: DynamicNoPic . desc_symbol ( ) ,
688
+ RelocModel :: Ropi . desc_symbol ( ) ,
689
+ RelocModel :: Rwpi . desc_symbol ( ) ,
690
+ RelocModel :: RopiRwpi . desc_symbol ( ) ,
691
+ ]
692
+ }
693
+ }
694
+
658
695
impl FromStr for RelocModel {
659
696
type Err = ( ) ;
660
697
@@ -674,16 +711,7 @@ impl FromStr for RelocModel {
674
711
675
712
impl ToJson for RelocModel {
676
713
fn to_json ( & self ) -> Json {
677
- match * self {
678
- RelocModel :: Static => "static" ,
679
- RelocModel :: Pic => "pic" ,
680
- RelocModel :: Pie => "pie" ,
681
- RelocModel :: DynamicNoPic => "dynamic-no-pic" ,
682
- RelocModel :: Ropi => "ropi" ,
683
- RelocModel :: Rwpi => "rwpi" ,
684
- RelocModel :: RopiRwpi => "ropi-rwpi" ,
685
- }
686
- . to_json ( )
714
+ self . desc ( ) . to_json ( )
687
715
}
688
716
}
689
717
0 commit comments