All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexandre Peixoto Ferreira <alexandref75@gmail.com>
To: Jiri Olsa <olsajiri@gmail.com>
Cc: Daniel Xu <dxu@dxuuu.xyz>,
	"bpf@vger.kernel.org" <bpf@vger.kernel.org>,
	Arnaldo Carvalho de Melo <acme@kernel.org>
Subject: Re: Kernel build fail with 'btf_encoder__encode: btf__dedup failed!'
Date: Wed, 8 Feb 2023 22:15:10 -0600	[thread overview]
Message-ID: <d880b3b3-d6fb-c891-bfc2-9c05c321ddac@gmail.com> (raw)
In-Reply-To: <Y9kxUzyfpEQpnN7w@krava>

Jiri,

On 1/31/23 09:18, Jiri Olsa wrote:
> On Sat, Jan 28, 2023 at 01:23:25PM -0600, Alexandre Peixoto Ferreira wrote:
>> Jirka and Daniel,
>>
>> On 1/27/23 18:00, Jiri Olsa wrote:
>>> On Fri, Jan 27, 2023 at 04:28:54PM -0600, Alexandre Peixoto Ferreira wrote:
>>>> On 1/24/23 00:13, Daniel Xu wrote:
>>>>> Hi Jiri,
>>>>>
>>>>> On Mon, Jan 23, 2023, at 1:06 AM, Jiri Olsa wrote:
>>>>>> On Sun, Jan 22, 2023 at 10:48:44AM -0700, Daniel Xu wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> I'm getting the following error during build:
>>>>>>>
>>>>>>>            $ ./tools/testing/selftests/bpf/vmtest.sh -j30
>>>>>>>            [...]
>>>>>>>              BTF     .btf.vmlinux.bin.o
>>>>>>>            btf_encoder__encode: btf__dedup failed!
>>>>>>>            Failed to encode BTF
>>>>>>>              LD      .tmp_vmlinux.kallsyms1
>>>>>>>              NM      .tmp_vmlinux.kallsyms1.syms
>>>>>>>              KSYMS   .tmp_vmlinux.kallsyms1.S
>>>>>>>              AS      .tmp_vmlinux.kallsyms1.S
>>>>>>>              LD      .tmp_vmlinux.kallsyms2
>>>>>>>              NM      .tmp_vmlinux.kallsyms2.syms
>>>>>>>              KSYMS   .tmp_vmlinux.kallsyms2.S
>>>>>>>              AS      .tmp_vmlinux.kallsyms2.S
>>>>>>>              LD      .tmp_vmlinux.kallsyms3
>>>>>>>              NM      .tmp_vmlinux.kallsyms3.syms
>>>>>>>              KSYMS   .tmp_vmlinux.kallsyms3.S
>>>>>>>              AS      .tmp_vmlinux.kallsyms3.S
>>>>>>>              LD      vmlinux
>>>>>>>              BTFIDS  vmlinux
>>>>>>>            FAILED: load BTF from vmlinux: No such file or directory
>>>>>>>            make[1]: *** [scripts/Makefile.vmlinux:35: vmlinux] Error 255
>>>>>>>            make[1]: *** Deleting file 'vmlinux'
>>>>>>>            make: *** [Makefile:1264: vmlinux] Error 2
>>>>>>>
>>>>>>> This happens on both bpf-next/master (84150795a49) and 6.2-rc5
>>>>>>> (2241ab53cb).
>>>>>>>
>>>>>>> I've also tried arch linux pahole 1:1.24+r29+g02d67c5-1 as well as
>>>>>>> upstream pahole on master (02d67c5176) and upstream pahole on
>>>>>>> next (2ca56f4c6f659).
>>>>>>>
>>>>>>> Of the above 6 combinations, I think I've tried all of them (maybe
>>>>>>> missing 1 or 2).
>>>>>>>
>>>>>>> Looks like GCC got updated recently on my machine, so perhaps
>>>>>>> it's related?
>>>>>>>
>>>>>>>            CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.2.1 20230111"
>>>>>>>
>>>>>>> I'll try some debugging, but just wanted to report it first.
>>>>>> hi,
>>>>>> I can't reproduce that.. can you reproduce it outside vmtest.sh?
>>>>>>
>>>>>> there will be lot of output with patch below, but could contain
>>>>>> some more error output
>>>>> Thanks for the hints. Doing a regular build outside of vmtest.sh
>>>>> seems to work ok. So maybe it's a difference in the build config.
>>>>>
>>>>> I'll put a little more time into debugging to see if it goes anywhere.
>>>>> But I'll have to get back to the regularly scheduled programming
>>>>> soon.
>>>> 6.2-rc5 compiles correctly when CONFIG_X86_KERNEL_IBT is commented but fails
>>>> in pahole when CONFIG_X86_KERNEL_IBT is set.
>>> could you plese attach your config and the build error?
>>> I can't reproduce that
>>>
>>> thanks,
>>> jirka
>> My working .config is available at https://pastebin.pl/view/bef3765c
>> change CONFIG_X86_KERNEL_IBT to y to get the error.
>>
>> The error is similar to Daniel's and is shown below:
>>
>>    LD      .tmp_vmlinux.btf
>>    BTF     .btf.vmlinux.bin.o
>> btf_encoder__encode: btf__dedup failed!
>> Failed to encode BTF
>>    LD      .tmp_vmlinux.kallsyms1
>>    NM      .tmp_vmlinux.kallsyms1.syms
>>    KSYMS   .tmp_vmlinux.kallsyms1.S
>>    AS      .tmp_vmlinux.kallsyms1.S
>>    LD      .tmp_vmlinux.kallsyms2
>>    NM      .tmp_vmlinux.kallsyms2.syms
>>    KSYMS   .tmp_vmlinux.kallsyms2.S
>>    AS      .tmp_vmlinux.kallsyms2.S
>>    LD      .tmp_vmlinux.kallsyms3
>>    NM      .tmp_vmlinux.kallsyms3.syms
>>    KSYMS   .tmp_vmlinux.kallsyms3.S
>>    AS      .tmp_vmlinux.kallsyms3.S
>>    LD      vmlinux
>>    BTFIDS  vmlinux
>> FAILED: load BTF from vmlinux: No such file or directory
>> make[1]: *** [scripts/Makefile.vmlinux:35: vmlinux] Error 255
>> make[1]: *** Deleting file 'vmlinux'
>> make: *** [Makefile:1264: vmlinux] Error 2
> I can't reproduce that.. I tried with gcc versions:
>
>    gcc (GCC) 13.0.1 20230117 (Red Hat 13.0.1-0)
>    gcc (GCC) 12.2.1 20221121 (Red Hat 12.2.1-4)
>
> I haven't found fedora setup with 12.2.1 20230111 yet
>
> I tried alsa with latest pahole master branch
>
> were you guys able to get any more verbose output
> that I suggested earlier?
>
> jirka

