blob: a15ea75cd2a774b5e97efef8e3b406cc3ed739b9 [file] [edit]
"""
Test that LLDB can find symbols added by a linker script.
"""
import lldb
from lldbsuite.test.lldbtest import *
from lldbsuite.test.decorators import *
from lldbsuite.test import lldbutil
class TestLinkerSymbols(TestBase):
# If your test case doesn't stress debug info, then
# set this to true. That way it won't be run once for
# each debug info format.
NO_DEBUG_INFO_TESTCASE = True
SHARED_BUILD_TESTCASE = False
@skipUnlessPlatform(["linux"])
def test_linker_symbols(self):
build_dict = dict(LD_EXTRAS="-Wl,-T," + self.getSourcePath("linker.script"))
self.build(dictionary=build_dict)
exe = self.getBuildArtifact("a.out")
target = self.dbg.CreateTarget(exe)
# Check for data symbols
self.expect_expr("&bss_symbol", result_type="void **")
self.expect_expr("&bss_var", result_type="int *")
self.expect_expr("&data_symbol", result_type="void **")
self.expect_expr("&data_var", result_type="int *")
self.expect_expr("&pseudo_bss_var", result_type="int *")
self.expect_expr("&pseudo_bss_symbol", result_type="void **")
self.expect_expr("&pseudo_data_symbol", result_type="void **")
# Check for text symbols
self.expect_expr("(int(*)())&absolute_symbol", result_type="int (*)()")
self.expect_expr("(int(*)())&pseudo_text_func", result_type="int (*)()")
self.expect_expr("(int(*)())&text_func", result_type="int (*)()")
self.expect_expr("(int(*)())&text_symbol", result_type="int (*)()")