1use types;
2use section::SectionContent;
3
4#[derive(Debug)]
5pub enum Error {
6 Io(::std::io::Error),
7 InvalidMagic,
8 InvalidIdentClass(u8),
9 InvalidEndianness(u8),
10 InvalidIdentVersion(u8),
11 InvalidVersion(u32),
12 InvalidAbi(u8),
13 InvalidElfType(u16),
14 InvalidMachineType(u16),
15 InvalidHeaderFlags(u32),
16 InvalidSectionFlags(u64),
17 InvalidSegmentType(u32),
18 InvalidSectionType(u32),
19 UnsupportedMachineTypeForRelocation(types::Machine),
20 InvalidSymbolType(u8),
21 InvalidSymbolBind(u8),
22 InvalidSymbolVis(u8),
23 InvalidDynamicType(u64),
24 MissingShstrtabSection,
25 LinkedSectionIsNotStrtab{
26 during: &'static str,
27 link: Option<SectionContent>,
28 },
29 InvalidDynamicFlags1(u64),
30 FirstSectionOffsetCanNotBeLargerThanAddress,
31 MissingSymtabSection,
32 LinkedSectionIsNotSymtab,
33 UnexpectedSectionContent,
34 InvalidSymbolShndx(String, u16),
35 DynsymInStaticLibrary,
36 SymbolSectionIndexExtendedCannotBeWritten,
37 WritingNotSynced,
38 SyncingUnloadedSection,
39 WritingUnloadedSection,
40 NoSymbolsInObject,
41 MultipleSymbolSections,
42 ConflictingSymbol{
43 sym: String,
44 obj1_name: String,
45 obj2_name: String,
46 obj1_hash: String,
47 obj2_hash: String,
48 },
49 UndefinedReference{
50 sym: String,
51 obj: String,
52 },
53 MovingLockedSection{
54 sec: String,
55 old_addr: u64,
56 new_addr: u64,
57 cause: String,
58 }
59}
60
61impl From<::std::io::Error> for Error {
62 fn from(error: ::std::io::Error) -> Self {
63 Error::Io(error)
64 }
65}