Fangrui Song
41cc72a0d5
BACKPORT: bpf: Support llvm-objcopy for vmlinux BTF
...
commit 90ceddcb495008ac8ba7a3dce297841efcd7d584 upstream.
Simplify gen_btf logic to make it work with llvm-objcopy. The existing
'file format' and 'architecture' parsing logic is brittle and does not
work with llvm-objcopy/llvm-objdump.
'file format' output of llvm-objdump>=11 will match GNU objdump, but
'architecture' (bfdarch) may not.
.BTF in .tmp_vmlinux.btf is non-SHF_ALLOC. Add the SHF_ALLOC flag
because it is part of vmlinux image used for introspection. C code
can reference the section via linker script defined __start_BTF and
__stop_BTF. This fixes a small problem that previous .BTF had the
SHF_WRITE flag (objcopy -I binary -O elf* synthesized .data).
Additionally, `objcopy -I binary` synthesized symbols
_binary__btf_vmlinux_bin_start and _binary__btf_vmlinux_bin_stop (not
used elsewhere) are replaced with more commonplace __start_BTF and
__stop_BTF.
Add 2>/dev/null because GNU objcopy (but not llvm-objcopy) warns
"empty loadable segment detected at vaddr=0xffffffff81000000, is this intentional?"
We use a dd command to change the e_type field in the ELF header from
ET_EXEC to ET_REL so that lld will accept .btf.vmlinux.bin.o. Accepting
ET_EXEC as an input file is an extremely rare GNU ld feature that lld
does not intend to support, because this is error-prone.
The output section description .BTF in include/asm-generic/vmlinux.lds.h
avoids potential subtle orphan section placement issues and suppresses
--orphan-handling=warn warnings.
Fixes: df786c9b9476 ("bpf: Force .BTF section start to zero when dumping from vmlinux")
Fixes: cb0cc635c7a9 ("powerpc: Include .BTF section")
Reported-by: Nathan Chancellor <natechancellor@gmail.com>
Change-Id: I145b50cfe3e0e1e034fb750cf55642905382a06c
Signed-off-by: Fangrui Song <maskray@google.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Tested-by: Stanislav Fomichev <sdf@google.com>
Tested-by: Andrii Nakryiko <andriin@fb.com>
Reviewed-by: Stanislav Fomichev <sdf@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
Link: https://github.com/ClangBuiltLinux/linux/issues/871
Link: https://lore.kernel.org/bpf/20200318222746.173648-1-maskray@google.com
Signed-off-by: Maria Teguiani <teguiani@google.com>
Tested-by: Matthias Maennich <maennich@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sorayukii <sorayukii69@gmail.com>
2026-05-15 17:58:11 +07:00
..
vdso32
powerpc: Fix vDSO clock_getres()
2019-12-21 10:42:17 +01:00
vdso64
powerpc: Fix vDSO clock_getres()
2019-12-21 10:42:17 +01:00
.gitignore
align.c
powerpc: Fix DAR reporting when alignment handler faults
2017-09-27 14:39:21 +02:00
asm-offsets.c
powerpc: Fix vDSO clock_getres()
2019-12-21 10:42:17 +01:00
audit.c
btext.c
powerpc/btext: add missing of_node_put
2022-01-27 08:47:39 +01:00
cacheinfo.c
powerpc/cacheinfo: add cacheinfo_teardown, cacheinfo_rebuild
2020-01-29 10:24:26 +01:00
cacheinfo.h
powerpc/cacheinfo: add cacheinfo_teardown, cacheinfo_rebuild
2020-01-29 10:24:26 +01:00
compat_audit.c
cpu_setup_6xx.S
powerpc: Various typo fixes
2016-06-14 13:58:26 +10:00
cpu_setup_44x.S
cpu_setup_fsl_booke.S
powerpc/cache: add cache flush operation for various e500
2016-03-04 23:44:51 -06:00
cpu_setup_pa6t.S
cpu_setup_power.S
powerpc/64s: Clear PCR on boot
2018-06-06 16:44:32 +02:00
cpu_setup_ppc970.S
cputable.c
powerpc: fix hardware PMU exception bug on PowerVM compatibility mode systems
2020-03-11 07:53:14 +01:00
crash.c
powerpc/crash: Rearrange loop condition to avoid out of bounds array access
2016-07-14 20:26:22 +10:00
crash_dump.c
dbell.c
powerpc/powernv: Fixes for hypervisor doorbell handling
2015-03-20 14:51:53 +11:00
dma-iommu.c
powerpc/dma: Fix dma_map_ops::get_required_mask
2020-09-23 08:46:16 +02:00
dma-swiotlb.c
powerpc/iommu: Support "hybrid" iommu/direct DMA ops for coherent_mask < dma_mask
2015-07-13 10:10:55 +10:00
dma.c
dma-mapping: use unsigned long for dma_attrs
2016-08-04 08:50:07 -04:00
eeh.c
powerpc/eeh: Fix EEH handling for hugepages in ioremap space.
2021-05-22 10:40:19 +02:00
eeh_cache.c
powerpc/eeh: Fix pr_debug()s in eeh_cache.c
2016-07-08 22:09:50 +10:00
eeh_dev.c
powerpc/pci: Delay populating pdn
2016-06-21 15:30:56 +10:00
eeh_driver.c
powerpc/powernv/iov: Ensure the pdn for VFs always contains a valid PE number
2020-02-28 15:42:18 +01:00
eeh_event.c
powerpc: sparse: static-ify some things
2016-04-12 21:05:18 +10:00
eeh_pe.c
powerpc/eeh: Fix use of EEH_PE_KEEP on wrong field
2019-11-28 18:28:18 +01:00
eeh_sysfs.c
entry_32.S
powerpc/fsl: Sanitize the syscall table for NXP PowerPC 32 bit platforms
2019-04-17 08:36:41 +02:00
entry_64.S
powerpc/book3s64: Fix link stack flush on context switch
2019-11-28 18:29:06 +01:00
epapr_hcalls.S
ppc: move exports to definitions
2016-08-07 23:50:09 -04:00
epapr_paravirt.c
exceptions-64e.S
powerpc/fsl: Fix the flush of branch predictor.
2019-04-17 08:36:43 +02:00
exceptions-64s.S
powerpc/64s: flush L1D after user accesses
2020-11-22 09:58:14 +01:00
fadump.c
powerpc/fadump: Return error when fadump registration fails
2018-10-13 09:18:57 +02:00
firmware.c
fpu.S
Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2016-10-14 14:26:58 -07:00
fsl_booke_entry_mapping.S
powerpc/fsl: Force coherent memory on e500mc derivatives
2015-08-07 23:00:01 -05:00
ftrace.c
ftrace: Add return address pointer to ftrace_ret_stack
2016-08-24 12:15:14 +02:00
head_8xx.S
powerpc/8xx: Always fault when _PAGE_ACCESSED is not set
2020-11-22 09:58:14 +01:00
head_32.S
Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2016-10-14 14:26:58 -07:00
head_40x.S
ppc: move exports to definitions
2016-08-07 23:50:09 -04:00
head_44x.S
ppc: move exports to definitions
2016-08-07 23:50:09 -04:00
head_64.S
powerpc/64e: Convert cmpi to cmpwi in head_64.S
2017-01-09 08:32:25 +01:00
head_booke.h
powerpc/fsl: Fixed warning: orphan section `__btb_flush_fixup'
2019-04-17 08:36:43 +02:00
head_fsl_booke.S
powerpc/fsl: Flush the branch predictor at each kernel entry (32 bit)
2019-04-17 08:36:43 +02:00
hw_breakpoint.c
powerpc/ptrace: Fix enforcement of DAWR constraints
2018-07-03 11:23:08 +02:00
ibmebus.c
powerpc/ibmebus: Fix device reference leaks in sysfs interface
2017-01-19 20:18:08 +01:00
idle.c
powerpc/idle: Fix return value of __setup() handler
2022-06-14 16:52:33 +02:00
idle_6xx.S
idle_book3e.S
idle_book3s.S
powerpc/64s: Simple RFI macro conversions
2018-02-25 11:05:50 +01:00
idle_e500.S
powerpc/e500mc: Remove dead L2 flushing code in idle_e500.S
2015-06-02 21:37:19 -05:00
idle_power4.S
io-workarounds.c
powerpc/mm: Differentiate between hugetlb and THP during page walk
2015-10-12 15:30:09 +11:00
io.c
iomap.c
powerpc: add io{read,write}64 accessors
2016-05-31 16:41:52 +08:00
iommu.c
powerpc/iommu: Annotate nested lock for lockdep
2021-05-22 10:40:30 +02:00
irq.c
powerpc/irq: fix stack overflow verification
2020-01-04 13:40:24 +01:00
isa-bridge.c
powerpc/mm: Use a helper for finding pte bits mapping I/O area
2016-05-01 18:32:32 +10:00
jump_label.c
jump_label: Rename JUMP_LABEL_{EN,DIS}ABLE to JUMP_LABEL_{JMP,NOP}
2015-08-03 11:34:12 +02:00
kgdb.c
powerpc: Fix kgdb on little endian ppc64le
2016-02-18 00:03:26 +11:00
kprobes.c
powerpc/kprobes: Pause function_graph tracing during jprobes handling
2017-06-29 13:00:29 +02:00
kvm.c
powerpc: Remove redundant breaks
2015-08-06 15:10:20 +10:00
kvm_emul.S
l2cr_6xx.S
legacy_serial.c
powerpc: Remove all usages of NO_IRQ
2016-09-20 20:57:12 +10:00
machine_kexec.c
powerpc/crashkernel: Take "mem=" option into account
2020-06-30 15:38:22 -04:00
machine_kexec_32.c
machine_kexec_64.c
powerpc/64/kexec: Remove BookE special default_machine_kexec_prepare()
2016-09-23 07:54:18 +10:00
Makefile
powerpc/32: Fix boot failure with GCC latent entropy plugin
2022-02-08 18:15:27 +01:00
mce.c
powerpc/book3s/mce: Move add_taint() later in virtual mode
2017-05-25 15:44:43 +02:00
mce_power.c
powerpc/mm/radix: Fix CONFIG_PPC_MMU_STD_64 typo
2016-05-11 21:53:59 +10:00
misc.S
ppc: move exports to definitions
2016-08-07 23:50:09 -04:00
misc_32.S
powerpc: Fix build warning on 32-bit PPC
2017-01-15 13:42:56 +01:00
misc_64.S
powerpc/64: Fix flush_(d|i)cache_range() called from modules
2017-04-12 12:41:13 +02:00
module.c
powerpc/64: Add CONFIG_PPC_BARRIER_NOSPEC
2019-04-17 08:36:41 +02:00
module_32.c
powerpc/module: Only try to generate the ftrace_caller() stub once
2016-03-07 14:53:53 +11:00
module_64.c
powerpc/module64: Fix comment in R_PPC64_ENTRY handling
2021-09-22 11:42:57 +02:00
msi.c
powerpc/msi: Fix NULL pointer access in teardown code
2018-12-21 14:11:32 +01:00
nvram_64.c
pstore: Fix flags to enable dumps on powerpc
2017-05-20 14:28:42 +02:00
of_platform.c
powerpc/eeh: Do probe on pci_dn
2015-03-24 13:15:52 +11:00
paca.c
powerpc/mm: Convert early cpu/mmu feature check to use the new helpers
2016-08-01 11:15:01 +10:00
pci-common.c
Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2016-10-14 14:26:58 -07:00
pci-hotplug.c
powerpc/pci: Don't scan empty slot
2016-05-11 21:54:26 +10:00
pci_32.c
powerpc/32: Add a missing include header
2018-08-03 07:55:18 +02:00
pci_64.c
powerpc fixes for 4.7 #5
2016-07-15 14:57:47 +10:00
pci_dn.c
powerpc/pci_dn: Add missing of_node_put()
2022-10-26 13:15:44 +02:00
pci_of_scan.c
powerpc/pci/of: Parse unassigned resources
2020-05-10 10:28:00 +02:00
pmc.c
ppc32.h
ppc_save_regs.S
proc_powerpc.c
process.c
powerpc: Enable execve syscall exit tracepoint
2022-07-02 16:17:15 +02:00
prom.c
powerpc/64: Init jump labels before parse_early_param()
2022-08-25 11:09:32 +02:00
prom_init.c
powerpc/prom_init: Fix improper check of prom_getprop()
2022-01-27 08:47:35 +01:00
prom_init_check.sh
prom_parse.c
ptrace.c
powerpc/32: Fix overread/overwrite of thread_struct via ptrace
2022-06-14 16:52:41 +02:00
ptrace32.c
ptrace: Don't allow accessing an undumpable mm
2017-01-06 10:40:13 +01:00
reloc_32.S
reloc_64.S
rtas-proc.c
powerpc: Various typo fixes
2016-06-14 13:58:26 +10:00
rtas-rtc.c
rtas.c
powerpc/rtas: avoid scheduling in rtas_os_term()
2023-01-07 12:07:34 +01:00
rtas_flash.c
rtas_pci.c
powerpc: move find_and_init_phbs() to pSeries specific code
2015-04-11 20:49:09 +10:00
rtasd.c
powerpc/pseries: start rtasd before PCI probing
2016-07-08 19:22:15 +10:00
security.c
powerpc/security: Fix wrong message when RFI Flush is disable
2020-01-04 13:40:53 +01:00
setup-common.c
powerpc/fsl: Enable runtime patching if nospectre_v2 boot arg is used
2019-04-17 08:36:43 +02:00
setup.h
powerpc: Merge 32-bit and 64-bit setup_arch()
2016-07-21 19:17:46 +10:00
setup_32.c
Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2016-10-14 14:26:58 -07:00
setup_64.c
powerpc/64s: flush L1D after user accesses
2020-11-22 09:58:14 +01:00
signal.c
powerpc/signal: Properly handle return value from uprobe_deny_signal()
2017-11-30 08:39:08 +00:00
signal.h
powerpc: tm: Rename transct_(*) to ck(\1)_state
2016-10-04 20:33:16 +11:00
signal_32.c
powerpc/tm: Fix oops on sigreturn on systems without TM
2019-08-04 09:33:43 +02:00
signal_64.c
powerpc/64/tm: Don't let userspace set regs->trap via sigreturn
2020-04-24 07:59:00 +02:00
smp-tbsync.c
smp.c
powerpc/smp: Move setup_profiling_timer() under CONFIG_PROFILING
2022-01-27 08:47:39 +01:00
stacktrace.c
powerpc: Implement save_stack_trace_regs() to enable kprobe stack tracing
2016-01-11 14:27:28 +11:00
suspend.c
swsusp.c
powerpc/mm: Abstraction for switch_mmu_context()
2016-05-01 18:33:04 +10:00
swsusp_32.S
powerpc/32s: fix suspend/resume when IBATs 4-7 are used
2019-08-04 09:33:31 +02:00
swsusp_64.c
swsusp_asm64.S
powerpc: Fix invalid use of register expressions
2019-04-17 08:36:39 +02:00
swsusp_booke.S
sys_ppc32.c
syscalls.c
powerpc/sparse: Add more assembler prototypes
2016-09-13 17:36:58 +10:00
sysfs.c
powerpc: Warn about use of smt_snooze_delay
2020-11-10 10:23:58 +01:00
systbl.S
powerpc: Add a proper syscall for switching endianness
2015-03-28 22:03:40 +11:00
systbl_chk.c
powerpc: Standardise on NR_syscalls rather than __NR_syscalls.
2015-11-26 22:11:17 +11:00
systbl_chk.sh
powerpc: Standardise on NR_syscalls rather than __NR_syscalls.
2015-11-26 22:11:17 +11:00
tau_6xx.c
powerpc/tau: Disable TAU between measurements
2020-10-29 09:05:38 +01:00
time.c
powerpc/pseries: Mark accumulate_stolen_time() as notrace
2020-01-04 13:40:42 +01:00
tm.S
powerpc/tm: Avoid possible userspace r1 corruption on reclaim
2018-10-20 09:51:31 +02:00
trace_clock.c
powerpc/ftrace: add powerpc timebase as a trace clock source
2015-08-06 16:36:23 +10:00
traps.c
UPSTREAM: powerpc/traps: Fix the message printed when stack overflows
2022-02-21 16:30:05 +01:00
udbg.c
powerpc: Remove the celleb support
2015-04-07 17:15:13 +10:00
udbg_16550.c
uprobes.c
vdso.c
powerpc/vdso: Fix vdso cpu truncation
2020-08-21 11:02:02 +02:00
vecemu.c
vector.S
Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2016-10-14 14:26:58 -07:00
vio.c
dma-mapping: use unsigned long for dma_attrs
2016-08-04 08:50:07 -04:00
vmlinux.lds.S
BACKPORT: bpf: Support llvm-objcopy for vmlinux BTF
2026-05-15 17:58:11 +07:00