56 lines
1.2 KiB
Python
56 lines
1.2 KiB
Python
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||
|
# some basic tests for xrelfo & the python ELF machinery
|
||
|
#
|
||
|
# Copyright (C) 2020 David Lamparter for NetDEF, Inc.
|
||
|
|
||
|
import sys
|
||
|
import os
|
||
|
import pytest
|
||
|
from pprint import pprint
|
||
|
|
||
|
root = os.path.dirname(os.path.dirname(__file__))
|
||
|
sys.path.append(os.path.join(root, "python"))
|
||
|
|
||
|
import xrelfo
|
||
|
from clippy import elf, uidhash
|
||
|
|
||
|
|
||
|
def test_uidhash():
|
||
|
assert uidhash.uidhash("lib/test_xref.c", "logging call", 3, 0) == "H7KJB-67TBH"
|
||
|
|
||
|
|
||
|
def test_xrelfo_other():
|
||
|
for data in [
|
||
|
elf.ELFNull(),
|
||
|
elf.ELFUnresolved("somesym", 0),
|
||
|
]:
|
||
|
|
||
|
dissect = xrelfo.XrefPtr(data)
|
||
|
print(repr(dissect))
|
||
|
|
||
|
with pytest.raises(AttributeError):
|
||
|
dissect.xref
|
||
|
|
||
|
|
||
|
def test_xrelfo_obj():
|
||
|
xrelfo_ = xrelfo.Xrelfo()
|
||
|
edf = xrelfo_.load_elf(os.path.join(root, "lib/.libs/zclient.o"), "zclient.lo")
|
||
|
xrefs = xrelfo_._xrefs
|
||
|
|
||
|
with pytest.raises(elf.ELFAccessError):
|
||
|
edf[0:4]
|
||
|
|
||
|
pprint(xrefs[0])
|
||
|
pprint(xrefs[0]._data)
|
||
|
|
||
|
|
||
|
def test_xrelfo_bin():
|
||
|
xrelfo_ = xrelfo.Xrelfo()
|
||
|
edf = xrelfo_.load_elf(os.path.join(root, "lib/.libs/libfrr.so"), "libfrr.la")
|
||
|
xrefs = xrelfo_._xrefs
|
||
|
|
||
|
assert edf[0:4] == b"\x7fELF"
|
||
|
|
||
|
pprint(xrefs[0])
|
||
|
pprint(xrefs[0]._data)
|