From 394fd13b86bfd96bfb4b607447e9aad24f5b1090 Mon Sep 17 00:00:00 2001 From: Antoine Busque Date: Wed, 30 Sep 2015 04:54:46 -0400 Subject: [PATCH] Tests: add unit tests for so_info MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Antoine Busque Signed-off-by: Jérémie Galarneau --- .gitignore | 1 + ...8cdd87f7fe64c13b6daad553987eafd40cbb.debug | Bin 0 -> 26344 bytes tests/debuginfo-data/libhello.so | Bin 40456 -> 40408 bytes tests/debuginfo-data/libhello_build_id.so | Bin 0 -> 22304 bytes tests/debuginfo-data/libhello_debug_link.so | Bin 0 -> 16800 bytes .../libhello_debug_link.so.debug | Bin 0 -> 26136 bytes tests/debuginfo-data/libhello_elf.so | Bin 0 -> 22344 bytes tests/lib/Makefile.am | 10 +- tests/lib/test_so_info.c | 264 ++++++++++++++++++ tests/lib/test_so_info_complete | 22 ++ tests/tests_debuginfo | 3 +- 11 files changed, 297 insertions(+), 3 deletions(-) create mode 100644 tests/debuginfo-data/.build-id/cd/d98cdd87f7fe64c13b6daad553987eafd40cbb.debug create mode 100644 tests/debuginfo-data/libhello_build_id.so create mode 100644 tests/debuginfo-data/libhello_debug_link.so create mode 100644 tests/debuginfo-data/libhello_debug_link.so.debug create mode 100644 tests/debuginfo-data/libhello_elf.so create mode 100644 tests/lib/test_so_info.c create mode 100755 tests/lib/test_so_info_complete diff --git a/.gitignore b/.gitignore index 94f6f3e2..a198e625 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ /tests/lib/test_seek /tests/lib/test_ctf_writer /tests/lib/test_durin +/tests/lib/test_so_info *.o *.a *.la diff --git a/tests/debuginfo-data/.build-id/cd/d98cdd87f7fe64c13b6daad553987eafd40cbb.debug b/tests/debuginfo-data/.build-id/cd/d98cdd87f7fe64c13b6daad553987eafd40cbb.debug new file mode 100644 index 0000000000000000000000000000000000000000..aaeed269660d3ac4461f705711d121c58ffe6fcc GIT binary patch literal 26344 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 Dau<=T literal 0 HcmV?d00001 diff --git a/tests/debuginfo-data/libhello.so b/tests/debuginfo-data/libhello.so index f0a93e5acf0965f5b5018e3fc7a1709bcb534288..849f440a339acf991d9c93d89c31efa8b0f31263 100644 GIT binary patch delta 4680 zcmZ8ld3aRS6~Fh*Oy*rO^D<;eGLywjHZoz!LL^LJ0tuuL_5=b6A;GXI5rJ5+rmZFc zg+@PtOs^R3@C;xEempOkOvY_*`$!nXp{N1s;YdhzI_yD;huqaZq zG3GeI8GGL%a|=iDv$Cl$$<}FQ%qCk(QsnN!zRvC7B7R=Y81v|VlRp%WH6~$KgpJcu zx!5Pi4X)uo$X5pU9{!aZf(-t92-?LV+Lz5&f>|p*CniTR8^lRsauxHc_!lvGirFg8 z$*3V-eod(GO#iJ8I+4J2W<=;Dw>LsJVD}YR zuvke8DJzujv1l0+tmdoa!eCs+St#-22S`Uh3NioU6lj-T1#o_nz&-kM*%^GC&yqPs zN&Ephz9@~Kk`F3+bx~Y=2O(T3?g`uYEi?Zx-VwJ%?kyUXa2RlW34b}-6nuJ9?kVU> z9h#t}B*T)$yANu@vLWD8@|2&jsCU-DeCk>`qc}^`tn!KCrDlabv#Scllu(80N|Jb| z{C!Ees*HZKGRI2H%ILQ$lQ*0y^VIO(wNx4X_R8qDS4O|RGWzY6(Qj6U{2Rdg!`oeA z58Tx6=Ci=;6&Iy3f~u7>Vxgl7L5p{3UF(*wjR^EtKdL-x|&GPjKmoF+p zC%L^*8l`a>ij`S9yJ!`ZbNT20pp9wR!H-g{nQoTPM&5+W7Z3VI`3RiK_d)4`mL5*5 zYiTv4`UD(m8eGR4h@XGF--v>}Pxi#h~WA?*#~Srz{^CXUv4Ub3WO#a!-q;63eNNUQD~PsYtHX! zYc7jigIyN5pRfW1i(ZB-E9Z?#L$T^+bS&JP@Z|1vENJdbL}_Vp4|YM(ody#&_e+Q> zf<>=Hg3Y~k_tD;ORp93!eFtK`7}qEE!8Fqv#?m7|TY2v?hKT z3HmWwxAG`!qMbyKo2+5go!yAaSWdjIZZYkY@;}0j}W&$M%;cqhov5gY{U~K76eFWc1*wfjzMP-*oIvr5-UD-;O3>X)hsd5qdJ# z<5H2MHg5d59E^U6(s_jpGS4Fv($%N2T+BU_NN}wIx@Fw6Ue=AN8~P%!8!cyA@keim z!17%ZykNQ;yDjHd5~*)T2U*VhvF_5D6ZH4}30gnqlvl^3wmeHq*JvqMUxl`@T&J@f z(D%~%Ped1IE?GRASvaRgFB3c9jYZ?*At@I_3EZNX%FKpFX0fV^salL8fsIcFNQ{B+%>-DcIB`rksHQ(2fhMr;~PE`)5Rm&DBRO(X8J@aX@9Hiq>Bn- z&M3w&Lh`~`@1(haHqI&KGC>g==Q)L3o;8D%zgNmuo?M;TFozlcR&1?MCHoJjAyO}1 z#4$21@?XRFoUEhKa@x4z1tnPX8xi~*K*W0lYv)@KKNE+^J6+-EVmC>IVjKc_Ju)tp zzb-G08#r+b#cxFM^-vdd#TqWI?pV=9rR~XS0PC5vmozaWns0)Z%e3R>uY>WJc6upj zpNN-D<1@5xgnV&)a?2|CR&MzCaF`H{)VL{O=r<^hsY;-W*T_zq0&s~72+m07G{ZgO zG^u4M#xG7%_x4r^42Vx@PbQ}!7Zg8JUi^wF7OI1@sI0PRLdL?2NV_?ZviVZLxtp=T z+$Z2VXW3O?+BIVk|Akys$qw+@pqcoR92uf)>*7^p)F=vj6(VM6*sC>Eykb5A1qx)e z%fk~A@=Jhij8O5Qo^2YMs{>m8hq15BsN(^+D-_5K1;Rv~ylY~z?-SI>bagSWg^oL( zPKx_DeB{i3GD_A>j2lx(ZauOdGM?dONQOt0%AY5CTbvj*#&i5lfaaR!o>%4q zX1~9nm@=XIxx+kVS@S7B>uw~YUYw#TZd97{#6=oBe^LgU!~oKKNl97-r*8Q(r~9^D z^up74naefht`>F7_9*b&V#-A~rwO3*Va)FWLcOt#-;d@H9?H#M_-4>dl#}Og@@_DC zCI;hMd>xYQGW~vAp?Sm)1h`9d^ z8)31v)zCB=F5+Vd42wqZT{zdoSQTS6r;bfAx;b?sG%Bx4JVYh4Yv$QGK<0JD_{}(l zVghF6dMGAbtVp0uV657#mO~p4IJ9o9D5tUEQmXahU5dM>whZnyX3%wML@UFMtvN?2 zb#Bu^p4`-$^P!wLc|cMj@`2m*8edN#y+hf#u4ufF{YI{zoET9Gn7j_Tcd~~sk;f;G z%DaXEukE6+ugBqmUxN7uZ{rn^70`gtcF}vE7MjQMrL3szm!obL52s13h3W(9a`C9L zYN6_Yx>LNoKY+AQc>v>Yb7f*rb?d~d8LWjEE0pqhWs0vB5SE&-?!3T{@b4yD&+?OH z{FHuu=q1H+e^{xW4IYQctQC=7(^K@C`tgpugR*go2j3e{O!4tt**T?8|5+FmHpglx zSVCJ{g3rR7&0%_09jw85usJCETBwo@>6Cn`uPhhFY~C#tcBs1GbxdQMccoG(FE~YL zUdomh8fSueO|W?;nAZfG!-}4j4O0{OgL1{xe)tUPnwrLE$fHw}`967NYGJMy@HR(m ztmzi;iY_B2n|Dq;X#C2|KPbXk=oCCC>#LIR1=Uv7IOK4Y1utv_D7L%#U=eQ2ESbQD;ieA83aFL=HVc8Pe&>YN{>!!u! zj8#?Wfj&Yo!O<8kHiucPV2`#(pA&9-}JA;ZG5WS7mm7rw=s9oZYXHbe3@#Gos~F?lya1-(r%9jb|oQZadN z#w0J-By+EfneO8SvS51ugsV6K)*MS&iWydRI6B@D?3T^by?m5hJ3R|WXdj+-d49UL z?^&}VFe%8a`UM4MpUpux+--|VGPkxDzeoP6Ha)I{?3~kTFiwPJ>mZ-nHhhL`t&K@N zh90zP7D~0Sv=^GP5%m2YrM}-w*UFu>>ihjvZ6WWFiFMwD(N0Ru*hB@Fq0pF3K3#`rcW_018nbxGoQ8!+AXXJaW{8DZUYTdA@XII%myQ{0R`5uRsACT=& o#&+$0GAUZqd&vufV*j|#$J1rXx?%irITKG^Zp70kzh0O5Kf<>>djJ3c delta 4727 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 diff --git a/tests/debuginfo-data/libhello_build_id.so b/tests/debuginfo-data/libhello_build_id.so new file mode 100644 index 0000000000000000000000000000000000000000..563e0ed9b69e04b1761491fc45d7692229ca69f9 GIT binary patch literal 22304 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 G<^MNwMRptj literal 0 HcmV?d00001 diff --git a/tests/debuginfo-data/libhello_elf.so b/tests/debuginfo-data/libhello_elf.so new file mode 100644 index 0000000000000000000000000000000000000000..9d1eb29a0f6c9b474a08875882833ffb12834819 GIT binary patch literal 22344 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 + * + * 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 + * the Free Software Foundation; under version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include +#include +#include +#include "tap/tap.h" + +#define NR_TESTS 36 +#define SO_NAME "libhello.so" +#define SO_NAME_ELF "libhello_elf.so" +#define SO_NAME_BUILD_ID "libhello_build_id.so" +#define SO_NAME_DEBUG_LINK "libhello_debug_link.so" +#define SO_LOW_ADDR 0x400000 +#define SO_MEMSZ 0x400000 +#define FUNC_FOO_ADDR 0x4014ee +#define FUNC_FOO_LINE_NO 8 +#define FUNC_FOO_FILENAME "/efficios/libhello.c" +#define FUNC_FOO_TP_ADDR 0x4014d3 +#define FUNC_FOO_TP_LINE_NO 7 +#define FUNC_FOO_TP_FILENAME "/efficios/libhello.c" +#define FUNC_FOO_ADDR_ELF 0x4013ef +#define FUNC_FOO_ADDR_DBG_LINK 0x40148e +#define FUNC_FOO_NAME "foo" +#define FUNC_FOO_NAME_ELF "foo+0x24" +#define BUILD_ID_LEN 20 + +char *opt_debug_dir; + +static +void test_so_info_build_id(const char *data_dir) +{ + int ret; + char path[PATH_MAX]; + char *func_name = NULL; + struct so_info *so = NULL; + struct source_location *src_loc = NULL; + uint8_t build_id[BUILD_ID_LEN] = { + 0xcd, 0xd9, 0x8c, 0xdd, 0x87, 0xf7, 0xfe, 0x64, 0xc1, 0x3b, + 0x6d, 0xaa, 0xd5, 0x53, 0x98, 0x7e, 0xaf, 0xd4, 0x0c, 0xbb + }; + + diag("so-info tests - separate DWARF via build ID"); + + snprintf(path, PATH_MAX, "%s/%s", data_dir, SO_NAME_BUILD_ID); + + so = so_info_create(path, SO_LOW_ADDR, SO_MEMSZ); + ok(so != NULL, "so_info_create succesful"); + + /* Test setting build_id */ + ret = so_info_set_build_id(so, build_id, BUILD_ID_LEN); + ok(ret == 0, "so_info_set_build_id succesful"); + + /* Test function name lookup (with DWARF) */ + ret = so_info_lookup_function_name(so, FUNC_FOO_ADDR, &func_name); + ok(ret == 0, "so_info_lookup_function_name succesful"); + ok(strcmp(func_name, FUNC_FOO_NAME) == 0, + "so_info_lookup_function_name - correct func_name value"); + free(func_name); + + /* Test source location lookup */ + ret = so_info_lookup_source_location(so, FUNC_FOO_ADDR, &src_loc); + ok(ret == 0, "so_info_lookup_source_location succesful"); + ok(src_loc->line_no == FUNC_FOO_LINE_NO, + "so_info_lookup_source_location - correct line_no"); + ok(strcmp(src_loc->filename, FUNC_FOO_FILENAME) == 0, + "so_info_lookup_source_location - correct filename"); + source_location_destroy(src_loc); + + so_info_destroy(so); +} + +static +void test_so_info_debug_link(const char *data_dir) +{ + int ret; + char path[PATH_MAX]; + char *func_name = NULL; + struct so_info *so = NULL; + struct source_location *src_loc = NULL; + char *dbg_filename = "libhello_debug_link.so.debug"; + uint32_t crc = 0xe55c2b98; + + diag("so-info tests - separate DWARF via debug link"); + + snprintf(path, PATH_MAX, "%s/%s", data_dir, SO_NAME_DEBUG_LINK); + + so = so_info_create(path, SO_LOW_ADDR, SO_MEMSZ); + ok(so != NULL, "so_info_create succesful"); + + /* Test setting debug link */ + ret = so_info_set_debug_link(so, dbg_filename, crc); + ok(ret == 0, "so_info_set_debug_link succesful"); + + /* Test function name lookup (with DWARF) */ + ret = so_info_lookup_function_name(so, FUNC_FOO_ADDR_DBG_LINK, + &func_name); + ok(ret == 0, "so_info_lookup_function_name succesful"); + ok(strcmp(func_name, FUNC_FOO_NAME) == 0, + "so_info_lookup_function_name - correct func_name value"); + free(func_name); + + /* Test source location lookup */ + ret = so_info_lookup_source_location(so, FUNC_FOO_ADDR_DBG_LINK, + &src_loc); + ok(ret == 0, "so_info_lookup_source_location succesful"); + ok(src_loc->line_no == FUNC_FOO_LINE_NO, + "so_info_lookup_source_location - correct line_no"); + ok(strcmp(src_loc->filename, FUNC_FOO_FILENAME) == 0, + "so_info_lookup_source_location - correct filename"); + source_location_destroy(src_loc); + + so_info_destroy(so); +} + +static +void test_so_info_elf(const char *data_dir) +{ + int ret; + char path[PATH_MAX]; + char *func_name = NULL; + struct so_info *so = NULL; + struct source_location *src_loc = NULL; + + diag("so-info tests - ELF only"); + + snprintf(path, PATH_MAX, "%s/%s", data_dir, SO_NAME_ELF); + + so = so_info_create(path, SO_LOW_ADDR, SO_MEMSZ); + ok(so != NULL, "so_info_create succesful"); + + /* Test function name lookup (with ELF) */ + ret = so_info_lookup_function_name(so, FUNC_FOO_ADDR_ELF, &func_name); + ok(ret == 0, "so_info_lookup_function_name succesful"); + ok(strcmp(func_name, FUNC_FOO_NAME_ELF) == 0, + "so_info_lookup_function_name - correct func_name value"); + free(func_name); + func_name = NULL; + + /* Test function name lookup - erroneous address */ + ret = so_info_lookup_function_name(so, 0, &func_name); + ok(ret == -1 && func_name == NULL, + "so_info_lookup_function_name - fail on addr not found"); + + /* Test source location location - should fail on ELF only file */ + ret = so_info_lookup_source_location(so, FUNC_FOO_ADDR_ELF, &src_loc); + ok(ret == -1, "so_info_lookup_source_location - fail on ELF only file"); + + source_location_destroy(src_loc); + so_info_destroy(so); +} + +static +void test_so_info(const char *data_dir) +{ + int ret; + char path[PATH_MAX]; + char *func_name = NULL; + struct so_info *so = NULL; + struct source_location *src_loc = NULL; + + diag("so-info tests - DWARF bundled with SO file"); + + snprintf(path, PATH_MAX, "%s/%s", data_dir, SO_NAME); + + so = so_info_create(path, SO_LOW_ADDR, SO_MEMSZ); + ok(so != NULL, "so_info_create succesful"); + + /* Test so_info_has_address */ + ret = so_info_has_address(so, 0); + ok(ret == 0, "so_info_has_address - address under so's range"); + ret = so_info_has_address(so, SO_LOW_ADDR); + ok(ret == 1, "so_info_has_address - lower bound of so's range"); + ret = so_info_has_address(so, FUNC_FOO_ADDR); + ok(ret == 1, "so_info_has_address - address in so's range"); + ret = so_info_has_address(so, SO_LOW_ADDR + SO_MEMSZ - 1); + ok(ret == 1, "so_info_has_address - upper bound of so's range"); + ret = so_info_has_address(so, SO_LOW_ADDR + SO_MEMSZ); + ok(ret == 0, "so_info_has_address - address above so's range"); + + /* Test function name lookup (with DWARF) */ + ret = so_info_lookup_function_name(so, FUNC_FOO_ADDR, &func_name); + ok(ret == 0, "so_info_lookup_function_name succesful"); + ok(strcmp(func_name, FUNC_FOO_NAME) == 0, + "so_info_lookup_function_name - correct func_name value"); + free(func_name); + func_name = NULL; + + /* Test function name lookup - erroneous address */ + ret = so_info_lookup_function_name(so, 0, &func_name); + ok(ret == -1 && func_name == NULL, + "so_info_lookup_function_name - fail on addr not found"); + + /* Test source location lookup */ + ret = so_info_lookup_source_location(so, FUNC_FOO_ADDR, &src_loc); + ok(ret == 0, "so_info_lookup_source_location succesful"); + ok(src_loc->line_no == FUNC_FOO_LINE_NO, + "so_info_lookup_source_location - correct line_no"); + ok(strcmp(src_loc->filename, FUNC_FOO_FILENAME) == 0, + "so_info_lookup_source_location - correct filename"); + source_location_destroy(src_loc); + src_loc = NULL; + + /* Test source location lookup - inlined function */ + ret = so_info_lookup_source_location(so, FUNC_FOO_TP_ADDR, &src_loc); + ok(ret == 0, + "so_info_lookup_source_location (inlined func) succesful"); + ok(src_loc->line_no == FUNC_FOO_TP_LINE_NO, + "so_info_lookup_source_location (inlined func) - correct line_no"); + ok(strcmp(src_loc->filename, FUNC_FOO_TP_FILENAME) == 0, + "so_info_lookup_source_location (inlined func) - correct filename"); + source_location_destroy(src_loc); + src_loc = NULL; + + /* Test source location lookup - erroneous address */ + ret = so_info_lookup_source_location(so, 0, &src_loc); + ok(ret == -1 && src_loc == NULL, + "so_info_lookup_source_location - fail on addr not found"); + + so_info_destroy(so); +} + +int main(int argc, char **argv) +{ + int ret; + + plan_tests(NR_TESTS); + + if (argc != 2) { + return EXIT_FAILURE; + } else { + opt_debug_dir = argv[1]; + } + + ret = so_info_init(); + ok(ret == 0, "so_info_init succesful"); + + test_so_info(opt_debug_dir); + test_so_info_elf(opt_debug_dir); + test_so_info_build_id(opt_debug_dir); + test_so_info_debug_link(opt_debug_dir); + + return EXIT_SUCCESS; +} diff --git a/tests/lib/test_so_info_complete b/tests/lib/test_so_info_complete new file mode 100755 index 00000000..771fbfb7 --- /dev/null +++ b/tests/lib/test_so_info_complete @@ -0,0 +1,22 @@ +#!/bin/sh +# +# Copyright (C) 2015 - Antoine Busque +# +# 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 the Free Software Foundation; only version 2 +# of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +CURDIR=$(dirname $0)/ +ROOTDIR=$CURDIR../.. + +$CURDIR/test_so_info $ROOTDIR/tests/debuginfo-data diff --git a/tests/tests_debuginfo b/tests/tests_debuginfo index e7f774cd..4917f448 100644 --- a/tests/tests_debuginfo +++ b/tests/tests_debuginfo @@ -1 +1,2 @@ -lib/test_dwarf_complete \ No newline at end of file +lib/test_dwarf_complete +lib/test_so_info_complete -- 2.34.1