Skip to content

Commit 6ca5007

Browse files
committed
Read and store object section alignment
1 parent 3036803 commit 6ca5007

12 files changed

+345
-4
lines changed

objdiff-core/src/obj/mod.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ use alloc::{
99
vec,
1010
vec::Vec,
1111
};
12-
use core::{fmt, num::NonZeroU32};
12+
use core::{
13+
fmt,
14+
num::{NonZeroU32, NonZeroU64},
15+
};
1316

1417
use flagset::{FlagSet, flags};
1518

@@ -70,6 +73,7 @@ pub struct Section {
7073
pub kind: SectionKind,
7174
pub data: SectionData,
7275
pub flags: SectionFlagSet,
76+
pub align: Option<NonZeroU64>,
7377
pub relocations: Vec<Relocation>,
7478
/// Line number info (.line or .debug_line section)
7579
pub line_info: BTreeMap<u64, u32>,
@@ -363,6 +367,7 @@ static DUMMY_SECTION: Section = Section {
363367
kind: SectionKind::Unknown,
364368
data: SectionData(Vec::new()),
365369
flags: SectionFlagSet::empty(),
370+
align: None,
366371
relocations: Vec::new(),
367372
line_info: BTreeMap::new(),
368373
virtual_address: None,

objdiff-core/src/obj/read.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use alloc::{
44
string::{String, ToString},
55
vec::Vec,
66
};
7-
use core::cmp::Ordering;
7+
use core::{cmp::Ordering, num::NonZeroU64};
88

99
use anyhow::{Context, Result, anyhow, bail, ensure};
1010
use object::{Object as _, ObjectSection as _, ObjectSymbol as _};
@@ -257,6 +257,7 @@ fn map_sections(
257257
kind,
258258
data: SectionData(data),
259259
flags: Default::default(),
260+
align: NonZeroU64::new(section.align()),
260261
relocations: Default::default(),
261262
virtual_address,
262263
line_info: Default::default(),

objdiff-core/src/obj/snapshots/objdiff_core__obj__read__test__combine_sections.snap

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ expression: "(sections, symbols)"
1414
8,
1515
),
1616
flags: FlagSet(),
17+
align: None,
1718
relocations: [
1819
Relocation {
1920
flags: Elf(
@@ -53,6 +54,7 @@ expression: "(sections, symbols)"
5354
12,
5455
),
5556
flags: FlagSet(Combined),
57+
align: None,
5658
relocations: [
5759
Relocation {
5860
flags: Elf(
@@ -87,6 +89,7 @@ expression: "(sections, symbols)"
8789
0,
8890
),
8991
flags: FlagSet(Hidden),
92+
align: None,
9093
relocations: [],
9194
line_info: {},
9295
virtual_address: None,
@@ -101,6 +104,7 @@ expression: "(sections, symbols)"
101104
0,
102105
),
103106
flags: FlagSet(Hidden),
107+
align: None,
104108
relocations: [],
105109
line_info: {},
106110
virtual_address: None,

objdiff-core/tests/snapshots/arch_arm__read_arm.snap

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1519,6 +1519,9 @@ Object {
15191519
556,
15201520
),
15211521
flags: FlagSet(),
1522+
align: Some(
1523+
1,
1524+
),
15221525
relocations: [
15231526
Relocation {
15241527
flags: Elf(
@@ -1718,6 +1721,9 @@ Object {
17181721
0,
17191722
),
17201723
flags: FlagSet(),
1724+
align: Some(
1725+
4,
1726+
),
17211727
relocations: [],
17221728
line_info: {},
17231729
virtual_address: None,
@@ -1732,6 +1738,9 @@ Object {
17321738
76,
17331739
),
17341740
flags: FlagSet(),
1741+
align: Some(
1742+
1,
1743+
),
17351744
relocations: [
17361745
Relocation {
17371746
flags: Elf(
@@ -1883,6 +1892,9 @@ Object {
18831892
0,
18841893
),
18851894
flags: FlagSet(),
1895+
align: Some(
1896+
4,
1897+
),
18861898
relocations: [],
18871899
line_info: {},
18881900
virtual_address: None,
@@ -1897,6 +1909,9 @@ Object {
18971909
0,
18981910
),
18991911
flags: FlagSet(),
1912+
align: Some(
1913+
4,
1914+
),
19001915
relocations: [],
19011916
line_info: {},
19021917
virtual_address: None,
@@ -1911,6 +1926,9 @@ Object {
19111926
0,
19121927
),
19131928
flags: FlagSet(),
1929+
align: Some(
1930+
1,
1931+
),
19141932
relocations: [],
19151933
line_info: {},
19161934
virtual_address: None,
@@ -1925,6 +1943,9 @@ Object {
19251943
0,
19261944
),
19271945
flags: FlagSet(),
1946+
align: Some(
1947+
1,
1948+
),
19281949
relocations: [],
19291950
line_info: {},
19301951
virtual_address: None,

objdiff-core/tests/snapshots/arch_arm__read_thumb.snap

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3449,6 +3449,7 @@ Object {
34493449
0,
34503450
),
34513451
flags: FlagSet(),
3452+
align: None,
34523453
relocations: [],
34533454
line_info: {},
34543455
virtual_address: None,
@@ -3463,6 +3464,7 @@ Object {
34633464
0,
34643465
),
34653466
flags: FlagSet(),
3467+
align: None,
34663468
relocations: [],
34673469
line_info: {},
34683470
virtual_address: None,
@@ -3477,6 +3479,7 @@ Object {
34773479
0,
34783480
),
34793481
flags: FlagSet(),
3482+
align: None,
34803483
relocations: [],
34813484
line_info: {},
34823485
virtual_address: None,
@@ -3491,6 +3494,7 @@ Object {
34913494
0,
34923495
),
34933496
flags: FlagSet(),
3497+
align: None,
34943498
relocations: [],
34953499
line_info: {},
34963500
virtual_address: None,
@@ -3505,6 +3509,7 @@ Object {
35053509
0,
35063510
),
35073511
flags: FlagSet(),
3512+
align: None,
35083513
relocations: [],
35093514
line_info: {},
35103515
virtual_address: None,
@@ -3519,6 +3524,7 @@ Object {
35193524
0,
35203525
),
35213526
flags: FlagSet(),
3527+
align: None,
35223528
relocations: [],
35233529
line_info: {},
35243530
virtual_address: None,
@@ -3533,6 +3539,7 @@ Object {
35333539
0,
35343540
),
35353541
flags: FlagSet(),
3542+
align: None,
35363543
relocations: [],
35373544
line_info: {},
35383545
virtual_address: None,
@@ -3547,6 +3554,7 @@ Object {
35473554
0,
35483555
),
35493556
flags: FlagSet(),
3557+
align: None,
35503558
relocations: [],
35513559
line_info: {},
35523560
virtual_address: None,
@@ -3561,6 +3569,7 @@ Object {
35613569
0,
35623570
),
35633571
flags: FlagSet(),
3572+
align: None,
35643573
relocations: [],
35653574
line_info: {},
35663575
virtual_address: None,
@@ -3575,6 +3584,7 @@ Object {
35753584
0,
35763585
),
35773586
flags: FlagSet(),
3587+
align: None,
35783588
relocations: [],
35793589
line_info: {},
35803590
virtual_address: None,
@@ -3589,6 +3599,7 @@ Object {
35893599
0,
35903600
),
35913601
flags: FlagSet(),
3602+
align: None,
35923603
relocations: [],
35933604
line_info: {},
35943605
virtual_address: None,
@@ -3603,6 +3614,7 @@ Object {
36033614
0,
36043615
),
36053616
flags: FlagSet(),
3617+
align: None,
36063618
relocations: [],
36073619
line_info: {},
36083620
virtual_address: None,
@@ -3617,6 +3629,7 @@ Object {
36173629
0,
36183630
),
36193631
flags: FlagSet(),
3632+
align: None,
36203633
relocations: [],
36213634
line_info: {},
36223635
virtual_address: None,
@@ -3631,6 +3644,7 @@ Object {
36313644
0,
36323645
),
36333646
flags: FlagSet(),
3647+
align: None,
36343648
relocations: [],
36353649
line_info: {},
36363650
virtual_address: None,
@@ -3645,6 +3659,7 @@ Object {
36453659
0,
36463660
),
36473661
flags: FlagSet(),
3662+
align: None,
36483663
relocations: [],
36493664
line_info: {},
36503665
virtual_address: None,
@@ -3659,6 +3674,7 @@ Object {
36593674
0,
36603675
),
36613676
flags: FlagSet(),
3677+
align: None,
36623678
relocations: [],
36633679
line_info: {},
36643680
virtual_address: None,
@@ -3673,6 +3689,7 @@ Object {
36733689
0,
36743690
),
36753691
flags: FlagSet(),
3692+
align: None,
36763693
relocations: [],
36773694
line_info: {},
36783695
virtual_address: None,
@@ -3687,6 +3704,9 @@ Object {
36873704
244,
36883705
),
36893706
flags: FlagSet(),
3707+
align: Some(
3708+
4,
3709+
),
36903710
relocations: [
36913711
Relocation {
36923712
flags: Elf(
@@ -3797,6 +3817,7 @@ Object {
37973817
0,
37983818
),
37993819
flags: FlagSet(),
3820+
align: None,
38003821
relocations: [],
38013822
line_info: {},
38023823
virtual_address: None,

0 commit comments

Comments
 (0)