mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-26 21:39:07 +00:00
cleanup
This commit is contained in:
parent
207e65bfa3
commit
51a187c717
1 changed files with 6 additions and 14 deletions
|
@ -85,15 +85,7 @@ impl Sections {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum Origin {
|
|
||||||
Real,
|
|
||||||
Fake,
|
|
||||||
}
|
|
||||||
|
|
||||||
fn copy_file(in_data: &[u8], custom_names: &[String]) -> Result<Vec<u8>, Box<dyn Error>> {
|
fn copy_file(in_data: &[u8], custom_names: &[String]) -> Result<Vec<u8>, Box<dyn Error>> {
|
||||||
// use object::read::Object;
|
|
||||||
// let in_elf = ElfFile64::parse(in_data)?;
|
|
||||||
|
|
||||||
let in_elf: &elf::FileHeader64<Endianness> = elf::FileHeader64::parse(in_data)?;
|
let in_elf: &elf::FileHeader64<Endianness> = elf::FileHeader64::parse(in_data)?;
|
||||||
let endian = in_elf.endian()?;
|
let endian = in_elf.endian()?;
|
||||||
let is_mips64el = in_elf.is_mips64el(endian);
|
let is_mips64el = in_elf.is_mips64el(endian);
|
||||||
|
@ -260,32 +252,32 @@ fn copy_file(in_data: &[u8], custom_names: &[String]) -> Result<Vec<u8>, Box<dyn
|
||||||
// We must sort for GNU hash before allocating symbol indices.
|
// We must sort for GNU hash before allocating symbol indices.
|
||||||
if let Some(in_gnu_hash) = in_gnu_hash.as_ref() {
|
if let Some(in_gnu_hash) = in_gnu_hash.as_ref() {
|
||||||
// // TODO: recalculate bucket_count
|
// // TODO: recalculate bucket_count
|
||||||
out_dynsyms.sort_by_key(|(_, sym)| match sym.gnu_hash {
|
out_dynsyms.sort_by_key(|sym| match sym.gnu_hash {
|
||||||
None => (0, 0),
|
None => (0, 0),
|
||||||
Some(hash) => (1, hash % in_gnu_hash.bucket_count.get(endian)),
|
Some(hash) => (1, hash % in_gnu_hash.bucket_count.get(endian)),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
let mut out_dynsyms_index = vec![Default::default(); in_dynsyms.len() + custom_names.len()];
|
let mut out_dynsyms_index = vec![Default::default(); in_dynsyms.len() + custom_names.len()];
|
||||||
for (_, out_dynsym) in out_dynsyms.iter_mut() {
|
for out_dynsym in out_dynsyms.iter_mut() {
|
||||||
out_dynsyms_index[out_dynsym.in_sym] = writer.reserve_dynamic_symbol_index();
|
out_dynsyms_index[out_dynsym.in_sym] = writer.reserve_dynamic_symbol_index();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hash parameters.
|
// Hash parameters.
|
||||||
let hash_index_base = out_dynsyms
|
let hash_index_base = out_dynsyms
|
||||||
.first()
|
.first()
|
||||||
.map(|(_, sym)| out_dynsyms_index[sym.in_sym].0)
|
.map(|sym| out_dynsyms_index[sym.in_sym].0)
|
||||||
.unwrap_or(0);
|
.unwrap_or(0);
|
||||||
let hash_chain_count = writer.dynamic_symbol_count();
|
let hash_chain_count = writer.dynamic_symbol_count();
|
||||||
|
|
||||||
// GNU hash parameters.
|
// GNU hash parameters.
|
||||||
let gnu_hash_index_base = out_dynsyms
|
let gnu_hash_index_base = out_dynsyms
|
||||||
.iter()
|
.iter()
|
||||||
.position(|(_, sym)| sym.gnu_hash.is_some())
|
.position(|sym| sym.gnu_hash.is_some())
|
||||||
.unwrap_or(0);
|
.unwrap_or(0);
|
||||||
let gnu_hash_symbol_base = out_dynsyms
|
let gnu_hash_symbol_base = out_dynsyms
|
||||||
.iter()
|
.iter()
|
||||||
.find(|(_, sym)| sym.gnu_hash.is_some())
|
.find(|sym| sym.gnu_hash.is_some())
|
||||||
.map(|(_, sym)| out_dynsyms_index[sym.in_sym].0)
|
.map(|sym| out_dynsyms_index[sym.in_sym].0)
|
||||||
.unwrap_or_else(|| writer.dynamic_symbol_count());
|
.unwrap_or_else(|| writer.dynamic_symbol_count());
|
||||||
let gnu_hash_symbol_count = writer.dynamic_symbol_count() - gnu_hash_symbol_base;
|
let gnu_hash_symbol_count = writer.dynamic_symbol_count() - gnu_hash_symbol_base;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue