diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2021-12-19 17:38:35 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-19 17:38:35 +0100 |
| commit | 9415c67ae55d6da8640303776e96b68b79c3a0d0 (patch) | |
| tree | 6186457f6f9a872bdd22a7e8ec56288a7aef36a1 /compiler/rustc_codegen_ssa/src/back | |
| parent | fba0d04d306462b25f7768b39756e7f82fc92318 (diff) | |
| parent | 79d53096041c05db5f54a0fdf0b0dae4fe48ccec (diff) | |
| download | rust-9415c67ae55d6da8640303776e96b68b79c3a0d0.tar.gz rust-9415c67ae55d6da8640303776e96b68b79c3a0d0.zip | |
Rollup merge of #92029 - nikic:section-flags-fix, r=davidtwco
Explicitly set no ELF flags for .rustc section For a data section, the object crate will set the SHF_ALLOC by default, which is exactly what we don't want. Explicitly set sh_flags to zero to avoid this. I checked with `objdump -h` that this produces the right flags for ELF. Fixes #92013.
Diffstat (limited to 'compiler/rustc_codegen_ssa/src/back')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/back/metadata.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/metadata.rs b/compiler/rustc_codegen_ssa/src/back/metadata.rs index 1df5540e3b8..7c97143e807 100644 --- a/compiler/rustc_codegen_ssa/src/back/metadata.rs +++ b/compiler/rustc_codegen_ssa/src/back/metadata.rs @@ -259,8 +259,15 @@ pub fn create_compressed_metadata_file( let section = file.add_section( file.segment_name(StandardSegment::Data).to_vec(), b".rustc".to_vec(), - SectionKind::Data, + SectionKind::ReadOnlyData, ); + match file.format() { + BinaryFormat::Elf => { + // Explicitly set no flags to avoid SHF_ALLOC default for data section. + file.section_mut(section).flags = SectionFlags::Elf { sh_flags: 0 }; + } + _ => {} + }; let offset = file.append_section_data(section, &compressed, 1); // For MachO and probably PE this is necessary to prevent the linker from throwing away the |
