Re: [PATCH] btf_encoder: Add extra checks for symbol names

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/13/21 11:50 PM, Sedat Dilek wrote:
On Wed, Jan 13, 2021 at 1:28 AM Tom Stellard <tstellar@xxxxxxxxxx> wrote:

On 1/12/21 10:40 AM, Jiri Olsa wrote:
When processing kernel image build by clang we can
find some functions without the name, which causes
pahole to segfault.

Adding extra checks to make sure we always have
function's name defined before using it.


I backported this patch to pahole 1.19, and I can confirm it fixes the
segfault for me.


Thanks for testing.

Can you give me Git commit-id of LLVM-12 you tried?


I was building with LLVM 11.0.1

-Tom

- Sedat -

-Tom

Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx>
---
   btf_encoder.c | 8 ++++++--
   1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/btf_encoder.c b/btf_encoder.c
index 333973054b61..17f7a14f2ef0 100644
--- a/btf_encoder.c
+++ b/btf_encoder.c
@@ -72,6 +72,8 @@ static int collect_function(struct btf_elf *btfe, GElf_Sym *sym)

       if (elf_sym__type(sym) != STT_FUNC)
               return 0;
+     if (!elf_sym__name(sym, btfe->symtab))
+             return 0;

       if (functions_cnt == functions_alloc) {
               functions_alloc = max(1000, functions_alloc * 3 / 2);
@@ -730,9 +732,11 @@ int cu__encode_btf(struct cu *cu, int verbose, bool force,
               if (!has_arg_names(cu, &fn->proto))
                       continue;
               if (functions_cnt) {
-                     struct elf_function *func;
+                     const char *name = function__name(fn, cu);
+                     struct elf_function *func = NULL;

-                     func = find_function(btfe, function__name(fn, cu));
+                     if (name)
+                             func = find_function(btfe, name);
                       if (!func || func->generated)
                               continue;
                       func->generated = true;







[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux