| describe('elf reader', function() | |
| local ok, elf = pcall(require, 'bpf.elf') | |
| if not ok then return end | |
| it('should handle C library', function() | |
| -- Open libc | |
| local sh = elf.open('/bin/sh') | |
| assert.truthy(sh) | |
| -- Find load address | |
| local base = sh:loadaddr() | |
| assert.truthy(base) | |
| -- Find something from ISO C | |
| local malloc_addr = sh:resolve('malloc') | |
| assert.truthy(malloc_addr) | |
| -- Find something that doesn't exist | |
| local bad_addr = sh:resolve('thisnotexists') | |
| assert.falsy(bad_addr) | |
| end) | |
| it('should fail on bad input', function() | |
| assert.falsy(elf.open(nil)) | |
| assert.falsy(elf.open('/tmp'):loadaddr()) | |
| end) | |
| end) |