MCPcopy Create free account
hub / github.com/Dadoum/android-loader / new

Method new

src/android_library.rs:49–69  ·  view source on GitHub ↗
(hashtab: &'a [u8], dynsyms: &'a [DynEntry])

Source from the content-addressed store, hash-verified

47
48impl<'a> GnuHashTable<'a> {
49 unsafe fn new(hashtab: &'a [u8], dynsyms: &'a [DynEntry]) -> GnuHashTable<'a> {
50 let [nbuckets, symindex, maskwords, shift2] =
51 (hashtab.as_ptr() as *const u32 as *const [u32; 4]).read();
52
53 let hashtab = &hashtab[16..];
54
55 let bloom_filter_ptr = hashtab.as_ptr() as *const usize;
56 let buckets_ptr = bloom_filter_ptr.add(maskwords as usize) as *const u32;
57 let chains_ptr = buckets_ptr.add(nbuckets as usize);
58 let bloom_filter = slice::from_raw_parts(bloom_filter_ptr, maskwords as usize);
59 let buckets = slice::from_raw_parts(buckets_ptr, nbuckets as usize);
60 let chains = slice::from_raw_parts(chains_ptr, dynsyms.len() - symindex as usize);
61 Self {
62 symindex,
63 shift2,
64 bloom_filter,
65 buckets,
66 chains,
67 dynsyms,
68 }
69 }
70
71 fn hash(symbol_name: &str) -> u32 {
72 let mut h: u32 = 5381;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected