Skip to content

Handle statics and TLS in raw-dylib for ELF#153580

Draft
mati865 wants to merge 3 commits intorust-lang:mainfrom
mati865:elf-raw-dylib-static-and-tls
Draft

Handle statics and TLS in raw-dylib for ELF#153580
mati865 wants to merge 3 commits intorust-lang:mainfrom
mati865:elf-raw-dylib-static-and-tls

Conversation

@mati865
Copy link
Member

@mati865 mati865 commented Mar 8, 2026

Follow-up to #153090

@rustbot rustbot added A-run-make Area: port run-make Makefiles to rmake.rs S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Mar 8, 2026
@rustbot
Copy link
Collaborator

rustbot commented Mar 8, 2026

r? @jieyouxu

rustbot has assigned @jieyouxu.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: compiler
  • compiler expanded to 69 candidates
  • Random selection from 15 candidates

@mati865
Copy link
Member Author

mati865 commented Mar 8, 2026

cc @bjorn3

@jieyouxu
Copy link
Member

jieyouxu commented Mar 9, 2026

Probably, r? bjorn3

@rustbot rustbot assigned bjorn3 and unassigned jieyouxu Mar 9, 2026
@mati865 mati865 changed the title Elf raw dylib static and tls Handle statics and TLS in raw-dylib for ELF Mar 9, 2026
@mati865
Copy link
Member Author

mati865 commented Mar 9, 2026

Shoot, forgot to change the title yesterday.