I compiled with and without IBT using the -V on pahole 
(LLVM_OBJCOPY=objcopy pahole -V -J --btf_gen_floats -j .tmp_vmlinux.btf) 
and the outfiles are a little too big (540MB). The error happens with 
this CONST type pointing to itself. That does not happen with the IBT 
option removed.

$ grep  -n "CONST (anon) type_id" /tmp/with_IBT  | more
346:[2] CONST (anon) type_id=2
349:[5] CONST (anon) type_id=5
351:[7] CONST (anon) type_id=7
356:[12] CONST (anon) type_id=12
363:[19] CONST (anon) type_id=19
373:[29] CONST (anon) type_id=29
375:[31] CONST (anon) type_id=31
409:[63] CONST (anon) type_id=63
444:[89] CONST (anon) type_id=0
472:[97] CONST (anon) type_id=97
616:[129] CONST (anon) type_id=129
652:[131] CONST (anon) type_id=131
1319:[234] CONST (anon) type_id=234
1372:[246] CONST (anon) type_id=246
....

$diff -ru with_IBT without_IBT
--- with_IBT 2023-01-31 09:39:24.915912735 -0600
+++ without_IBT 2023-01-31 09:46:23.456005278 -0600
@@ -340,346 +340,14800 @@
  Found per-CPU symbol 'cpu_tlbstate_shared' at address 0x2c040
  Found per-CPU symbol 'mce_poll_banks' at address 0x1ad20
  Found 341 per-CPU variables!
-Found 61470 functions!
+Found 61462 functions!
+File .tmp_vmlinux.btf:
+[1] FUNC_PROTO (anon) return=0 args=(void)
+[2] FUNC verify_cpu type_id=1
+[3] FUNC_PROTO (anon) return=0 args=(void)
+[4] FUNC sev_verify_cbit type_id=3
+search cu 'arch/x86/kernel/head_64.S' for percpu global variables.
+Found per-CPU symbol 'cpu_loops_per_jiffy' at address 0x18a08
+Found per-CPU symbol 'perf_nmi_tstamp' at address 0x19f70
+Found per-CPU symbol 'kvm_running_vcpu' at address 0x19f80
+Found per-CPU symbol 'cpu_kick_mask' at address 0x19f78
+Found per-CPU symbol 'cpu_tsc_khz' at address 0x19f88
+Found per-CPU symbol 'cpu_loops_per_jiffy' at address 0x18a08
+Found per-CPU symbol 'cpu_loops_per_jiffy' at address 0x18a08
+Found per-CPU symbol 'perf_nmi_tstamp' at address 0x19f70
+Found per-CPU symbol 'perf_nmi_tstamp' at address 0x19f70
+Found per-CPU symbol 'current_tsc_ratio' at address 0x19fa0
+Found per-CPU symbol 'cpu_loops_per_jiffy' at address 0x18a08
+Found per-CPU symbol 'cpu_loops_per_jiffy' at address 0x18a08
+Found per-CPU symbol 'kvm_running_vcpu' at address 0x19f80
+Found per-CPU symbol 'kvm_running_vcpu' at address 0x19f80
+Found per-CPU symbol 'cpu_kick_mask' at address 0x19f78
+Found per-CPU symbol 'cpu_kick_mask' at address 0x19f78
+Found per-CPU symbol 'perf_nmi_tstamp' at address 0x19f70
+Found per-CPU symbol 'perf_nmi_tstamp' at address 0x19f70
+Found per-CPU symbol 'cpu_loops_per_jiffy' at address 0x18a08
+Found per-CPU symbol 'perf_nmi_tstamp' at address 0x19f70
+Found per-CPU symbol 'cpu_tsc_khz' at address 0x19f88
+Found per-CPU symbol 'last_nmi_rip' at address 0x1a018
+Found per-CPU symbol 'nmi_stats' at address 0x1a030
+Found per-CPU symbol 'swallow_nmi' at address 0x1a020
+Found per-CPU symbol 'nmi_state' at address 0x1a010
+Found per-CPU symbol 'kvm_running_vcpu' at address 0x19f80
+Found per-CPU symbol 'nmi_cr2' at address 0x1a008
+Found per-CPU symbol 'kvm_running_vcpu' at address 0x19f80
+Found per-CPU symbol 'cpu_tsc_khz' at address 0x19f88
+Found per-CPU symbol 'cpu_kick_mask' at address 0x19f78
+Found per-CPU symbol 'cpu_kick_mask' at address 0x19f78
+Found per-CPU symbol 'cpu_loops_per_jiffy' at address 0x18a08
...

And the lines 342-365 of the with_IBT result:
      342 Found 341 per-CPU variables!
      343 Found 61470 functions!
      344 File .tmp_vmlinux.btf:
      345 [1] INT long unsigned int size=8 nr_bits=64 encoding=(none)
      346 [2] CONST (anon) type_id=2
      347 [3] PTR (anon) type_id=6
      348 [4] INT char size=1 nr_bits=8 encoding=(none)
      349 [5] CONST (anon) type_id=5
      350 [6] INT unsigned int size=4 nr_bits=32 encoding=(none)
      351 [7] CONST (anon) type_id=7
      352 [8] TYPEDEF __s8 type_id=10
      353 [9] INT signed char size=1 nr_bits=8 encoding=SIGNED
      354 [10] TYPEDEF __u8 type_id=12
      355 [11] INT unsigned char size=1 nr_bits=8 encoding=(none)
      356 [12] CONST (anon) type_id=12
      357 [13] TYPEDEF __s16 type_id=15
      358 [14] INT short int size=2 nr_bits=16 encoding=SIGNED
      359 [15] TYPEDEF __u16 type_id=17
      360 [16] INT short unsigned int size=2 nr_bits=16 encoding=(none)
      361 [17] TYPEDEF __s32 type_id=19
      362 [18] INT int size=4 nr_bits=32 encoding=SIGNED
      363 [19] CONST (anon) type_id=19
      364 [20] TYPEDEF __u32 type_id=7
      365 [21] TYPEDEF __s64 type_id=23

