@@ -42,7 +42,7 @@ use crate::spec::crt_objects::{CrtObjects, LinkSelfContainedDefault};
4242use rustc_data_structures:: stable_hasher:: { HashStable , StableHasher } ;
4343use rustc_fs_util:: try_canonicalize;
4444use rustc_serialize:: { Decodable , Decoder , Encodable , Encoder } ;
45- use rustc_span:: symbol:: { sym, Symbol } ;
45+ use rustc_span:: symbol:: { kw , sym, Symbol } ;
4646use serde_json:: Value ;
4747use std:: borrow:: Cow ;
4848use std:: collections:: BTreeMap ;
@@ -655,6 +655,43 @@ pub enum RelocModel {
655655 RopiRwpi ,
656656}
657657
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+
658695impl FromStr for RelocModel {
659696 type Err = ( ) ;
660697
@@ -674,16 +711,7 @@ impl FromStr for RelocModel {
674711
675712impl ToJson for RelocModel {
676713 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 ( )
687715 }
688716}
689717
0 commit comments