DllImportSymbolType::Static
}
} else {
DllImportSymbolType::Unknown
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In what cases does this get reached? Can this be a bug!()?

Copy link
Member Author

@mati865 mati865 Mar 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hopefully never, I was worried to break Windows impl because previous code distinguished only functions and everything else.

@bjorn3
Copy link
Member

bjorn3 commented Mar 9, 2026

Actually, for PIE executables we do also need to store the symbol size for statics and maybe thread locals. This because of copy relocations. Basically the linker reserves space in the PIE executable for all statics coming from other DSOs and then at runtime the dynamic linker copies the data from the DSO that the symbol resolves to in the end into the reserved memory. Without the symbol size, the linker can't know how much memory to reserve.

@mati865
Copy link
Member Author

mati865 commented Mar 9, 2026

Copy relocations would definitely require known size. I couldn't manage to write Rust code that would make LLVM emit direct access with PIE or PIC, it would use GOT indirection instead which prevents copy relocations. However, I sort of succeeded with static relocation model:

  • GNU ld didn't create copy relocation, TBH I have no idea what it did but printed value looks like an address in .rodata
  • LLD refused to link with the error cannot create a copy relocation for symbol global_variable
  • Wild created a broken copy relocation, when trying to run it, glibc shows message about global_variable size difference and the binary hangs

Dunno about TLS, I'm not familiar enough with how it's handled.

More details

I have used WILD_SAVE_BASE to make debugging easier.
Linking with the test case different linkers:

❯ OUT=bin.ld ./run-with ld.bfd

❯ OUT=bin.lld ./run-with ld.lld
ld.lld: error: cannot create a copy relocation for symbol global_variable

# --sym-info to show what we are dealing with
❯ OUT=bin.wild ./run-with ~/Projects/wild/target/release/wild --sym-info global_variable
Global name `global_variable` refers to: Some(sym-20922)
Definitions / references with name `global_variable`:
  109 -> 20922: Global Undefined: ABSOLUTE
    global_variable
    #31 in File #260 (1/4) ./home/mateusz/Projects/rust/build/x86_64-unknown-linux-gnu/test/run-make/raw-dylib-elf/rmake_out/main.main.d17f5fbe6225cf88-cgu.0.rcgu.o (LOADED)
  20922: Global Data: DYNAMIC | DIRECT | COPY_RELOCATION
    global_variable
    #2 in File #15109 (59/5) /tmp/raw-elf/12/home/mateusz/Projects/rust/build/x86_64-unknown-linux-gnu/test/run-make/raw-dylib-elf/rmake_out/rustchF2qGE/raw-dylibs/lib85yu6bswlwqzp4104wz1sxvsr.so (LOADED)

❯ LD_LIBRARY_PATH=~/Projects/rust/build/host/test/run-make/raw-dylib-elf/rmake_out ./bin.ld
42 4546626 33

❯ LD_LIBRARY_PATH=~/Projects/rust/build/host/test/run-make/raw-dylib-elf/rmake_out ./bin.wild
./bin.wild: Symbol `global_variable' has different size in shared object, consider re-linking

# 4546626 is 0x456042 in hex
❯ readelf -WS bin.ld | rg -C1 456
  [13] .fini             PROGBITS        0000000000455034 055034 00000d 00  AX  0   0  4
  [14] .rodata           PROGBITS        0000000000456000 056000 00ca00 00   A  0   0 16
  [15] .eh_frame_hdr     PROGBITS        0000000000462a00 062a00 001554 00   A  0   0  4

While at it, posting linker-diff for the future reference:

❯ WILD_REFERENCE_LINKER=ld.bfd ./run-with ~/Projects/wild/target/release/wild
wild: ./bin
ref: ./bin.ref-linker
dynsym.global_variable.section
  wild .bss
  ref .data.rel.ro

dynsym.this_is_a_library_function.section
  wild .bss
  ref

dynsym.tls_variable.section
  wild .bss
  ref

rel.R_X86_64_PLT32.R_X86_64_PLT32
  `./home/mateusz/Projects/rust/build/x86_64-unknown-linux-gnu/test/run-make/raw-dylib-elf/rmake_out/main.main.d17f5fbe6225cf88-cgu.0.rcgu.o` .text._RNvCshZ9kMv8z9bM_4main4main _RNvCshZ9kMv8z9bM_4main4main
  ORIG 0x000007: [ e8 00 00 00 00 ] call 0x000000000000000C
                      ^^^^^^^^^^^ R_X86_64_PLT32
  ORIG this_is_a_library_function -4
  wild 0x4194a7: [ e8 34 fe ff ff ] call 0x00000000004192E0
                      ^^^^^^^^^^^ R_X86_64_PLT32 NoOp
  wild PLT->GOT->R_X86_64_GLOB_DAT->this_is_a_library_function@*global*
  wild TRACE: relocation applied flags=DYNAMIC | FUNCTION | GOT | PLT | COPY_RELOCATION,
  wild TRACE: rel_kind=PltRelative,
  wild TRACE: value=0xfffffffffffffe34, symbol_name=this_is_a_library_function
  ref  0x408af7: [ e8 44 95 ff ff ] call 0x0000000000402040
                      ^^^^^^^^^^^ R_X86_64_PLT32 NoOp
  ref  PLT->GOT->R_X86_64_JUMP_SLOT->this_is_a_library_function@*unversioned*

rel.extra-copy-relocation.R_X86_64_64
  `./home/mateusz/Projects/rust/build/x86_64-unknown-linux-gnu/test/run-make/raw-dylib-elf/rmake_out/main.main.d17f5fbe6225cf88-cgu.0.rcgu.o` .text._RNvCshZ9kMv8z9bM_4main4main _RNvCshZ9kMv8z9bM_4main4main
  ORIG 0x000010: [ 48 b8 00 00 00 00 00 00 00 00 ] movabs $0,%rax
                         ^^^^^^^^^^^^^^^^^^^^^^^ R_X86_64_64
  ORIG global_variable
  wild 0x4194b0: [ 48 b8 7c 3b 47 00 00 00 00 00 ] movabs $0x473B7C,%rax
                         ^^^^^^^^^^^^^^^^^^^^^^^ R_X86_64_64 NoOp
  wild COPY(global_variable)
  wild TRACE: relocation applied flags=DYNAMIC | DIRECT | COPY_RELOCATION,
  wild TRACE: rel_kind=Absolute,
  wild TRACE: value=0x473b7c, symbol_name=global_variable
  ref  0x408b00: [ 48 b8 70 c0 46 00 00 00 00 00 ] movabs $0x46C070,%rax
                         ^^^^^^^^^^^^^^^^^^^^^^^ R_X86_64_64 NoOp
  ref  0x46c070 (symbol is undefined)

rel.extra-copy-relocation.R_X86_64_64
  `./home/mateusz/Projects/rust/build/x86_64-unknown-linux-gnu/test/run-make/raw-dylib-elf/rmake_out/main.main.d17f5fbe6225cf88-cgu.0.rcgu.o` .text._RNvCshZ9kMv8z9bM_4main4main _RNvCshZ9kMv8z9bM_4main4main
  ORIG 0x00009b: [ 48 b9 00 00 00 00 00 00 00 00 ] movabs $0,%rcx
                         ^^^^^^^^^^^^^^^^^^^^^^^ R_X86_64_64
  ORIG global_variable
  wild 0x41953b: [ 48 b9 7c 3b 47 00 00 00 00 00 ] movabs $0x473B7C,%rcx
                         ^^^^^^^^^^^^^^^^^^^^^^^ R_X86_64_64 NoOp
  wild COPY(global_variable)
  wild TRACE: relocation applied flags=DYNAMIC | DIRECT | COPY_RELOCATION,
  wild TRACE: rel_kind=Absolute,
  wild TRACE: value=0x473b7c, symbol_name=global_variable
  ref  0x408b8b: [ 48 b9 70 c0 46 00 00 00 00 00 ] movabs $0x46C070,%rcx
                         ^^^^^^^^^^^^^^^^^^^^^^^ R_X86_64_64 NoOp
  ref  0x46c070 (symbol is undefined)

@mati865
Copy link
Member Author

mati865 commented Mar 9, 2026

(forgot to write about it in the previous comment)

I have no idea how we can deal with the unknown size. Perhaps we can somehow avoid direct access to raw-dylib statics?

@bjorn3
Copy link
Member

bjorn3 commented Mar 9, 2026

We can derive the size of statics from the type layout, right? We don't support unsized statics.

@mati865
Copy link
Member Author

mati865 commented Mar 9, 2026

Right, I feel so dumb. For some reason I thought that size of "string" objects would store the length of the underlying string rather than pointer size 🤦🏻‍♂️.

@mati865 mati865 marked this pull request as draft March 9, 2026 14:45
@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Mar 9, 2026
@mati865 mati865 force-pushed the elf-raw-dylib-static-and-tls branch from f8a5ba3 to 9cb0ca1 Compare March 9, 2026 18:16
@mati865 mati865 force-pushed the elf-raw-dylib-static-and-tls branch from 9cb0ca1 to 2e52da9 Compare March 9, 2026 18:24
@mati865
Copy link
Member Author

mati865 commented Mar 9, 2026

For some reason I thought that size of "string" objects would store the length of the underlying string rather than pointer size

To my defence, this is the case with char foo[] = "foo" strings, not with `char *foo = "foo". I have confused these.

Added size with implementation partially based on i686_arg_list_size and extended test with different relocation models and more types. Static relocation model is just a bombsite.

GNU ld doesn't look half bad, it didn't emit any copy relocations. One big issue standing out is putting data into .data.rel.ro but not producing relocations for them:

❯ readelf -Ws bin.ld | rg '(global|tls)_variable|const_(array|string)|:$'
Symbol table '.dynsym' contains 73 entries:
    39: 0000000000000000     0 TLS     GLOBAL DEFAULT  UND tls_variable
    70: 000000000046d038     8 OBJECT  GLOBAL DEFAULT   25 const_string
    71: 000000000046d040     4 OBJECT  GLOBAL DEFAULT   25 global_variable
    72: 000000000046d044    16 OBJECT  GLOBAL DEFAULT   25 const_array
Symbol table '.symtab' contains 1017 entries:
   749: 000000000046d038     8 OBJECT  GLOBAL DEFAULT   25 const_string
   817: 0000000000000000     0 TLS     GLOBAL DEFAULT  UND tls_variable
   923: 000000000046d040     4 OBJECT  GLOBAL DEFAULT   25 global_variable
   992: 000000000046d044    16 OBJECT  GLOBAL DEFAULT   25 const_array

❯ readelf -WS bin.ld | rg 'data\.rel\.ro|:$'
There are 34 section headers, starting at offset 0x90478:
Section Headers:
  [25] .data.rel.ro      PROGBITS        000000000046d038 06d038 004450 00  WA  0   0  8

❯ readelf -Wr bin.ld | rg '46d0|tls_variable|:$'
Relocation section '.rela.dyn' at offset 0x1100 contains 66 entries:
0000000000471b50  0000002700000012 R_X86_64_TPOFF64       0000000000000000 tls_variable + 0
Relocation section '.rela.plt' at offset 0x1730 contains 3 entries:

Somehow this works, except for const_string which crashes the program.

LLD didn't like our raw-dylib at all. With sizes set, it no longer rejects linkage, but it'd be better if it did rather than creating this abomination:

# Nice, clashing virtual addresses
❯ readelf -Ws bin.lld | rg '(global|tls)_variable|const_(array|string)|:$'
Symbol table '.dynsym' contains 73 entries:
     5: 0000000000000000     0 TLS     GLOBAL DEFAULT  UND tls_variable
    70: 000000000027449a     4 OBJECT  GLOBAL DEFAULT   30 global_variable
    71: 000000000027449a    16 OBJECT  GLOBAL DEFAULT   30 const_array
    72: 000000000027449a     8 OBJECT  GLOBAL DEFAULT   30 const_string
Symbol table '.symtab' contains 1279 entries:
   925: 000000000027449a     4 OBJECT  GLOBAL DEFAULT   30 global_variable
   926: 0000000000000000     0 TLS     GLOBAL DEFAULT  UND tls_variable
   929: 000000000027449a    16 OBJECT  GLOBAL DEFAULT   30 const_array
   930: 000000000027449a     8 OBJECT  GLOBAL DEFAULT   30 const_string

# 0x2743d0 + 0xce = 0x277449e (final offset of .bss)
❯ readelf -WS bin.lld | rg '\.bss|:$'
There are 35 section headers, starting at offset 0x91c38:
Section Headers:
  [30] .bss              NOBITS          00000000002743d0 0713d0 0000ce 00  WA  0   0  8

❯ readelf -Wr bin.lld | rg '449a|tls_variable|:$'
Relocation section '.rela.dyn' at offset 0x1078 contains 67 entries:
0000000000272048  0000000500000012 R_X86_64_TPOFF64       0000000000000000 tls_variable + 0
000000000027449a  0000004600000005 R_X86_64_COPY          000000000027449a global_variable + 0
Relocation section '.rela.plt' at offset 0x16c0 contains 3 entries:
00000000002729d8  0000004500000007 R_X86_64_JUMP_SLOT     000000000027449a this_is_a_library_function + 0

Yeah, this has zero chance of working.

Wild starts off with warnings when linking the same code:

WARNING: wild: Multiple non-weak symbols at the same address have copy relocations: symbol `const_string` (20984 local=5) in file #15365 (60/5) (/tmp/raw-elf/49/home/mateusz/Projects/rust/build/x86_64-unknown-linux-gnu/test/run-make/raw-dylib-elf/rmake_out/rustc8RupL2/raw-dylibs/libbivurdqliqxle18nnha8ay1b9.so) (DYNAMIC | DIRECT | COPY_RELOCATION), symbol `const_array` (20983 local=4) in file #15365 (60/5) (/tmp/raw-elf/49/home/mateusz/Projects/rust/build/x86_64-unknown-linux-gnu/test/run-make/raw-dylib-elf/rmake_out/rustc8RupL2/raw-dylibs/libbivurdqliqxle18nnha8ay1b9.so) (DYNAMIC | DIRECT | COPY_RELOCATION)
WARNING: wild: Multiple non-weak symbols at the same address have copy relocations: symbol `const_array` (20983 local=4) in file #15365 (60/5) (/tmp/raw-elf/49/home/mateusz/Projects/rust/build/x86_64-unknown-linux-gnu/test/run-make/raw-dylib-elf/rmake_out/rustc8RupL2/raw-dylibs/libbivurdqliqxle18nnha8ay1b9.so) (DYNAMIC | DIRECT | COPY_RELOCATION), symbol `global_variable` (20981 local=2) in file #15365 (60/5) (/tmp/raw-elf/49/home/mateusz/Projects/rust/build/x86_64-unknown-linux-gnu/test/run-make/raw-dylib-elf/rmake_out/rustc8RupL2/raw-dylibs/libbivurdqliqxle18nnha8ay1b9.so) (DYNAMIC | DIRECT | COPY_RELOCATION)

And looks like we have a deja vu:

❯ readelf -Ws bin.wild | rg '(global|tls)_variable|const_(array|string)|:$'
Symbol table '.dynsym' contains 72 entries:
    67: 00000000004748dc    16 OBJECT  GLOBAL DEFAULT   29 const_array
    68: 00000000004748dc     8 OBJECT  GLOBAL DEFAULT   29 const_string
    69: 00000000004748dc     4 OBJECT  GLOBAL DEFAULT   29 global_variable
    71: 00000000004748dc     4 TLS     GLOBAL DEFAULT   29 tls_variable
Symbol table '.symtab' contains 958 entries:
   953: 00000000004748dc     4 OBJECT  GLOBAL DEFAULT   29 global_variable
   954: 00000000004748dc     4 TLS     GLOBAL DEFAULT   29 tls_variable
   955: 00000000004748dc    16 OBJECT  GLOBAL DEFAULT   29 const_array
   956: 00000000004748dc     8 OBJECT  GLOBAL DEFAULT   29 const_string

# 0x474838 + 0xa8 = 0x4748e0 (final offset of .bss)
❯ readelf -WS bin.wild | rg '\.bss|:$'
There are 34 section headers, starting at offset 0x350:
Section Headers:
  [29] .bss              NOBITS          0000000000474838 071838 0000a8 00  WA  0   0  8

❯ readelf -Wr bin.wild | rg '48dc|tls_variable|:$'
Relocation section '.rela.dyn' at offset 0x1970 contains 69 entries:
00000000004748dc  0000004500000005 R_X86_64_COPY          00000000004748dc global_variable + 0
0000000000472e58  0000004700000012 R_X86_64_TPOFF64       00000000004748dc tls_variable + 0

How about making static relocation model unsupported for now (with an error emitted) and creating an issue to track fixing it?

@rust-log-analyzer
Copy link
Collaborator

The job x86_64-gnu-gcc failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
##[group]Runner Image Provisioner
Hosted Compute Agent
Version: 20260213.493
Commit: 5c115507f6dd24b8de37d8bbe0bb4509d0cc0fa3
Build Date: 2026-02-13T00:28:41Z
Worker ID: {760036c1-e692-4e79-808f-decf5003bf7c}
Azure Region: westcentralus
##[endgroup]
##[group]Operating System
Ubuntu
24.04.3
LTS
---
/dev/sda15      105M  6.2M   99M   6% /boot/efi
tmpfs           1.6G   12K  1.6G   1% /run/user/1001
================================================================================

Sufficient disk space available (95785508KB >= 52428800KB). Skipping cleanup.
##[group]Run echo "[CI_PR_NUMBER=$num]"
echo "[CI_PR_NUMBER=$num]"
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
---
---- [run-make] tests/run-make/raw-dylib-elf stdout ----

error: rmake recipe failed to complete
status: exit status: 1
command: cd "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/raw-dylib-elf/rmake_out" && env -u RUSTFLAGS -u __RUSTC_DEBUG_ASSERTIONS_ENABLED -u __STD_DEBUG_ASSERTIONS_ENABLED -u __STD_REMAP_DEBUGINFO_ENABLED AR="ar" BUILD_ROOT="/checkout/obj/build/x86_64-unknown-linux-gnu" CC="cc" CC_DEFAULT_FLAGS="-ffunction-sections -fdata-sections -fPIC -m64" CXX="c++" CXX_DEFAULT_FLAGS="-ffunction-sections -fdata-sections -fPIC -m64" HOST_RUSTC_DYLIB_PATH="/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib" LD_LIBRARY_PATH="/checkout/obj/build/x86_64-unknown-linux-gnu/bootstrap-tools/x86_64-unknown-linux-gnu/release/deps:/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/lib/rustlib/x86_64-unknown-linux-gnu/lib" LD_LIB_PATH_ENVVAR="LD_LIBRARY_PATH" LLVM_BIN_DIR="/checkout/obj/build/x86_64-unknown-linux-gnu/ci-llvm/bin" LLVM_COMPONENTS="aarch64 aarch64asmparser aarch64codegen aarch64desc aarch64disassembler aarch64info aarch64utils abi aggressiveinstcombine all all-targets amdgpu amdgpuasmparser amdgpucodegen amdgpudesc amdgpudisassembler amdgpuinfo amdgputargetmca amdgpuutils analysis arm armasmparser armcodegen armdesc armdisassembler arminfo armutils asmparser asmprinter avr avrasmparser avrcodegen avrdesc avrdisassembler avrinfo binaryformat bitreader bitstreamreader bitwriter bpf bpfasmparser bpfcodegen bpfdesc bpfdisassembler bpfinfo cas cfguard cgdata codegen codegentypes core coroutines coverage csky cskyasmparser cskycodegen cskydesc cskydisassembler cskyinfo debuginfobtf debuginfocodeview debuginfodwarf debuginfodwarflowlevel debuginfogsym debuginfologicalview debuginfomsf debuginfopdb demangle dlltooldriver dtlto dwarfcfichecker dwarflinker dwarflinkerclassic dwarflinkerparallel dwp engine executionengine extensions filecheck frontendatomic frontenddirective frontenddriver frontendhlsl frontendoffloading frontendopenacc frontendopenmp fuzzercli fuzzmutate globalisel hexagon hexagonasmparser hexagoncodegen hexagondesc hexagondisassembler hexagoninfo hipstdpar instcombine instrumentation interfacestub interpreter ipo irprinter irreader jitlink libdriver lineeditor linker loongarch loongarchasmparser loongarchcodegen loongarchdesc loongarchdisassembler loongarchinfo lto m68k m68kasmparser m68kcodegen m68kdesc m68kdisassembler m68kinfo mc mca mcdisassembler mcjit mcparser mips mipsasmparser mipscodegen mipsdesc mipsdisassembler mipsinfo mirparser msp430 msp430asmparser msp430codegen msp430desc msp430disassembler msp430info native nativecodegen nvptx nvptxcodegen nvptxdesc nvptxinfo objcarcopts objcopy object objectyaml option orcdebugging orcjit orcshared orctargetprocess passes plugins powerpc powerpcasmparser powerpccodegen powerpcdesc powerpcdisassembler powerpcinfo profiledata remarks riscv riscvasmparser riscvcodegen riscvdesc riscvdisassembler riscvinfo riscvtargetmca runtimedyld sandboxir scalaropts selectiondag sparc sparcasmparser sparccodegen sparcdesc sparcdisassembler sparcinfo support supportlsp symbolize systemz systemzasmparser systemzcodegen systemzdesc systemzdisassembler systemzinfo tablegen target targetparser telemetry textapi textapibinaryreader transformutils vectorize webassembly webassemblyasmparser webassemblycodegen webassemblydesc webassemblydisassembler webassemblyinfo webassemblyutils windowsdriver windowsmanifest x86 x86asmparser x86codegen x86desc x86disassembler x86info x86targetmca xray xtensa xtensaasmparser xtensacodegen xtensadesc xtensadisassembler xtensainfo" LLVM_FILECHECK="/checkout/obj/build/x86_64-unknown-linux-gnu/ci-llvm/bin/FileCheck" PYTHON="/usr/bin/python3" RUSTC="/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" RUSTDOC="/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustdoc" SOURCE_ROOT="/checkout" TARGET="x86_64-unknown-linux-gnu" TARGET_EXE_DYLIB_PATH="/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" __BOOTSTRAP_JOBS="4" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/raw-dylib-elf/rmake"
stdout: none
--- stderr -------------------------------
command failed at line 34
Command { cmd: LC_ALL="C" LD_LIBRARY_PATH="/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/raw-dylib-elf/rmake_out:/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib:/checkout/obj/build/x86_64-unknown-linux-gnu/bootstrap-tools/x86_64-unknown-linux-gnu/release/deps:/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/raw-dylib-elf/rmake_out/main-static", stdin_buf: None, stdin: None, stdout: None, stderr: None, drop_bomb: DropBomb { command: "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/raw-dylib-elf/rmake_out/main-static", defused: true, armed_location: Location { file: "/checkout/tests/run-make/raw-dylib-elf/rmake.rs", line: 34, column: 22 } }, already_executed: true, context: "" }
output status: `signal: 11 (SIGSEGV) (core dumped)`
=== STDOUT ===



=== STDERR ===
------------------------------------------

For more information how to resolve CI failures of this job, visit this link.

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

Labels

A-run-make Area: port run-make Makefiles to rmake.rs S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants