Skip to content

Dependency of rustc_fluent_macros getting compiled with -Ztls-model=initial-exec #134863

Closed
@bjorn3

Description

Proc macros must not be compiled with -Ztls-model=initial-exec as -Ztls-model=initial-exec is incompatible with dlopen. Glibc is somewhat lenient with dlopening dylibs compiled with -Ztls-model=initial-exec for as long as there is room, but other libc implementations may not provide enough room or provide room at all. For example on FreeBSD trying to use rustc_driver results in the following error:

https://cirrus-ci.com/task/4557776715776000

error: /.rustup/toolchains/nightly-2024-12-28-x86_64-unknown-freebsd/lib/rustlib/x86_64-unknown-freebsd/lib/librustc_fluent_macro-60e8ff74c2f2aaa5.so: No space available for static Thread Local Storage
  --> src/lib.rs:16:1
   |
16 | extern crate rustc_middle;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^

To fix this issue, the set of exclusions at

// `-Ztls-model=initial-exec` must not be applied to proc-macros, see
// issue https://github.com/rust-lang/rust/issues/100530
if env::var("RUSTC_TLS_MODEL_INITIAL_EXEC").is_ok()
&& crate_type != Some("proc-macro")
&& !matches!(crate_name, Some("proc_macro2" | "quote" | "syn" | "synstructure"))
{
cmd.arg("-Ztls-model=initial-exec");
}
needs to be updated to include all direct and indirect dependencies of the rustc_fluent_macros crate.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    A-thread-localsArea: Thread local storage (TLS)C-bugCategory: This is a bug.T-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions