Main should just be virtual address that program was loaded at + offset
0x0000000000001070 <main>:
Unsure about the 1026 jump
1026 +
glibc is loaded at 0x7f10f3417000
system@glibc is 0x0000000000001050
Q1:
1. Deletion is not supported because the mapping from bits in the bloom filter to elements is not injective, meaning that each bit can be used to identify multiple elements. Resetting bits when "deleting" elements from the bloom filter might result in some other elements being "deleted" as well. An example is as follows:
Suppose our bloom filter starts as [0, 0, 0]. Our hash functions maps element A to h(A) = [0, 1, 1], and element B to h(B) = [1, 1, 0]. After inserting both A and B, our bloom filter is now [1, 1, 1]. Let's say that we now delete element A, resetting the first two bits in the bloom filter, resulting in the state [0, 0, 1]. As a result, we have also erroneously deleted element B from the bloom filter.
2. One modification would be to store counters instead of simply bits at each index. In our earlier example, this would mean that after inserting elements A and B, the bloom filter would become [1, 2, 1]. Now, when deleting element A, the bloom filter becomes [0, 1, 1], indicating that element B is still in the bloom filter. One clear compromise of this approach is the increased space usage from O(1) per index to O(log n) per index.
Q2:
(maybe?)
2. the instruction reads from address 0x55a81cef2000 + 0x102c + 0x2f8c?