Skip to content

Commit 24305ac

Browse files
authored
Bump gimli, goblin, scroll, and edition (#556)
1 parent f7996fa commit 24305ac

12 files changed

Lines changed: 83 additions & 74 deletions

File tree

.github/workflows/ci.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
- uses: actions-rs/toolchain@v1
2929
with:
3030
profile: minimal
31-
toolchain: "1.82" # must match Cargo.toml
31+
toolchain: "1.85" # must match Cargo.toml
3232
override: true
3333
- uses: Swatinem/rust-cache@v1
3434
- uses: actions-rs/cargo@v1

Cargo.lock

Lines changed: 36 additions & 24 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ members = [
8181
resolver = "2"
8282

8383
[workspace.package]
84-
rust-version = "1.82" # if this changes, edit ci.yaml as well!
84+
edition = "2024"
85+
rust-version = "1.85" # if this changes, edit ci.yaml as well!
8586

8687
[workspace.dependencies]
8788
# `git`-based deps
@@ -204,9 +205,9 @@ crossterm = "0.20.0"
204205
csv = "1.1.3"
205206
ctrlc = "3.1.5"
206207
env_logger = "0.9.0"
207-
fallible-iterator = "0.2.0"
208-
gimli = "0.22.0"
209-
goblin = "0.2"
208+
fallible-iterator = "0.3.0"
209+
gimli = "0.32.0"
210+
goblin = "0.10"
210211
hubpack = "0.1.1"
211212
ihex = "3.0"
212213
indexmap = { version = "1.7", features = ["serde-1"] }
@@ -237,7 +238,7 @@ regex = "1.5.5"
237238
ron = "0.7"
238239
rusb = "0.8.1"
239240
rustc-demangle = "0.1.21"
240-
scroll = "0.10"
241+
scroll = "0.13"
241242
serde = { version = "1.0.126", features = ["derive"] }
242243
serde_json = "1.0"
243244
serde-xml-rs = "0.5.1"

cmd/counters/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,6 @@ enum Subcmd {
280280
///
281281
/// * "json": outputs counters in JSON format, suitable for use with
282282
/// other tools.
283-
284283
#[clap(long, short, value_enum, default_value_t = Output::Text)]
285284
output: Output,
286285
},

cmd/debugmailbox/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ fn write_req<'a>(
238238
}
239239

240240
while response_len > 0 {
241-
write_request_reg(probe, addr, response_len << 16 | ACK_TOKEN)
241+
write_request_reg(probe, addr, (response_len << 16) | ACK_TOKEN)
242242
.context("ACKing response data")?;
243243

244244
let b = read_return(probe, addr).context("Reading response data")?;

cmd/rendmp/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1169,8 +1169,8 @@ fn get_pin_states(
11691169
let (open, mask) = match dev {
11701170
SupportedDevice::ISL68224 => (values[0] as u64, values[1] as u64),
11711171
SupportedDevice::RAA229618 => {
1172-
let open = values[0] as u64 | (values[1] as u64) << 32;
1173-
let mask = values[2] as u64 | (values[3] as u64) << 32;
1172+
let open = values[0] as u64 | ((values[1] as u64) << 32);
1173+
let mask = values[2] as u64 | ((values[3] as u64) << 32);
11741174
(open, mask)
11751175
}
11761176
};

cmd/sbrmi/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ fn cpuid(
188188
context: &'a mut HiffyContext<'b>,
189189
thread: u8,
190190
}
191-
impl<'a, 'b> SbrmiWorkspace<'a, 'b> {
191+
impl SbrmiWorkspace<'_, '_> {
192192
fn cpuid2(&mut self, eax: u32, ecx: u32) -> raw_cpuid::CpuIdResult {
193193
match call_cpuid(
194194
self.hubris,
@@ -214,7 +214,7 @@ fn cpuid(
214214
struct WorkspaceRef<'a, 'b> {
215215
cell: Rc<RefCell<SbrmiWorkspace<'a, 'b>>>,
216216
}
217-
impl<'a, 'b> raw_cpuid::CpuIdReader for WorkspaceRef<'a, 'b> {
217+
impl raw_cpuid::CpuIdReader for WorkspaceRef<'_, '_> {
218218
fn cpuid2(&self, eax: u32, ecx: u32) -> raw_cpuid::CpuIdResult {
219219
let mut r = self.cell.borrow_mut();
220220
r.cpuid2(eax, ecx)

cmd/sensors/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ impl<'a> HiffySensorReader<'a> {
293293
}
294294
}
295295

296-
impl<'a> SensorReader for HiffySensorReader<'a> {
296+
impl SensorReader for HiffySensorReader<'_> {
297297
fn run(
298298
&mut self,
299299
_hubris: &HubrisArchive,

humility-core/src/hubris.rs

Lines changed: 31 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2900,7 +2900,7 @@ impl HubrisArchive {
29002900

29012901
loop {
29022902
let bases = gimli::BaseAddresses::default();
2903-
let mut ctx = gimli::UninitializedUnwindContext::new();
2903+
let mut ctx = gimli::UnwindContext::new();
29042904
let pc = *frameregs.get(&ARMRegister::PC).unwrap();
29052905

29062906
//
@@ -3899,7 +3899,7 @@ impl HubrisObjectLoader {
38993899
}
39003900

39013901
let text = elf.section_headers.iter().find(|sh| {
3902-
if let Some(Ok(name)) = elf.shdr_strtab.get(sh.sh_name) {
3902+
if let Some(name) = elf.shdr_strtab.get_at(sh.sh_name) {
39033903
name == ".text"
39043904
} else {
39053905
false
@@ -3933,11 +3933,8 @@ impl HubrisObjectLoader {
39333933
continue;
39343934
}
39353935

3936-
let name = match elf.strtab.get(sym.st_name) {
3937-
Some(n) => n?,
3938-
None => {
3939-
bail!("bad symbol in {}: {}", object, sym.st_name);
3940-
}
3936+
let Some(name) = elf.strtab.get_at(sym.st_name) else {
3937+
bail!("bad symbol in {}: {}", object, sym.st_name);
39413938
};
39423939

39433940
//
@@ -4061,7 +4058,7 @@ impl HubrisObjectLoader {
40614058

40624059
if task == HubrisTask::Kernel {
40634060
let apptable = elf.section_headers.iter().find(|sh| {
4064-
if let Some(Ok(name)) = elf.shdr_strtab.get(sh.sh_name) {
4061+
if let Some(name) = elf.shdr_strtab.get_at(sh.sh_name) {
40654062
name == ".hubris_app_table"
40664063
} else {
40674064
false
@@ -4211,32 +4208,28 @@ impl HubrisObjectLoader {
42114208
) -> Result<()> {
42124209
// Load all of the sections. This "load" operation just gets the data in
42134210
// RAM -- since we've already loaded the Elf file, this can't fail.
4214-
let dwarf = gimli::Dwarf::<&[u8]>::load(
4211+
let loader = |id: gimli::SectionId| {
42154212
// Load the normal DWARF section(s) from our Elf image.
4216-
|id| {
4217-
let sec_result = elf.section_headers.iter().find(|sh| {
4218-
if let Some(Ok(name)) = elf.shdr_strtab.get(sh.sh_name) {
4219-
name == id.name()
4220-
} else {
4221-
false
4222-
}
4223-
});
4224-
if let Some(sec) = sec_result {
4225-
let offset = sec.sh_offset as usize;
4226-
let size = sec.sh_size as usize;
4227-
buffer.get(offset..offset + size).ok_or_else(|| {
4228-
anyhow!("bad offset/size for ELF section {}", id.name())
4229-
})
4213+
let sec_result = elf.section_headers.iter().find(|sh| {
4214+
if let Some(name) = elf.shdr_strtab.get_at(sh.sh_name) {
4215+
name == id.name()
42304216
} else {
4231-
Ok(&[])
4217+
false
42324218
}
4233-
},
4234-
// We don't have a supplemental object file.
4235-
|_| Ok(&[]),
4236-
)?;
4219+
});
4220+
if let Some(sec) = sec_result {
4221+
let offset = sec.sh_offset as usize;
4222+
let size = sec.sh_size as usize;
4223+
buffer.get(offset..offset + size).ok_or_else(|| {
4224+
anyhow!("bad offset/size for ELF section {}", id.name())
4225+
})
4226+
} else {
4227+
Ok([].as_slice())
4228+
}
4229+
};
42374230

4238-
// Borrow all sections wrapped in EndianSlices
4239-
let dwarf = dwarf.borrow(|section| {
4231+
let dwarf_sections = gimli::DwarfSections::load(loader)?;
4232+
let dwarf: gimli::Dwarf<_> = dwarf_sections.borrow(|section| {
42404233
gimli::EndianSlice::new(section, gimli::LittleEndian)
42414234
});
42424235

@@ -4416,7 +4409,7 @@ impl HubrisObjectLoader {
44164409
.section_headers
44174410
.iter()
44184411
.find(|sh| {
4419-
if let Some(Ok(name)) = elf.shdr_strtab.get(sh.sh_name) {
4412+
if let Some(name) = elf.shdr_strtab.get_at(sh.sh_name) {
44204413
name == id
44214414
} else {
44224415
false
@@ -4445,7 +4438,7 @@ impl HubrisObjectLoader {
44454438
// If we have an idolatry definition, load that.
44464439
//
44474440
let idol = elf.section_headers.iter().find(|sh| {
4448-
if let Some(Ok(name)) = elf.shdr_strtab.get(sh.sh_name) {
4441+
if let Some(name) = elf.shdr_strtab.get_at(sh.sh_name) {
44494442
name == ".idolatry"
44504443
} else {
44514444
false
@@ -5326,7 +5319,10 @@ impl HubrisObjectLoader {
53265319
gimli::AttributeValue::RangeListsRef(r),
53275320
) = (attr.name(), attr.value())
53285321
{
5329-
let raw_ranges = dwarf.ranges.raw_ranges(r, unit.encoding())?;
5322+
let raw_ranges = dwarf.ranges.raw_ranges(
5323+
gimli::RangeListsOffset(r.0),
5324+
unit.encoding(),
5325+
)?;
53305326
let raw_ranges: Vec<_> = raw_ranges.collect()?;
53315327

53325328
for r in raw_ranges {
@@ -6333,7 +6329,7 @@ impl<'a> From<&'a HubrisUnion> for HubrisType<'a> {
63336329
}
63346330
}
63356331

6336-
impl<'a> std::fmt::Display for HubrisType<'a> {
6332+
impl std::fmt::Display for HubrisType<'_> {
63376333
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
63386334
match self {
63396335
HubrisType::Struct(ty) => write!(f, "struct {}", ty.name),
@@ -6365,6 +6361,7 @@ pub struct HubrisStackSymbol<'a> {
63656361

63666362
#[derive(Clone, Debug)]
63676363
pub struct HubrisStackFrame<'a> {
6364+
/// Canonical frame address
63686365
pub cfa: u32,
63696366
pub sym: Option<HubrisStackSymbol<'a>>,
63706367
pub registers: BTreeMap<ARMRegister, u32>,

humility-dump-agent/src/hiffy.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ impl<'a> HiffyDumpAgent<'a> {
5959
}
6060
}
6161

62-
impl<'a> DumpAgent for HiffyDumpAgent<'a> {
62+
impl DumpAgent for HiffyDumpAgent<'_> {
6363
fn core(&mut self) -> &mut dyn Core {
6464
self.core
6565
}

0 commit comments

Comments
 (0)