mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	In Makefile.config for unwinding the name dwarf implies either libunwind or libdw. Make it clearer that HAVE_DWARF_SUPPORT is really just defined when libdw is present by renaming to HAVE_LIBDW_SUPPORT. Signed-off-by: Ian Rogers <irogers@google.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Tested-by: Leo Yan <leo.yan@arm.com> Cc: Anup Patel <anup@brainfault.org> Cc: Yang Jihong <yangjihong@bytedance.com> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: David S. Miller <davem@davemloft.net> Cc: Albert Ou <aou@eecs.berkeley.edu> Cc: Shenlin Liang <liangshenlin@eswincomputing.com> Cc: Nick Terrell <terrelln@fb.com> Cc: Guilherme Amadio <amadio@gentoo.org> Cc: Steinar H. Gunderson <sesse@google.com> Cc: Changbin Du <changbin.du@huawei.com> Cc: Alexander Lobakin <aleksander.lobakin@intel.com> Cc: Przemek Kitszel <przemyslaw.kitszel@intel.com> Cc: Huacai Chen <chenhuacai@kernel.org> Cc: Guo Ren <guoren@kernel.org> Cc: Masahiro Yamada <masahiroy@kernel.org> Cc: Masami Hiramatsu (Google) <mhiramat@kernel.org> Cc: Will Deacon <will@kernel.org> Cc: James Clark <james.clark@linaro.org> Cc: Mike Leach <mike.leach@linaro.org> Cc: Chen Pei <cp0613@linux.alibaba.com> Cc: Leo Yan <leo.yan@linux.dev> Cc: Oliver Upton <oliver.upton@linux.dev> Cc: Aditya Gupta <adityag@linux.ibm.com> Cc: Kajol Jain <kjain@linux.ibm.com> Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com> Cc: linux-arm-kernel@lists.infradead.org Cc: linux-riscv@lists.infradead.org Cc: Bibo Mao <maobibo@loongson.cn> Cc: John Garry <john.g.garry@oracle.com> Cc: Atish Patra <atishp@rivosinc.com> Cc: Dima Kogan <dima@secretsauce.net> Cc: Paul Walmsley <paul.walmsley@sifive.com> Cc: Dr. David Alan Gilbert <linux@treblig.org> Cc: linux-csky@vger.kernel.org Link: https://lore.kernel.org/r/20241017001354.56973-11-irogers@google.com Signed-off-by: Namhyung Kim <namhyung@kernel.org>
		
			
				
	
	
		
			89 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0 */
 | 
						|
#ifndef __GENELF_H__
 | 
						|
#define __GENELF_H__
 | 
						|
 | 
						|
#include <linux/math.h>
 | 
						|
 | 
						|
/* genelf.c */
 | 
						|
int jit_write_elf(int fd, uint64_t code_addr, const char *sym,
 | 
						|
		  const void *code, int csize, void *debug, int nr_debug_entries,
 | 
						|
		  void *unwinding, uint64_t unwinding_header_size, uint64_t unwinding_size);
 | 
						|
#ifdef HAVE_LIBDW_SUPPORT
 | 
						|
/* genelf_debug.c */
 | 
						|
int jit_add_debug_info(Elf *e, uint64_t code_addr, void *debug, int nr_debug_entries);
 | 
						|
#endif
 | 
						|
 | 
						|
#if   defined(__arm__)
 | 
						|
#define GEN_ELF_ARCH	EM_ARM
 | 
						|
#define GEN_ELF_CLASS	ELFCLASS32
 | 
						|
#elif defined(__aarch64__)
 | 
						|
#define GEN_ELF_ARCH	EM_AARCH64
 | 
						|
#define GEN_ELF_CLASS	ELFCLASS64
 | 
						|
#elif defined(__x86_64__)
 | 
						|
#define GEN_ELF_ARCH	EM_X86_64
 | 
						|
#define GEN_ELF_CLASS	ELFCLASS64
 | 
						|
#elif defined(__i386__)
 | 
						|
#define GEN_ELF_ARCH	EM_386
 | 
						|
#define GEN_ELF_CLASS	ELFCLASS32
 | 
						|
