2020#include "libbpf_common.h"
2121#include "libbpf_internal.h"
2222#include "hashmap.h"
23+ #include "str_error.h"
2324
2425/* libbpf's USDT support consists of BPF-side state/code and user-space
2526 * state/code working together in concert. BPF-side parts are defined in
@@ -465,8 +466,8 @@ static int parse_vma_segs(int pid, const char *lib_path, struct elf_seg **segs,
465466 goto proceed ;
466467
467468 if (!realpath (lib_path , path )) {
468- pr_warn ("usdt: failed to get absolute path of '%s' (err %d ), using path as is...\n" ,
469- lib_path , - errno );
469+ pr_warn ("usdt: failed to get absolute path of '%s' (err %s ), using path as is...\n" ,
470+ lib_path , errstr ( - errno ) );
470471 libbpf_strlcpy (path , lib_path , sizeof (path ));
471472 }
472473
@@ -475,8 +476,8 @@ static int parse_vma_segs(int pid, const char *lib_path, struct elf_seg **segs,
475476 f = fopen (line , "re" );
476477 if (!f ) {
477478 err = - errno ;
478- pr_warn ("usdt: failed to open '%s' to get base addr of '%s': %d \n" ,
479- line , lib_path , err );
479+ pr_warn ("usdt: failed to open '%s' to get base addr of '%s': %s \n" ,
480+ line , lib_path , errstr ( err ) );
480481 return err ;
481482 }
482483
@@ -606,7 +607,8 @@ static int collect_usdt_targets(struct usdt_manager *man, Elf *elf, const char *
606607
607608 err = parse_elf_segs (elf , path , & segs , & seg_cnt );
608609 if (err ) {
609- pr_warn ("usdt: failed to process ELF program segments for '%s': %d\n" , path , err );
610+ pr_warn ("usdt: failed to process ELF program segments for '%s': %s\n" ,
611+ path , errstr (err ));
610612 goto err_out ;
611613 }
612614
@@ -708,8 +710,8 @@ static int collect_usdt_targets(struct usdt_manager *man, Elf *elf, const char *
708710 if (vma_seg_cnt == 0 ) {
709711 err = parse_vma_segs (pid , path , & vma_segs , & vma_seg_cnt );
710712 if (err ) {
711- pr_warn ("usdt: failed to get memory segments in PID %d for shared library '%s': %d \n" ,
712- pid , path , err );
713+ pr_warn ("usdt: failed to get memory segments in PID %d for shared library '%s': %s \n" ,
714+ pid , path , errstr ( err ) );
713715 goto err_out ;
714716 }
715717 }
@@ -1047,8 +1049,8 @@ struct bpf_link *usdt_manager_attach_usdt(struct usdt_manager *man, const struct
10471049
10481050 if (is_new && bpf_map_update_elem (spec_map_fd , & spec_id , & target -> spec , BPF_ANY )) {
10491051 err = - errno ;
1050- pr_warn ("usdt: failed to set USDT spec #%d for '%s:%s' in '%s': %d \n" ,
1051- spec_id , usdt_provider , usdt_name , path , err );
1052+ pr_warn ("usdt: failed to set USDT spec #%d for '%s:%s' in '%s': %s \n" ,
1053+ spec_id , usdt_provider , usdt_name , path , errstr ( err ) );
10521054 goto err_out ;
10531055 }
10541056 if (!man -> has_bpf_cookie &&
@@ -1058,9 +1060,9 @@ struct bpf_link *usdt_manager_attach_usdt(struct usdt_manager *man, const struct
10581060 pr_warn ("usdt: IP collision detected for spec #%d for '%s:%s' in '%s'\n" ,
10591061 spec_id , usdt_provider , usdt_name , path );
10601062 } else {
1061- pr_warn ("usdt: failed to map IP 0x%lx to spec #%d for '%s:%s' in '%s': %d \n" ,
1063+ pr_warn ("usdt: failed to map IP 0x%lx to spec #%d for '%s:%s' in '%s': %s \n" ,
10621064 target -> abs_ip , spec_id , usdt_provider , usdt_name ,
1063- path , err );
1065+ path , errstr ( err ) );
10641066 }
10651067 goto err_out ;
10661068 }
@@ -1076,8 +1078,8 @@ struct bpf_link *usdt_manager_attach_usdt(struct usdt_manager *man, const struct
10761078 target -> rel_ip , & opts );
10771079 err = libbpf_get_error (uprobe_link );
10781080 if (err ) {
1079- pr_warn ("usdt: failed to attach uprobe #%d for '%s:%s' in '%s': %d \n" ,
1080- i , usdt_provider , usdt_name , path , err );
1081+ pr_warn ("usdt: failed to attach uprobe #%d for '%s:%s' in '%s': %s \n" ,
1082+ i , usdt_provider , usdt_name , path , errstr ( err ) );
10811083 goto err_out ;
10821084 }
10831085
@@ -1099,8 +1101,8 @@ struct bpf_link *usdt_manager_attach_usdt(struct usdt_manager *man, const struct
10991101 NULL , & opts_multi );
11001102 if (!link -> multi_link ) {
11011103 err = - errno ;
1102- pr_warn ("usdt: failed to attach uprobe multi for '%s:%s' in '%s': %d \n" ,
1103- usdt_provider , usdt_name , path , err );
1104+ pr_warn ("usdt: failed to attach uprobe multi for '%s:%s' in '%s': %s \n" ,
1105+ usdt_provider , usdt_name , path , errstr ( err ) );
11041106 goto err_out ;
11051107 }
11061108
0 commit comments