Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rustc: Handle some libstd symbole exports better #45710

Merged
merged 1 commit into from
Nov 5, 2017

Commits on Nov 5, 2017

  1. rustc: Handle some libstd symbole exports better

    Right now symbol exports, particularly in a cdylib, are handled by
    assuming that `pub extern` combined with `#[no_mangle]` means "export
    this". This isn't actually what we want for some symbols that the
    standard library uses to implement itself, for example symbols related
    to allocation. Additionally other special symbols like
    `rust_eh_personallity` have no need to be exported from cdylib crate
    types (only needed in dylib crate types).
    
    This commit updates how rustc handles these special symbols by adding to
    the hardcoded logic of symbols like `rust_eh_personallity` but also
    adding a new attribute, `#[rustc_std_internal_symbol]`, which forces the
    export level to be considered the same as all other Rust functions
    instead of looking like a C function.
    
    The eventual goal here is to prevent functions like `__rdl_alloc` from
    showing up as part of a Rust cdylib as it's just an internal
    implementation detail. This then further allows such symbols to get gc'd
    by the linker when creating a cdylib.
    alexcrichton committed Nov 5, 2017
    Configuration menu
    Copy the full SHA
    fbf9869 View commit details
    Browse the repository at this point in the history