#elif defined(__powerpc64__)
 | 
						|
#define GEN_ELF_ARCH	EM_PPC64
 | 
						|
#define GEN_ELF_CLASS	ELFCLASS64
 | 
						|
#elif defined(__powerpc__)
 | 
						|
#define GEN_ELF_ARCH	EM_PPC
 | 
						|
#define GEN_ELF_CLASS	ELFCLASS32
 | 
						|
#elif defined(__sparc__) && defined(__arch64__)
 | 
						|
#define GEN_ELF_ARCH	EM_SPARCV9
 | 
						|
#define GEN_ELF_CLASS	ELFCLASS64
 | 
						|
#elif defined(__sparc__)
 | 
						|
#define GEN_ELF_ARCH	EM_SPARC
 | 
						|
#define GEN_ELF_CLASS	ELFCLASS32
 | 
						|
#elif defined(__s390x__)
 | 
						|
#define GEN_ELF_ARCH	EM_S390
 | 
						|
#define GEN_ELF_CLASS	ELFCLASS64
 | 
						|
#elif defined(__riscv) && __riscv_xlen == 64
 | 
						|
#define GEN_ELF_ARCH	EM_RISCV
 | 
						|
#define GEN_ELF_CLASS	ELFCLASS64
 | 
						|
#elif defined(__riscv) && __riscv_xlen == 32
 | 
						|
#define GEN_ELF_ARCH	EM_RISCV
 | 
						|
#define GEN_ELF_CLASS	ELFCLASS32
 | 
						|
#elif defined(__loongarch__)
 | 
						|
#define GEN_ELF_ARCH	EM_LOONGARCH
 | 
						|
#define GEN_ELF_CLASS	ELFCLASS64
 | 
						|
#else
 | 
						|
#error "unsupported architecture"
 | 
						|
#endif
 | 
						|
 | 
						|
#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
 | 
						|
#define GEN_ELF_ENDIAN	ELFDATA2MSB
 | 
						|
#else
 | 
						|
#define GEN_ELF_ENDIAN	ELFDATA2LSB
 | 
						|
#endif
 | 
						|
 | 
						|
#if GEN_ELF_CLASS == ELFCLASS64
 | 
						|
#define elf_newehdr	elf64_newehdr
 | 
						|
#define elf_newphdr	elf64_newphdr
 | 
						|
#define elf_getshdr	elf64_getshdr
 | 
						|
#define Elf_Ehdr	Elf64_Ehdr
 | 
						|
#define Elf_Phdr	Elf64_Phdr
 | 
						|
#define Elf_Shdr	Elf64_Shdr
 | 
						|
#define Elf_Sym		Elf64_Sym
 | 
						|
#define ELF_ST_TYPE(a)	ELF64_ST_TYPE(a)
 | 
						|
#define ELF_ST_BIND(a)	ELF64_ST_BIND(a)
 | 
						|
#define ELF_ST_VIS(a)	ELF64_ST_VISIBILITY(a)
 | 
						|
#else
 | 
						|
#define elf_newehdr	elf32_newehdr
 | 
						|
#define elf_newphdr	elf32_newphdr
 | 
						|
#define elf_getshdr	elf32_getshdr
 | 
						|
#define Elf_Ehdr	Elf32_Ehdr
 | 
						|
#define Elf_Phdr	Elf32_Phdr
 | 
						|
#define Elf_Shdr	Elf32_Shdr
 | 
						|
#define Elf_Sym		Elf32_Sym
 | 
						|
#define ELF_ST_TYPE(a)	ELF32_ST_TYPE(a)
 | 
						|
#define ELF_ST_BIND(a)	ELF32_ST_BIND(a)
 | 
						|
#define ELF_ST_VIS(a)	ELF32_ST_VISIBILITY(a)
 | 
						|
#endif
 | 
						|
 | 
						|
/* The .text section is directly after the ELF header */
 | 
						|
#define GEN_ELF_TEXT_OFFSET round_up(sizeof(Elf_Ehdr) + sizeof(Elf_Phdr), 16)
 | 
						|
 | 
						|
#endif
 |