From 882adb99dca54037e13cab761d20355d2319992f Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Thu, 9 May 2019 18:07:09 +0000 Subject: [PATCH] tests: Parametrize test_bin_info to handle multiarch artifacts The values that change on each build of the test artifacts were hardcoded in the test source. Parametrize them so the test can be used on differents artifacts. Signed-off-by: Michael Jeanson Change-Id: I003733f54bdf1f6cee0aca134f31dec79d75b35d Reviewed-on: https://review.lttng.org/c/babeltrace/+/1345 Tested-by: jenkins Reviewed-by: Philippe Proulx Reviewed-by: Francis Deslauriers --- tests/plugins/test_bin_info.c | 416 +++++++++++------- .../plugins/test_bin_info_x86_64-linux-gnu.in | 13 +- 2 files changed, 262 insertions(+), 167 deletions(-) diff --git a/tests/plugins/test_bin_info.c b/tests/plugins/test_bin_info.c index 5bf43da0..2f9a09a0 100644 --- a/tests/plugins/test_bin_info.c +++ b/tests/plugins/test_bin_info.c @@ -5,6 +5,7 @@ * * Copyright (c) 2015 EfficiOS Inc. and Linux Foundation * Copyright (c) 2015 Antoine Busque + * Copyright (c) 2019 Michael Jeanson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,55 +24,200 @@ #include #include #include +#include +#include +#include #include #include #include "tap/tap.h" -#define NR_TESTS 36 +#define NR_TESTS 57 + #define SO_NAME "libhello_so" +#define DEBUG_NAME "libhello_so.debug" +#define FUNC_FOO_FILENAME "./libhello.c" +#define FUNC_FOO_PRINTF_NAME_FMT "foo+0x%" PRIx64 +#define FUNC_FOO_NAME_LEN 64 #define DWARF_DIR_NAME "dwarf_full" #define ELF_DIR_NAME "elf_only" #define BUILDID_DIR_NAME "build_id" #define DEBUGLINK_DIR_NAME "debug_link" +/* Lower bound of PIC address mapping */ #define SO_LOW_ADDR 0x400000 -#define SO_MEMSZ 0x400000 -#define FUNC_FOO_ADDR 0x402367 -#define FUNC_FOO_LINE_NO 36 -#define FUNC_FOO_FILENAME "./libhello.c" -#define FUNC_FOO_TP_ADDR 0x402300 -#define FUNC_FOO_TP_LINE_NO 35 -#define FUNC_FOO_TP_FILENAME "./libhello.c" -#define FUNC_FOO_ADDR_ELF 0x402367 -#define FUNC_FOO_ADDR_DBG_LINK 0x402367 -#define FUNC_FOO_NAME "foo+0xf0" -#define FUNC_FOO_NAME_ELF "foo+0xf0" -#define BUILD_ID_LEN 20 - -char *opt_debug_info_dir; -char *opt_debug_info_target_prefix; +/* Size of PIC address mapping */ +#define SO_MEMSZ 0x800000 +/* An address outside the PIC mapping */ +#define SO_INV_ADDR 0x200000 + +#define BUILD_ID_HEX_LEN 20 + +static uint64_t opt_func_foo_addr; +static uint64_t opt_func_foo_printf_offset; +static uint64_t opt_func_foo_printf_line_no; +static uint64_t opt_func_foo_tp_offset; +static uint64_t opt_func_foo_tp_line_no; +static uint64_t opt_debug_link_crc; +static gchar *opt_build_id; +static gchar *opt_debug_info_dir; + +static uint64_t func_foo_printf_addr; +static uint64_t func_foo_tp_addr; +static char func_foo_printf_name[FUNC_FOO_NAME_LEN]; +static uint8_t build_id[BUILD_ID_HEX_LEN]; + +static GOptionEntry entries[] = { + {"foo-addr", 0, 0, G_OPTION_ARG_INT64, &opt_func_foo_addr, + "Offset to printf in foo", "0xX"}, + {"printf-offset", 0, 0, G_OPTION_ARG_INT64, &opt_func_foo_printf_offset, + "Offset to printf in foo", "0xX"}, + {"printf-lineno", 0, 0, G_OPTION_ARG_INT64, + &opt_func_foo_printf_line_no, "Line number to printf in foo", "N"}, + {"tp-offset", 0, 0, G_OPTION_ARG_INT64, &opt_func_foo_tp_offset, + "Offset to tp in foo", "0xX"}, + {"tp-lineno", 0, 0, G_OPTION_ARG_INT64, &opt_func_foo_tp_line_no, + "Line number to tp in foo", "N"}, + {"debug-link-crc", 0, 0, G_OPTION_ARG_INT64, &opt_debug_link_crc, + "Debug link CRC", "0xX"}, + {"build-id", 0, 0, G_OPTION_ARG_STRING, &opt_build_id, "Build ID", + "XXXXXXXXXXXXXXX"}, + {"debug-info-dir", 0, 0, G_OPTION_ARG_STRING, &opt_debug_info_dir, + "Debug info directory", NULL}, + {NULL}}; + +static +int build_id_to_bin(void) +{ + int ret, len, i; + + if (opt_build_id == NULL) { + goto error; + } + + len = strnlen(opt_build_id, BUILD_ID_HEX_LEN * 2); + if (len != (BUILD_ID_HEX_LEN * 2)) { + goto error; + } + + for (i = 0; i < (len / 2); i++) { + ret = sscanf(opt_build_id + 2 * i, "%02hhx", &build_id[i]); + if (ret != 1) { + goto error; + } + } + + if (i != BUILD_ID_HEX_LEN) { + goto error; + } + + return 0; +error: + return -1; +} + +static +void subtest_has_address(struct bin_info *bin, uint64_t addr) +{ + int ret; + + ret = bin_info_has_address(bin, SO_LOW_ADDR - 1); + ok(ret == 0, "bin_info_has_address - address under SO's range"); + + ret = bin_info_has_address(bin, SO_LOW_ADDR); + ok(ret == 1, "bin_info_has_address - lower bound of SO's range"); + + ret = bin_info_has_address(bin, addr); + ok(ret == 1, "bin_info_has_address - address in SO's range"); + + ret = bin_info_has_address(bin, SO_LOW_ADDR + SO_MEMSZ - 1); + ok(ret == 1, "bin_info_has_address - upper bound of SO's range"); + + ret = bin_info_has_address(bin, SO_LOW_ADDR + SO_MEMSZ); + ok(ret == 0, "bin_info_has_address - address above SO's range"); +} + +static +void subtest_lookup_function_name(struct bin_info *bin, uint64_t addr, + char *func_name) +{ + int ret; + char *_func_name = NULL; + + ret = bin_info_lookup_function_name(bin, addr, &_func_name); + ok(ret == 0, "bin_info_lookup_function_name successful at 0x%x", addr); + if (_func_name) { + ok(strcmp(_func_name, func_name) == 0, + "bin_info_lookup_function_name - correct function name (%s == %s)", + func_name, _func_name); + free(_func_name); + _func_name = NULL; + } else { + skip(1, + "bin_info_lookup_function_name - function name is NULL"); + } + + /* Test function name lookup - erroneous address */ + ret = bin_info_lookup_function_name(bin, SO_INV_ADDR, &_func_name); + ok(ret == -1 && _func_name == NULL, + "bin_info_lookup_function_name - fail on invalid addr"); + if (_func_name) { + free(_func_name); + } +} + +static +void subtest_lookup_source_location(struct bin_info *bin, uint64_t addr, + uint64_t line_no, char *filename) +{ + int ret; + struct source_location *src_loc = NULL; + + ret = bin_info_lookup_source_location(bin, addr, &src_loc); + ok(ret == 0, "bin_info_lookup_source_location successful at 0x%x", + addr); + if (src_loc) { + ok(src_loc->line_no == line_no, + "bin_info_lookup_source_location - correct line_no (%d == %d)", + line_no, src_loc->line_no); + ok(strcmp(src_loc->filename, filename) == 0, + "bin_info_lookup_source_location - correct filename (%s == %s)", + filename, src_loc->filename); + source_location_destroy(src_loc); + src_loc = NULL; + } else { + fail("bin_info_lookup_source_location - src_loc is NULL"); + fail("bin_info_lookup_source_location - src_loc is NULL"); + } + + /* Test source location lookup - erroneous address */ + ret = bin_info_lookup_source_location(bin, SO_INV_ADDR, &src_loc); + ok(ret == -1 && src_loc == NULL, + "bin_info_lookup_source_location - fail on invalid addr"); + if (src_loc) { + source_location_destroy(src_loc); + } +} static void test_bin_info_build_id(const char *bin_info_dir) { int ret; char *data_dir, *bin_path; - char *func_name = NULL; struct bin_info *bin = NULL; - struct source_location *src_loc = NULL; struct bt_fd_cache fdc; - uint8_t build_id[BUILD_ID_LEN] = { - 0xcd, 0xd9, 0x8c, 0xdd, 0x87, 0xf7, 0xfe, 0x64, 0xc1, 0x3b, + uint8_t invalid_build_id[BUILD_ID_HEX_LEN] = { + 0xa3, 0xfd, 0x8b, 0xff, 0x45, 0xe1, 0xa9, 0x32, 0x15, 0xdd, 0x6d, 0xaa, 0xd5, 0x53, 0x98, 0x7e, 0xaf, 0xd4, 0x0c, 0xbb }; diag("bin-info tests - separate DWARF via build ID"); data_dir = g_build_filename(bin_info_dir, BUILDID_DIR_NAME, NULL); - bin_path = g_build_filename(bin_info_dir, BUILDID_DIR_NAME, SO_NAME, NULL); + bin_path = + g_build_filename(bin_info_dir, BUILDID_DIR_NAME, SO_NAME, NULL); if (data_dir == NULL || bin_path == NULL) { exit(EXIT_FAILURE); @@ -79,36 +225,30 @@ void test_bin_info_build_id(const char *bin_info_dir) ret = bt_fd_cache_init(&fdc); BT_ASSERT(ret == 0); - bin = bin_info_create(&fdc, bin_path, SO_LOW_ADDR, SO_MEMSZ, true, data_dir, NULL); - ok(bin != NULL, "bin_info_create successful"); - /* Test setting build_id */ - ret = bin_info_set_build_id(bin, build_id, BUILD_ID_LEN); + bin = bin_info_create(&fdc, bin_path, SO_LOW_ADDR, SO_MEMSZ, true, + data_dir, NULL); + ok(bin != NULL, "bin_info_create successful (%s)", bin_path); + + /* Test setting invalid build_id */ + ret = bin_info_set_build_id(bin, invalid_build_id, BUILD_ID_HEX_LEN); + ok(ret == -1, "bin_info_set_build_id fail on invalid build_id"); + + /* Test setting correct build_id */ + ret = bin_info_set_build_id(bin, build_id, BUILD_ID_HEX_LEN); ok(ret == 0, "bin_info_set_build_id successful"); + /* Test bin_info_has_address */ + subtest_has_address(bin, func_foo_printf_addr); + /* Test function name lookup (with DWARF) */ - ret = bin_info_lookup_function_name(bin, FUNC_FOO_ADDR, &func_name); - ok(ret == 0, "bin_info_lookup_function_name successful"); - if (func_name) { - ok(strcmp(func_name, FUNC_FOO_NAME) == 0, - "bin_info_lookup_function_name - correct func_name value"); - free(func_name); - } else { - skip(1, "bin_info_lookup_function_name - func_name is NULL"); - } + subtest_lookup_function_name(bin, func_foo_printf_addr, + func_foo_printf_name); /* Test source location lookup */ - ret = bin_info_lookup_source_location(bin, FUNC_FOO_ADDR, &src_loc); - ok(ret == 0, "bin_info_lookup_source_location successful"); - if (src_loc) { - ok(src_loc->line_no == FUNC_FOO_LINE_NO, - "bin_info_lookup_source_location - correct line_no"); - ok(strcmp(src_loc->filename, FUNC_FOO_FILENAME) == 0, - "bin_info_lookup_source_location - correct filename"); - source_location_destroy(src_loc); - } else { - skip(2, "bin_info_lookup_source_location - src_loc is NULL"); - } + subtest_lookup_source_location(bin, func_foo_printf_addr, + opt_func_foo_printf_line_no, + FUNC_FOO_FILENAME); bin_info_destroy(bin); bt_fd_cache_fini(&fdc); @@ -121,17 +261,14 @@ void test_bin_info_debug_link(const char *bin_info_dir) { int ret; char *data_dir, *bin_path; - char *func_name = NULL; struct bin_info *bin = NULL; - struct source_location *src_loc = NULL; - char *dbg_filename = "libhello_so.debug"; - uint32_t crc = 0x289a8fdc; struct bt_fd_cache fdc; diag("bin-info tests - separate DWARF via debug link"); data_dir = g_build_filename(bin_info_dir, DEBUGLINK_DIR_NAME, NULL); - bin_path = g_build_filename(bin_info_dir, DEBUGLINK_DIR_NAME, SO_NAME, NULL); + bin_path = g_build_filename(bin_info_dir, DEBUGLINK_DIR_NAME, SO_NAME, + NULL); if (data_dir == NULL || bin_path == NULL) { exit(EXIT_FAILURE); @@ -139,39 +276,26 @@ void test_bin_info_debug_link(const char *bin_info_dir) ret = bt_fd_cache_init(&fdc); BT_ASSERT(ret == 0); - bin = bin_info_create(&fdc, bin_path, SO_LOW_ADDR, SO_MEMSZ, true, data_dir, - NULL); - ok(bin != NULL, "bin_info_create successful"); + + bin = bin_info_create(&fdc, bin_path, SO_LOW_ADDR, SO_MEMSZ, true, + data_dir, NULL); + ok(bin != NULL, "bin_info_create successful (%s)", bin_path); /* Test setting debug link */ - ret = bin_info_set_debug_link(bin, dbg_filename, crc); + ret = bin_info_set_debug_link(bin, DEBUG_NAME, opt_debug_link_crc); ok(ret == 0, "bin_info_set_debug_link successful"); + /* Test bin_info_has_address */ + subtest_has_address(bin, func_foo_printf_addr); + /* Test function name lookup (with DWARF) */ - ret = bin_info_lookup_function_name(bin, FUNC_FOO_ADDR_DBG_LINK, - &func_name); - ok(ret == 0, "bin_info_lookup_function_name successful"); - if (func_name) { - ok(strcmp(func_name, FUNC_FOO_NAME) == 0, - "bin_info_lookup_function_name - correct func_name value"); - free(func_name); - } else { - skip(1, "bin_info_lookup_function_name - func_name is NULL"); - } + subtest_lookup_function_name(bin, func_foo_printf_addr, + func_foo_printf_name); /* Test source location lookup */ - ret = bin_info_lookup_source_location(bin, FUNC_FOO_ADDR_DBG_LINK, - &src_loc); - ok(ret == 0, "bin_info_lookup_source_location successful"); - if (src_loc) { - ok(src_loc->line_no == FUNC_FOO_LINE_NO, - "bin_info_lookup_source_location - correct line_no"); - ok(strcmp(src_loc->filename, FUNC_FOO_FILENAME) == 0, - "bin_info_lookup_source_location - correct filename"); - source_location_destroy(src_loc); - } else { - skip(2, "bin_info_lookup_source_location - src_loc is NULL"); - } + subtest_lookup_source_location(bin, func_foo_printf_addr, + opt_func_foo_printf_line_no, + FUNC_FOO_FILENAME); bin_info_destroy(bin); bt_fd_cache_fini(&fdc); @@ -184,7 +308,6 @@ void test_bin_info_elf(const char *bin_info_dir) { int ret; char *data_dir, *bin_path; - char *func_name = NULL; struct bin_info *bin = NULL; struct source_location *src_loc = NULL; struct bt_fd_cache fdc; @@ -200,29 +323,23 @@ void test_bin_info_elf(const char *bin_info_dir) ret = bt_fd_cache_init(&fdc); BT_ASSERT(ret == 0); - bin = bin_info_create(&fdc, bin_path, SO_LOW_ADDR, SO_MEMSZ, true, data_dir, NULL); - ok(bin != NULL, "bin_info_create successful"); - /* Test function name lookup (with ELF) */ - ret = bin_info_lookup_function_name(bin, FUNC_FOO_ADDR_ELF, &func_name); - ok(ret == 0, "bin_info_lookup_function_name successful"); - if (func_name) { - ok(strcmp(func_name, FUNC_FOO_NAME_ELF) == 0, - "bin_info_lookup_function_name - correct func_name value"); - free(func_name); - func_name = NULL; - } else { - skip(1, "bin_info_lookup_function_name - func_name is NULL"); - } + bin = bin_info_create(&fdc, bin_path, SO_LOW_ADDR, SO_MEMSZ, true, + data_dir, NULL); + ok(bin != NULL, "bin_info_create successful (%s)", bin_path); - /* Test function name lookup - erroneous address */ - ret = bin_info_lookup_function_name(bin, 0, &func_name); - ok(ret == -1 && func_name == NULL, - "bin_info_lookup_function_name - fail on addr not found"); + /* Test bin_info_has_address */ + subtest_has_address(bin, func_foo_printf_addr); + + /* Test function name lookup (with ELF) */ + subtest_lookup_function_name(bin, func_foo_printf_addr, + func_foo_printf_name); /* Test source location location - should fail on ELF only file */ - ret = bin_info_lookup_source_location(bin, FUNC_FOO_ADDR_ELF, &src_loc); - ok(ret == -1, "bin_info_lookup_source_location - fail on ELF only file"); + ret = bin_info_lookup_source_location(bin, func_foo_printf_addr, + &src_loc); + ok(ret == -1, + "bin_info_lookup_source_location - fail on ELF only file"); source_location_destroy(src_loc); bin_info_destroy(bin); @@ -232,20 +349,18 @@ void test_bin_info_elf(const char *bin_info_dir) } static -void test_bin_info(const char *bin_info_dir) +void test_bin_info_bundled(const char *bin_info_dir) { int ret; char *data_dir, *bin_path; - char *func_name = NULL; struct bin_info *bin = NULL; - struct source_location *src_loc = NULL; struct bt_fd_cache fdc; - diag("bin-info tests - DWARF bundled with SO file"); - + diag("bin-info tests - DWARF bundled in SO file"); data_dir = g_build_filename(bin_info_dir, DWARF_DIR_NAME, NULL); - bin_path = g_build_filename(bin_info_dir, DWARF_DIR_NAME, SO_NAME, NULL); + bin_path = + g_build_filename(bin_info_dir, DWARF_DIR_NAME, SO_NAME, NULL); if (data_dir == NULL || bin_path == NULL) { exit(EXIT_FAILURE); @@ -253,71 +368,27 @@ void test_bin_info(const char *bin_info_dir) ret = bt_fd_cache_init(&fdc); BT_ASSERT(ret == 0); - bin = bin_info_create(&fdc, bin_path, SO_LOW_ADDR, SO_MEMSZ, true, data_dir, NULL); - ok(bin != NULL, "bin_info_create successful"); + + bin = bin_info_create(&fdc, bin_path, SO_LOW_ADDR, SO_MEMSZ, true, + data_dir, NULL); + ok(bin != NULL, "bin_info_create successful (%s)", bin_path); /* Test bin_info_has_address */ - ret = bin_info_has_address(bin, 0); - ok(ret == 0, "bin_info_has_address - address under so's range"); - ret = bin_info_has_address(bin, SO_LOW_ADDR); - ok(ret == 1, "bin_info_has_address - lower bound of so's range"); - ret = bin_info_has_address(bin, FUNC_FOO_ADDR); - ok(ret == 1, "bin_info_has_address - address in so's range"); - ret = bin_info_has_address(bin, SO_LOW_ADDR + SO_MEMSZ - 1); - ok(ret == 1, "bin_info_has_address - upper bound of so's range"); - ret = bin_info_has_address(bin, SO_LOW_ADDR + SO_MEMSZ); - ok(ret == 0, "bin_info_has_address - address above so's range"); + subtest_has_address(bin, func_foo_printf_addr); /* Test function name lookup (with DWARF) */ - ret = bin_info_lookup_function_name(bin, FUNC_FOO_ADDR, &func_name); - ok(ret == 0, "bin_info_lookup_function_name successful"); - if (func_name) { - ok(strcmp(func_name, FUNC_FOO_NAME) == 0, - "bin_info_lookup_function_name - correct func_name value"); - free(func_name); - func_name = NULL; - } else { - skip(1, "bin_info_lookup_function_name - func_name is NULL"); - } - - /* Test function name lookup - erroneous address */ - ret = bin_info_lookup_function_name(bin, 0, &func_name); - ok(ret == -1 && func_name == NULL, - "bin_info_lookup_function_name - fail on addr not found"); + subtest_lookup_function_name(bin, func_foo_printf_addr, + func_foo_printf_name); /* Test source location lookup */ - ret = bin_info_lookup_source_location(bin, FUNC_FOO_ADDR, &src_loc); - ok(ret == 0, "bin_info_lookup_source_location successful"); - if (src_loc) { - ok(src_loc->line_no == FUNC_FOO_LINE_NO, - "bin_info_lookup_source_location - correct line_no"); - ok(strcmp(src_loc->filename, FUNC_FOO_FILENAME) == 0, - "bin_info_lookup_source_location - correct filename"); - source_location_destroy(src_loc); - src_loc = NULL; - } else { - skip(2, "bin_info_lookup_source_location - src_loc is NULL"); - } + subtest_lookup_source_location(bin, func_foo_printf_addr, + opt_func_foo_printf_line_no, + FUNC_FOO_FILENAME); /* Test source location lookup - inlined function */ - ret = bin_info_lookup_source_location(bin, FUNC_FOO_TP_ADDR, &src_loc); - ok(ret == 0, - "bin_info_lookup_source_location (inlined func) successful"); - if (src_loc) { - ok(src_loc->line_no == FUNC_FOO_TP_LINE_NO, - "bin_info_lookup_source_location (inlined func) - correct line_no"); - ok(strcmp(src_loc->filename, FUNC_FOO_TP_FILENAME) == 0, - "bin_info_lookup_source_location (inlined func) - correct filename"); - source_location_destroy(src_loc); - src_loc = NULL; - } else { - skip(2, "bin_info_lookup_source_location (inlined func) - src_loc is NULL"); - } - - /* Test source location lookup - erroneous address */ - ret = bin_info_lookup_source_location(bin, 0, &src_loc); - ok(ret == -1 && src_loc == NULL, - "bin_info_lookup_source_location - fail on addr not found"); + subtest_lookup_source_location(bin, func_foo_tp_addr, + opt_func_foo_tp_line_no, + FUNC_FOO_FILENAME); bin_info_destroy(bin); bt_fd_cache_fini(&fdc); @@ -328,20 +399,35 @@ void test_bin_info(const char *bin_info_dir) int main(int argc, char **argv) { int ret; + GError *error = NULL; + GOptionContext *context; - plan_tests(NR_TESTS); + context = g_option_context_new("- bin info test"); + g_option_context_add_main_entries(context, entries, NULL); + if (!g_option_context_parse(context, &argc, &argv, &error)) { + fprintf(stderr, "option parsing failed: %s\n", error->message); + exit(EXIT_FAILURE); + } - if (argc != 2) { - return EXIT_FAILURE; - } else { - opt_debug_info_dir = argv[1]; + g_snprintf(func_foo_printf_name, FUNC_FOO_NAME_LEN, + FUNC_FOO_PRINTF_NAME_FMT, opt_func_foo_printf_offset); + func_foo_printf_addr = + SO_LOW_ADDR + opt_func_foo_addr + opt_func_foo_printf_offset; + func_foo_tp_addr = + SO_LOW_ADDR + opt_func_foo_addr + opt_func_foo_tp_offset; + + if (build_id_to_bin()) { + fprintf(stderr, "Failed to parse / missing build id\n"); + exit(EXIT_FAILURE); } + plan_tests(NR_TESTS); + ret = bin_info_init(); ok(ret == 0, "bin_info_init successful"); - test_bin_info(opt_debug_info_dir); test_bin_info_elf(opt_debug_info_dir); + test_bin_info_bundled(opt_debug_info_dir); test_bin_info_build_id(opt_debug_info_dir); test_bin_info_debug_link(opt_debug_info_dir); diff --git a/tests/plugins/test_bin_info_x86_64-linux-gnu.in b/tests/plugins/test_bin_info_x86_64-linux-gnu.in index 461dfa48..6ed40daf 100644 --- a/tests/plugins/test_bin_info_x86_64-linux-gnu.in +++ b/tests/plugins/test_bin_info_x86_64-linux-gnu.in @@ -1,6 +1,7 @@ #!/bin/bash # -# Copyright (C) 2015 - Antoine Busque +# Copyright (C) 2015 Antoine Busque +# Copyright (C) 2019 Michael Jeanson # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -24,4 +25,12 @@ curdir="$(cd -P "$(dirname "$0")" >/dev/null && pwd)" debug_info_data="${BT_SRC_PATH}/tests/debug-info-data/x86_64-linux-gnu" -"${curdir}/test_bin_info" "$debug_info_data" +"${curdir}/test_bin_info" \ + --foo-addr=0x2277 \ + --printf-offset=0xf0 \ + --printf-lineno=36 \ + --tp-offset=0x89 \ + --tp-lineno=35 \ + --debug-link-crc=0x289a8fdc \ + --debug-info-dir "$debug_info_data" \ + --build-id cdd98cdd87f7fe64c13b6daad553987eafd40cbb -- 2.34.1