lines 342-362 of without_IBT

      342 Found 341 per-CPU variables!
      343 Found 61462 functions!
      344 File .tmp_vmlinux.btf:
      345 [1] FUNC_PROTO (anon) return=0 args=(void)
      346 [2] FUNC verify_cpu type_id=1
      347 [3] FUNC_PROTO (anon) return=0 args=(void)
      348 [4] FUNC sev_verify_cbit type_id=3
      349 search cu 'arch/x86/kernel/head_64.S' for percpu global variables.
      350 Found per-CPU symbol 'cpu_loops_per_jiffy' at address 0x18a08
      351 Found per-CPU symbol 'perf_nmi_tstamp' at address 0x19f70
      352 Found per-CPU symbol 'kvm_running_vcpu' at address 0x19f80
      353 Found per-CPU symbol 'cpu_kick_mask' at address 0x19f78
      354 Found per-CPU symbol 'cpu_tsc_khz' at address 0x19f88
      355 Found per-CPU symbol 'cpu_loops_per_jiffy' at address 0x18a08
      356 Found per-CPU symbol 'cpu_loops_per_jiffy' at address 0x18a08
      357 Found per-CPU symbol 'perf_nmi_tstamp' at address 0x19f70
      358 Found per-CPU symbol 'perf_nmi_tstamp' at address 0x19f70
      359 Found per-CPU symbol 'current_tsc_ratio' at address 0x19fa0
      360 Found per-CPU symbol 'cpu_loops_per_jiffy' at address 0x18a08
      361 Found per-CPU symbol 'cpu_loops_per_jiffy' at address 0x18a08
      362 Found per-CPU symbol 'kvm_running_vcpu' at address 0x19f80

If the full debug files are useful or a target grep or diff is better 
let me know.

Thanks,

-- 
Alexandre Peixoto Ferreira


  parent reply	other threads:[~2023-02-09  4:17 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-22 17:48 Kernel build fail with 'btf_encoder__encode: btf__dedup failed!' Daniel Xu
2023-01-22 21:25 ` Daniel Xu
2023-01-23  8:06 ` Jiri Olsa
2023-01-24  6:13   ` Daniel Xu
2023-01-27 22:28     ` Alexandre Peixoto Ferreira
2023-01-28  0:00       ` Jiri Olsa
2023-01-28  0:21         ` Daniel Xu
2023-01-28  0:23           ` Daniel Xu
2023-01-28 19:23         ` Alexandre Peixoto Ferreira
2023-01-31 15:18           ` Jiri Olsa
2023-02-09  0:21             ` Vicki Pfau
2023-02-09  4:15             ` Alexandre Peixoto Ferreira [this message]
2023-02-09 13:07               ` Alan Maguire
2023-02-10 14:02                 ` Alexandre Peixoto Ferreira
2023-02-10 14:34                   ` Jiri Olsa
2023-02-10 15:37                     ` Alexandre Ferreira
2023-02-14  6:33                       ` Tianyi Liu
2023-04-11 17:00                         ` [PATCH] vmlinux.lds.h: Force-align ELF notes section to four bytes Josh Poimboeuf
2023-04-12  7:10                           ` Tianyi Liu
2023-04-12 16:30                             ` Josh Poimboeuf
2023-04-13  2:21                               ` Joan Bruguera Micó
2023-04-13  9:23                                 ` Tianyi Liu
2023-04-13 18:59                                   ` [PATCH] vmlinux.lds.h: Discard .note.gnu.property section Josh Poimboeuf
2023-04-16 19:02                                     ` Joan Bruguera Micó
2023-04-18 21:47                                       ` Josh Poimboeuf
2023-04-18 21:49                                         ` [PATCH v2] " Josh Poimboeuf
2023-04-13  4:54                               ` [PATCH] vmlinux.lds.h: Force-align ELF notes section to four bytes Tianyi Liu
2023-04-16 18:52                                 ` Joan Bruguera Micó
2023-04-27  5:14                                   ` Joan Bruguera Micó
2023-05-18 11:00 ` [tip: objtool/urgent] vmlinux.lds.h: Discard .note.gnu.property section tip-bot2 for Josh Poimboeuf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d880b3b3-d6fb-c891-bfc2-9c05c321ddac@gmail.com \
    --to=alexandref75@gmail.com \
    --cc=acme@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=dxu@dxuuu.xyz \
    --cc=olsajiri@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.