Combine data/text sections: Pad sections to alignment (#197)

* Combine data/text sections: Pad all sections to 4-byte minimum alignment

* Update x86 test snapshot

* Read and store object section alignment

* Combine data/text sections: Pad sections to more than 4-byte alignment if they have alignment specified
This commit is contained in:
LagoLunatic 2025-05-06 23:47:08 -04:00 committed by GitHub
parent d0e6c5c057
commit f263e490e3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 431 additions and 65 deletions

View File

@ -9,7 +9,10 @@ use alloc::{
vec,
vec::Vec,
};
use core::{fmt, num::NonZeroU32};
use core::{
fmt,
num::{NonZeroU32, NonZeroU64},
};
use flagset::{FlagSet, flags};
@ -70,6 +73,7 @@ pub struct Section {
pub kind: SectionKind,
pub data: SectionData,
pub flags: SectionFlagSet,
pub align: Option<NonZeroU64>,
pub relocations: Vec<Relocation>,
/// Line number info (.line or .debug_line section)
pub line_info: BTreeMap<u64, u32>,
@ -105,6 +109,12 @@ impl Section {
}
}
// The alignment to use when "Combine data/text sections" is enabled.
pub fn combined_alignment(&self) -> u64 {
const MIN_ALIGNMENT: u64 = 4;
self.align.map(|align| align.get().max(MIN_ALIGNMENT)).unwrap_or(MIN_ALIGNMENT)
}
pub fn relocation_at<'obj>(
&'obj self,
obj: &'obj Object,
@ -363,6 +373,7 @@ static DUMMY_SECTION: Section = Section {
kind: SectionKind::Unknown,
data: SectionData(Vec::new()),
flags: SectionFlagSet::empty(),
align: None,
relocations: Vec::new(),
line_info: BTreeMap::new(),
virtual_address: None,

View File

@ -4,7 +4,7 @@ use alloc::{
string::{String, ToString},
vec::Vec,
};
use core::cmp::Ordering;
use core::{cmp::Ordering, num::NonZeroU64};
use anyhow::{Context, Result, anyhow, bail, ensure};
use object::{Object as _, ObjectSection as _, ObjectSymbol as _};
@ -17,7 +17,7 @@ use crate::{
Symbol, SymbolFlag, SymbolKind,
split_meta::{SPLITMETA_SECTION, SplitMeta},
},
util::{read_u16, read_u32},
util::{align_data_slice_to, align_u64_to, read_u16, read_u32},
};
fn map_section_kind(section: &object::Section) -> SectionKind {
@ -257,6 +257,7 @@ fn map_sections(
kind,
data: SectionData(data),
flags: Default::default(),
align: NonZeroU64::new(section.align()),
relocations: Default::default(),
virtual_address,
line_info: Default::default(),
@ -739,7 +740,10 @@ fn do_combine_sections(
}
offsets.push(current_offset);
current_offset += section.size;
let align = section.combined_alignment();
current_offset = align_u64_to(current_offset, align);
data_size += section.data.len();
data_size = align_u64_to(data_size as u64, align) as usize;
num_relocations += section.relocations.len();
}
if data_size > 0 {
@ -754,6 +758,7 @@ fn do_combine_sections(
let section = &mut sections[i];
section.size = 0;
data.append(&mut section.data.0);
align_data_slice_to(&mut data, section.combined_alignment());
section.relocations.iter_mut().for_each(|r| r.address += offset);
relocations.append(&mut section.relocations);
line_info.append(&mut section.line_info.iter().map(|(&a, &l)| (a + offset, l)).collect());

View File

@ -14,6 +14,7 @@ expression: "(sections, symbols)"
8,
),
flags: FlagSet(),
align: None,
relocations: [
Relocation {
flags: Elf(
@ -53,6 +54,7 @@ expression: "(sections, symbols)"
12,
),
flags: FlagSet(Combined),
align: None,
relocations: [
Relocation {
flags: Elf(
@ -87,6 +89,7 @@ expression: "(sections, symbols)"
0,
),
flags: FlagSet(Hidden),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -101,6 +104,7 @@ expression: "(sections, symbols)"
0,
),
flags: FlagSet(Hidden),
align: None,
relocations: [],
line_info: {},
virtual_address: None,

View File

@ -3,6 +3,10 @@ use alloc::{string::String, vec, vec::Vec};
use anyhow::{Result, anyhow};
use object::{Endian, ObjectSection, elf::SHT_NOTE};
#[cfg(feature = "std")]
use crate::util::align_data_to_4;
use crate::util::align_size_to_4;
pub const SPLITMETA_SECTION: &str = ".note.split";
pub const SHT_SPLITMETA: u32 = SHT_NOTE;
pub const ELF_NOTE_SPLIT: &[u8] = b"Split";
@ -190,17 +194,6 @@ where E: Endian
}
}
fn align_size_to_4(size: usize) -> usize { (size + 3) & !3 }
#[cfg(feature = "std")]
fn align_data_to_4<W: std::io::Write + ?Sized>(writer: &mut W, len: usize) -> std::io::Result<()> {
const ALIGN_BYTES: &[u8] = &[0; 4];
if len % 4 != 0 {
writer.write_all(&ALIGN_BYTES[..4 - len % 4])?;
}
Ok(())
}
// ELF note format:
// Name Size | 4 bytes (integer)
// Desc Size | 4 bytes (integer)

View File

@ -1,4 +1,4 @@
use alloc::format;
use alloc::{format, vec::Vec};
use core::fmt;
use anyhow::{Result, ensure};
@ -39,3 +39,24 @@ pub fn read_u16(obj_file: &object::File, reader: &mut &[u8]) -> Result<u16> {
*reader = &reader[2..];
Ok(obj_file.endianness().read_u16(value))
}
pub fn align_size_to_4(size: usize) -> usize { (size + 3) & !3 }
#[cfg(feature = "std")]
pub fn align_data_to_4<W: std::io::Write + ?Sized>(
writer: &mut W,
len: usize,
) -> std::io::Result<()> {
const ALIGN_BYTES: &[u8] = &[0; 4];
if len % 4 != 0 {
writer.write_all(&ALIGN_BYTES[..4 - len % 4])?;
}
Ok(())
}
pub fn align_u64_to(len: u64, align: u64) -> u64 { len + ((align - (len % align)) % align) }
pub fn align_data_slice_to(data: &mut Vec<u8>, align: u64) {
const ALIGN_BYTE: u8 = 0;
data.resize(align_u64_to(data.len() as u64, align) as usize, ALIGN_BYTE);
}

View File

@ -1519,6 +1519,9 @@ Object {
556,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [
Relocation {
flags: Elf(
@ -1718,6 +1721,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1732,6 +1738,9 @@ Object {
76,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [
Relocation {
flags: Elf(
@ -1883,6 +1892,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1897,6 +1909,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1911,6 +1926,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1925,6 +1943,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,

View File

@ -3449,6 +3449,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3463,6 +3464,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3477,6 +3479,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3491,6 +3494,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3505,6 +3509,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3519,6 +3524,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3533,6 +3539,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3547,6 +3554,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3561,6 +3569,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3575,6 +3584,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3589,6 +3599,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3603,6 +3614,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3617,6 +3629,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3631,6 +3644,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3645,6 +3659,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3659,6 +3674,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3673,6 +3689,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,
@ -3687,6 +3704,9 @@ Object {
244,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [
Relocation {
flags: Elf(
@ -3797,6 +3817,7 @@ Object {
0,
),
flags: FlagSet(),
align: None,
relocations: [],
line_info: {},
virtual_address: None,

View File

@ -683,6 +683,9 @@ Object {
632,
),
flags: FlagSet(),
align: Some(
8,
),
relocations: [
Relocation {
flags: Elf(
@ -1306,6 +1309,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1320,6 +1326,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1334,6 +1343,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1348,6 +1360,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1362,6 +1377,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1376,6 +1394,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1390,6 +1411,9 @@ Object {
43,
),
flags: FlagSet(),
align: Some(
8,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1404,6 +1428,9 @@ Object {
76,
),
flags: FlagSet(),
align: Some(
8,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1418,6 +1445,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1432,6 +1462,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1446,6 +1479,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,

View File

@ -317,6 +317,9 @@ Object {
552,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [
Relocation {
flags: Elf(
@ -340,6 +343,9 @@ Object {
40,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [
Relocation {
flags: Elf(
@ -363,6 +369,9 @@ Object {
36,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [
Relocation {
flags: Elf(
@ -426,6 +435,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -440,6 +452,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -454,6 +469,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -468,6 +486,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -482,6 +503,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -496,6 +520,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -510,6 +537,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,

View File

@ -1,6 +1,5 @@
---
source: objdiff-core/tests/arch_ppc.rs
assertion_line: 14
expression: obj
---
Object {
@ -167,6 +166,9 @@ Object {
284,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [
Relocation {
flags: Elf(
@ -392,6 +394,9 @@ Object {
4,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [
Relocation {
flags: Elf(
@ -417,6 +422,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
8,
),
relocations: [],
line_info: {},
virtual_address: Some(
@ -433,6 +441,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -447,6 +458,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -461,6 +475,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -475,6 +492,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -489,6 +509,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -503,6 +526,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -517,6 +543,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,

View File

@ -136,6 +136,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -150,6 +153,9 @@ Object {
10,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [
Relocation {
flags: Coff(
@ -173,6 +179,9 @@ Object {
18,
),
flags: FlagSet(),
align: Some(
16,
),
relocations: [
Relocation {
flags: Coff(

View File

@ -866,6 +866,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -880,6 +883,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -894,6 +900,9 @@ Object {
429,
),
flags: FlagSet(),
align: Some(
16,
),
relocations: [
Relocation {
flags: Coff(
@ -1029,6 +1038,9 @@ Object {
141,
),
flags: FlagSet(),
align: Some(
16,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1043,6 +1055,9 @@ Object {
87,
),
flags: FlagSet(),
align: Some(
16,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1057,6 +1072,9 @@ Object {
105,
),
flags: FlagSet(),
align: Some(
16,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1071,6 +1089,9 @@ Object {
82,
),
flags: FlagSet(),
align: Some(
16,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1085,6 +1106,9 @@ Object {
8,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1099,6 +1123,9 @@ Object {
12,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [
Relocation {
flags: Coff(
@ -1138,6 +1165,9 @@ Object {
8,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1152,6 +1182,9 @@ Object {
12,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [
Relocation {
flags: Coff(
@ -1191,6 +1224,9 @@ Object {
8,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1205,6 +1241,9 @@ Object {
12,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [
Relocation {
flags: Coff(
@ -1244,6 +1283,9 @@ Object {
8,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1258,6 +1300,9 @@ Object {
12,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [
Relocation {
flags: Coff(
@ -1297,6 +1342,9 @@ Object {
256,
),
flags: FlagSet(),
align: Some(
16,
),
relocations: [
Relocation {
flags: Coff(
@ -1344,6 +1392,9 @@ Object {
20,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [
Relocation {
flags: Coff(
@ -1367,6 +1418,9 @@ Object {
12,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [
Relocation {
flags: Coff(
@ -1406,6 +1460,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1420,6 +1477,9 @@ Object {
8,
),
flags: FlagSet(),
align: Some(
8,
),
relocations: [
Relocation {
flags: Coff(
@ -1443,6 +1503,9 @@ Object {
8,
),
flags: FlagSet(),
align: Some(
8,
),
relocations: [
Relocation {
flags: Coff(
@ -1466,6 +1529,9 @@ Object {
4,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1480,6 +1546,9 @@ Object {
4,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -1494,6 +1563,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
16,
),
relocations: [],
line_info: {},
virtual_address: None,

View File

@ -13,6 +13,9 @@ expression: obj.sections
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -27,6 +30,9 @@ expression: obj.sections
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -41,6 +47,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -55,6 +64,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -69,6 +81,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
16,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -83,6 +98,9 @@ expression: obj.sections
56,
),
flags: FlagSet(Combined),
align: Some(
4,
),
relocations: [
Relocation {
flags: Coff(
@ -132,12 +150,15 @@ expression: obj.sections
id: ".rdata-combined",
name: ".rdata",
address: 0,
size: 295,
size: 304,
kind: Data,
data: SectionData(
295,
304,
),
flags: FlagSet(Combined),
align: Some(
4,
),
relocations: [
Relocation {
flags: Coff(
@ -159,7 +180,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 21,
address: 24,
target_symbol: 13,
addend: 0,
},
@ -167,7 +188,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 45,
address: 48,
target_symbol: 15,
addend: 0,
},
@ -175,7 +196,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 61,
address: 64,
target_symbol: 25,
addend: 0,
},
@ -183,7 +204,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 65,
address: 68,
target_symbol: 27,
addend: 0,
},
@ -191,7 +212,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 70,
address: 76,
target_symbol: 21,
addend: 0,
},
@ -199,7 +220,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 94,
address: 100,
target_symbol: 23,
addend: 0,
},
@ -207,7 +228,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 110,
address: 116,
target_symbol: 31,
addend: 0,
},
@ -215,7 +236,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 114,
address: 120,
target_symbol: 33,
addend: 0,
},
@ -223,7 +244,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 130,
address: 136,
target_symbol: 35,
addend: 0,
},
@ -231,7 +252,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 134,
address: 140,
target_symbol: 37,
addend: 0,
},
@ -239,7 +260,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 138,
address: 144,
target_symbol: 19,
addend: 0,
},
@ -247,7 +268,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 142,
address: 148,
target_symbol: 39,
addend: 0,
},
@ -255,7 +276,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 147,
address: 156,
target_symbol: 31,
addend: 0,
},
@ -263,7 +284,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 171,
address: 180,
target_symbol: 33,
addend: 0,
},
@ -271,7 +292,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 175,
address: 184,
target_symbol: 21,
addend: 0,
},
@ -279,7 +300,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 199,
address: 208,
target_symbol: 23,
addend: 0,
},
@ -287,7 +308,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 215,
address: 224,
target_symbol: 31,
addend: 0,
},
@ -295,7 +316,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 219,
address: 228,
target_symbol: 33,
addend: 0,
},
@ -303,7 +324,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 235,
address: 244,
target_symbol: 13,
addend: 0,
},
@ -311,7 +332,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 239,
address: 248,
target_symbol: 15,
addend: 0,
},
@ -319,7 +340,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 255,
address: 264,
target_symbol: 21,
addend: 0,
},
@ -327,7 +348,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 259,
address: 268,
target_symbol: 23,
addend: 0,
},
@ -335,7 +356,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 263,
address: 272,
target_symbol: 29,
addend: 0,
},
@ -343,7 +364,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 267,
address: 276,
target_symbol: 11,
addend: 0,
},
@ -351,7 +372,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 271,
address: 280,
target_symbol: 43,
addend: 0,
},
@ -359,7 +380,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 275,
address: 284,
target_symbol: 41,
addend: 0,
},
@ -367,7 +388,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 279,
address: 288,
target_symbol: 70,
addend: 0,
},
@ -375,7 +396,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 283,
address: 292,
target_symbol: 56,
addend: 0,
},
@ -383,7 +404,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 287,
address: 296,
target_symbol: 72,
addend: 0,
},
@ -391,7 +412,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 291,
address: 300,
target_symbol: 59,
addend: 0,
},
@ -409,6 +430,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -423,6 +447,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -437,6 +464,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -451,6 +481,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -465,6 +498,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -479,6 +515,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -493,6 +532,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -507,6 +549,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -521,6 +566,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -535,6 +583,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -549,6 +600,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -563,6 +617,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -577,6 +634,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -591,6 +651,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -605,6 +668,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
16,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -619,6 +685,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
16,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -633,6 +702,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
16,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -647,6 +719,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
16,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -661,6 +736,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
16,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -669,12 +747,15 @@ expression: obj.sections
id: ".text-combined",
name: ".text",
address: 0,
size: 268,
size: 320,
kind: Code,
data: SectionData(
268,
320,
),
flags: FlagSet(Combined),
align: Some(
16,
),
relocations: [
Relocation {
flags: Coff(
@ -696,7 +777,7 @@ expression: obj.sections
flags: Coff(
20,
),
address: 29,
address: 43,
target_symbol: 60,
addend: 0,
},
@ -704,7 +785,7 @@ expression: obj.sections
flags: Coff(
20,
),
address: 48,
address: 62,
target_symbol: 52,
addend: 0,
},
@ -712,7 +793,7 @@ expression: obj.sections
flags: Coff(
20,
),
address: 68,
address: 84,
target_symbol: 11,
addend: 0,
},
@ -720,7 +801,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 84,
address: 100,
target_symbol: 64,
addend: 0,
},
@ -728,7 +809,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 104,
address: 124,
target_symbol: 66,
addend: 0,
},
@ -736,7 +817,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 124,
address: 156,
target_symbol: 6,
addend: 0,
},
@ -744,7 +825,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 134,
address: 166,
target_symbol: 8,
addend: 0,
},
@ -752,7 +833,7 @@ expression: obj.sections
flags: Coff(
20,
),
address: 145,
address: 177,
target_symbol: 57,
addend: 0,
},
@ -760,7 +841,7 @@ expression: obj.sections
flags: Coff(
20,
),
address: 153,
address: 185,
target_symbol: 54,
addend: 0,
},
@ -768,7 +849,7 @@ expression: obj.sections
flags: Coff(
20,
),
address: 172,
address: 219,
target_symbol: 54,
addend: 0,
},
@ -776,7 +857,7 @@ expression: obj.sections
flags: Coff(
20,
),
address: 191,
address: 238,
target_symbol: 52,
addend: 0,
},
@ -784,7 +865,7 @@ expression: obj.sections
flags: Coff(
20,
),
address: 218,
address: 267,
target_symbol: 57,
addend: 0,
},
@ -792,7 +873,7 @@ expression: obj.sections
flags: Coff(
20,
),
address: 237,
address: 286,
target_symbol: 52,
addend: 0,
},
@ -800,7 +881,7 @@ expression: obj.sections
flags: Coff(
6,
),
address: 257,
address: 308,
target_symbol: 68,
addend: 0,
},
@ -808,7 +889,7 @@ expression: obj.sections
flags: Coff(
20,
),
address: 262,
address: 313,
target_symbol: 60,
addend: 0,
},
@ -826,6 +907,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
16,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -840,6 +924,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -854,6 +941,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -868,6 +958,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -882,6 +975,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -896,6 +992,9 @@ expression: obj.sections
0,
),
flags: FlagSet(Hidden),
align: Some(
4,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -910,6 +1009,9 @@ expression: obj.sections
4,
),
flags: FlagSet(),
align: Some(
4,
),
relocations: [
Relocation {
flags: Coff(
@ -933,6 +1035,9 @@ expression: obj.sections
0,
),
flags: FlagSet(),
align: Some(
16,
),
relocations: [],
line_info: {},
virtual_address: None,

View File

@ -201,6 +201,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,
@ -215,6 +218,9 @@ Object {
96,
),
flags: FlagSet(),
align: Some(
16,
),
relocations: [
Relocation {
flags: Coff(
@ -294,6 +300,9 @@ Object {
0,
),
flags: FlagSet(),
align: Some(
1,
),
relocations: [],
line_info: {},
virtual_address: None,