fix: 修复新节VA的计算方式
This commit is contained in:
parent
7346f40592
commit
9f6c18949e
@ -215,7 +215,7 @@ impl AppState {
|
|||||||
rw_mmap[new_section_header_offset..new_section_header_offset + 8]
|
rw_mmap[new_section_header_offset..new_section_header_offset + 8]
|
||||||
.copy_from_slice(§ion_name_bytes);
|
.copy_from_slice(§ion_name_bytes);
|
||||||
// 写入节的VA
|
// 写入节的VA
|
||||||
// TODO: 新节的VA应该是最后一个节的VA + section_size对齐后的大小
|
// TODO: 新节的VA应该是最后一个节的VA + 最后一个节的SizeOfRawData对齐后的大小
|
||||||
let last_section_header_offset =
|
let last_section_header_offset =
|
||||||
section_table_offset + 40 * (number_of_sections - 1) as usize;
|
section_table_offset + 40 * (number_of_sections - 1) as usize;
|
||||||
let last_section_va = u32::from_le_bytes(
|
let last_section_va = u32::from_le_bytes(
|
||||||
@ -223,8 +223,16 @@ impl AppState {
|
|||||||
.try_into()
|
.try_into()
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
);
|
);
|
||||||
// 对齐后的VA, 对齐方式(last_section_va + section_size) 和section_alignment进行对齐
|
let last_sction_size = u32::from_le_bytes(
|
||||||
let aligned_va = (last_section_va + section_size as u32 + section_alignment - 1)
|
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);
|
& !(section_alignment - 1);
|
||||||
|
|
||||||
rw_mmap[new_section_header_offset + 12..new_section_header_offset + 16]
|
rw_mmap[new_section_header_offset + 12..new_section_header_offset + 16]
|
||||||
|
@ -260,7 +260,7 @@ export default function FileHeader() {
|
|||||||
return (
|
return (
|
||||||
<NodeTableComponent
|
<NodeTableComponent
|
||||||
dataTemplate={dataTemplate}
|
dataTemplate={dataTemplate}
|
||||||
defaultData={data}
|
defaultData={data as any}
|
||||||
columns={columns as any}
|
columns={columns as any}
|
||||||
></NodeTableComponent>
|
></NodeTableComponent>
|
||||||
);
|
);
|
||||||
|
@ -57,7 +57,7 @@ export default function NTHeader() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<NodeTableComponent
|
<NodeTableComponent
|
||||||
defaultData={data}
|
defaultData={data as any}
|
||||||
dataTemplate={dataTemplate}
|
dataTemplate={dataTemplate}
|
||||||
columns={columns as any}
|
columns={columns as any}
|
||||||
></NodeTableComponent>
|
></NodeTableComponent>
|
||||||
|
@ -530,7 +530,7 @@ export default function OptionalHeader() {
|
|||||||
return (
|
return (
|
||||||
<NodeTableComponent
|
<NodeTableComponent
|
||||||
dataTemplate={is64 ? dataTemplate64 : dataTemplate}
|
dataTemplate={is64 ? dataTemplate64 : dataTemplate}
|
||||||
defaultData={data}
|
defaultData={data as any}
|
||||||
columns={columns as any}
|
columns={columns as any}
|
||||||
></NodeTableComponent>
|
></NodeTableComponent>
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user