pub enum SymbolBinding {
Local = 0,
Global = 1,
Weak = 2,
}Expand description
Symbol binding — the container-independent enum from synth_core, shared
with the aarch64 object plan since #1180 (one definition of LOCAL/GLOBAL,
one locals_first rule). Re-exported so every
synth_backend::elf_builder::SymbolBinding path keeps working unchanged.
Symbol BINDING — whether a symbol takes part in cross-object resolution
(#656 ARM, #1180 / RQ-65-FUNCN aarch64).
This is a CONTAINER-INDEPENDENT concept, which is why it lives here and
not in a writer: ELF spells it STB_LOCAL / STB_GLOBAL / STB_WEAK in
st_info’s high nibble (the discriminants below are exactly those
values), Mach-O spells Local as N_EXT CLEAR and Global as N_EXT
SET on the nlist_64. The decision that a synth-invented name — a
func_N call label, __synth_globals, __synth_func_table — is
Local while a wasm export or import is Global is made ONCE, at the
object PLAN, and every container reads it from there. Two independently
compiled synth objects both define func_1; a Global binding made
linking them into one program a duplicate symbol refusal, in every
container (measured on ELF ld.lld and Mach-O Apple ld, #1180).
Variants§
Local = 0
File-local: resolves relocations within its own object (they bind by symbol INDEX, not by name) and is invisible to every other object.
Global = 1
Visible to the link: the name an embedder calls, or the import it defines.
Weak = 2
Weak (ELF STB_WEAK); no synth writer emits it today.
Trait Implementations§
Source§impl Clone for SymbolBinding
impl Clone for SymbolBinding
Source§fn clone(&self) -> SymbolBinding
fn clone(&self) -> SymbolBinding
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for SymbolBinding
Source§impl Debug for SymbolBinding
impl Debug for SymbolBinding
impl Eq for SymbolBinding
Source§impl PartialEq for SymbolBinding
impl PartialEq for SymbolBinding
impl StructuralPartialEq for SymbolBinding
Auto Trait Implementations§
impl Freeze for SymbolBinding
impl RefUnwindSafe for SymbolBinding
impl Send for SymbolBinding
impl Sync for SymbolBinding
impl Unpin for SymbolBinding
impl UnsafeUnpin for SymbolBinding
impl UnwindSafe for SymbolBinding
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.