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>
		
			
				
	
	
		
			199 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			199 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- 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;
 |