Skip to content

Commit ff6bdd9

Browse files
authored
Merge pull request #183 from LedgerHQ/ironfish
updates HEAP_SIZE to be configurable for embedded alloc
2 parents 944818d + 7efb784 commit ff6bdd9

File tree

5 files changed

+23
-6
lines changed

5 files changed

+23
-6
lines changed

Cargo.lock

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

ledger_device_sdk/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ledger_device_sdk"
3-
version = "1.15.1"
3+
version = "1.15.2"
44
authors = ["yhql", "yogh333", "agrojean-ledger", "kingofpayne"]
55
edition = "2021"
66
license.workspace = true
@@ -21,7 +21,7 @@ rand_core = { version = "0.6.3", default_features = false }
2121
zeroize = { version = "1.6.0", default_features = false }
2222
numtoa = "0.2.4"
2323
const-zero = "0.1.1"
24-
ledger_secure_sdk_sys = { path = "../ledger_secure_sdk_sys", version = "1.4.5" }
24+
ledger_secure_sdk_sys = { path = "../ledger_secure_sdk_sys", version = "1.4.6" }
2525

2626
[features]
2727
speculos = []

ledger_secure_sdk_sys/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ledger_secure_sdk_sys"
3-
version = "1.4.5"
3+
version = "1.4.6"
44
authors = ["yhql", "agrojean-ledger"]
55
edition = "2021"
66
license.workspace = true

ledger_secure_sdk_sys/build.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
extern crate cc;
22
use glob::glob;
3+
use std::fs;
34
use std::path::{Path, PathBuf};
45
use std::process::Command;
56
use std::{env, fs::File, io::BufRead, io::BufReader, io::Read};
@@ -581,6 +582,20 @@ impl SDKBuilder {
581582
.write_to_file(out_path.join("bindings.rs"))
582583
.expect("Couldn't write bindings");
583584
}
585+
586+
fn generate_heap_size(&self) {
587+
// Read the HEAP_SIZE environment variable, default to 8192 if not set
588+
let heap_size = env::var("HEAP_SIZE").unwrap_or_else(|_| "8192".to_string());
589+
590+
// Generate the heap_size.rs file with the HEAP_SIZE value
591+
let out_dir = env::var("OUT_DIR").unwrap();
592+
let dest_path = Path::new(&out_dir).join("heap_size.rs");
593+
fs::write(
594+
&dest_path,
595+
format!("pub const HEAP_SIZE: usize = {};", heap_size),
596+
)
597+
.expect("Unable to write file");
598+
}
584599
}
585600

586601
fn main() {
@@ -591,6 +606,7 @@ fn main() {
591606
sdk_builder.cxdefines();
592607
sdk_builder.build_c_sdk();
593608
sdk_builder.generate_bindings();
609+
sdk_builder.generate_heap_size();
594610
}
595611

596612
fn finalize_nanos_configuration(command: &mut cc::Build, bolos_sdk: &Path) {

ledger_secure_sdk_sys/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ unsafe impl critical_section::Impl for CriticalSection {
6363
#[no_mangle]
6464
#[cfg(all(feature = "heap", not(target_os = "nanos")))]
6565
extern "C" fn heap_init() {
66-
const HEAP_SIZE: usize = 8192;
66+
// HEAP_SIZE comes from heap_size.rs, which is defined via env var and build.rs
6767
static mut HEAP_MEM: [MaybeUninit<u8>; HEAP_SIZE] = [MaybeUninit::uninit(); HEAP_SIZE];
6868
unsafe { HEAP.init(HEAP_MEM.as_ptr() as usize, HEAP_SIZE) }
6969
}
@@ -73,3 +73,4 @@ extern "C" fn heap_init() {
7373
extern "C" fn heap_init() {}
7474

7575
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
76+
include!(concat!(env!("OUT_DIR"), "/heap_size.rs"));

0 commit comments

Comments
 (0)