fix: 修复新节VA的计算方式

This commit is contained in:
381848900@qq.com 2024-12-13 13:11:12 +08:00
parent 7346f40592
commit 9f6c18949e
4 changed files with 14 additions and 6 deletions

View File

@ -215,7 +215,7 @@ impl AppState {
rw_mmap[new_section_header_offset..new_section_header_offset + 8]
.copy_from_slice(&section_name_bytes);
// 写入节的VA
// TODO: 新节的VA应该是最后一个节的VA + section_size对齐后的大小
// TODO: 新节的VA应该是最后一个节的VA + 最后一个节的SizeOfRawData对齐后的大小
let last_section_header_offset =
section_table_offset + 40 * (number_of_sections - 1) as usize;
let last_section_va = u32::from_le_bytes(
@ -223,8 +223,16 @@ impl AppState {
.try_into()
.unwrap(),
);
// 对齐后的VA, 对齐方式(last_section_va + section_size) 和section_alignment进行对齐
let aligned_va = (last_section_va + section_size as u32 + section_alignment - 1)
let last_sction_size = u32::from_le_bytes(
rw_mmap[last_section_header_offset + 16..last_section_header_offset + 20]
.try_into()
.unwrap(),
);
let last_section_alignment_size = (last_sction_size + section_alignment - 1)
& !(section_alignment - 1);
// 对齐后的VA, 对齐方式(last_section_va ) 和section_alignment进行对齐
let aligned_va = ((last_section_va + last_section_alignment_size) + section_alignment - 1)
& !(section_alignment - 1);
rw_mmap[new_section_header_offset + 12..new_section_header_offset + 16]

View File

@ -260,7 +260,7 @@ export default function FileHeader() {
return (
<NodeTableComponent
dataTemplate={dataTemplate}
defaultData={data}
defaultData={data as any}
columns={columns as any}
></NodeTableComponent>
);

View File

@ -57,7 +57,7 @@ export default function NTHeader() {
return (
<NodeTableComponent
defaultData={data}
defaultData={data as any}
dataTemplate={dataTemplate}
columns={columns as any}
></NodeTableComponent>

View File

@ -530,7 +530,7 @@ export default function OptionalHeader() {
return (
<NodeTableComponent
dataTemplate={is64 ? dataTemplate64 : dataTemplate}
defaultData={data}
defaultData={data as any}
columns={columns as any}
></NodeTableComponent>
);