tools: libelf: fix headers to trigger -Wundef warnings
When libelf from tools/ is used for building the kernel, compilation aborts due to access to undefined defines since Kbuild adds -Wundef to the compiler flags. Patch the header files to use `#if defined(...)` instead of `#if ...` to prevent such issues. Ref: https://github.com/NixOS/nixpkgs/issues/59929 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
		
							
								
								
									
										198
									
								
								tools/libelf/patches/900-fix-undefined-macro-access.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										198
									
								
								tools/libelf/patches/900-fix-undefined-macro-access.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,198 @@ | ||||
| --- a/lib/elf_repl.h | ||||
| +++ b/lib/elf_repl.h | ||||
| @@ -45,7 +45,7 @@ typedef __libelf_u32_t		Elf32_Word; | ||||
|  #define ELF32_FSZ_SWORD		4 | ||||
|  #define ELF32_FSZ_WORD		4 | ||||
|   | ||||
| -#if __LIBELF64 | ||||
| +#if defined(__LIBELF64) | ||||
|   | ||||
|  typedef __libelf_u64_t		Elf64_Addr; | ||||
|  typedef __libelf_u16_t		Elf64_Half; | ||||
| @@ -93,7 +93,7 @@ typedef struct { | ||||
|      Elf32_Half		e_shstrndx; | ||||
|  } Elf32_Ehdr; | ||||
|   | ||||
| -#if __LIBELF64 | ||||
| +#if defined(__LIBELF64) | ||||
|  typedef struct { | ||||
|      unsigned char	e_ident[EI_NIDENT]; | ||||
|      Elf64_Half		e_type; | ||||
| @@ -307,7 +307,7 @@ typedef struct { | ||||
|      Elf32_Word		sh_entsize; | ||||
|  } Elf32_Shdr; | ||||
|   | ||||
| -#if __LIBELF64 | ||||
| +#if defined(__LIBELF64) | ||||
|  typedef struct { | ||||
|      Elf64_Word		sh_name; | ||||
|      Elf64_Word		sh_type; | ||||
| @@ -434,7 +434,7 @@ typedef struct { | ||||
|      Elf32_Half		st_shndx; | ||||
|  } Elf32_Sym; | ||||
|   | ||||
| -#if __LIBELF64 | ||||
| +#if defined(__LIBELF64) | ||||
|  typedef struct { | ||||
|      Elf64_Word		st_name; | ||||
|      unsigned char	st_info; | ||||
| @@ -457,7 +457,7 @@ typedef struct { | ||||
|  #define ELF32_ST_TYPE(i)	((i)&0xf) | ||||
|  #define ELF32_ST_INFO(b,t)	(((b)<<4)+((t)&0xf)) | ||||
|   | ||||
| -#if __LIBELF64 | ||||
| +#if defined(__LIBELF64) | ||||
|  #define ELF64_ST_BIND(i)	((i)>>4) | ||||
|  #define ELF64_ST_TYPE(i)	((i)&0xf) | ||||
|  #define ELF64_ST_INFO(b,t)	(((b)<<4)+((t)&0xf)) | ||||
| @@ -495,7 +495,7 @@ typedef struct { | ||||
|   * Macros for manipulating st_other | ||||
|   */ | ||||
|  #define ELF32_ST_VISIBILITY(o)	((o)&0x3) | ||||
| -#if __LIBELF64 | ||||
| +#if defined(__LIBELF64) | ||||
|  #define ELF64_ST_VISIBILITY(o)	((o)&0x3) | ||||
|  #endif /* __LIBELF64 */ | ||||
|   | ||||
| @@ -521,7 +521,7 @@ typedef struct { | ||||
|      Elf32_Sword		r_addend; | ||||
|  } Elf32_Rela; | ||||
|   | ||||
| -#if __LIBELF64 | ||||
| +#if defined(__LIBELF64) | ||||
|  typedef struct { | ||||
|      Elf64_Addr		r_offset; | ||||
|      Elf64_Xword		r_info; | ||||
| @@ -541,7 +541,7 @@ typedef struct { | ||||
|  #define ELF32_R_TYPE(i)		((unsigned char)(i)) | ||||
|  #define ELF32_R_INFO(s,t)	(((s)<<8)+(unsigned char)(t)) | ||||
|   | ||||
| -#if __LIBELF64 | ||||
| +#if defined(__LIBELF64) | ||||
|  #define ELF64_R_SYM(i)		((Elf64_Xword)(i)>>32) | ||||
|  #define ELF64_R_TYPE(i)		((i)&0xffffffffL) | ||||
|  #define ELF64_R_INFO(s,t)	(((Elf64_Xword)(s)<<32)+((t)&0xffffffffL)) | ||||
| @@ -556,7 +556,7 @@ typedef struct { | ||||
|      Elf32_Word		n_type;		/* descriptor type */ | ||||
|  } Elf32_Nhdr; | ||||
|   | ||||
| -#if __LIBELF64 | ||||
| +#if defined(__LIBELF64) | ||||
|  /* Solaris and GNU use this layout.  Be compatible. */ | ||||
|  /* XXX: Latest ELF specs say it's 64-bit!!! */ | ||||
|  typedef struct { | ||||
| @@ -587,7 +587,7 @@ typedef struct { | ||||
|      Elf32_Word		p_align; | ||||
|  } Elf32_Phdr; | ||||
|   | ||||
| -#if __LIBELF64 | ||||
| +#if defined(__LIBELF64) | ||||
|  typedef struct { | ||||
|      Elf64_Word		p_type; | ||||
|      Elf64_Word		p_flags; | ||||
| @@ -654,7 +654,7 @@ typedef struct { | ||||
|      } d_un; | ||||
|  } Elf32_Dyn; | ||||
|   | ||||
| -#if __LIBELF64 | ||||
| +#if defined(__LIBELF64) | ||||
|  typedef struct { | ||||
|      Elf64_Sxword	d_tag; | ||||
|      union { | ||||
| @@ -798,7 +798,7 @@ typedef struct { | ||||
|      Elf32_Half		si_flags; | ||||
|  } Elf32_Syminfo; | ||||
|   | ||||
| -#if __LIBELF64 | ||||
| +#if defined(__LIBELF64) | ||||
|  typedef struct { | ||||
|      Elf64_Half		si_boundto; | ||||
|      Elf64_Half		si_flags; | ||||
| @@ -863,7 +863,7 @@ typedef struct { | ||||
|   | ||||
|  typedef Elf32_Half	Elf32_Versym; | ||||
|   | ||||
| -#if __LIBELF64 | ||||
| +#if defined(__LIBELF64) | ||||
|   | ||||
|  typedef struct { | ||||
|      Elf64_Half		vd_version; | ||||
| @@ -933,7 +933,7 @@ typedef Elf64_Half	Elf64_Versym; | ||||
|  /* | ||||
|   * Move section | ||||
|   */ | ||||
| -#if __LIBELF64 | ||||
| +#if defined(__LIBELF64) | ||||
|   | ||||
|  typedef struct { | ||||
|      Elf32_Lword		m_value; | ||||
| @@ -973,7 +973,7 @@ typedef struct { | ||||
|      } c_un; | ||||
|  } Elf32_Cap; | ||||
|   | ||||
| -#if __LIBELF64 | ||||
| +#if defined(__LIBELF64) | ||||
|   | ||||
|  typedef struct { | ||||
|      Elf64_Xword     	c_tag; | ||||
| --- a/lib/gelf.h | ||||
| +++ b/lib/gelf.h | ||||
| @@ -22,15 +22,15 @@ | ||||
|  #ifndef _GELF_H | ||||
|  #define _GELF_H | ||||
|   | ||||
| -#if __LIBELF_INTERNAL__ | ||||
| +#if defined(__LIBELF_INTERNAL__) | ||||
|  #include <libelf.h> | ||||
|  #else /* __LIBELF_INTERNAL__ */ | ||||
|  #include <libelf/libelf.h> | ||||
|  #endif /* __LIBELF_INTERNAL__ */ | ||||
|   | ||||
| -#if __LIBELF_NEED_LINK_H | ||||
| +#if defined(__LIBELF_NEED_LINK_H) | ||||
|  #include <link.h> | ||||
| -#elif __LIBELF_NEED_SYS_LINK_H | ||||
| +#elif defined(__LIBELF_NEED_SYS_LINK_H) | ||||
|  #include <sys/link.h> | ||||
|  #endif /* __LIBELF_NEED_LINK_H */ | ||||
|   | ||||
| @@ -71,7 +71,7 @@ typedef Elf64_Sym	GElf_Sym; | ||||
|  /* | ||||
|   * Symbol versioning | ||||
|   */ | ||||
| -#if __LIBELF_SYMBOL_VERSIONS | ||||
| +#if defined(__LIBELF_SYMBOL_VERSIONS) | ||||
|  typedef Elf64_Verdef	GElf_Verdef; | ||||
|  typedef Elf64_Verneed	GElf_Verneed; | ||||
|  typedef Elf64_Verdaux	GElf_Verdaux; | ||||
| --- a/lib/libelf.h | ||||
| +++ b/lib/libelf.h | ||||
| @@ -25,7 +25,7 @@ | ||||
|  #include <stddef.h>	/* for size_t */ | ||||
|  #include <sys/types.h> | ||||
|   | ||||
| -#if __LIBELF_INTERNAL__ | ||||
| +#if defined(__LIBELF_INTERNAL__) | ||||
|  #include <sys_elf.h> | ||||
|  #else /* __LIBELF_INTERNAL__ */ | ||||
|  #include <libelf/sys_elf.h> | ||||
| @@ -224,7 +224,7 @@ extern Elf_Data *elf32_xlatetom __P((Elf | ||||
|   */ | ||||
|  extern long elf32_checksum __P((Elf *__elf)); | ||||
|   | ||||
| -#if __LIBELF64 | ||||
| +#if defined(__LIBELF64) | ||||
|  /* | ||||
|   * 64-bit ELF functions | ||||
|   * Not available on all platforms | ||||
| --- a/lib/sys_elf.h.in | ||||
| +++ b/lib/sys_elf.h.in | ||||
| @@ -116,7 +116,7 @@ Foundation, Inc., 51 Franklin Street, Fi | ||||
|  #   define ELF64_R_INFO(s,t)	(((Elf64_Xword)(s)<<32)+((t)&0xffffffffL)) | ||||
|  #  endif /* ELF64_R_SYM */ | ||||
|   | ||||
| -#  if __LIBELF64_LINUX | ||||
| +#  if defined(__LIBELF64_LINUX) | ||||
|  typedef __libelf_u64_t	Elf64_Addr; | ||||
|  typedef __libelf_u16_t	Elf64_Half; | ||||
|  typedef __libelf_u64_t	Elf64_Off; | ||||
		Reference in New Issue
	
	Block a user
	 Jo-Philipp Wich
					Jo-Philipp Wich