pub enum Array {
Init,
Fini,
Preinit,
}Expand description
A section holding function addresses for a C runtime to call rather than data for the program to read.
ELF has a type for each of the three, and a section of that type is what the startup code walks: the linker gathers every input section of the kind into one run and the CRT calls what it finds between the two ends. A section of the ordinary type with the same name would be gathered the same way and called by nothing, which is why the type is worth writing down rather than leaving to the default.
Only ELF says it this way. COFF sorts by what follows the $ in a section name and Mach-O has
a section attribute for it, so on those two the name carries the whole of the answer and there
is nothing for this to be.
Variants§
Init
Run on the way to main, in the order the linker sorted the sections into.
Fini
Run after main returns, in the reverse of that order.
Preinit
Run ahead of .init_array and ahead of the shared libraries a program is linked against,
which is a thing only the C library itself has a use for.
Implementations§
Source§impl Array
impl Array
Sourcepub fn of(name: &str) -> Option<Array>
pub fn of(name: &str) -> Option<Array>
Which of them a section of this name is, and None for a name that is not one of them.
The name itself or the name with a dot and a priority after it. A numbered constructor is
written as the second of those and is the same kind of section as the first: the number is
there so that the linker sorts it, not to make it a different thing.
Trait Implementations§
impl Copy for Array
impl Eq for Array
impl StructuralPartialEq for Array
Auto Trait Implementations§
impl Freeze for Array
impl RefUnwindSafe for Array
impl Send for Array
impl Sync for Array
impl Unpin for Array
impl UnsafeUnpin for Array
impl UnwindSafe for Array
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.