diff options
596 files changed, 21376 insertions, 16236 deletions
diff --git a/adk/include/byteswap.h b/adk/include/byteswap.h deleted file mode 100644 index f557cd468..000000000 --- a/adk/include/byteswap.h +++ /dev/null @@ -1,18 +0,0 @@ -#if defined(__linux__) || defined(__CYGWIN__)  -#include_next <byteswap.h> -#else -static inline unsigned short bswap_16(unsigned short val) -{ -        return ((val & 0xff) << 8) | ((val >> 8) & 0xff); -} -static inline unsigned long bswap_32(unsigned long val) -{ -        return bswap_16((unsigned short)val) << 16 | -               bswap_16((unsigned short)(val >> 16)); -} -static inline unsigned long long bswap_64(unsigned long long val) -{ -        return ((((unsigned long long)bswap_32(val)) << 32) | -                (((unsigned long long)bswap_32(val >> 32)) & 0xffffffffULL)); -} -#endif diff --git a/adk/include/elf.h b/adk/include/elf.h deleted file mode 100644 index 08b7f67bc..000000000 --- a/adk/include/elf.h +++ /dev/null @@ -1,2564 +0,0 @@ -/* This file defines standard ELF types, structures, and macros. -   Copyright (C) 1995-2003, 2004 Free Software Foundation, Inc. -   This file is part of the GNU C Library. - -   The GNU C Library is free software; you can redistribute it and/or -   modify it under the terms of the GNU Lesser General Public -   License as published by the Free Software Foundation; either -   version 2.1 of the License, or (at your option) any later version. - -   The GNU C Library is distributed in the hope that it will be useful, -   but WITHOUT ANY WARRANTY; without even the implied warranty of -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -   Lesser General Public License for more details. - -   You should have received a copy of the GNU Lesser General Public -   License along with the GNU C Library; if not, write to the Free -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -   02111-1307 USA.  */ - -#ifndef _ELF_H -#define	_ELF_H 1 - -#include <sys/param.h> -#if !defined(BSD) && !defined(__APPLE__) -#include <features.h> -#endif - -__BEGIN_DECLS - -/* Standard ELF types.  */ - -#include <stdint.h> - -/* Type for a 16-bit quantity.  */ -typedef uint16_t Elf32_Half; -typedef uint16_t Elf64_Half; - -/* Types for signed and unsigned 32-bit quantities.  */ -typedef uint32_t Elf32_Word; -typedef	int32_t  Elf32_Sword; -typedef uint32_t Elf64_Word; -typedef	int32_t  Elf64_Sword; - -/* Types for signed and unsigned 64-bit quantities.  */ -typedef uint64_t Elf32_Xword; -typedef	int64_t  Elf32_Sxword; -typedef uint64_t Elf64_Xword; -typedef	int64_t  Elf64_Sxword; - -/* Type of addresses.  */ -typedef uint32_t Elf32_Addr; -typedef uint64_t Elf64_Addr; - -/* Type of file offsets.  */ -typedef uint32_t Elf32_Off; -typedef uint64_t Elf64_Off; - -/* Type for section indices, which are 16-bit quantities.  */ -typedef uint16_t Elf32_Section; -typedef uint16_t Elf64_Section; - -/* Type for version symbol information.  */ -typedef Elf32_Half Elf32_Versym; -typedef Elf64_Half Elf64_Versym; - - -/* The ELF file header.  This appears at the start of every ELF file.  */ - -#define EI_NIDENT (16) - -typedef struct -{ -  unsigned char	e_ident[EI_NIDENT];	/* Magic number and other info */ -  Elf32_Half	e_type;			/* Object file type */ -  Elf32_Half	e_machine;		/* Architecture */ -  Elf32_Word	e_version;		/* Object file version */ -  Elf32_Addr	e_entry;		/* Entry point virtual address */ -  Elf32_Off	e_phoff;		/* Program header table file offset */ -  Elf32_Off	e_shoff;		/* Section header table file offset */ -  Elf32_Word	e_flags;		/* Processor-specific flags */ -  Elf32_Half	e_ehsize;		/* ELF header size in bytes */ -  Elf32_Half	e_phentsize;		/* Program header table entry size */ -  Elf32_Half	e_phnum;		/* Program header table entry count */ -  Elf32_Half	e_shentsize;		/* Section header table entry size */ -  Elf32_Half	e_shnum;		/* Section header table entry count */ -  Elf32_Half	e_shstrndx;		/* Section header string table index */ -} Elf32_Ehdr; - -typedef struct -{ -  unsigned char	e_ident[EI_NIDENT];	/* Magic number and other info */ -  Elf64_Half	e_type;			/* Object file type */ -  Elf64_Half	e_machine;		/* Architecture */ -  Elf64_Word	e_version;		/* Object file version */ -  Elf64_Addr	e_entry;		/* Entry point virtual address */ -  Elf64_Off	e_phoff;		/* Program header table file offset */ -  Elf64_Off	e_shoff;		/* Section header table file offset */ -  Elf64_Word	e_flags;		/* Processor-specific flags */ -  Elf64_Half	e_ehsize;		/* ELF header size in bytes */ -  Elf64_Half	e_phentsize;		/* Program header table entry size */ -  Elf64_Half	e_phnum;		/* Program header table entry count */ -  Elf64_Half	e_shentsize;		/* Section header table entry size */ -  Elf64_Half	e_shnum;		/* Section header table entry count */ -  Elf64_Half	e_shstrndx;		/* Section header string table index */ -} Elf64_Ehdr; - -/* Fields in the e_ident array.  The EI_* macros are indices into the -   array.  The macros under each EI_* macro are the values the byte -   may have.  */ - -#define EI_MAG0		0		/* File identification byte 0 index */ -#define ELFMAG0		0x7f		/* Magic number byte 0 */ - -#define EI_MAG1		1		/* File identification byte 1 index */ -#define ELFMAG1		'E'		/* Magic number byte 1 */ - -#define EI_MAG2		2		/* File identification byte 2 index */ -#define ELFMAG2		'L'		/* Magic number byte 2 */ - -#define EI_MAG3		3		/* File identification byte 3 index */ -#define ELFMAG3		'F'		/* Magic number byte 3 */ - -/* Conglomeration of the identification bytes, for easy testing as a word.  */ -#define	ELFMAG		"\177ELF" -#define	SELFMAG		4 - -#define EI_CLASS	4		/* File class byte index */ -#define ELFCLASSNONE	0		/* Invalid class */ -#define ELFCLASS32	1		/* 32-bit objects */ -#define ELFCLASS64	2		/* 64-bit objects */ -#define ELFCLASSNUM	3 - -#define EI_DATA		5		/* Data encoding byte index */ -#define ELFDATANONE	0		/* Invalid data encoding */ -#define ELFDATA2LSB	1		/* 2's complement, little endian */ -#define ELFDATA2MSB	2		/* 2's complement, big endian */ -#define ELFDATANUM	3 - -#define EI_VERSION	6		/* File version byte index */ -					/* Value must be EV_CURRENT */ - -#define EI_OSABI	7		/* OS ABI identification */ -#define ELFOSABI_NONE		0	/* UNIX System V ABI */ -#define ELFOSABI_SYSV		0	/* Alias.  */ -#define ELFOSABI_HPUX		1	/* HP-UX */ -#define ELFOSABI_NETBSD		2	/* NetBSD.  */ -#define ELFOSABI_LINUX		3	/* Linux.  */ -#define ELFOSABI_SOLARIS	6	/* Sun Solaris.  */ -#define ELFOSABI_AIX		7	/* IBM AIX.  */ -#define ELFOSABI_IRIX		8	/* SGI Irix.  */ -#define ELFOSABI_FREEBSD	9	/* FreeBSD.  */ -#define ELFOSABI_TRU64		10	/* Compaq TRU64 UNIX.  */ -#define ELFOSABI_MODESTO	11	/* Novell Modesto.  */ -#define ELFOSABI_OPENBSD	12	/* OpenBSD.  */ -#define ELFOSABI_ARM		97	/* ARM */ -#define ELFOSABI_STANDALONE	255	/* Standalone (embedded) application */ - -#define EI_ABIVERSION	8		/* ABI version */ - -#define EI_PAD		9		/* Byte index of padding bytes */ - -/* Legal values for e_type (object file type).  */ - -#define ET_NONE		0		/* No file type */ -#define ET_REL		1		/* Relocatable file */ -#define ET_EXEC		2		/* Executable file */ -#define ET_DYN		3		/* Shared object file */ -#define ET_CORE		4		/* Core file */ -#define	ET_NUM		5		/* Number of defined types */ -#define ET_LOOS		0xfe00		/* OS-specific range start */ -#define ET_HIOS		0xfeff		/* OS-specific range end */ -#define ET_LOPROC	0xff00		/* Processor-specific range start */ -#define ET_HIPROC	0xffff		/* Processor-specific range end */ - -/* Legal values for e_machine (architecture).  */ - -#define EM_NONE		 0		/* No machine */ -#define EM_M32		 1		/* AT&T WE 32100 */ -#define EM_SPARC	 2		/* SUN SPARC */ -#define EM_386		 3		/* Intel 80386 */ -#define EM_68K		 4		/* Motorola m68k family */ -#define EM_88K		 5		/* Motorola m88k family */ -#define EM_860		 7		/* Intel 80860 */ -#define EM_MIPS		 8		/* MIPS R3000 big-endian */ -#define EM_S370		 9		/* IBM System/370 */ -#define EM_MIPS_RS3_LE	10		/* MIPS R3000 little-endian */ - -#define EM_PARISC	15		/* HPPA */ -#define EM_VPP500	17		/* Fujitsu VPP500 */ -#define EM_SPARC32PLUS	18		/* Sun's "v8plus" */ -#define EM_960		19		/* Intel 80960 */ -#define EM_PPC		20		/* PowerPC */ -#define EM_PPC64	21		/* PowerPC 64-bit */ -#define EM_S390		22		/* IBM S390 */ - -#define EM_V800		36		/* NEC V800 series */ -#define EM_FR20		37		/* Fujitsu FR20 */ -#define EM_RH32		38		/* TRW RH-32 */ -#define EM_RCE		39		/* Motorola RCE */ -#define EM_ARM		40		/* ARM */ -#define EM_FAKE_ALPHA	41		/* Digital Alpha */ -#define EM_SH		42		/* Hitachi SH */ -#define EM_SPARCV9	43		/* SPARC v9 64-bit */ -#define EM_TRICORE	44		/* Siemens Tricore */ -#define EM_ARC		45		/* Argonaut RISC Core */ -#define EM_H8_300	46		/* Hitachi H8/300 */ -#define EM_H8_300H	47		/* Hitachi H8/300H */ -#define EM_H8S		48		/* Hitachi H8S */ -#define EM_H8_500	49		/* Hitachi H8/500 */ -#define EM_IA_64	50		/* Intel Merced */ -#define EM_MIPS_X	51		/* Stanford MIPS-X */ -#define EM_COLDFIRE	52		/* Motorola Coldfire */ -#define EM_68HC12	53		/* Motorola M68HC12 */ -#define EM_MMA		54		/* Fujitsu MMA Multimedia Accelerator*/ -#define EM_PCP		55		/* Siemens PCP */ -#define EM_NCPU		56		/* Sony nCPU embeeded RISC */ -#define EM_NDR1		57		/* Denso NDR1 microprocessor */ -#define EM_STARCORE	58		/* Motorola Start*Core processor */ -#define EM_ME16		59		/* Toyota ME16 processor */ -#define EM_ST100	60		/* STMicroelectronic ST100 processor */ -#define EM_TINYJ	61		/* Advanced Logic Corp. Tinyj emb.fam*/ -#define EM_X86_64	62		/* AMD x86-64 architecture */ -#define EM_PDSP		63		/* Sony DSP Processor */ - -#define EM_FX66		66		/* Siemens FX66 microcontroller */ -#define EM_ST9PLUS	67		/* STMicroelectronics ST9+ 8/16 mc */ -#define EM_ST7		68		/* STmicroelectronics ST7 8 bit mc */ -#define EM_68HC16	69		/* Motorola MC68HC16 microcontroller */ -#define EM_68HC11	70		/* Motorola MC68HC11 microcontroller */ -#define EM_68HC08	71		/* Motorola MC68HC08 microcontroller */ -#define EM_68HC05	72		/* Motorola MC68HC05 microcontroller */ -#define EM_SVX		73		/* Silicon Graphics SVx */ -#define EM_ST19		74		/* STMicroelectronics ST19 8 bit mc */ -#define EM_VAX		75		/* Digital VAX */ -#define EM_CRIS		76		/* Axis Communications 32-bit embedded processor */ -#define EM_JAVELIN	77		/* Infineon Technologies 32-bit embedded processor */ -#define EM_FIREPATH	78		/* Element 14 64-bit DSP Processor */ -#define EM_ZSP		79		/* LSI Logic 16-bit DSP Processor */ -#define EM_MMIX		80		/* Donald Knuth's educational 64-bit processor */ -#define EM_HUANY	81		/* Harvard University machine-independent object files */ -#define EM_PRISM	82		/* SiTera Prism */ -#define EM_AVR		83		/* Atmel AVR 8-bit microcontroller */ -#define EM_FR30		84		/* Fujitsu FR30 */ -#define EM_D10V		85		/* Mitsubishi D10V */ -#define EM_D30V		86		/* Mitsubishi D30V */ -#define EM_V850		87		/* NEC v850 */ -#define EM_M32R		88		/* Mitsubishi M32R */ -#define EM_MN10300	89		/* Matsushita MN10300 */ -#define EM_MN10200	90		/* Matsushita MN10200 */ -#define EM_PJ		91		/* picoJava */ -#define EM_OPENRISC	92		/* OpenRISC 32-bit embedded processor */ -#define EM_ARC_A5	93		/* ARC Cores Tangent-A5 */ -#define EM_XTENSA	94		/* Tensilica Xtensa Architecture */ -#define EM_NUM		95 - -/* If it is necessary to assign new unofficial EM_* values, please -   pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the -   chances of collision with official or non-GNU unofficial values.  */ - -#define EM_ALPHA	0x9026 - -/* Legal values for e_version (version).  */ - -#define EV_NONE		0		/* Invalid ELF version */ -#define EV_CURRENT	1		/* Current version */ -#define EV_NUM		2 - -/* Section header.  */ - -typedef struct -{ -  Elf32_Word	sh_name;		/* Section name (string tbl index) */ -  Elf32_Word	sh_type;		/* Section type */ -  Elf32_Word	sh_flags;		/* Section flags */ -  Elf32_Addr	sh_addr;		/* Section virtual addr at execution */ -  Elf32_Off	sh_offset;		/* Section file offset */ -  Elf32_Word	sh_size;		/* Section size in bytes */ -  Elf32_Word	sh_link;		/* Link to another section */ -  Elf32_Word	sh_info;		/* Additional section information */ -  Elf32_Word	sh_addralign;		/* Section alignment */ -  Elf32_Word	sh_entsize;		/* Entry size if section holds table */ -} Elf32_Shdr; - -typedef struct -{ -  Elf64_Word	sh_name;		/* Section name (string tbl index) */ -  Elf64_Word	sh_type;		/* Section type */ -  Elf64_Xword	sh_flags;		/* Section flags */ -  Elf64_Addr	sh_addr;		/* Section virtual addr at execution */ -  Elf64_Off	sh_offset;		/* Section file offset */ -  Elf64_Xword	sh_size;		/* Section size in bytes */ -  Elf64_Word	sh_link;		/* Link to another section */ -  Elf64_Word	sh_info;		/* Additional section information */ -  Elf64_Xword	sh_addralign;		/* Section alignment */ -  Elf64_Xword	sh_entsize;		/* Entry size if section holds table */ -} Elf64_Shdr; - -/* Special section indices.  */ - -#define SHN_UNDEF	0		/* Undefined section */ -#define SHN_LORESERVE	0xff00		/* Start of reserved indices */ -#define SHN_LOPROC	0xff00		/* Start of processor-specific */ -#define SHN_BEFORE	0xff00		/* Order section before all others -					   (Solaris).  */ -#define SHN_AFTER	0xff01		/* Order section after all others -					   (Solaris).  */ -#define SHN_HIPROC	0xff1f		/* End of processor-specific */ -#define SHN_LOOS	0xff20		/* Start of OS-specific */ -#define SHN_HIOS	0xff3f		/* End of OS-specific */ -#define SHN_ABS		0xfff1		/* Associated symbol is absolute */ -#define SHN_COMMON	0xfff2		/* Associated symbol is common */ -#define SHN_XINDEX	0xffff		/* Index is in extra table.  */ -#define SHN_HIRESERVE	0xffff		/* End of reserved indices */ - -/* Legal values for sh_type (section type).  */ - -#define SHT_NULL	  0		/* Section header table entry unused */ -#define SHT_PROGBITS	  1		/* Program data */ -#define SHT_SYMTAB	  2		/* Symbol table */ -#define SHT_STRTAB	  3		/* String table */ -#define SHT_RELA	  4		/* Relocation entries with addends */ -#define SHT_HASH	  5		/* Symbol hash table */ -#define SHT_DYNAMIC	  6		/* Dynamic linking information */ -#define SHT_NOTE	  7		/* Notes */ -#define SHT_NOBITS	  8		/* Program space with no data (bss) */ -#define SHT_REL		  9		/* Relocation entries, no addends */ -#define SHT_SHLIB	  10		/* Reserved */ -#define SHT_DYNSYM	  11		/* Dynamic linker symbol table */ -#define SHT_INIT_ARRAY	  14		/* Array of constructors */ -#define SHT_FINI_ARRAY	  15		/* Array of destructors */ -#define SHT_PREINIT_ARRAY 16		/* Array of pre-constructors */ -#define SHT_GROUP	  17		/* Section group */ -#define SHT_SYMTAB_SHNDX  18		/* Extended section indeces */ -#define	SHT_NUM		  19		/* Number of defined types.  */ -#define SHT_LOOS	  0x60000000	/* Start OS-specific */ -#define SHT_GNU_LIBLIST	  0x6ffffff7	/* Prelink library list */ -#define SHT_CHECKSUM	  0x6ffffff8	/* Checksum for DSO content.  */ -#define SHT_LOSUNW	  0x6ffffffa	/* Sun-specific low bound.  */ -#define SHT_SUNW_move	  0x6ffffffa -#define SHT_SUNW_COMDAT   0x6ffffffb -#define SHT_SUNW_syminfo  0x6ffffffc -#define SHT_GNU_verdef	  0x6ffffffd	/* Version definition section.  */ -#define SHT_GNU_verneed	  0x6ffffffe	/* Version needs section.  */ -#define SHT_GNU_versym	  0x6fffffff	/* Version symbol table.  */ -#define SHT_HISUNW	  0x6fffffff	/* Sun-specific high bound.  */ -#define SHT_HIOS	  0x6fffffff	/* End OS-specific type */ -#define SHT_LOPROC	  0x70000000	/* Start of processor-specific */ -#define SHT_HIPROC	  0x7fffffff	/* End of processor-specific */ -#define SHT_LOUSER	  0x80000000	/* Start of application-specific */ -#define SHT_HIUSER	  0x8fffffff	/* End of application-specific */ - -/* Legal values for sh_flags (section flags).  */ - -#define SHF_WRITE	     (1 << 0)	/* Writable */ -#define SHF_ALLOC	     (1 << 1)	/* Occupies memory during execution */ -#define SHF_EXECINSTR	     (1 << 2)	/* Executable */ -#define SHF_MERGE	     (1 << 4)	/* Might be merged */ -#define SHF_STRINGS	     (1 << 5)	/* Contains nul-terminated strings */ -#define SHF_INFO_LINK	     (1 << 6)	/* `sh_info' contains SHT index */ -#define SHF_LINK_ORDER	     (1 << 7)	/* Preserve order after combining */ -#define SHF_OS_NONCONFORMING (1 << 8)	/* Non-standard OS specific handling -					   required */ -#define SHF_GROUP	     (1 << 9)	/* Section is member of a group.  */ -#define SHF_TLS		     (1 << 10)	/* Section hold thread-local data.  */ -#define SHF_MASKOS	     0x0ff00000	/* OS-specific.  */ -#define SHF_MASKPROC	     0xf0000000	/* Processor-specific */ -#define SHF_ORDERED	     (1 << 30)	/* Special ordering requirement -					   (Solaris).  */ -#define SHF_EXCLUDE	     (1 << 31)	/* Section is excluded unless -					   referenced or allocated (Solaris).*/ - -/* Section group handling.  */ -#define GRP_COMDAT	0x1		/* Mark group as COMDAT.  */ - -/* Symbol table entry.  */ - -typedef struct -{ -  Elf32_Word	st_name;		/* Symbol name (string tbl index) */ -  Elf32_Addr	st_value;		/* Symbol value */ -  Elf32_Word	st_size;		/* Symbol size */ -  unsigned char	st_info;		/* Symbol type and binding */ -  unsigned char	st_other;		/* Symbol visibility */ -  Elf32_Section	st_shndx;		/* Section index */ -} Elf32_Sym; - -typedef struct -{ -  Elf64_Word	st_name;		/* Symbol name (string tbl index) */ -  unsigned char	st_info;		/* Symbol type and binding */ -  unsigned char st_other;		/* Symbol visibility */ -  Elf64_Section	st_shndx;		/* Section index */ -  Elf64_Addr	st_value;		/* Symbol value */ -  Elf64_Xword	st_size;		/* Symbol size */ -} Elf64_Sym; - -/* The syminfo section if available contains additional information about -   every dynamic symbol.  */ - -typedef struct -{ -  Elf32_Half si_boundto;		/* Direct bindings, symbol bound to */ -  Elf32_Half si_flags;			/* Per symbol flags */ -} Elf32_Syminfo; - -typedef struct -{ -  Elf64_Half si_boundto;		/* Direct bindings, symbol bound to */ -  Elf64_Half si_flags;			/* Per symbol flags */ -} Elf64_Syminfo; - -/* Possible values for si_boundto.  */ -#define SYMINFO_BT_SELF		0xffff	/* Symbol bound to self */ -#define SYMINFO_BT_PARENT	0xfffe	/* Symbol bound to parent */ -#define SYMINFO_BT_LOWRESERVE	0xff00	/* Beginning of reserved entries */ - -/* Possible bitmasks for si_flags.  */ -#define SYMINFO_FLG_DIRECT	0x0001	/* Direct bound symbol */ -#define SYMINFO_FLG_PASSTHRU	0x0002	/* Pass-thru symbol for translator */ -#define SYMINFO_FLG_COPY	0x0004	/* Symbol is a copy-reloc */ -#define SYMINFO_FLG_LAZYLOAD	0x0008	/* Symbol bound to object to be lazy -					   loaded */ -/* Syminfo version values.  */ -#define SYMINFO_NONE		0 -#define SYMINFO_CURRENT		1 -#define SYMINFO_NUM		2 - - -/* How to extract and insert information held in the st_info field.  */ - -#define ELF32_ST_BIND(val)		(((unsigned char) (val)) >> 4) -#define ELF32_ST_TYPE(val)		((val) & 0xf) -#define ELF32_ST_INFO(bind, type)	(((bind) << 4) + ((type) & 0xf)) - -/* Both Elf32_Sym and Elf64_Sym use the same one-byte st_info field.  */ -#define ELF64_ST_BIND(val)		ELF32_ST_BIND (val) -#define ELF64_ST_TYPE(val)		ELF32_ST_TYPE (val) -#define ELF64_ST_INFO(bind, type)	ELF32_ST_INFO ((bind), (type)) - -/* Legal values for ST_BIND subfield of st_info (symbol binding).  */ - -#define STB_LOCAL	0		/* Local symbol */ -#define STB_GLOBAL	1		/* Global symbol */ -#define STB_WEAK	2		/* Weak symbol */ -#define	STB_NUM		3		/* Number of defined types.  */ -#define STB_LOOS	10		/* Start of OS-specific */ -#define STB_HIOS	12		/* End of OS-specific */ -#define STB_LOPROC	13		/* Start of processor-specific */ -#define STB_HIPROC	15		/* End of processor-specific */ - -/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ - -#define STT_NOTYPE	0		/* Symbol type is unspecified */ -#define STT_OBJECT	1		/* Symbol is a data object */ -#define STT_FUNC	2		/* Symbol is a code object */ -#define STT_SECTION	3		/* Symbol associated with a section */ -#define STT_FILE	4		/* Symbol's name is file name */ -#define STT_COMMON	5		/* Symbol is a common data object */ -#define STT_TLS		6		/* Symbol is thread-local data object*/ -#define	STT_NUM		7		/* Number of defined types.  */ -#define STT_LOOS	10		/* Start of OS-specific */ -#define STT_HIOS	12		/* End of OS-specific */ -#define STT_LOPROC	13		/* Start of processor-specific */ -#define STT_HIPROC	15		/* End of processor-specific */ - - -/* Symbol table indices are found in the hash buckets and chain table -   of a symbol hash table section.  This special index value indicates -   the end of a chain, meaning no further symbols are found in that bucket.  */ - -#define STN_UNDEF	0		/* End of a chain.  */ - - -/* How to extract and insert information held in the st_other field.  */ - -#define ELF32_ST_VISIBILITY(o)	((o) & 0x03) - -/* For ELF64 the definitions are the same.  */ -#define ELF64_ST_VISIBILITY(o)	ELF32_ST_VISIBILITY (o) - -/* Symbol visibility specification encoded in the st_other field.  */ -#define STV_DEFAULT	0		/* Default symbol visibility rules */ -#define STV_INTERNAL	1		/* Processor specific hidden class */ -#define STV_HIDDEN	2		/* Sym unavailable in other modules */ -#define STV_PROTECTED	3		/* Not preemptible, not exported */ - - -/* Relocation table entry without addend (in section of type SHT_REL).  */ - -typedef struct -{ -  Elf32_Addr	r_offset;		/* Address */ -  Elf32_Word	r_info;			/* Relocation type and symbol index */ -} Elf32_Rel; - -/* I have seen two different definitions of the Elf64_Rel and -   Elf64_Rela structures, so we'll leave them out until Novell (or -   whoever) gets their act together.  */ -/* The following, at least, is used on Sparc v9, MIPS, and Alpha.  */ - -typedef struct -{ -  Elf64_Addr	r_offset;		/* Address */ -  Elf64_Xword	r_info;			/* Relocation type and symbol index */ -} Elf64_Rel; - -/* Relocation table entry with addend (in section of type SHT_RELA).  */ - -typedef struct -{ -  Elf32_Addr	r_offset;		/* Address */ -  Elf32_Word	r_info;			/* Relocation type and symbol index */ -  Elf32_Sword	r_addend;		/* Addend */ -} Elf32_Rela; - -typedef struct -{ -  Elf64_Addr	r_offset;		/* Address */ -  Elf64_Xword	r_info;			/* Relocation type and symbol index */ -  Elf64_Sxword	r_addend;		/* Addend */ -} Elf64_Rela; - -/* How to extract and insert information held in the r_info field.  */ - -#define ELF32_R_SYM(val)		((val) >> 8) -#define ELF32_R_TYPE(val)		((val) & 0xff) -#define ELF32_R_INFO(sym, type)		(((sym) << 8) + ((type) & 0xff)) - -#define ELF64_R_SYM(i)			((i) >> 32) -#define ELF64_R_TYPE(i)			((i) & 0xffffffff) -#define ELF64_R_INFO(sym,type)		((((Elf64_Xword) (sym)) << 32) + (type)) - -/* Program segment header.  */ - -typedef struct -{ -  Elf32_Word	p_type;			/* Segment type */ -  Elf32_Off	p_offset;		/* Segment file offset */ -  Elf32_Addr	p_vaddr;		/* Segment virtual address */ -  Elf32_Addr	p_paddr;		/* Segment physical address */ -  Elf32_Word	p_filesz;		/* Segment size in file */ -  Elf32_Word	p_memsz;		/* Segment size in memory */ -  Elf32_Word	p_flags;		/* Segment flags */ -  Elf32_Word	p_align;		/* Segment alignment */ -} Elf32_Phdr; - -typedef struct -{ -  Elf64_Word	p_type;			/* Segment type */ -  Elf64_Word	p_flags;		/* Segment flags */ -  Elf64_Off	p_offset;		/* Segment file offset */ -  Elf64_Addr	p_vaddr;		/* Segment virtual address */ -  Elf64_Addr	p_paddr;		/* Segment physical address */ -  Elf64_Xword	p_filesz;		/* Segment size in file */ -  Elf64_Xword	p_memsz;		/* Segment size in memory */ -  Elf64_Xword	p_align;		/* Segment alignment */ -} Elf64_Phdr; - -/* Legal values for p_type (segment type).  */ - -#define	PT_NULL		0		/* Program header table entry unused */ -#define PT_LOAD		1		/* Loadable program segment */ -#define PT_DYNAMIC	2		/* Dynamic linking information */ -#define PT_INTERP	3		/* Program interpreter */ -#define PT_NOTE		4		/* Auxiliary information */ -#define PT_SHLIB	5		/* Reserved */ -#define PT_PHDR		6		/* Entry for header table itself */ -#define PT_TLS		7		/* Thread-local storage segment */ -#define	PT_NUM		8		/* Number of defined types */ -#define PT_LOOS		0x60000000	/* Start of OS-specific */ -#define PT_GNU_EH_FRAME	0x6474e550	/* GCC .eh_frame_hdr segment */ -#define PT_GNU_STACK	0x6474e551	/* Indicates stack executability */ -#define PT_GNU_RELRO	0x6474e552	/* Read-only after relocation */ -#define PT_LOSUNW	0x6ffffffa -#define PT_SUNWBSS	0x6ffffffa	/* Sun Specific segment */ -#define PT_SUNWSTACK	0x6ffffffb	/* Stack segment */ -#define PT_HISUNW	0x6fffffff -#define PT_HIOS		0x6fffffff	/* End of OS-specific */ -#define PT_LOPROC	0x70000000	/* Start of processor-specific */ -#define PT_HIPROC	0x7fffffff	/* End of processor-specific */ - -/* Legal values for p_flags (segment flags).  */ - -#define PF_X		(1 << 0)	/* Segment is executable */ -#define PF_W		(1 << 1)	/* Segment is writable */ -#define PF_R		(1 << 2)	/* Segment is readable */ -#define PF_MASKOS	0x0ff00000	/* OS-specific */ -#define PF_MASKPROC	0xf0000000	/* Processor-specific */ - -/* Legal values for note segment descriptor types for core files. */ - -#define NT_PRSTATUS	1		/* Contains copy of prstatus struct */ -#define NT_FPREGSET	2		/* Contains copy of fpregset struct */ -#define NT_PRPSINFO	3		/* Contains copy of prpsinfo struct */ -#define NT_PRXREG	4		/* Contains copy of prxregset struct */ -#define NT_TASKSTRUCT	4		/* Contains copy of task structure */ -#define NT_PLATFORM	5		/* String from sysinfo(SI_PLATFORM) */ -#define NT_AUXV		6		/* Contains copy of auxv array */ -#define NT_GWINDOWS	7		/* Contains copy of gwindows struct */ -#define NT_ASRS		8		/* Contains copy of asrset struct */ -#define NT_PSTATUS	10		/* Contains copy of pstatus struct */ -#define NT_PSINFO	13		/* Contains copy of psinfo struct */ -#define NT_PRCRED	14		/* Contains copy of prcred struct */ -#define NT_UTSNAME	15		/* Contains copy of utsname struct */ -#define NT_LWPSTATUS	16		/* Contains copy of lwpstatus struct */ -#define NT_LWPSINFO	17		/* Contains copy of lwpinfo struct */ -#define NT_PRFPXREG	20		/* Contains copy of fprxregset struct*/ - -/* Legal values for the note segment descriptor types for object files.  */ - -#define NT_VERSION	1		/* Contains a version string.  */ - - -/* Dynamic section entry.  */ - -typedef struct -{ -  Elf32_Sword	d_tag;			/* Dynamic entry type */ -  union -    { -      Elf32_Word d_val;			/* Integer value */ -      Elf32_Addr d_ptr;			/* Address value */ -    } d_un; -} Elf32_Dyn; - -typedef struct -{ -  Elf64_Sxword	d_tag;			/* Dynamic entry type */ -  union -    { -      Elf64_Xword d_val;		/* Integer value */ -      Elf64_Addr d_ptr;			/* Address value */ -    } d_un; -} Elf64_Dyn; - -/* Legal values for d_tag (dynamic entry type).  */ - -#define DT_NULL		0		/* Marks end of dynamic section */ -#define DT_NEEDED	1		/* Name of needed library */ -#define DT_PLTRELSZ	2		/* Size in bytes of PLT relocs */ -#define DT_PLTGOT	3		/* Processor defined value */ -#define DT_HASH		4		/* Address of symbol hash table */ -#define DT_STRTAB	5		/* Address of string table */ -#define DT_SYMTAB	6		/* Address of symbol table */ -#define DT_RELA		7		/* Address of Rela relocs */ -#define DT_RELASZ	8		/* Total size of Rela relocs */ -#define DT_RELAENT	9		/* Size of one Rela reloc */ -#define DT_STRSZ	10		/* Size of string table */ -#define DT_SYMENT	11		/* Size of one symbol table entry */ -#define DT_INIT		12		/* Address of init function */ -#define DT_FINI		13		/* Address of termination function */ -#define DT_SONAME	14		/* Name of shared object */ -#define DT_RPATH	15		/* Library search path (deprecated) */ -#define DT_SYMBOLIC	16		/* Start symbol search here */ -#define DT_REL		17		/* Address of Rel relocs */ -#define DT_RELSZ	18		/* Total size of Rel relocs */ -#define DT_RELENT	19		/* Size of one Rel reloc */ -#define DT_PLTREL	20		/* Type of reloc in PLT */ -#define DT_DEBUG	21		/* For debugging; unspecified */ -#define DT_TEXTREL	22		/* Reloc might modify .text */ -#define DT_JMPREL	23		/* Address of PLT relocs */ -#define	DT_BIND_NOW	24		/* Process relocations of object */ -#define	DT_INIT_ARRAY	25		/* Array with addresses of init fct */ -#define	DT_FINI_ARRAY	26		/* Array with addresses of fini fct */ -#define	DT_INIT_ARRAYSZ	27		/* Size in bytes of DT_INIT_ARRAY */ -#define	DT_FINI_ARRAYSZ	28		/* Size in bytes of DT_FINI_ARRAY */ -#define DT_RUNPATH	29		/* Library search path */ -#define DT_FLAGS	30		/* Flags for the object being loaded */ -#define DT_ENCODING	32		/* Start of encoded range */ -#define DT_PREINIT_ARRAY 32		/* Array with addresses of preinit fct*/ -#define DT_PREINIT_ARRAYSZ 33		/* size in bytes of DT_PREINIT_ARRAY */ -#define	DT_NUM		34		/* Number used */ -#define DT_LOOS		0x6000000d	/* Start of OS-specific */ -#define DT_HIOS		0x6ffff000	/* End of OS-specific */ -#define DT_LOPROC	0x70000000	/* Start of processor-specific */ -#define DT_HIPROC	0x7fffffff	/* End of processor-specific */ -#define	DT_PROCNUM	DT_MIPS_NUM	/* Most used by any processor */ - -/* DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the -   Dyn.d_un.d_val field of the Elf*_Dyn structure.  This follows Sun's -   approach.  */ -#define DT_VALRNGLO	0x6ffffd00 -#define DT_GNU_PRELINKED 0x6ffffdf5	/* Prelinking timestamp */ -#define DT_GNU_CONFLICTSZ 0x6ffffdf6	/* Size of conflict section */ -#define DT_GNU_LIBLISTSZ 0x6ffffdf7	/* Size of library list */ -#define DT_CHECKSUM	0x6ffffdf8 -#define DT_PLTPADSZ	0x6ffffdf9 -#define DT_MOVEENT	0x6ffffdfa -#define DT_MOVESZ	0x6ffffdfb -#define DT_FEATURE_1	0x6ffffdfc	/* Feature selection (DTF_*).  */ -#define DT_POSFLAG_1	0x6ffffdfd	/* Flags for DT_* entries, effecting -					   the following DT_* entry.  */ -#define DT_SYMINSZ	0x6ffffdfe	/* Size of syminfo table (in bytes) */ -#define DT_SYMINENT	0x6ffffdff	/* Entry size of syminfo */ -#define DT_VALRNGHI	0x6ffffdff -#define DT_VALTAGIDX(tag)	(DT_VALRNGHI - (tag))	/* Reverse order! */ -#define DT_VALNUM 12 - -/* DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the -   Dyn.d_un.d_ptr field of the Elf*_Dyn structure. - -   If any adjustment is made to the ELF object after it has been -   built these entries will need to be adjusted.  */ -#define DT_ADDRRNGLO	0x6ffffe00 -#define DT_GNU_CONFLICT	0x6ffffef8	/* Start of conflict section */ -#define DT_GNU_LIBLIST	0x6ffffef9	/* Library list */ -#define DT_CONFIG	0x6ffffefa	/* Configuration information.  */ -#define DT_DEPAUDIT	0x6ffffefb	/* Dependency auditing.  */ -#define DT_AUDIT	0x6ffffefc	/* Object auditing.  */ -#define	DT_PLTPAD	0x6ffffefd	/* PLT padding.  */ -#define	DT_MOVETAB	0x6ffffefe	/* Move table.  */ -#define DT_SYMINFO	0x6ffffeff	/* Syminfo table.  */ -#define DT_ADDRRNGHI	0x6ffffeff -#define DT_ADDRTAGIDX(tag)	(DT_ADDRRNGHI - (tag))	/* Reverse order! */ -#define DT_ADDRNUM 10 - -/* The versioning entry types.  The next are defined as part of the -   GNU extension.  */ -#define DT_VERSYM	0x6ffffff0 - -#define DT_RELACOUNT	0x6ffffff9 -#define DT_RELCOUNT	0x6ffffffa - -/* These were chosen by Sun.  */ -#define DT_FLAGS_1	0x6ffffffb	/* State flags, see DF_1_* below.  */ -#define	DT_VERDEF	0x6ffffffc	/* Address of version definition -					   table */ -#define	DT_VERDEFNUM	0x6ffffffd	/* Number of version definitions */ -#define	DT_VERNEED	0x6ffffffe	/* Address of table with needed -					   versions */ -#define	DT_VERNEEDNUM	0x6fffffff	/* Number of needed versions */ -#define DT_VERSIONTAGIDX(tag)	(DT_VERNEEDNUM - (tag))	/* Reverse order! */ -#define DT_VERSIONTAGNUM 16 - -/* Sun added these machine-independent extensions in the "processor-specific" -   range.  Be compatible.  */ -#define DT_AUXILIARY    0x7ffffffd      /* Shared object to load before self */ -#define DT_FILTER       0x7fffffff      /* Shared object to get values from */ -#define DT_EXTRATAGIDX(tag)	((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) -#define DT_EXTRANUM	3 - -/* Values of `d_un.d_val' in the DT_FLAGS entry.  */ -#define DF_ORIGIN	0x00000001	/* Object may use DF_ORIGIN */ -#define DF_SYMBOLIC	0x00000002	/* Symbol resolutions starts here */ -#define DF_TEXTREL	0x00000004	/* Object contains text relocations */ -#define DF_BIND_NOW	0x00000008	/* No lazy binding for this object */ -#define DF_STATIC_TLS	0x00000010	/* Module uses the static TLS model */ - -/* State flags selectable in the `d_un.d_val' element of the DT_FLAGS_1 -   entry in the dynamic section.  */ -#define DF_1_NOW	0x00000001	/* Set RTLD_NOW for this object.  */ -#define DF_1_GLOBAL	0x00000002	/* Set RTLD_GLOBAL for this object.  */ -#define DF_1_GROUP	0x00000004	/* Set RTLD_GROUP for this object.  */ -#define DF_1_NODELETE	0x00000008	/* Set RTLD_NODELETE for this object.*/ -#define DF_1_LOADFLTR	0x00000010	/* Trigger filtee loading at runtime.*/ -#define DF_1_INITFIRST	0x00000020	/* Set RTLD_INITFIRST for this object*/ -#define DF_1_NOOPEN	0x00000040	/* Set RTLD_NOOPEN for this object.  */ -#define DF_1_ORIGIN	0x00000080	/* $ORIGIN must be handled.  */ -#define DF_1_DIRECT	0x00000100	/* Direct binding enabled.  */ -#define DF_1_TRANS	0x00000200 -#define DF_1_INTERPOSE	0x00000400	/* Object is used to interpose.  */ -#define DF_1_NODEFLIB	0x00000800	/* Ignore default lib search path.  */ -#define DF_1_NODUMP	0x00001000	/* Object can't be dldump'ed.  */ -#define DF_1_CONFALT	0x00002000	/* Configuration alternative created.*/ -#define DF_1_ENDFILTEE	0x00004000	/* Filtee terminates filters search. */ -#define	DF_1_DISPRELDNE	0x00008000	/* Disp reloc applied at build time. */ -#define	DF_1_DISPRELPND	0x00010000	/* Disp reloc applied at run-time.  */ - -/* Flags for the feature selection in DT_FEATURE_1.  */ -#define DTF_1_PARINIT	0x00000001 -#define DTF_1_CONFEXP	0x00000002 - -/* Flags in the DT_POSFLAG_1 entry effecting only the next DT_* entry.  */ -#define DF_P1_LAZYLOAD	0x00000001	/* Lazyload following object.  */ -#define DF_P1_GROUPPERM	0x00000002	/* Symbols from next object are not -					   generally available.  */ - -/* Version definition sections.  */ - -typedef struct -{ -  Elf32_Half	vd_version;		/* Version revision */ -  Elf32_Half	vd_flags;		/* Version information */ -  Elf32_Half	vd_ndx;			/* Version Index */ -  Elf32_Half	vd_cnt;			/* Number of associated aux entries */ -  Elf32_Word	vd_hash;		/* Version name hash value */ -  Elf32_Word	vd_aux;			/* Offset in bytes to verdaux array */ -  Elf32_Word	vd_next;		/* Offset in bytes to next verdef -					   entry */ -} Elf32_Verdef; - -typedef struct -{ -  Elf64_Half	vd_version;		/* Version revision */ -  Elf64_Half	vd_flags;		/* Version information */ -  Elf64_Half	vd_ndx;			/* Version Index */ -  Elf64_Half	vd_cnt;			/* Number of associated aux entries */ -  Elf64_Word	vd_hash;		/* Version name hash value */ -  Elf64_Word	vd_aux;			/* Offset in bytes to verdaux array */ -  Elf64_Word	vd_next;		/* Offset in bytes to next verdef -					   entry */ -} Elf64_Verdef; - - -/* Legal values for vd_version (version revision).  */ -#define VER_DEF_NONE	0		/* No version */ -#define VER_DEF_CURRENT	1		/* Current version */ -#define VER_DEF_NUM	2		/* Given version number */ - -/* Legal values for vd_flags (version information flags).  */ -#define VER_FLG_BASE	0x1		/* Version definition of file itself */ -#define VER_FLG_WEAK	0x2		/* Weak version identifier */ - -/* Versym symbol index values.  */ -#define	VER_NDX_LOCAL		0	/* Symbol is local.  */ -#define	VER_NDX_GLOBAL		1	/* Symbol is global.  */ -#define	VER_NDX_LORESERVE	0xff00	/* Beginning of reserved entries.  */ -#define	VER_NDX_ELIMINATE	0xff01	/* Symbol is to be eliminated.  */ - -/* Auxialiary version information.  */ - -typedef struct -{ -  Elf32_Word	vda_name;		/* Version or dependency names */ -  Elf32_Word	vda_next;		/* Offset in bytes to next verdaux -					   entry */ -} Elf32_Verdaux; - -typedef struct -{ -  Elf64_Word	vda_name;		/* Version or dependency names */ -  Elf64_Word	vda_next;		/* Offset in bytes to next verdaux -					   entry */ -} Elf64_Verdaux; - - -/* Version dependency section.  */ - -typedef struct -{ -  Elf32_Half	vn_version;		/* Version of structure */ -  Elf32_Half	vn_cnt;			/* Number of associated aux entries */ -  Elf32_Word	vn_file;		/* Offset of filename for this -					   dependency */ -  Elf32_Word	vn_aux;			/* Offset in bytes to vernaux array */ -  Elf32_Word	vn_next;		/* Offset in bytes to next verneed -					   entry */ -} Elf32_Verneed; - -typedef struct -{ -  Elf64_Half	vn_version;		/* Version of structure */ -  Elf64_Half	vn_cnt;			/* Number of associated aux entries */ -  Elf64_Word	vn_file;		/* Offset of filename for this -					   dependency */ -  Elf64_Word	vn_aux;			/* Offset in bytes to vernaux array */ -  Elf64_Word	vn_next;		/* Offset in bytes to next verneed -					   entry */ -} Elf64_Verneed; - - -/* Legal values for vn_version (version revision).  */ -#define VER_NEED_NONE	 0		/* No version */ -#define VER_NEED_CURRENT 1		/* Current version */ -#define VER_NEED_NUM	 2		/* Given version number */ - -/* Auxiliary needed version information.  */ - -typedef struct -{ -  Elf32_Word	vna_hash;		/* Hash value of dependency name */ -  Elf32_Half	vna_flags;		/* Dependency specific information */ -  Elf32_Half	vna_other;		/* Unused */ -  Elf32_Word	vna_name;		/* Dependency name string offset */ -  Elf32_Word	vna_next;		/* Offset in bytes to next vernaux -					   entry */ -} Elf32_Vernaux; - -typedef struct -{ -  Elf64_Word	vna_hash;		/* Hash value of dependency name */ -  Elf64_Half	vna_flags;		/* Dependency specific information */ -  Elf64_Half	vna_other;		/* Unused */ -  Elf64_Word	vna_name;		/* Dependency name string offset */ -  Elf64_Word	vna_next;		/* Offset in bytes to next vernaux -					   entry */ -} Elf64_Vernaux; - - -/* Legal values for vna_flags.  */ -#define VER_FLG_WEAK	0x2		/* Weak version identifier */ - - -/* Auxiliary vector.  */ - -/* This vector is normally only used by the program interpreter.  The -   usual definition in an ABI supplement uses the name auxv_t.  The -   vector is not usually defined in a standard <elf.h> file, but it -   can't hurt.  We rename it to avoid conflicts.  The sizes of these -   types are an arrangement between the exec server and the program -   interpreter, so we don't fully specify them here.  */ - -typedef struct -{ -  int a_type;			/* Entry type */ -  union -    { -      long int a_val;		/* Integer value */ -      void *a_ptr;		/* Pointer value */ -      void (*a_fcn) (void);	/* Function pointer value */ -    } a_un; -} Elf32_auxv_t; - -typedef struct -{ -  long int a_type;		/* Entry type */ -  union -    { -      long int a_val;		/* Integer value */ -      void *a_ptr;		/* Pointer value */ -      void (*a_fcn) (void);	/* Function pointer value */ -    } a_un; -} Elf64_auxv_t; - -/* Legal values for a_type (entry type).  */ - -#define AT_NULL		0		/* End of vector */ -#define AT_IGNORE	1		/* Entry should be ignored */ -#define AT_EXECFD	2		/* File descriptor of program */ -#define AT_PHDR		3		/* Program headers for program */ -#define AT_PHENT	4		/* Size of program header entry */ -#define AT_PHNUM	5		/* Number of program headers */ -#define AT_PAGESZ	6		/* System page size */ -#define AT_BASE		7		/* Base address of interpreter */ -#define AT_FLAGS	8		/* Flags */ -#define AT_ENTRY	9		/* Entry point of program */ -#define AT_NOTELF	10		/* Program is not ELF */ -#define AT_UID		11		/* Real uid */ -#define AT_EUID		12		/* Effective uid */ -#define AT_GID		13		/* Real gid */ -#define AT_EGID		14		/* Effective gid */ -#define AT_CLKTCK	17		/* Frequency of times() */ - -/* Some more special a_type values describing the hardware.  */ -#define AT_PLATFORM	15		/* String identifying platform.  */ -#define AT_HWCAP	16		/* Machine dependent hints about -					   processor capabilities.  */ - -/* This entry gives some information about the FPU initialization -   performed by the kernel.  */ -#define AT_FPUCW	18		/* Used FPU control word.  */ - -/* Cache block sizes.  */ -#define AT_DCACHEBSIZE	19		/* Data cache block size.  */ -#define AT_ICACHEBSIZE	20		/* Instruction cache block size.  */ -#define AT_UCACHEBSIZE	21		/* Unified cache block size.  */ - -/* A special ignored value for PPC, used by the kernel to control the -   interpretation of the AUXV. Must be > 16.  */ -#define AT_IGNOREPPC	22		/* Entry should be ignored.  */ - -#define	AT_SECURE	23		/* Boolean, was exec setuid-like?  */ - -/* Pointer to the global system page used for system calls and other -   nice things.  */ -#define AT_SYSINFO	32 -#define AT_SYSINFO_EHDR	33 - -/* Shapes of the caches.  Bits 0-3 contains associativity; bits 4-7 contains -   log2 of line size; mask those to get cache size.  */ -#define AT_L1I_CACHESHAPE	34 -#define AT_L1D_CACHESHAPE	35 -#define AT_L2_CACHESHAPE	36 -#define AT_L3_CACHESHAPE	37 - -/* Note section contents.  Each entry in the note section begins with -   a header of a fixed form.  */ - -typedef struct -{ -  Elf32_Word n_namesz;			/* Length of the note's name.  */ -  Elf32_Word n_descsz;			/* Length of the note's descriptor.  */ -  Elf32_Word n_type;			/* Type of the note.  */ -} Elf32_Nhdr; - -typedef struct -{ -  Elf64_Word n_namesz;			/* Length of the note's name.  */ -  Elf64_Word n_descsz;			/* Length of the note's descriptor.  */ -  Elf64_Word n_type;			/* Type of the note.  */ -} Elf64_Nhdr; - -/* Known names of notes.  */ - -/* Solaris entries in the note section have this name.  */ -#define ELF_NOTE_SOLARIS	"SUNW Solaris" - -/* Note entries for GNU systems have this name.  */ -#define ELF_NOTE_GNU		"GNU" - - -/* Defined types of notes for Solaris.  */ - -/* Value of descriptor (one word) is desired pagesize for the binary.  */ -#define ELF_NOTE_PAGESIZE_HINT	1 - - -/* Defined note types for GNU systems.  */ - -/* ABI information.  The descriptor consists of words: -   word 0: OS descriptor -   word 1: major version of the ABI -   word 2: minor version of the ABI -   word 3: subminor version of the ABI -*/ -#define ELF_NOTE_ABI		1 - -/* Known OSes.  These value can appear in word 0 of an ELF_NOTE_ABI -   note section entry.  */ -#define ELF_NOTE_OS_LINUX	0 -#define ELF_NOTE_OS_GNU		1 -#define ELF_NOTE_OS_SOLARIS2	2 -#define ELF_NOTE_OS_FREEBSD	3 - - -/* Move records.  */ -typedef struct -{ -  Elf32_Xword m_value;		/* Symbol value.  */ -  Elf32_Word m_info;		/* Size and index.  */ -  Elf32_Word m_poffset;		/* Symbol offset.  */ -  Elf32_Half m_repeat;		/* Repeat count.  */ -  Elf32_Half m_stride;		/* Stride info.  */ -} Elf32_Move; - -typedef struct -{ -  Elf64_Xword m_value;		/* Symbol value.  */ -  Elf64_Xword m_info;		/* Size and index.  */ -  Elf64_Xword m_poffset;	/* Symbol offset.  */ -  Elf64_Half m_repeat;		/* Repeat count.  */ -  Elf64_Half m_stride;		/* Stride info.  */ -} Elf64_Move; - -/* Macro to construct move records.  */ -#define ELF32_M_SYM(info)	((info) >> 8) -#define ELF32_M_SIZE(info)	((unsigned char) (info)) -#define ELF32_M_INFO(sym, size)	(((sym) << 8) + (unsigned char) (size)) - -#define ELF64_M_SYM(info)	ELF32_M_SYM (info) -#define ELF64_M_SIZE(info)	ELF32_M_SIZE (info) -#define ELF64_M_INFO(sym, size)	ELF32_M_INFO (sym, size) - - -/* Motorola 68k specific definitions.  */ - -/* Values for Elf32_Ehdr.e_flags.  */ -#define EF_CPU32	0x00810000 - -/* m68k relocs.  */ - -#define R_68K_NONE	0		/* No reloc */ -#define R_68K_32	1		/* Direct 32 bit  */ -#define R_68K_16	2		/* Direct 16 bit  */ -#define R_68K_8		3		/* Direct 8 bit  */ -#define R_68K_PC32	4		/* PC relative 32 bit */ -#define R_68K_PC16	5		/* PC relative 16 bit */ -#define R_68K_PC8	6		/* PC relative 8 bit */ -#define R_68K_GOT32	7		/* 32 bit PC relative GOT entry */ -#define R_68K_GOT16	8		/* 16 bit PC relative GOT entry */ -#define R_68K_GOT8	9		/* 8 bit PC relative GOT entry */ -#define R_68K_GOT32O	10		/* 32 bit GOT offset */ -#define R_68K_GOT16O	11		/* 16 bit GOT offset */ -#define R_68K_GOT8O	12		/* 8 bit GOT offset */ -#define R_68K_PLT32	13		/* 32 bit PC relative PLT address */ -#define R_68K_PLT16	14		/* 16 bit PC relative PLT address */ -#define R_68K_PLT8	15		/* 8 bit PC relative PLT address */ -#define R_68K_PLT32O	16		/* 32 bit PLT offset */ -#define R_68K_PLT16O	17		/* 16 bit PLT offset */ -#define R_68K_PLT8O	18		/* 8 bit PLT offset */ -#define R_68K_COPY	19		/* Copy symbol at runtime */ -#define R_68K_GLOB_DAT	20		/* Create GOT entry */ -#define R_68K_JMP_SLOT	21		/* Create PLT entry */ -#define R_68K_RELATIVE	22		/* Adjust by program base */ -/* Keep this the last entry.  */ -#define R_68K_NUM	23 - -/* Intel 80386 specific definitions.  */ - -/* i386 relocs.  */ - -#define R_386_NONE	   0		/* No reloc */ -#define R_386_32	   1		/* Direct 32 bit  */ -#define R_386_PC32	   2		/* PC relative 32 bit */ -#define R_386_GOT32	   3		/* 32 bit GOT entry */ -#define R_386_PLT32	   4		/* 32 bit PLT address */ -#define R_386_COPY	   5		/* Copy symbol at runtime */ -#define R_386_GLOB_DAT	   6		/* Create GOT entry */ -#define R_386_JMP_SLOT	   7		/* Create PLT entry */ -#define R_386_RELATIVE	   8		/* Adjust by program base */ -#define R_386_GOTOFF	   9		/* 32 bit offset to GOT */ -#define R_386_GOTPC	   10		/* 32 bit PC relative offset to GOT */ -#define R_386_32PLT	   11 -#define R_386_TLS_TPOFF	   14		/* Offset in static TLS block */ -#define R_386_TLS_IE	   15		/* Address of GOT entry for static TLS -					   block offset */ -#define R_386_TLS_GOTIE	   16		/* GOT entry for static TLS block -					   offset */ -#define R_386_TLS_LE	   17		/* Offset relative to static TLS -					   block */ -#define R_386_TLS_GD	   18		/* Direct 32 bit for GNU version of -					   general dynamic thread local data */ -#define R_386_TLS_LDM	   19		/* Direct 32 bit for GNU version of -					   local dynamic thread local data -					   in LE code */ -#define R_386_16	   20 -#define R_386_PC16	   21 -#define R_386_8		   22 -#define R_386_PC8	   23 -#define R_386_TLS_GD_32	   24		/* Direct 32 bit for general dynamic -					   thread local data */ -#define R_386_TLS_GD_PUSH  25		/* Tag for pushl in GD TLS code */ -#define R_386_TLS_GD_CALL  26		/* Relocation for call to -					   __tls_get_addr() */ -#define R_386_TLS_GD_POP   27		/* Tag for popl in GD TLS code */ -#define R_386_TLS_LDM_32   28		/* Direct 32 bit for local dynamic -					   thread local data in LE code */ -#define R_386_TLS_LDM_PUSH 29		/* Tag for pushl in LDM TLS code */ -#define R_386_TLS_LDM_CALL 30		/* Relocation for call to -					   __tls_get_addr() in LDM code */ -#define R_386_TLS_LDM_POP  31		/* Tag for popl in LDM TLS code */ -#define R_386_TLS_LDO_32   32		/* Offset relative to TLS block */ -#define R_386_TLS_IE_32	   33		/* GOT entry for negated static TLS -					   block offset */ -#define R_386_TLS_LE_32	   34		/* Negated offset relative to static -					   TLS block */ -#define R_386_TLS_DTPMOD32 35		/* ID of module containing symbol */ -#define R_386_TLS_DTPOFF32 36		/* Offset in TLS block */ -#define R_386_TLS_TPOFF32  37		/* Negated offset in static TLS block */ -/* Keep this the last entry.  */ -#define R_386_NUM	   38 - -/* SUN SPARC specific definitions.  */ - -/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ - -#define STT_SPARC_REGISTER	13	/* Global register reserved to app. */ - -/* Values for Elf64_Ehdr.e_flags.  */ - -#define EF_SPARCV9_MM		3 -#define EF_SPARCV9_TSO		0 -#define EF_SPARCV9_PSO		1 -#define EF_SPARCV9_RMO		2 -#define EF_SPARC_LEDATA		0x800000 /* little endian data */ -#define EF_SPARC_EXT_MASK	0xFFFF00 -#define EF_SPARC_32PLUS		0x000100 /* generic V8+ features */ -#define EF_SPARC_SUN_US1	0x000200 /* Sun UltraSPARC1 extensions */ -#define EF_SPARC_HAL_R1		0x000400 /* HAL R1 extensions */ -#define EF_SPARC_SUN_US3	0x000800 /* Sun UltraSPARCIII extensions */ - -/* SPARC relocs.  */ - -#define R_SPARC_NONE		0	/* No reloc */ -#define R_SPARC_8		1	/* Direct 8 bit */ -#define R_SPARC_16		2	/* Direct 16 bit */ -#define R_SPARC_32		3	/* Direct 32 bit */ -#define R_SPARC_DISP8		4	/* PC relative 8 bit */ -#define R_SPARC_DISP16		5	/* PC relative 16 bit */ -#define R_SPARC_DISP32		6	/* PC relative 32 bit */ -#define R_SPARC_WDISP30		7	/* PC relative 30 bit shifted */ -#define R_SPARC_WDISP22		8	/* PC relative 22 bit shifted */ -#define R_SPARC_HI22		9	/* High 22 bit */ -#define R_SPARC_22		10	/* Direct 22 bit */ -#define R_SPARC_13		11	/* Direct 13 bit */ -#define R_SPARC_LO10		12	/* Truncated 10 bit */ -#define R_SPARC_GOT10		13	/* Truncated 10 bit GOT entry */ -#define R_SPARC_GOT13		14	/* 13 bit GOT entry */ -#define R_SPARC_GOT22		15	/* 22 bit GOT entry shifted */ -#define R_SPARC_PC10		16	/* PC relative 10 bit truncated */ -#define R_SPARC_PC22		17	/* PC relative 22 bit shifted */ -#define R_SPARC_WPLT30		18	/* 30 bit PC relative PLT address */ -#define R_SPARC_COPY		19	/* Copy symbol at runtime */ -#define R_SPARC_GLOB_DAT	20	/* Create GOT entry */ -#define R_SPARC_JMP_SLOT	21	/* Create PLT entry */ -#define R_SPARC_RELATIVE	22	/* Adjust by program base */ -#define R_SPARC_UA32		23	/* Direct 32 bit unaligned */ - -/* Additional Sparc64 relocs.  */ - -#define R_SPARC_PLT32		24	/* Direct 32 bit ref to PLT entry */ -#define R_SPARC_HIPLT22		25	/* High 22 bit PLT entry */ -#define R_SPARC_LOPLT10		26	/* Truncated 10 bit PLT entry */ -#define R_SPARC_PCPLT32		27	/* PC rel 32 bit ref to PLT entry */ -#define R_SPARC_PCPLT22		28	/* PC rel high 22 bit PLT entry */ -#define R_SPARC_PCPLT10		29	/* PC rel trunc 10 bit PLT entry */ -#define R_SPARC_10		30	/* Direct 10 bit */ -#define R_SPARC_11		31	/* Direct 11 bit */ -#define R_SPARC_64		32	/* Direct 64 bit */ -#define R_SPARC_OLO10		33	/* 10bit with secondary 13bit addend */ -#define R_SPARC_HH22		34	/* Top 22 bits of direct 64 bit */ -#define R_SPARC_HM10		35	/* High middle 10 bits of ... */ -#define R_SPARC_LM22		36	/* Low middle 22 bits of ... */ -#define R_SPARC_PC_HH22		37	/* Top 22 bits of pc rel 64 bit */ -#define R_SPARC_PC_HM10		38	/* High middle 10 bit of ... */ -#define R_SPARC_PC_LM22		39	/* Low miggle 22 bits of ... */ -#define R_SPARC_WDISP16		40	/* PC relative 16 bit shifted */ -#define R_SPARC_WDISP19		41	/* PC relative 19 bit shifted */ -#define R_SPARC_7		43	/* Direct 7 bit */ -#define R_SPARC_5		44	/* Direct 5 bit */ -#define R_SPARC_6		45	/* Direct 6 bit */ -#define R_SPARC_DISP64		46	/* PC relative 64 bit */ -#define R_SPARC_PLT64		47	/* Direct 64 bit ref to PLT entry */ -#define R_SPARC_HIX22		48	/* High 22 bit complemented */ -#define R_SPARC_LOX10		49	/* Truncated 11 bit complemented */ -#define R_SPARC_H44		50	/* Direct high 12 of 44 bit */ -#define R_SPARC_M44		51	/* Direct mid 22 of 44 bit */ -#define R_SPARC_L44		52	/* Direct low 10 of 44 bit */ -#define R_SPARC_REGISTER	53	/* Global register usage */ -#define R_SPARC_UA64		54	/* Direct 64 bit unaligned */ -#define R_SPARC_UA16		55	/* Direct 16 bit unaligned */ -#define R_SPARC_TLS_GD_HI22	56 -#define R_SPARC_TLS_GD_LO10	57 -#define R_SPARC_TLS_GD_ADD	58 -#define R_SPARC_TLS_GD_CALL	59 -#define R_SPARC_TLS_LDM_HI22	60 -#define R_SPARC_TLS_LDM_LO10	61 -#define R_SPARC_TLS_LDM_ADD	62 -#define R_SPARC_TLS_LDM_CALL	63 -#define R_SPARC_TLS_LDO_HIX22	64 -#define R_SPARC_TLS_LDO_LOX10	65 -#define R_SPARC_TLS_LDO_ADD	66 -#define R_SPARC_TLS_IE_HI22	67 -#define R_SPARC_TLS_IE_LO10	68 -#define R_SPARC_TLS_IE_LD	69 -#define R_SPARC_TLS_IE_LDX	70 -#define R_SPARC_TLS_IE_ADD	71 -#define R_SPARC_TLS_LE_HIX22	72 -#define R_SPARC_TLS_LE_LOX10	73 -#define R_SPARC_TLS_DTPMOD32	74 -#define R_SPARC_TLS_DTPMOD64	75 -#define R_SPARC_TLS_DTPOFF32	76 -#define R_SPARC_TLS_DTPOFF64	77 -#define R_SPARC_TLS_TPOFF32	78 -#define R_SPARC_TLS_TPOFF64	79 -/* Keep this the last entry.  */ -#define R_SPARC_NUM		80 - -/* For Sparc64, legal values for d_tag of Elf64_Dyn.  */ - -#define DT_SPARC_REGISTER 0x70000001 -#define DT_SPARC_NUM	2 - -/* Bits present in AT_HWCAP, primarily for Sparc32.  */ - -#define HWCAP_SPARC_FLUSH	1	/* The cpu supports flush insn.  */ -#define HWCAP_SPARC_STBAR	2 -#define HWCAP_SPARC_SWAP	4 -#define HWCAP_SPARC_MULDIV	8 -#define HWCAP_SPARC_V9		16	/* The cpu is v9, so v8plus is ok.  */ -#define HWCAP_SPARC_ULTRA3	32 - -/* MIPS R3000 specific definitions.  */ - -/* Legal values for e_flags field of Elf32_Ehdr.  */ - -#define EF_MIPS_NOREORDER   1		/* A .noreorder directive was used */ -#define EF_MIPS_PIC	    2		/* Contains PIC code */ -#define EF_MIPS_CPIC	    4		/* Uses PIC calling sequence */ -#define EF_MIPS_XGOT	    8 -#define EF_MIPS_64BIT_WHIRL 16 -#define EF_MIPS_ABI2	    32 -#define EF_MIPS_ABI_ON32    64 -#define EF_MIPS_ARCH	    0xf0000000	/* MIPS architecture level */ - -/* Legal values for MIPS architecture level.  */ - -#define EF_MIPS_ARCH_1	    0x00000000	/* -mips1 code.  */ -#define EF_MIPS_ARCH_2	    0x10000000	/* -mips2 code.  */ -#define EF_MIPS_ARCH_3	    0x20000000	/* -mips3 code.  */ -#define EF_MIPS_ARCH_4	    0x30000000	/* -mips4 code.  */ -#define EF_MIPS_ARCH_5	    0x40000000	/* -mips5 code.  */ -#define EF_MIPS_ARCH_32	    0x60000000	/* MIPS32 code.  */ -#define EF_MIPS_ARCH_64	    0x70000000	/* MIPS64 code.  */ - -/* The following are non-official names and should not be used.  */ - -#define E_MIPS_ARCH_1	  0x00000000	/* -mips1 code.  */ -#define E_MIPS_ARCH_2	  0x10000000	/* -mips2 code.  */ -#define E_MIPS_ARCH_3	  0x20000000	/* -mips3 code.  */ -#define E_MIPS_ARCH_4	  0x30000000	/* -mips4 code.  */ -#define E_MIPS_ARCH_5	  0x40000000	/* -mips5 code.  */ -#define E_MIPS_ARCH_32	  0x60000000	/* MIPS32 code.  */ -#define E_MIPS_ARCH_64	  0x70000000	/* MIPS64 code.  */ - -/* Special section indices.  */ - -#define SHN_MIPS_ACOMMON    0xff00	/* Allocated common symbols */ -#define SHN_MIPS_TEXT	    0xff01	/* Allocated test symbols.  */ -#define SHN_MIPS_DATA	    0xff02	/* Allocated data symbols.  */ -#define SHN_MIPS_SCOMMON    0xff03	/* Small common symbols */ -#define SHN_MIPS_SUNDEFINED 0xff04	/* Small undefined symbols */ - -/* Legal values for sh_type field of Elf32_Shdr.  */ - -#define SHT_MIPS_LIBLIST       0x70000000 /* Shared objects used in link */ -#define SHT_MIPS_MSYM	       0x70000001 -#define SHT_MIPS_CONFLICT      0x70000002 /* Conflicting symbols */ -#define SHT_MIPS_GPTAB	       0x70000003 /* Global data area sizes */ -#define SHT_MIPS_UCODE	       0x70000004 /* Reserved for SGI/MIPS compilers */ -#define SHT_MIPS_DEBUG	       0x70000005 /* MIPS ECOFF debugging information*/ -#define SHT_MIPS_REGINFO       0x70000006 /* Register usage information */ -#define SHT_MIPS_PACKAGE       0x70000007 -#define SHT_MIPS_PACKSYM       0x70000008 -#define SHT_MIPS_RELD	       0x70000009 -#define SHT_MIPS_IFACE         0x7000000b -#define SHT_MIPS_CONTENT       0x7000000c -#define SHT_MIPS_OPTIONS       0x7000000d /* Miscellaneous options.  */ -#define SHT_MIPS_SHDR	       0x70000010 -#define SHT_MIPS_FDESC	       0x70000011 -#define SHT_MIPS_EXTSYM	       0x70000012 -#define SHT_MIPS_DENSE	       0x70000013 -#define SHT_MIPS_PDESC	       0x70000014 -#define SHT_MIPS_LOCSYM	       0x70000015 -#define SHT_MIPS_AUXSYM	       0x70000016 -#define SHT_MIPS_OPTSYM	       0x70000017 -#define SHT_MIPS_LOCSTR	       0x70000018 -#define SHT_MIPS_LINE	       0x70000019 -#define SHT_MIPS_RFDESC	       0x7000001a -#define SHT_MIPS_DELTASYM      0x7000001b -#define SHT_MIPS_DELTAINST     0x7000001c -#define SHT_MIPS_DELTACLASS    0x7000001d -#define SHT_MIPS_DWARF         0x7000001e /* DWARF debugging information.  */ -#define SHT_MIPS_DELTADECL     0x7000001f -#define SHT_MIPS_SYMBOL_LIB    0x70000020 -#define SHT_MIPS_EVENTS	       0x70000021 /* Event section.  */ -#define SHT_MIPS_TRANSLATE     0x70000022 -#define SHT_MIPS_PIXIE	       0x70000023 -#define SHT_MIPS_XLATE	       0x70000024 -#define SHT_MIPS_XLATE_DEBUG   0x70000025 -#define SHT_MIPS_WHIRL	       0x70000026 -#define SHT_MIPS_EH_REGION     0x70000027 -#define SHT_MIPS_XLATE_OLD     0x70000028 -#define SHT_MIPS_PDR_EXCEPTION 0x70000029 - -/* Legal values for sh_flags field of Elf32_Shdr.  */ - -#define SHF_MIPS_GPREL	 0x10000000	/* Must be part of global data area */ -#define SHF_MIPS_MERGE	 0x20000000 -#define SHF_MIPS_ADDR	 0x40000000 -#define SHF_MIPS_STRINGS 0x80000000 -#define SHF_MIPS_NOSTRIP 0x08000000 -#define SHF_MIPS_LOCAL	 0x04000000 -#define SHF_MIPS_NAMES	 0x02000000 -#define SHF_MIPS_NODUPE	 0x01000000 - - -/* Symbol tables.  */ - -/* MIPS specific values for `st_other'.  */ -#define STO_MIPS_DEFAULT		0x0 -#define STO_MIPS_INTERNAL		0x1 -#define STO_MIPS_HIDDEN			0x2 -#define STO_MIPS_PROTECTED		0x3 -#define STO_MIPS_SC_ALIGN_UNUSED	0xff - -/* MIPS specific values for `st_info'.  */ -#define STB_MIPS_SPLIT_COMMON		13 - -/* Entries found in sections of type SHT_MIPS_GPTAB.  */ - -typedef union -{ -  struct -    { -      Elf32_Word gt_current_g_value;	/* -G value used for compilation */ -      Elf32_Word gt_unused;		/* Not used */ -    } gt_header;			/* First entry in section */ -  struct -    { -      Elf32_Word gt_g_value;		/* If this value were used for -G */ -      Elf32_Word gt_bytes;		/* This many bytes would be used */ -    } gt_entry;				/* Subsequent entries in section */ -} Elf32_gptab; - -/* Entry found in sections of type SHT_MIPS_REGINFO.  */ - -typedef struct -{ -  Elf32_Word	ri_gprmask;		/* General registers used */ -  Elf32_Word	ri_cprmask[4];		/* Coprocessor registers used */ -  Elf32_Sword	ri_gp_value;		/* $gp register value */ -} Elf32_RegInfo; - -/* Entries found in sections of type SHT_MIPS_OPTIONS.  */ - -typedef struct -{ -  unsigned char kind;		/* Determines interpretation of the -				   variable part of descriptor.  */ -  unsigned char size;		/* Size of descriptor, including header.  */ -  Elf32_Section section;	/* Section header index of section affected, -				   0 for global options.  */ -  Elf32_Word info;		/* Kind-specific information.  */ -} Elf_Options; - -/* Values for `kind' field in Elf_Options.  */ - -#define ODK_NULL	0	/* Undefined.  */ -#define ODK_REGINFO	1	/* Register usage information.  */ -#define ODK_EXCEPTIONS	2	/* Exception processing options.  */ -#define ODK_PAD		3	/* Section padding options.  */ -#define ODK_HWPATCH	4	/* Hardware workarounds performed */ -#define ODK_FILL	5	/* record the fill value used by the linker. */ -#define ODK_TAGS	6	/* reserve space for desktop tools to write. */ -#define ODK_HWAND	7	/* HW workarounds.  'AND' bits when merging. */ -#define ODK_HWOR	8	/* HW workarounds.  'OR' bits when merging.  */ - -/* Values for `info' in Elf_Options for ODK_EXCEPTIONS entries.  */ - -#define OEX_FPU_MIN	0x1f	/* FPE's which MUST be enabled.  */ -#define OEX_FPU_MAX	0x1f00	/* FPE's which MAY be enabled.  */ -#define OEX_PAGE0	0x10000	/* page zero must be mapped.  */ -#define OEX_SMM		0x20000	/* Force sequential memory mode?  */ -#define OEX_FPDBUG	0x40000	/* Force floating point debug mode?  */ -#define OEX_PRECISEFP	OEX_FPDBUG -#define OEX_DISMISS	0x80000	/* Dismiss invalid address faults?  */ - -#define OEX_FPU_INVAL	0x10 -#define OEX_FPU_DIV0	0x08 -#define OEX_FPU_OFLO	0x04 -#define OEX_FPU_UFLO	0x02 -#define OEX_FPU_INEX	0x01 - -/* Masks for `info' in Elf_Options for an ODK_HWPATCH entry.  */ - -#define OHW_R4KEOP	0x1	/* R4000 end-of-page patch.  */ -#define OHW_R8KPFETCH	0x2	/* may need R8000 prefetch patch.  */ -#define OHW_R5KEOP	0x4	/* R5000 end-of-page patch.  */ -#define OHW_R5KCVTL	0x8	/* R5000 cvt.[ds].l bug.  clean=1.  */ - -#define OPAD_PREFIX	0x1 -#define OPAD_POSTFIX	0x2 -#define OPAD_SYMBOL	0x4 - -/* Entry found in `.options' section.  */ - -typedef struct -{ -  Elf32_Word hwp_flags1;	/* Extra flags.  */ -  Elf32_Word hwp_flags2;	/* Extra flags.  */ -} Elf_Options_Hw; - -/* Masks for `info' in ElfOptions for ODK_HWAND and ODK_HWOR entries.  */ - -#define OHWA0_R4KEOP_CHECKED	0x00000001 -#define OHWA1_R4KEOP_CLEAN	0x00000002 - -/* MIPS relocs.  */ - -#define R_MIPS_NONE		0	/* No reloc */ -#define R_MIPS_16		1	/* Direct 16 bit */ -#define R_MIPS_32		2	/* Direct 32 bit */ -#define R_MIPS_REL32		3	/* PC relative 32 bit */ -#define R_MIPS_26		4	/* Direct 26 bit shifted */ -#define R_MIPS_HI16		5	/* High 16 bit */ -#define R_MIPS_LO16		6	/* Low 16 bit */ -#define R_MIPS_GPREL16		7	/* GP relative 16 bit */ -#define R_MIPS_LITERAL		8	/* 16 bit literal entry */ -#define R_MIPS_GOT16		9	/* 16 bit GOT entry */ -#define R_MIPS_PC16		10	/* PC relative 16 bit */ -#define R_MIPS_CALL16		11	/* 16 bit GOT entry for function */ -#define R_MIPS_GPREL32		12	/* GP relative 32 bit */ - -#define R_MIPS_SHIFT5		16 -#define R_MIPS_SHIFT6		17 -#define R_MIPS_64		18 -#define R_MIPS_GOT_DISP		19 -#define R_MIPS_GOT_PAGE		20 -#define R_MIPS_GOT_OFST		21 -#define R_MIPS_GOT_HI16		22 -#define R_MIPS_GOT_LO16		23 -#define R_MIPS_SUB		24 -#define R_MIPS_INSERT_A		25 -#define R_MIPS_INSERT_B		26 -#define R_MIPS_DELETE		27 -#define R_MIPS_HIGHER		28 -#define R_MIPS_HIGHEST		29 -#define R_MIPS_CALL_HI16	30 -#define R_MIPS_CALL_LO16	31 -#define R_MIPS_SCN_DISP		32 -#define R_MIPS_REL16		33 -#define R_MIPS_ADD_IMMEDIATE	34 -#define R_MIPS_PJUMP		35 -#define R_MIPS_RELGOT		36 -#define R_MIPS_JALR		37 -/* Keep this the last entry.  */ -#define R_MIPS_NUM		38 - -/* Legal values for p_type field of Elf32_Phdr.  */ - -#define PT_MIPS_REGINFO	0x70000000	/* Register usage information */ -#define PT_MIPS_RTPROC  0x70000001	/* Runtime procedure table. */ -#define PT_MIPS_OPTIONS 0x70000002 - -/* Special program header types.  */ - -#define PF_MIPS_LOCAL	0x10000000 - -/* Legal values for d_tag field of Elf32_Dyn.  */ - -#define DT_MIPS_RLD_VERSION  0x70000001	/* Runtime linker interface version */ -#define DT_MIPS_TIME_STAMP   0x70000002	/* Timestamp */ -#define DT_MIPS_ICHECKSUM    0x70000003	/* Checksum */ -#define DT_MIPS_IVERSION     0x70000004	/* Version string (string tbl index) */ -#define DT_MIPS_FLAGS	     0x70000005	/* Flags */ -#define DT_MIPS_BASE_ADDRESS 0x70000006	/* Base address */ -#define DT_MIPS_MSYM	     0x70000007 -#define DT_MIPS_CONFLICT     0x70000008	/* Address of CONFLICT section */ -#define DT_MIPS_LIBLIST	     0x70000009	/* Address of LIBLIST section */ -#define DT_MIPS_LOCAL_GOTNO  0x7000000a	/* Number of local GOT entries */ -#define DT_MIPS_CONFLICTNO   0x7000000b	/* Number of CONFLICT entries */ -#define DT_MIPS_LIBLISTNO    0x70000010	/* Number of LIBLIST entries */ -#define DT_MIPS_SYMTABNO     0x70000011	/* Number of DYNSYM entries */ -#define DT_MIPS_UNREFEXTNO   0x70000012	/* First external DYNSYM */ -#define DT_MIPS_GOTSYM	     0x70000013	/* First GOT entry in DYNSYM */ -#define DT_MIPS_HIPAGENO     0x70000014	/* Number of GOT page table entries */ -#define DT_MIPS_RLD_MAP	     0x70000016	/* Address of run time loader map.  */ -#define DT_MIPS_DELTA_CLASS  0x70000017	/* Delta C++ class definition.  */ -#define DT_MIPS_DELTA_CLASS_NO    0x70000018 /* Number of entries in -						DT_MIPS_DELTA_CLASS.  */ -#define DT_MIPS_DELTA_INSTANCE    0x70000019 /* Delta C++ class instances.  */ -#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a /* Number of entries in -						DT_MIPS_DELTA_INSTANCE.  */ -#define DT_MIPS_DELTA_RELOC  0x7000001b /* Delta relocations.  */ -#define DT_MIPS_DELTA_RELOC_NO 0x7000001c /* Number of entries in -					     DT_MIPS_DELTA_RELOC.  */ -#define DT_MIPS_DELTA_SYM    0x7000001d /* Delta symbols that Delta -					   relocations refer to.  */ -#define DT_MIPS_DELTA_SYM_NO 0x7000001e /* Number of entries in -					   DT_MIPS_DELTA_SYM.  */ -#define DT_MIPS_DELTA_CLASSSYM 0x70000020 /* Delta symbols that hold the -					     class declaration.  */ -#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 /* Number of entries in -						DT_MIPS_DELTA_CLASSSYM.  */ -#define DT_MIPS_CXX_FLAGS    0x70000022 /* Flags indicating for C++ flavor.  */ -#define DT_MIPS_PIXIE_INIT   0x70000023 -#define DT_MIPS_SYMBOL_LIB   0x70000024 -#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 -#define DT_MIPS_LOCAL_GOTIDX 0x70000026 -#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 -#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 -#define DT_MIPS_OPTIONS	     0x70000029 /* Address of .options.  */ -#define DT_MIPS_INTERFACE    0x7000002a /* Address of .interface.  */ -#define DT_MIPS_DYNSTR_ALIGN 0x7000002b -#define DT_MIPS_INTERFACE_SIZE 0x7000002c /* Size of the .interface section. */ -#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d /* Address of rld_text_rsolve -						    function stored in GOT.  */ -#define DT_MIPS_PERF_SUFFIX  0x7000002e /* Default suffix of dso to be added -					   by rld on dlopen() calls.  */ -#define DT_MIPS_COMPACT_SIZE 0x7000002f /* (O32)Size of compact rel section. */ -#define DT_MIPS_GP_VALUE     0x70000030 /* GP value for aux GOTs.  */ -#define DT_MIPS_AUX_DYNAMIC  0x70000031 /* Address of aux .dynamic.  */ -#define DT_MIPS_NUM	     0x32 - -/* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry.  */ - -#define RHF_NONE		   0		/* No flags */ -#define RHF_QUICKSTART		   (1 << 0)	/* Use quickstart */ -#define RHF_NOTPOT		   (1 << 1)	/* Hash size not power of 2 */ -#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2)	/* Ignore LD_LIBRARY_PATH */ -#define RHF_NO_MOVE		   (1 << 3) -#define RHF_SGI_ONLY		   (1 << 4) -#define RHF_GUARANTEE_INIT	   (1 << 5) -#define RHF_DELTA_C_PLUS_PLUS	   (1 << 6) -#define RHF_GUARANTEE_START_INIT   (1 << 7) -#define RHF_PIXIE		   (1 << 8) -#define RHF_DEFAULT_DELAY_LOAD	   (1 << 9) -#define RHF_REQUICKSTART	   (1 << 10) -#define RHF_REQUICKSTARTED	   (1 << 11) -#define RHF_CORD		   (1 << 12) -#define RHF_NO_UNRES_UNDEF	   (1 << 13) -#define RHF_RLD_ORDER_SAFE	   (1 << 14) - -/* Entries found in sections of type SHT_MIPS_LIBLIST.  */ - -typedef struct -{ -  Elf32_Word l_name;		/* Name (string table index) */ -  Elf32_Word l_time_stamp;	/* Timestamp */ -  Elf32_Word l_checksum;	/* Checksum */ -  Elf32_Word l_version;		/* Interface version */ -  Elf32_Word l_flags;		/* Flags */ -} Elf32_Lib; - -typedef struct -{ -  Elf64_Word l_name;		/* Name (string table index) */ -  Elf64_Word l_time_stamp;	/* Timestamp */ -  Elf64_Word l_checksum;	/* Checksum */ -  Elf64_Word l_version;		/* Interface version */ -  Elf64_Word l_flags;		/* Flags */ -} Elf64_Lib; - - -/* Legal values for l_flags.  */ - -#define LL_NONE		  0 -#define LL_EXACT_MATCH	  (1 << 0)	/* Require exact match */ -#define LL_IGNORE_INT_VER (1 << 1)	/* Ignore interface version */ -#define LL_REQUIRE_MINOR  (1 << 2) -#define LL_EXPORTS	  (1 << 3) -#define LL_DELAY_LOAD	  (1 << 4) -#define LL_DELTA	  (1 << 5) - -/* Entries found in sections of type SHT_MIPS_CONFLICT.  */ - -typedef Elf32_Addr Elf32_Conflict; - - -/* HPPA specific definitions.  */ - -/* Legal values for e_flags field of Elf32_Ehdr.  */ - -#define EF_PARISC_TRAPNIL	0x00010000 /* Trap nil pointer dereference.  */ -#define EF_PARISC_EXT		0x00020000 /* Program uses arch. extensions. */ -#define EF_PARISC_LSB		0x00040000 /* Program expects little endian. */ -#define EF_PARISC_WIDE		0x00080000 /* Program expects wide mode.  */ -#define EF_PARISC_NO_KABP	0x00100000 /* No kernel assisted branch -					      prediction.  */ -#define EF_PARISC_LAZYSWAP	0x00400000 /* Allow lazy swapping.  */ -#define EF_PARISC_ARCH		0x0000ffff /* Architecture version.  */ - -/* Defined values for `e_flags & EF_PARISC_ARCH' are:  */ - -#define EFA_PARISC_1_0		    0x020b /* PA-RISC 1.0 big-endian.  */ -#define EFA_PARISC_1_1		    0x0210 /* PA-RISC 1.1 big-endian.  */ -#define EFA_PARISC_2_0		    0x0214 /* PA-RISC 2.0 big-endian.  */ - -/* Additional section indeces.  */ - -#define SHN_PARISC_ANSI_COMMON	0xff00	   /* Section for tenatively declared -					      symbols in ANSI C.  */ -#define SHN_PARISC_HUGE_COMMON	0xff01	   /* Common blocks in huge model.  */ - -/* Legal values for sh_type field of Elf32_Shdr.  */ - -#define SHT_PARISC_EXT		0x70000000 /* Contains product specific ext. */ -#define SHT_PARISC_UNWIND	0x70000001 /* Unwind information.  */ -#define SHT_PARISC_DOC		0x70000002 /* Debug info for optimized code. */ - -/* Legal values for sh_flags field of Elf32_Shdr.  */ - -#define SHF_PARISC_SHORT	0x20000000 /* Section with short addressing. */ -#define SHF_PARISC_HUGE		0x40000000 /* Section far from gp.  */ -#define SHF_PARISC_SBP		0x80000000 /* Static branch prediction code. */ - -/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ - -#define STT_PARISC_MILLICODE	13	/* Millicode function entry point.  */ - -#define STT_HP_OPAQUE		(STT_LOOS + 0x1) -#define STT_HP_STUB		(STT_LOOS + 0x2) - -/* HPPA relocs.  */ - -#define R_PARISC_NONE		0	/* No reloc.  */ -#define R_PARISC_DIR32		1	/* Direct 32-bit reference.  */ -#define R_PARISC_DIR21L		2	/* Left 21 bits of eff. address.  */ -#define R_PARISC_DIR17R		3	/* Right 17 bits of eff. address.  */ -#define R_PARISC_DIR17F		4	/* 17 bits of eff. address.  */ -#define R_PARISC_DIR14R		6	/* Right 14 bits of eff. address.  */ -#define R_PARISC_PCREL32	9	/* 32-bit rel. address.  */ -#define R_PARISC_PCREL21L	10	/* Left 21 bits of rel. address.  */ -#define R_PARISC_PCREL17R	11	/* Right 17 bits of rel. address.  */ -#define R_PARISC_PCREL17F	12	/* 17 bits of rel. address.  */ -#define R_PARISC_PCREL14R	14	/* Right 14 bits of rel. address.  */ -#define R_PARISC_DPREL21L	18	/* Left 21 bits of rel. address.  */ -#define R_PARISC_DPREL14R	22	/* Right 14 bits of rel. address.  */ -#define R_PARISC_GPREL21L	26	/* GP-relative, left 21 bits.  */ -#define R_PARISC_GPREL14R	30	/* GP-relative, right 14 bits.  */ -#define R_PARISC_LTOFF21L	34	/* LT-relative, left 21 bits.  */ -#define R_PARISC_LTOFF14R	38	/* LT-relative, right 14 bits.  */ -#define R_PARISC_SECREL32	41	/* 32 bits section rel. address.  */ -#define R_PARISC_SEGBASE	48	/* No relocation, set segment base.  */ -#define R_PARISC_SEGREL32	49	/* 32 bits segment rel. address.  */ -#define R_PARISC_PLTOFF21L	50	/* PLT rel. address, left 21 bits.  */ -#define R_PARISC_PLTOFF14R	54	/* PLT rel. address, right 14 bits.  */ -#define R_PARISC_LTOFF_FPTR32	57	/* 32 bits LT-rel. function pointer. */ -#define R_PARISC_LTOFF_FPTR21L	58	/* LT-rel. fct ptr, left 21 bits. */ -#define R_PARISC_LTOFF_FPTR14R	62	/* LT-rel. fct ptr, right 14 bits. */ -#define R_PARISC_FPTR64		64	/* 64 bits function address.  */ -#define R_PARISC_PLABEL32	65	/* 32 bits function address.  */ -#define R_PARISC_PLABEL21L	66	/* Left 21 bits of fct ptr.  */ -#define R_PARISC_PLABEL14R	70	/* Left 21 bits of fct ptr.  */ -#define R_PARISC_PCREL64	72	/* 64 bits PC-rel. address.  */ -#define R_PARISC_PCREL22F	74	/* 22 bits PC-rel. address.  */ -#define R_PARISC_PCREL14WR	75	/* PC-rel. address, right 14 bits.  */ -#define R_PARISC_PCREL14DR	76	/* PC rel. address, right 14 bits.  */ -#define R_PARISC_PCREL16F	77	/* 16 bits PC-rel. address.  */ -#define R_PARISC_PCREL16WF	78	/* 16 bits PC-rel. address.  */ -#define R_PARISC_PCREL16DF	79	/* 16 bits PC-rel. address.  */ -#define R_PARISC_DIR64		80	/* 64 bits of eff. address.  */ -#define R_PARISC_DIR14WR	83	/* 14 bits of eff. address.  */ -#define R_PARISC_DIR14DR	84	/* 14 bits of eff. address.  */ -#define R_PARISC_DIR16F		85	/* 16 bits of eff. address.  */ -#define R_PARISC_DIR16WF	86	/* 16 bits of eff. address.  */ -#define R_PARISC_DIR16DF	87	/* 16 bits of eff. address.  */ -#define R_PARISC_GPREL64	88	/* 64 bits of GP-rel. address.  */ -#define R_PARISC_GPREL14WR	91	/* GP-rel. address, right 14 bits.  */ -#define R_PARISC_GPREL14DR	92	/* GP-rel. address, right 14 bits.  */ -#define R_PARISC_GPREL16F	93	/* 16 bits GP-rel. address.  */ -#define R_PARISC_GPREL16WF	94	/* 16 bits GP-rel. address.  */ -#define R_PARISC_GPREL16DF	95	/* 16 bits GP-rel. address.  */ -#define R_PARISC_LTOFF64	96	/* 64 bits LT-rel. address.  */ -#define R_PARISC_LTOFF14WR	99	/* LT-rel. address, right 14 bits.  */ -#define R_PARISC_LTOFF14DR	100	/* LT-rel. address, right 14 bits.  */ -#define R_PARISC_LTOFF16F	101	/* 16 bits LT-rel. address.  */ -#define R_PARISC_LTOFF16WF	102	/* 16 bits LT-rel. address.  */ -#define R_PARISC_LTOFF16DF	103	/* 16 bits LT-rel. address.  */ -#define R_PARISC_SECREL64	104	/* 64 bits section rel. address.  */ -#define R_PARISC_SEGREL64	112	/* 64 bits segment rel. address.  */ -#define R_PARISC_PLTOFF14WR	115	/* PLT-rel. address, right 14 bits.  */ -#define R_PARISC_PLTOFF14DR	116	/* PLT-rel. address, right 14 bits.  */ -#define R_PARISC_PLTOFF16F	117	/* 16 bits LT-rel. address.  */ -#define R_PARISC_PLTOFF16WF	118	/* 16 bits PLT-rel. address.  */ -#define R_PARISC_PLTOFF16DF	119	/* 16 bits PLT-rel. address.  */ -#define R_PARISC_LTOFF_FPTR64	120	/* 64 bits LT-rel. function ptr.  */ -#define R_PARISC_LTOFF_FPTR14WR	123	/* LT-rel. fct. ptr., right 14 bits. */ -#define R_PARISC_LTOFF_FPTR14DR	124	/* LT-rel. fct. ptr., right 14 bits. */ -#define R_PARISC_LTOFF_FPTR16F	125	/* 16 bits LT-rel. function ptr.  */ -#define R_PARISC_LTOFF_FPTR16WF	126	/* 16 bits LT-rel. function ptr.  */ -#define R_PARISC_LTOFF_FPTR16DF	127	/* 16 bits LT-rel. function ptr.  */ -#define R_PARISC_LORESERVE	128 -#define R_PARISC_COPY		128	/* Copy relocation.  */ -#define R_PARISC_IPLT		129	/* Dynamic reloc, imported PLT */ -#define R_PARISC_EPLT		130	/* Dynamic reloc, exported PLT */ -#define R_PARISC_TPREL32	153	/* 32 bits TP-rel. address.  */ -#define R_PARISC_TPREL21L	154	/* TP-rel. address, left 21 bits.  */ -#define R_PARISC_TPREL14R	158	/* TP-rel. address, right 14 bits.  */ -#define R_PARISC_LTOFF_TP21L	162	/* LT-TP-rel. address, left 21 bits. */ -#define R_PARISC_LTOFF_TP14R	166	/* LT-TP-rel. address, right 14 bits.*/ -#define R_PARISC_LTOFF_TP14F	167	/* 14 bits LT-TP-rel. address.  */ -#define R_PARISC_TPREL64	216	/* 64 bits TP-rel. address.  */ -#define R_PARISC_TPREL14WR	219	/* TP-rel. address, right 14 bits.  */ -#define R_PARISC_TPREL14DR	220	/* TP-rel. address, right 14 bits.  */ -#define R_PARISC_TPREL16F	221	/* 16 bits TP-rel. address.  */ -#define R_PARISC_TPREL16WF	222	/* 16 bits TP-rel. address.  */ -#define R_PARISC_TPREL16DF	223	/* 16 bits TP-rel. address.  */ -#define R_PARISC_LTOFF_TP64	224	/* 64 bits LT-TP-rel. address.  */ -#define R_PARISC_LTOFF_TP14WR	227	/* LT-TP-rel. address, right 14 bits.*/ -#define R_PARISC_LTOFF_TP14DR	228	/* LT-TP-rel. address, right 14 bits.*/ -#define R_PARISC_LTOFF_TP16F	229	/* 16 bits LT-TP-rel. address.  */ -#define R_PARISC_LTOFF_TP16WF	230	/* 16 bits LT-TP-rel. address.  */ -#define R_PARISC_LTOFF_TP16DF	231	/* 16 bits LT-TP-rel. address.  */ -#define R_PARISC_HIRESERVE	255 - -/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr.  */ - -#define PT_HP_TLS		(PT_LOOS + 0x0) -#define PT_HP_CORE_NONE		(PT_LOOS + 0x1) -#define PT_HP_CORE_VERSION	(PT_LOOS + 0x2) -#define PT_HP_CORE_KERNEL	(PT_LOOS + 0x3) -#define PT_HP_CORE_COMM		(PT_LOOS + 0x4) -#define PT_HP_CORE_PROC		(PT_LOOS + 0x5) -#define PT_HP_CORE_LOADABLE	(PT_LOOS + 0x6) -#define PT_HP_CORE_STACK	(PT_LOOS + 0x7) -#define PT_HP_CORE_SHM		(PT_LOOS + 0x8) -#define PT_HP_CORE_MMF		(PT_LOOS + 0x9) -#define PT_HP_PARALLEL		(PT_LOOS + 0x10) -#define PT_HP_FASTBIND		(PT_LOOS + 0x11) -#define PT_HP_OPT_ANNOT		(PT_LOOS + 0x12) -#define PT_HP_HSL_ANNOT		(PT_LOOS + 0x13) -#define PT_HP_STACK		(PT_LOOS + 0x14) - -#define PT_PARISC_ARCHEXT	0x70000000 -#define PT_PARISC_UNWIND	0x70000001 - -/* Legal values for p_flags field of Elf32_Phdr/Elf64_Phdr.  */ - -#define PF_PARISC_SBP		0x08000000 - -#define PF_HP_PAGE_SIZE		0x00100000 -#define PF_HP_FAR_SHARED	0x00200000 -#define PF_HP_NEAR_SHARED	0x00400000 -#define PF_HP_CODE		0x01000000 -#define PF_HP_MODIFY		0x02000000 -#define PF_HP_LAZYSWAP		0x04000000 -#define PF_HP_SBP		0x08000000 - - -/* Alpha specific definitions.  */ - -/* Legal values for e_flags field of Elf64_Ehdr.  */ - -#define EF_ALPHA_32BIT		1	/* All addresses must be < 2GB.  */ -#define EF_ALPHA_CANRELAX	2	/* Relocations for relaxing exist.  */ - -/* Legal values for sh_type field of Elf64_Shdr.  */ - -/* These two are primerily concerned with ECOFF debugging info.  */ -#define SHT_ALPHA_DEBUG		0x70000001 -#define SHT_ALPHA_REGINFO	0x70000002 - -/* Legal values for sh_flags field of Elf64_Shdr.  */ - -#define SHF_ALPHA_GPREL		0x10000000 - -/* Legal values for st_other field of Elf64_Sym.  */ -#define STO_ALPHA_NOPV		0x80	/* No PV required.  */ -#define STO_ALPHA_STD_GPLOAD	0x88	/* PV only used for initial ldgp.  */ - -/* Alpha relocs.  */ - -#define R_ALPHA_NONE		0	/* No reloc */ -#define R_ALPHA_REFLONG		1	/* Direct 32 bit */ -#define R_ALPHA_REFQUAD		2	/* Direct 64 bit */ -#define R_ALPHA_GPREL32		3	/* GP relative 32 bit */ -#define R_ALPHA_LITERAL		4	/* GP relative 16 bit w/optimization */ -#define R_ALPHA_LITUSE		5	/* Optimization hint for LITERAL */ -#define R_ALPHA_GPDISP		6	/* Add displacement to GP */ -#define R_ALPHA_BRADDR		7	/* PC+4 relative 23 bit shifted */ -#define R_ALPHA_HINT		8	/* PC+4 relative 16 bit shifted */ -#define R_ALPHA_SREL16		9	/* PC relative 16 bit */ -#define R_ALPHA_SREL32		10	/* PC relative 32 bit */ -#define R_ALPHA_SREL64		11	/* PC relative 64 bit */ -#define R_ALPHA_GPRELHIGH	17	/* GP relative 32 bit, high 16 bits */ -#define R_ALPHA_GPRELLOW	18	/* GP relative 32 bit, low 16 bits */ -#define R_ALPHA_GPREL16		19	/* GP relative 16 bit */ -#define R_ALPHA_COPY		24	/* Copy symbol at runtime */ -#define R_ALPHA_GLOB_DAT	25	/* Create GOT entry */ -#define R_ALPHA_JMP_SLOT	26	/* Create PLT entry */ -#define R_ALPHA_RELATIVE	27	/* Adjust by program base */ -#define R_ALPHA_TLS_GD_HI	28 -#define R_ALPHA_TLSGD		29 -#define R_ALPHA_TLS_LDM		30 -#define R_ALPHA_DTPMOD64	31 -#define R_ALPHA_GOTDTPREL	32 -#define R_ALPHA_DTPREL64	33 -#define R_ALPHA_DTPRELHI	34 -#define R_ALPHA_DTPRELLO	35 -#define R_ALPHA_DTPREL16	36 -#define R_ALPHA_GOTTPREL	37 -#define R_ALPHA_TPREL64		38 -#define R_ALPHA_TPRELHI		39 -#define R_ALPHA_TPRELLO		40 -#define R_ALPHA_TPREL16		41 -/* Keep this the last entry.  */ -#define R_ALPHA_NUM		46 - -/* Magic values of the LITUSE relocation addend.  */ -#define LITUSE_ALPHA_ADDR	0 -#define LITUSE_ALPHA_BASE	1 -#define LITUSE_ALPHA_BYTOFF	2 -#define LITUSE_ALPHA_JSR	3 -#define LITUSE_ALPHA_TLS_GD	4 -#define LITUSE_ALPHA_TLS_LDM	5 - - -/* PowerPC specific declarations */ - -/* Values for Elf32/64_Ehdr.e_flags.  */ -#define EF_PPC_EMB		0x80000000	/* PowerPC embedded flag */ - -/* Cygnus local bits below */ -#define EF_PPC_RELOCATABLE	0x00010000	/* PowerPC -mrelocatable flag*/ -#define EF_PPC_RELOCATABLE_LIB	0x00008000	/* PowerPC -mrelocatable-lib -						   flag */ - -/* PowerPC relocations defined by the ABIs */ -#define R_PPC_NONE		0 -#define R_PPC_ADDR32		1	/* 32bit absolute address */ -#define R_PPC_ADDR24		2	/* 26bit address, 2 bits ignored.  */ -#define R_PPC_ADDR16		3	/* 16bit absolute address */ -#define R_PPC_ADDR16_LO		4	/* lower 16bit of absolute address */ -#define R_PPC_ADDR16_HI		5	/* high 16bit of absolute address */ -#define R_PPC_ADDR16_HA		6	/* adjusted high 16bit */ -#define R_PPC_ADDR14		7	/* 16bit address, 2 bits ignored */ -#define R_PPC_ADDR14_BRTAKEN	8 -#define R_PPC_ADDR14_BRNTAKEN	9 -#define R_PPC_REL24		10	/* PC relative 26 bit */ -#define R_PPC_REL14		11	/* PC relative 16 bit */ -#define R_PPC_REL14_BRTAKEN	12 -#define R_PPC_REL14_BRNTAKEN	13 -#define R_PPC_GOT16		14 -#define R_PPC_GOT16_LO		15 -#define R_PPC_GOT16_HI		16 -#define R_PPC_GOT16_HA		17 -#define R_PPC_PLTREL24		18 -#define R_PPC_COPY		19 -#define R_PPC_GLOB_DAT		20 -#define R_PPC_JMP_SLOT		21 -#define R_PPC_RELATIVE		22 -#define R_PPC_LOCAL24PC		23 -#define R_PPC_UADDR32		24 -#define R_PPC_UADDR16		25 -#define R_PPC_REL32		26 -#define R_PPC_PLT32		27 -#define R_PPC_PLTREL32		28 -#define R_PPC_PLT16_LO		29 -#define R_PPC_PLT16_HI		30 -#define R_PPC_PLT16_HA		31 -#define R_PPC_SDAREL16		32 -#define R_PPC_SECTOFF		33 -#define R_PPC_SECTOFF_LO	34 -#define R_PPC_SECTOFF_HI	35 -#define R_PPC_SECTOFF_HA	36 - -/* PowerPC relocations defined for the TLS access ABI.  */ -#define R_PPC_TLS		67 /* none	(sym+add)@tls */ -#define R_PPC_DTPMOD32		68 /* word32	(sym+add)@dtpmod */ -#define R_PPC_TPREL16		69 /* half16*	(sym+add)@tprel */ -#define R_PPC_TPREL16_LO	70 /* half16	(sym+add)@tprel@l */ -#define R_PPC_TPREL16_HI	71 /* half16	(sym+add)@tprel@h */ -#define R_PPC_TPREL16_HA	72 /* half16	(sym+add)@tprel@ha */ -#define R_PPC_TPREL32		73 /* word32	(sym+add)@tprel */ -#define R_PPC_DTPREL16		74 /* half16*	(sym+add)@dtprel */ -#define R_PPC_DTPREL16_LO	75 /* half16	(sym+add)@dtprel@l */ -#define R_PPC_DTPREL16_HI	76 /* half16	(sym+add)@dtprel@h */ -#define R_PPC_DTPREL16_HA	77 /* half16	(sym+add)@dtprel@ha */ -#define R_PPC_DTPREL32		78 /* word32	(sym+add)@dtprel */ -#define R_PPC_GOT_TLSGD16	79 /* half16*	(sym+add)@got@tlsgd */ -#define R_PPC_GOT_TLSGD16_LO	80 /* half16	(sym+add)@got@tlsgd@l */ -#define R_PPC_GOT_TLSGD16_HI	81 /* half16	(sym+add)@got@tlsgd@h */ -#define R_PPC_GOT_TLSGD16_HA	82 /* half16	(sym+add)@got@tlsgd@ha */ -#define R_PPC_GOT_TLSLD16	83 /* half16*	(sym+add)@got@tlsld */ -#define R_PPC_GOT_TLSLD16_LO	84 /* half16	(sym+add)@got@tlsld@l */ -#define R_PPC_GOT_TLSLD16_HI	85 /* half16	(sym+add)@got@tlsld@h */ -#define R_PPC_GOT_TLSLD16_HA	86 /* half16	(sym+add)@got@tlsld@ha */ -#define R_PPC_GOT_TPREL16	87 /* half16*	(sym+add)@got@tprel */ -#define R_PPC_GOT_TPREL16_LO	88 /* half16	(sym+add)@got@tprel@l */ -#define R_PPC_GOT_TPREL16_HI	89 /* half16	(sym+add)@got@tprel@h */ -#define R_PPC_GOT_TPREL16_HA	90 /* half16	(sym+add)@got@tprel@ha */ -#define R_PPC_GOT_DTPREL16	91 /* half16*	(sym+add)@got@dtprel */ -#define R_PPC_GOT_DTPREL16_LO	92 /* half16*	(sym+add)@got@dtprel@l */ -#define R_PPC_GOT_DTPREL16_HI	93 /* half16*	(sym+add)@got@dtprel@h */ -#define R_PPC_GOT_DTPREL16_HA	94 /* half16*	(sym+add)@got@dtprel@ha */ - -/* Keep this the last entry.  */ -#define R_PPC_NUM		95 - -/* The remaining relocs are from the Embedded ELF ABI, and are not -   in the SVR4 ELF ABI.  */ -#define R_PPC_EMB_NADDR32	101 -#define R_PPC_EMB_NADDR16	102 -#define R_PPC_EMB_NADDR16_LO	103 -#define R_PPC_EMB_NADDR16_HI	104 -#define R_PPC_EMB_NADDR16_HA	105 -#define R_PPC_EMB_SDAI16	106 -#define R_PPC_EMB_SDA2I16	107 -#define R_PPC_EMB_SDA2REL	108 -#define R_PPC_EMB_SDA21		109	/* 16 bit offset in SDA */ -#define R_PPC_EMB_MRKREF	110 -#define R_PPC_EMB_RELSEC16	111 -#define R_PPC_EMB_RELST_LO	112 -#define R_PPC_EMB_RELST_HI	113 -#define R_PPC_EMB_RELST_HA	114 -#define R_PPC_EMB_BIT_FLD	115 -#define R_PPC_EMB_RELSDA	116	/* 16 bit relative offset in SDA */ - -/* Diab tool relocations.  */ -#define R_PPC_DIAB_SDA21_LO	180	/* like EMB_SDA21, but lower 16 bit */ -#define R_PPC_DIAB_SDA21_HI	181	/* like EMB_SDA21, but high 16 bit */ -#define R_PPC_DIAB_SDA21_HA	182	/* like EMB_SDA21, adjusted high 16 */ -#define R_PPC_DIAB_RELSDA_LO	183	/* like EMB_RELSDA, but lower 16 bit */ -#define R_PPC_DIAB_RELSDA_HI	184	/* like EMB_RELSDA, but high 16 bit */ -#define R_PPC_DIAB_RELSDA_HA	185	/* like EMB_RELSDA, adjusted high 16 */ - -/* This is a phony reloc to handle any old fashioned TOC16 references -   that may still be in object files.  */ -#define R_PPC_TOC16		255 - - -/* PowerPC64 relocations defined by the ABIs */ -#define R_PPC64_NONE		R_PPC_NONE -#define R_PPC64_ADDR32		R_PPC_ADDR32 /* 32bit absolute address */ -#define R_PPC64_ADDR24		R_PPC_ADDR24 /* 26bit address, word aligned */ -#define R_PPC64_ADDR16		R_PPC_ADDR16 /* 16bit absolute address */ -#define R_PPC64_ADDR16_LO	R_PPC_ADDR16_LO	/* lower 16bits of address */ -#define R_PPC64_ADDR16_HI	R_PPC_ADDR16_HI	/* high 16bits of address. */ -#define R_PPC64_ADDR16_HA	R_PPC_ADDR16_HA /* adjusted high 16bits.  */ -#define R_PPC64_ADDR14		R_PPC_ADDR14 /* 16bit address, word aligned */ -#define R_PPC64_ADDR14_BRTAKEN	R_PPC_ADDR14_BRTAKEN -#define R_PPC64_ADDR14_BRNTAKEN	R_PPC_ADDR14_BRNTAKEN -#define R_PPC64_REL24		R_PPC_REL24 /* PC-rel. 26 bit, word aligned */ -#define R_PPC64_REL14		R_PPC_REL14 /* PC relative 16 bit */ -#define R_PPC64_REL14_BRTAKEN	R_PPC_REL14_BRTAKEN -#define R_PPC64_REL14_BRNTAKEN	R_PPC_REL14_BRNTAKEN -#define R_PPC64_GOT16		R_PPC_GOT16 -#define R_PPC64_GOT16_LO	R_PPC_GOT16_LO -#define R_PPC64_GOT16_HI	R_PPC_GOT16_HI -#define R_PPC64_GOT16_HA	R_PPC_GOT16_HA - -#define R_PPC64_COPY		R_PPC_COPY -#define R_PPC64_GLOB_DAT	R_PPC_GLOB_DAT -#define R_PPC64_JMP_SLOT	R_PPC_JMP_SLOT -#define R_PPC64_RELATIVE	R_PPC_RELATIVE - -#define R_PPC64_UADDR32		R_PPC_UADDR32 -#define R_PPC64_UADDR16		R_PPC_UADDR16 -#define R_PPC64_REL32		R_PPC_REL32 -#define R_PPC64_PLT32		R_PPC_PLT32 -#define R_PPC64_PLTREL32	R_PPC_PLTREL32 -#define R_PPC64_PLT16_LO	R_PPC_PLT16_LO -#define R_PPC64_PLT16_HI	R_PPC_PLT16_HI -#define R_PPC64_PLT16_HA	R_PPC_PLT16_HA - -#define R_PPC64_SECTOFF		R_PPC_SECTOFF -#define R_PPC64_SECTOFF_LO	R_PPC_SECTOFF_LO -#define R_PPC64_SECTOFF_HI	R_PPC_SECTOFF_HI -#define R_PPC64_SECTOFF_HA	R_PPC_SECTOFF_HA -#define R_PPC64_ADDR30		37 /* word30 (S + A - P) >> 2 */ -#define R_PPC64_ADDR64		38 /* doubleword64 S + A */ -#define R_PPC64_ADDR16_HIGHER	39 /* half16 #higher(S + A) */ -#define R_PPC64_ADDR16_HIGHERA	40 /* half16 #highera(S + A) */ -#define R_PPC64_ADDR16_HIGHEST	41 /* half16 #highest(S + A) */ -#define R_PPC64_ADDR16_HIGHESTA	42 /* half16 #highesta(S + A) */ -#define R_PPC64_UADDR64		43 /* doubleword64 S + A */ -#define R_PPC64_REL64		44 /* doubleword64 S + A - P */ -#define R_PPC64_PLT64		45 /* doubleword64 L + A */ -#define R_PPC64_PLTREL64	46 /* doubleword64 L + A - P */ -#define R_PPC64_TOC16		47 /* half16* S + A - .TOC */ -#define R_PPC64_TOC16_LO	48 /* half16 #lo(S + A - .TOC.) */ -#define R_PPC64_TOC16_HI	49 /* half16 #hi(S + A - .TOC.) */ -#define R_PPC64_TOC16_HA	50 /* half16 #ha(S + A - .TOC.) */ -#define R_PPC64_TOC		51 /* doubleword64 .TOC */ -#define R_PPC64_PLTGOT16	52 /* half16* M + A */ -#define R_PPC64_PLTGOT16_LO	53 /* half16 #lo(M + A) */ -#define R_PPC64_PLTGOT16_HI	54 /* half16 #hi(M + A) */ -#define R_PPC64_PLTGOT16_HA	55 /* half16 #ha(M + A) */ - -#define R_PPC64_ADDR16_DS	56 /* half16ds* (S + A) >> 2 */ -#define R_PPC64_ADDR16_LO_DS	57 /* half16ds  #lo(S + A) >> 2 */ -#define R_PPC64_GOT16_DS	58 /* half16ds* (G + A) >> 2 */ -#define R_PPC64_GOT16_LO_DS	59 /* half16ds  #lo(G + A) >> 2 */ -#define R_PPC64_PLT16_LO_DS	60 /* half16ds  #lo(L + A) >> 2 */ -#define R_PPC64_SECTOFF_DS	61 /* half16ds* (R + A) >> 2 */ -#define R_PPC64_SECTOFF_LO_DS	62 /* half16ds  #lo(R + A) >> 2 */ -#define R_PPC64_TOC16_DS	63 /* half16ds* (S + A - .TOC.) >> 2 */ -#define R_PPC64_TOC16_LO_DS	64 /* half16ds  #lo(S + A - .TOC.) >> 2 */ -#define R_PPC64_PLTGOT16_DS	65 /* half16ds* (M + A) >> 2 */ -#define R_PPC64_PLTGOT16_LO_DS	66 /* half16ds  #lo(M + A) >> 2 */ - -/* PowerPC64 relocations defined for the TLS access ABI.  */ -#define R_PPC64_TLS		67 /* none	(sym+add)@tls */ -#define R_PPC64_DTPMOD64	68 /* doubleword64 (sym+add)@dtpmod */ -#define R_PPC64_TPREL16		69 /* half16*	(sym+add)@tprel */ -#define R_PPC64_TPREL16_LO	70 /* half16	(sym+add)@tprel@l */ -#define R_PPC64_TPREL16_HI	71 /* half16	(sym+add)@tprel@h */ -#define R_PPC64_TPREL16_HA	72 /* half16	(sym+add)@tprel@ha */ -#define R_PPC64_TPREL64		73 /* doubleword64 (sym+add)@tprel */ -#define R_PPC64_DTPREL16	74 /* half16*	(sym+add)@dtprel */ -#define R_PPC64_DTPREL16_LO	75 /* half16	(sym+add)@dtprel@l */ -#define R_PPC64_DTPREL16_HI	76 /* half16	(sym+add)@dtprel@h */ -#define R_PPC64_DTPREL16_HA	77 /* half16	(sym+add)@dtprel@ha */ -#define R_PPC64_DTPREL64	78 /* doubleword64 (sym+add)@dtprel */ -#define R_PPC64_GOT_TLSGD16	79 /* half16*	(sym+add)@got@tlsgd */ -#define R_PPC64_GOT_TLSGD16_LO	80 /* half16	(sym+add)@got@tlsgd@l */ -#define R_PPC64_GOT_TLSGD16_HI	81 /* half16	(sym+add)@got@tlsgd@h */ -#define R_PPC64_GOT_TLSGD16_HA	82 /* half16	(sym+add)@got@tlsgd@ha */ -#define R_PPC64_GOT_TLSLD16	83 /* half16*	(sym+add)@got@tlsld */ -#define R_PPC64_GOT_TLSLD16_LO	84 /* half16	(sym+add)@got@tlsld@l */ -#define R_PPC64_GOT_TLSLD16_HI	85 /* half16	(sym+add)@got@tlsld@h */ -#define R_PPC64_GOT_TLSLD16_HA	86 /* half16	(sym+add)@got@tlsld@ha */ -#define R_PPC64_GOT_TPREL16_DS	87 /* half16ds*	(sym+add)@got@tprel */ -#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l */ -#define R_PPC64_GOT_TPREL16_HI	89 /* half16	(sym+add)@got@tprel@h */ -#define R_PPC64_GOT_TPREL16_HA	90 /* half16	(sym+add)@got@tprel@ha */ -#define R_PPC64_GOT_DTPREL16_DS	91 /* half16ds*	(sym+add)@got@dtprel */ -#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l */ -#define R_PPC64_GOT_DTPREL16_HI	93 /* half16	(sym+add)@got@dtprel@h */ -#define R_PPC64_GOT_DTPREL16_HA	94 /* half16	(sym+add)@got@dtprel@ha */ -#define R_PPC64_TPREL16_DS	95 /* half16ds*	(sym+add)@tprel */ -#define R_PPC64_TPREL16_LO_DS	96 /* half16ds	(sym+add)@tprel@l */ -#define R_PPC64_TPREL16_HIGHER	97 /* half16	(sym+add)@tprel@higher */ -#define R_PPC64_TPREL16_HIGHERA	98 /* half16	(sym+add)@tprel@highera */ -#define R_PPC64_TPREL16_HIGHEST	99 /* half16	(sym+add)@tprel@highest */ -#define R_PPC64_TPREL16_HIGHESTA 100 /* half16	(sym+add)@tprel@highesta */ -#define R_PPC64_DTPREL16_DS	101 /* half16ds* (sym+add)@dtprel */ -#define R_PPC64_DTPREL16_LO_DS	102 /* half16ds	(sym+add)@dtprel@l */ -#define R_PPC64_DTPREL16_HIGHER	103 /* half16	(sym+add)@dtprel@higher */ -#define R_PPC64_DTPREL16_HIGHERA 104 /* half16	(sym+add)@dtprel@highera */ -#define R_PPC64_DTPREL16_HIGHEST 105 /* half16	(sym+add)@dtprel@highest */ -#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16	(sym+add)@dtprel@highesta */ - -/* Keep this the last entry.  */ -#define R_PPC64_NUM		107 - -/* PowerPC64 specific values for the Dyn d_tag field.  */ -#define DT_PPC64_GLINK  (DT_LOPROC + 0) -#define DT_PPC64_OPD	(DT_LOPROC + 1) -#define DT_PPC64_OPDSZ	(DT_LOPROC + 2) -#define DT_PPC64_NUM    3 - - -/* ARM specific declarations */ - -/* Processor specific flags for the ELF header e_flags field.  */ -#define EF_ARM_RELEXEC     0x01 -#define EF_ARM_HASENTRY    0x02 -#define EF_ARM_INTERWORK   0x04 -#define EF_ARM_APCS_26     0x08 -#define EF_ARM_APCS_FLOAT  0x10 -#define EF_ARM_PIC         0x20 -#define EF_ARM_ALIGN8      0x40		/* 8-bit structure alignment is in use */ -#define EF_ARM_NEW_ABI     0x80 -#define EF_ARM_OLD_ABI     0x100 - -/* Other constants defined in the ARM ELF spec. version B-01.  */ -/* NB. These conflict with values defined above.  */ -#define EF_ARM_SYMSARESORTED	0x04 -#define EF_ARM_DYNSYMSUSESEGIDX 0x08 -#define EF_ARM_MAPSYMSFIRST	0x10 -#define EF_ARM_EABIMASK		0XFF000000 - -#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) -#define EF_ARM_EABI_UNKNOWN  0x00000000 -#define EF_ARM_EABI_VER1     0x01000000 -#define EF_ARM_EABI_VER2     0x02000000 - -/* Additional symbol types for Thumb */ -#define STT_ARM_TFUNC      0xd - -/* ARM-specific values for sh_flags */ -#define SHF_ARM_ENTRYSECT  0x10000000   /* Section contains an entry point */ -#define SHF_ARM_COMDEF     0x80000000   /* Section may be multiply defined -					   in the input to a link step */ - -/* ARM-specific program header flags */ -#define PF_ARM_SB          0x10000000   /* Segment contains the location -					   addressed by the static base */ - -/* ARM relocs.  */ -#define R_ARM_NONE		0	/* No reloc */ -#define R_ARM_PC24		1	/* PC relative 26 bit branch */ -#define R_ARM_ABS32		2	/* Direct 32 bit  */ -#define R_ARM_REL32		3	/* PC relative 32 bit */ -#define R_ARM_PC13		4 -#define R_ARM_ABS16		5	/* Direct 16 bit */ -#define R_ARM_ABS12		6	/* Direct 12 bit */ -#define R_ARM_THM_ABS5		7 -#define R_ARM_ABS8		8	/* Direct 8 bit */ -#define R_ARM_SBREL32		9 -#define R_ARM_THM_PC22		10 -#define R_ARM_THM_PC8		11 -#define R_ARM_AMP_VCALL9	12 -#define R_ARM_SWI24		13 -#define R_ARM_THM_SWI8		14 -#define R_ARM_XPC25		15 -#define R_ARM_THM_XPC22		16 -#define R_ARM_COPY		20	/* Copy symbol at runtime */ -#define R_ARM_GLOB_DAT		21	/* Create GOT entry */ -#define R_ARM_JUMP_SLOT		22	/* Create PLT entry */ -#define R_ARM_RELATIVE		23	/* Adjust by program base */ -#define R_ARM_GOTOFF		24	/* 32 bit offset to GOT */ -#define R_ARM_GOTPC		25	/* 32 bit PC relative offset to GOT */ -#define R_ARM_GOT32		26	/* 32 bit GOT entry */ -#define R_ARM_PLT32		27	/* 32 bit PLT address */ -#define R_ARM_ALU_PCREL_7_0	32 -#define R_ARM_ALU_PCREL_15_8	33 -#define R_ARM_ALU_PCREL_23_15	34 -#define R_ARM_LDR_SBREL_11_0	35 -#define R_ARM_ALU_SBREL_19_12	36 -#define R_ARM_ALU_SBREL_27_20	37 -#define R_ARM_GNU_VTENTRY	100 -#define R_ARM_GNU_VTINHERIT	101 -#define R_ARM_THM_PC11		102	/* thumb unconditional branch */ -#define R_ARM_THM_PC9		103	/* thumb conditional branch */ -#define R_ARM_RXPC25		249 -#define R_ARM_RSBREL32		250 -#define R_ARM_THM_RPC22		251 -#define R_ARM_RREL32		252 -#define R_ARM_RABS22		253 -#define R_ARM_RPC24		254 -#define R_ARM_RBASE		255 -/* Keep this the last entry.  */ -#define R_ARM_NUM		256 - -/* IA-64 specific declarations.  */ - -/* Processor specific flags for the Ehdr e_flags field.  */ -#define EF_IA_64_MASKOS		0x0000000f	/* os-specific flags */ -#define EF_IA_64_ABI64		0x00000010	/* 64-bit ABI */ -#define EF_IA_64_ARCH		0xff000000	/* arch. version mask */ - -/* Processor specific values for the Phdr p_type field.  */ -#define PT_IA_64_ARCHEXT	(PT_LOPROC + 0)	/* arch extension bits */ -#define PT_IA_64_UNWIND		(PT_LOPROC + 1)	/* ia64 unwind bits */ -#define PT_IA_64_HP_OPT_ANOT	(PT_LOOS + 0x12) -#define PT_IA_64_HP_HSL_ANOT	(PT_LOOS + 0x13) -#define PT_IA_64_HP_STACK	(PT_LOOS + 0x14) - -/* Processor specific flags for the Phdr p_flags field.  */ -#define PF_IA_64_NORECOV	0x80000000	/* spec insns w/o recovery */ - -/* Processor specific values for the Shdr sh_type field.  */ -#define SHT_IA_64_EXT		(SHT_LOPROC + 0) /* extension bits */ -#define SHT_IA_64_UNWIND	(SHT_LOPROC + 1) /* unwind bits */ - -/* Processor specific flags for the Shdr sh_flags field.  */ -#define SHF_IA_64_SHORT		0x10000000	/* section near gp */ -#define SHF_IA_64_NORECOV	0x20000000	/* spec insns w/o recovery */ - -/* Processor specific values for the Dyn d_tag field.  */ -#define DT_IA_64_PLT_RESERVE	(DT_LOPROC + 0) -#define DT_IA_64_NUM		1 - -/* IA-64 relocations.  */ -#define R_IA64_NONE		0x00	/* none */ -#define R_IA64_IMM14		0x21	/* symbol + addend, add imm14 */ -#define R_IA64_IMM22		0x22	/* symbol + addend, add imm22 */ -#define R_IA64_IMM64		0x23	/* symbol + addend, mov imm64 */ -#define R_IA64_DIR32MSB		0x24	/* symbol + addend, data4 MSB */ -#define R_IA64_DIR32LSB		0x25	/* symbol + addend, data4 LSB */ -#define R_IA64_DIR64MSB		0x26	/* symbol + addend, data8 MSB */ -#define R_IA64_DIR64LSB		0x27	/* symbol + addend, data8 LSB */ -#define R_IA64_GPREL22		0x2a	/* @gprel(sym + add), add imm22 */ -#define R_IA64_GPREL64I		0x2b	/* @gprel(sym + add), mov imm64 */ -#define R_IA64_GPREL32MSB	0x2c	/* @gprel(sym + add), data4 MSB */ -#define R_IA64_GPREL32LSB	0x2d	/* @gprel(sym + add), data4 LSB */ -#define R_IA64_GPREL64MSB	0x2e	/* @gprel(sym + add), data8 MSB */ -#define R_IA64_GPREL64LSB	0x2f	/* @gprel(sym + add), data8 LSB */ -#define R_IA64_LTOFF22		0x32	/* @ltoff(sym + add), add imm22 */ -#define R_IA64_LTOFF64I		0x33	/* @ltoff(sym + add), mov imm64 */ -#define R_IA64_PLTOFF22		0x3a	/* @pltoff(sym + add), add imm22 */ -#define R_IA64_PLTOFF64I	0x3b	/* @pltoff(sym + add), mov imm64 */ -#define R_IA64_PLTOFF64MSB	0x3e	/* @pltoff(sym + add), data8 MSB */ -#define R_IA64_PLTOFF64LSB	0x3f	/* @pltoff(sym + add), data8 LSB */ -#define R_IA64_FPTR64I		0x43	/* @fptr(sym + add), mov imm64 */ -#define R_IA64_FPTR32MSB	0x44	/* @fptr(sym + add), data4 MSB */ -#define R_IA64_FPTR32LSB	0x45	/* @fptr(sym + add), data4 LSB */ -#define R_IA64_FPTR64MSB	0x46	/* @fptr(sym + add), data8 MSB */ -#define R_IA64_FPTR64LSB	0x47	/* @fptr(sym + add), data8 LSB */ -#define R_IA64_PCREL60B		0x48	/* @pcrel(sym + add), brl */ -#define R_IA64_PCREL21B		0x49	/* @pcrel(sym + add), ptb, call */ -#define R_IA64_PCREL21M		0x4a	/* @pcrel(sym + add), chk.s */ -#define R_IA64_PCREL21F		0x4b	/* @pcrel(sym + add), fchkf */ -#define R_IA64_PCREL32MSB	0x4c	/* @pcrel(sym + add), data4 MSB */ -#define R_IA64_PCREL32LSB	0x4d	/* @pcrel(sym + add), data4 LSB */ -#define R_IA64_PCREL64MSB	0x4e	/* @pcrel(sym + add), data8 MSB */ -#define R_IA64_PCREL64LSB	0x4f	/* @pcrel(sym + add), data8 LSB */ -#define R_IA64_LTOFF_FPTR22	0x52	/* @ltoff(@fptr(s+a)), imm22 */ -#define R_IA64_LTOFF_FPTR64I	0x53	/* @ltoff(@fptr(s+a)), imm64 */ -#define R_IA64_LTOFF_FPTR32MSB	0x54	/* @ltoff(@fptr(s+a)), data4 MSB */ -#define R_IA64_LTOFF_FPTR32LSB	0x55	/* @ltoff(@fptr(s+a)), data4 LSB */ -#define R_IA64_LTOFF_FPTR64MSB	0x56	/* @ltoff(@fptr(s+a)), data8 MSB */ -#define R_IA64_LTOFF_FPTR64LSB	0x57	/* @ltoff(@fptr(s+a)), data8 LSB */ -#define R_IA64_SEGREL32MSB	0x5c	/* @segrel(sym + add), data4 MSB */ -#define R_IA64_SEGREL32LSB	0x5d	/* @segrel(sym + add), data4 LSB */ -#define R_IA64_SEGREL64MSB	0x5e	/* @segrel(sym + add), data8 MSB */ -#define R_IA64_SEGREL64LSB	0x5f	/* @segrel(sym + add), data8 LSB */ -#define R_IA64_SECREL32MSB	0x64	/* @secrel(sym + add), data4 MSB */ -#define R_IA64_SECREL32LSB	0x65	/* @secrel(sym + add), data4 LSB */ -#define R_IA64_SECREL64MSB	0x66	/* @secrel(sym + add), data8 MSB */ -#define R_IA64_SECREL64LSB	0x67	/* @secrel(sym + add), data8 LSB */ -#define R_IA64_REL32MSB		0x6c	/* data 4 + REL */ -#define R_IA64_REL32LSB		0x6d	/* data 4 + REL */ -#define R_IA64_REL64MSB		0x6e	/* data 8 + REL */ -#define R_IA64_REL64LSB		0x6f	/* data 8 + REL */ -#define R_IA64_LTV32MSB		0x74	/* symbol + addend, data4 MSB */ -#define R_IA64_LTV32LSB		0x75	/* symbol + addend, data4 LSB */ -#define R_IA64_LTV64MSB		0x76	/* symbol + addend, data8 MSB */ -#define R_IA64_LTV64LSB		0x77	/* symbol + addend, data8 LSB */ -#define R_IA64_PCREL21BI	0x79	/* @pcrel(sym + add), 21bit inst */ -#define R_IA64_PCREL22		0x7a	/* @pcrel(sym + add), 22bit inst */ -#define R_IA64_PCREL64I		0x7b	/* @pcrel(sym + add), 64bit inst */ -#define R_IA64_IPLTMSB		0x80	/* dynamic reloc, imported PLT, MSB */ -#define R_IA64_IPLTLSB		0x81	/* dynamic reloc, imported PLT, LSB */ -#define R_IA64_COPY		0x84	/* copy relocation */ -#define R_IA64_SUB		0x85	/* Addend and symbol difference */ -#define R_IA64_LTOFF22X		0x86	/* LTOFF22, relaxable.  */ -#define R_IA64_LDXMOV		0x87	/* Use of LTOFF22X.  */ -#define R_IA64_TPREL14		0x91	/* @tprel(sym + add), imm14 */ -#define R_IA64_TPREL22		0x92	/* @tprel(sym + add), imm22 */ -#define R_IA64_TPREL64I		0x93	/* @tprel(sym + add), imm64 */ -#define R_IA64_TPREL64MSB	0x96	/* @tprel(sym + add), data8 MSB */ -#define R_IA64_TPREL64LSB	0x97	/* @tprel(sym + add), data8 LSB */ -#define R_IA64_LTOFF_TPREL22	0x9a	/* @ltoff(@tprel(s+a)), imm2 */ -#define R_IA64_DTPMOD64MSB	0xa6	/* @dtpmod(sym + add), data8 MSB */ -#define R_IA64_DTPMOD64LSB	0xa7	/* @dtpmod(sym + add), data8 LSB */ -#define R_IA64_LTOFF_DTPMOD22	0xaa	/* @ltoff(@dtpmod(sym + add)), imm22 */ -#define R_IA64_DTPREL14		0xb1	/* @dtprel(sym + add), imm14 */ -#define R_IA64_DTPREL22		0xb2	/* @dtprel(sym + add), imm22 */ -#define R_IA64_DTPREL64I	0xb3	/* @dtprel(sym + add), imm64 */ -#define R_IA64_DTPREL32MSB	0xb4	/* @dtprel(sym + add), data4 MSB */ -#define R_IA64_DTPREL32LSB	0xb5	/* @dtprel(sym + add), data4 LSB */ -#define R_IA64_DTPREL64MSB	0xb6	/* @dtprel(sym + add), data8 MSB */ -#define R_IA64_DTPREL64LSB	0xb7	/* @dtprel(sym + add), data8 LSB */ -#define R_IA64_LTOFF_DTPREL22	0xba	/* @ltoff(@dtprel(s+a)), imm22 */ - -/* SH specific declarations */ - -/* SH relocs.  */ -#define	R_SH_NONE		0 -#define	R_SH_DIR32		1 -#define	R_SH_REL32		2 -#define	R_SH_DIR8WPN		3 -#define	R_SH_IND12W		4 -#define	R_SH_DIR8WPL		5 -#define	R_SH_DIR8WPZ		6 -#define	R_SH_DIR8BP		7 -#define	R_SH_DIR8W		8 -#define	R_SH_DIR8L		9 -#define	R_SH_SWITCH16		25 -#define	R_SH_SWITCH32		26 -#define	R_SH_USES		27 -#define	R_SH_COUNT		28 -#define	R_SH_ALIGN		29 -#define	R_SH_CODE		30 -#define	R_SH_DATA		31 -#define	R_SH_LABEL		32 -#define	R_SH_SWITCH8		33 -#define	R_SH_GNU_VTINHERIT	34 -#define	R_SH_GNU_VTENTRY	35 -#define	R_SH_TLS_GD_32		144 -#define	R_SH_TLS_LD_32		145 -#define	R_SH_TLS_LDO_32		146 -#define	R_SH_TLS_IE_32		147 -#define	R_SH_TLS_LE_32		148 -#define	R_SH_TLS_DTPMOD32	149 -#define	R_SH_TLS_DTPOFF32	150 -#define	R_SH_TLS_TPOFF32	151 -#define	R_SH_GOT32		160 -#define	R_SH_PLT32		161 -#define	R_SH_COPY		162 -#define	R_SH_GLOB_DAT		163 -#define	R_SH_JMP_SLOT		164 -#define	R_SH_RELATIVE		165 -#define	R_SH_GOTOFF		166 -#define	R_SH_GOTPC		167 -/* Keep this the last entry.  */ -#define	R_SH_NUM		256 - -/* Additional s390 relocs */ - -#define R_390_NONE		0	/* No reloc.  */ -#define R_390_8			1	/* Direct 8 bit.  */ -#define R_390_12		2	/* Direct 12 bit.  */ -#define R_390_16		3	/* Direct 16 bit.  */ -#define R_390_32		4	/* Direct 32 bit.  */ -#define R_390_PC32		5	/* PC relative 32 bit.	*/ -#define R_390_GOT12		6	/* 12 bit GOT offset.  */ -#define R_390_GOT32		7	/* 32 bit GOT offset.  */ -#define R_390_PLT32		8	/* 32 bit PC relative PLT address.  */ -#define R_390_COPY		9	/* Copy symbol at runtime.  */ -#define R_390_GLOB_DAT		10	/* Create GOT entry.  */ -#define R_390_JMP_SLOT		11	/* Create PLT entry.  */ -#define R_390_RELATIVE		12	/* Adjust by program base.  */ -#define R_390_GOTOFF32		13	/* 32 bit offset to GOT.	 */ -#define R_390_GOTPC		14	/* 32 bit PC relative offset to GOT.  */ -#define R_390_GOT16		15	/* 16 bit GOT offset.  */ -#define R_390_PC16		16	/* PC relative 16 bit.	*/ -#define R_390_PC16DBL		17	/* PC relative 16 bit shifted by 1.  */ -#define R_390_PLT16DBL		18	/* 16 bit PC rel. PLT shifted by 1.  */ -#define R_390_PC32DBL		19	/* PC relative 32 bit shifted by 1.  */ -#define R_390_PLT32DBL		20	/* 32 bit PC rel. PLT shifted by 1.  */ -#define R_390_GOTPCDBL		21	/* 32 bit PC rel. GOT shifted by 1.  */ -#define R_390_64		22	/* Direct 64 bit.  */ -#define R_390_PC64		23	/* PC relative 64 bit.	*/ -#define R_390_GOT64		24	/* 64 bit GOT offset.  */ -#define R_390_PLT64		25	/* 64 bit PC relative PLT address.  */ -#define R_390_GOTENT		26	/* 32 bit PC rel. to GOT entry >> 1. */ -#define R_390_GOTOFF16		27	/* 16 bit offset to GOT. */ -#define R_390_GOTOFF64		28	/* 64 bit offset to GOT. */ -#define R_390_GOTPLT12		29	/* 12 bit offset to jump slot.	*/ -#define R_390_GOTPLT16		30	/* 16 bit offset to jump slot.	*/ -#define R_390_GOTPLT32		31	/* 32 bit offset to jump slot.	*/ -#define R_390_GOTPLT64		32	/* 64 bit offset to jump slot.	*/ -#define R_390_GOTPLTENT		33	/* 32 bit rel. offset to jump slot.  */ -#define R_390_PLTOFF16		34	/* 16 bit offset from GOT to PLT. */ -#define R_390_PLTOFF32		35	/* 32 bit offset from GOT to PLT. */ -#define R_390_PLTOFF64		36	/* 16 bit offset from GOT to PLT. */ -#define R_390_TLS_LOAD		37	/* Tag for load insn in TLS code.  */ -#define R_390_TLS_GDCALL	38	/* Tag for function call in general -					   dynamic TLS code. */ -#define R_390_TLS_LDCALL	39	/* Tag for function call in local -					   dynamic TLS code. */ -#define R_390_TLS_GD32		40	/* Direct 32 bit for general dynamic -					   thread local data.  */ -#define R_390_TLS_GD64		41	/* Direct 64 bit for general dynamic -					  thread local data.  */ -#define R_390_TLS_GOTIE12	42	/* 12 bit GOT offset for static TLS -					   block offset.  */ -#define R_390_TLS_GOTIE32	43	/* 32 bit GOT offset for static TLS -					   block offset.  */ -#define R_390_TLS_GOTIE64	44	/* 64 bit GOT offset for static TLS -					   block offset. */ -#define R_390_TLS_LDM32		45	/* Direct 32 bit for local dynamic -					   thread local data in LE code.  */ -#define R_390_TLS_LDM64		46	/* Direct 64 bit for local dynamic -					   thread local data in LE code.  */ -#define R_390_TLS_IE32		47	/* 32 bit address of GOT entry for -					   negated static TLS block offset.  */ -#define R_390_TLS_IE64		48	/* 64 bit address of GOT entry for -					   negated static TLS block offset.  */ -#define R_390_TLS_IEENT		49	/* 32 bit rel. offset to GOT entry for -					   negated static TLS block offset.  */ -#define R_390_TLS_LE32		50	/* 32 bit negated offset relative to -					   static TLS block.  */ -#define R_390_TLS_LE64		51	/* 64 bit negated offset relative to -					   static TLS block.  */ -#define R_390_TLS_LDO32		52	/* 32 bit offset relative to TLS -					   block.  */ -#define R_390_TLS_LDO64		53	/* 64 bit offset relative to TLS -					   block.  */ -#define R_390_TLS_DTPMOD	54	/* ID of module containing symbol.  */ -#define R_390_TLS_DTPOFF	55	/* Offset in TLS block.	 */ -#define R_390_TLS_TPOFF		56	/* Negated offset in static TLS -					   block.  */ -#define R_390_20		57	/* Direct 20 bit.  */ -#define R_390_GOT20		58	/* 20 bit GOT offset.  */ -#define R_390_GOTPLT20		59	/* 20 bit offset to jump slot.  */ -#define R_390_TLS_GOTIE20	60	/* 20 bit GOT offset for static TLS -					   block offset.  */ -/* Keep this the last entry.  */ -#define R_390_NUM		61 - - -/* CRIS relocations.  */ -#define R_CRIS_NONE		0 -#define R_CRIS_8		1 -#define R_CRIS_16		2 -#define R_CRIS_32		3 -#define R_CRIS_8_PCREL		4 -#define R_CRIS_16_PCREL		5 -#define R_CRIS_32_PCREL		6 -#define R_CRIS_GNU_VTINHERIT	7 -#define R_CRIS_GNU_VTENTRY	8 -#define R_CRIS_COPY		9 -#define R_CRIS_GLOB_DAT		10 -#define R_CRIS_JUMP_SLOT	11 -#define R_CRIS_RELATIVE		12 -#define R_CRIS_16_GOT		13 -#define R_CRIS_32_GOT		14 -#define R_CRIS_16_GOTPLT	15 -#define R_CRIS_32_GOTPLT	16 -#define R_CRIS_32_GOTREL	17 -#define R_CRIS_32_PLT_GOTREL	18 -#define R_CRIS_32_PLT_PCREL	19 - -#define R_CRIS_NUM		20 - - -/* AMD x86-64 relocations.  */ -#define R_X86_64_NONE		0	/* No reloc */ -#define R_X86_64_64		1	/* Direct 64 bit  */ -#define R_X86_64_PC32		2	/* PC relative 32 bit signed */ -#define R_X86_64_GOT32		3	/* 32 bit GOT entry */ -#define R_X86_64_PLT32		4	/* 32 bit PLT address */ -#define R_X86_64_COPY		5	/* Copy symbol at runtime */ -#define R_X86_64_GLOB_DAT	6	/* Create GOT entry */ -#define R_X86_64_JUMP_SLOT	7	/* Create PLT entry */ -#define R_X86_64_RELATIVE	8	/* Adjust by program base */ -#define R_X86_64_GOTPCREL	9	/* 32 bit signed PC relative -					   offset to GOT */ -#define R_X86_64_32		10	/* Direct 32 bit zero extended */ -#define R_X86_64_32S		11	/* Direct 32 bit sign extended */ -#define R_X86_64_16		12	/* Direct 16 bit zero extended */ -#define R_X86_64_PC16		13	/* 16 bit sign extended pc relative */ -#define R_X86_64_8		14	/* Direct 8 bit sign extended  */ -#define R_X86_64_PC8		15	/* 8 bit sign extended pc relative */ -#define R_X86_64_DTPMOD64	16	/* ID of module containing symbol */ -#define R_X86_64_DTPOFF64	17	/* Offset in module's TLS block */ -#define R_X86_64_TPOFF64	18	/* Offset in initial TLS block */ -#define R_X86_64_TLSGD		19	/* 32 bit signed PC relative offset -					   to two GOT entries for GD symbol */ -#define R_X86_64_TLSLD		20	/* 32 bit signed PC relative offset -					   to two GOT entries for LD symbol */ -#define R_X86_64_DTPOFF32	21	/* Offset in TLS block */ -#define R_X86_64_GOTTPOFF	22	/* 32 bit signed PC relative offset -					   to GOT entry for IE symbol */ -#define R_X86_64_TPOFF32	23	/* Offset in initial TLS block */ - -#define R_X86_64_NUM		24 - - -/* AM33 relocations.  */ -#define R_MN10300_NONE		0	/* No reloc.  */ -#define R_MN10300_32		1	/* Direct 32 bit.  */ -#define R_MN10300_16		2	/* Direct 16 bit.  */ -#define R_MN10300_8		3	/* Direct 8 bit.  */ -#define R_MN10300_PCREL32	4	/* PC-relative 32-bit.  */ -#define R_MN10300_PCREL16	5	/* PC-relative 16-bit signed.  */ -#define R_MN10300_PCREL8	6	/* PC-relative 8-bit signed.  */ -#define R_MN10300_GNU_VTINHERIT	7	/* Ancient C++ vtable garbage... */ -#define R_MN10300_GNU_VTENTRY	8	/* ... collection annotation.  */ -#define R_MN10300_24		9	/* Direct 24 bit.  */ -#define R_MN10300_GOTPC32	10	/* 32-bit PCrel offset to GOT.  */ -#define R_MN10300_GOTPC16	11	/* 16-bit PCrel offset to GOT.  */ -#define R_MN10300_GOTOFF32	12	/* 32-bit offset from GOT.  */ -#define R_MN10300_GOTOFF24	13	/* 24-bit offset from GOT.  */ -#define R_MN10300_GOTOFF16	14	/* 16-bit offset from GOT.  */ -#define R_MN10300_PLT32		15	/* 32-bit PCrel to PLT entry.  */ -#define R_MN10300_PLT16		16	/* 16-bit PCrel to PLT entry.  */ -#define R_MN10300_GOT32		17	/* 32-bit offset to GOT entry.  */ -#define R_MN10300_GOT24		18	/* 24-bit offset to GOT entry.  */ -#define R_MN10300_GOT16		19	/* 16-bit offset to GOT entry.  */ -#define R_MN10300_COPY		20	/* Copy symbol at runtime.  */ -#define R_MN10300_GLOB_DAT	21	/* Create GOT entry.  */ -#define R_MN10300_JMP_SLOT	22	/* Create PLT entry.  */ -#define R_MN10300_RELATIVE	23	/* Adjust by program base.  */ - -#define R_MN10300_NUM		24 - - -/* M32R relocs.  */ -#define R_M32R_NONE		0	/* No reloc. */ -#define R_M32R_16		1	/* Direct 16 bit. */ -#define R_M32R_32		2	/* Direct 32 bit. */ -#define R_M32R_24		3	/* Direct 24 bit. */ -#define R_M32R_10_PCREL		4	/* PC relative 10 bit shifted. */ -#define R_M32R_18_PCREL		5	/* PC relative 18 bit shifted. */ -#define R_M32R_26_PCREL		6	/* PC relative 26 bit shifted. */ -#define R_M32R_HI16_ULO		7	/* High 16 bit with unsigned low. */ -#define R_M32R_HI16_SLO		8	/* High 16 bit with signed low. */ -#define R_M32R_LO16		9	/* Low 16 bit. */ -#define R_M32R_SDA16		10	/* 16 bit offset in SDA. */ -#define R_M32R_GNU_VTINHERIT	11 -#define R_M32R_GNU_VTENTRY	12 -/* M32R relocs use SHT_RELA.  */ -#define R_M32R_16_RELA		33	/* Direct 16 bit. */ -#define R_M32R_32_RELA		34	/* Direct 32 bit. */ -#define R_M32R_24_RELA		35	/* Direct 24 bit. */ -#define R_M32R_10_PCREL_RELA	36	/* PC relative 10 bit shifted. */ -#define R_M32R_18_PCREL_RELA	37	/* PC relative 18 bit shifted. */ -#define R_M32R_26_PCREL_RELA	38	/* PC relative 26 bit shifted. */ -#define R_M32R_HI16_ULO_RELA	39	/* High 16 bit with unsigned low */ -#define R_M32R_HI16_SLO_RELA	40	/* High 16 bit with signed low */ -#define R_M32R_LO16_RELA	41	/* Low 16 bit */ -#define R_M32R_SDA16_RELA	42	/* 16 bit offset in SDA */ -#define R_M32R_RELA_GNU_VTINHERIT	43 -#define R_M32R_RELA_GNU_VTENTRY	44 -#define R_M32R_REL32		45	/* PC relative 32 bit */ - -#define R_M32R_GOT24		48	/* 24 bit GOT entry */ -#define R_M32R_26_PLTREL	49	/* 26 bit PC relative to PLT shifted */ -#define R_M32R_COPY		50	/* Copy symbol at runtime */ -#define R_M32R_GLOB_DAT		51	/* Create GOT entry */ -#define R_M32R_JMP_SLOT		52	/* Create PLT entry */ -#define R_M32R_RELATIVE		53	/* Adjust by program base */ -#define R_M32R_GOTOFF		54	/* 24 bit offset to GOT */ -#define R_M32R_GOTPC24		55	/* 24 bit PC relative offset to GOT */ -#define R_M32R_GOT16_HI_ULO	56	/* High 16 bit GOT entry with unsigned -					   low */ -#define R_M32R_GOT16_HI_SLO	57	/* High 16 bit GOT entry with signed -					   low */ -#define R_M32R_GOT16_LO		58	/* Low 16 bit GOT entry */ -#define R_M32R_GOTPC_HI_ULO	59	/* High 16 bit PC relative offset to -					   GOT with unsigned low */ -#define R_M32R_GOTPC_HI_SLO	60	/* High 16 bit PC relative offset to -					   GOT with signed low */ -#define R_M32R_GOTPC_LO		61	/* Low 16 bit PC relative offset to -					   GOT */ -#define R_M32R_GOTOFF_HI_ULO	62	/* High 16 bit offset to GOT -					   with unsigned low */ -#define R_M32R_GOTOFF_HI_SLO	63	/* High 16 bit offset to GOT -					   with signed low */ -#define R_M32R_GOTOFF_LO	64	/* Low 16 bit offset to GOT */ -#define R_M32R_NUM		256	/* Keep this the last entry. */ - - -__END_DECLS - -#endif	/* elf.h */ diff --git a/adk/include/endian.h b/adk/include/endian.h deleted file mode 100644 index bd94c4976..000000000 --- a/adk/include/endian.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef __endian_compat_h -#define __endian_compat_h - -#if defined(__linux__) || defined(__CYGWIN__) -#include <byteswap.h> -#include_next <endian.h> -#elif defined(__APPLE__) -#include <machine/endian.h> -#include <machine/byte_order.h> -#elif defined(__FreeBSD__) -#include <sys/endian.h> -#elif defined(__OpenBSD__) -#include <sys/types.h> -#else -#include <machine/endian.h> -#endif - -#ifndef __BYTE_ORDER -#define __BYTE_ORDER BYTE_ORDER -#endif -#ifndef __BIG_ENDIAN -#define __BIG_ENDIAN BIG_ENDIAN -#endif -#ifndef __LITTLE_ENDIAN -#define __LITTLE_ENDIAN LITTLE_ENDIAN -#endif - -#endif diff --git a/adk/include/linux/elf.h b/adk/include/linux/elf.h deleted file mode 100644 index 08b7f67bc..000000000 --- a/adk/include/linux/elf.h +++ /dev/null @@ -1,2564 +0,0 @@ -/* This file defines standard ELF types, structures, and macros. -   Copyright (C) 1995-2003, 2004 Free Software Foundation, Inc. -   This file is part of the GNU C Library. - -   The GNU C Library is free software; you can redistribute it and/or -   modify it under the terms of the GNU Lesser General Public -   License as published by the Free Software Foundation; either -   version 2.1 of the License, or (at your option) any later version. - -   The GNU C Library is distributed in the hope that it will be useful, -   but WITHOUT ANY WARRANTY; without even the implied warranty of -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -   Lesser General Public License for more details. - -   You should have received a copy of the GNU Lesser General Public -   License along with the GNU C Library; if not, write to the Free -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -   02111-1307 USA.  */ - -#ifndef _ELF_H -#define	_ELF_H 1 - -#include <sys/param.h> -#if !defined(BSD) && !defined(__APPLE__) -#include <features.h> -#endif - -__BEGIN_DECLS - -/* Standard ELF types.  */ - -#include <stdint.h> - -/* Type for a 16-bit quantity.  */ -typedef uint16_t Elf32_Half; -typedef uint16_t Elf64_Half; - -/* Types for signed and unsigned 32-bit quantities.  */ -typedef uint32_t Elf32_Word; -typedef	int32_t  Elf32_Sword; -typedef uint32_t Elf64_Word; -typedef	int32_t  Elf64_Sword; - -/* Types for signed and unsigned 64-bit quantities.  */ -typedef uint64_t Elf32_Xword; -typedef	int64_t  Elf32_Sxword; -typedef uint64_t Elf64_Xword; -typedef	int64_t  Elf64_Sxword; - -/* Type of addresses.  */ -typedef uint32_t Elf32_Addr; -typedef uint64_t Elf64_Addr; - -/* Type of file offsets.  */ -typedef uint32_t Elf32_Off; -typedef uint64_t Elf64_Off; - -/* Type for section indices, which are 16-bit quantities.  */ -typedef uint16_t Elf32_Section; -typedef uint16_t Elf64_Section; - -/* Type for version symbol information.  */ -typedef Elf32_Half Elf32_Versym; -typedef Elf64_Half Elf64_Versym; - - -/* The ELF file header.  This appears at the start of every ELF file.  */ - -#define EI_NIDENT (16) - -typedef struct -{ -  unsigned char	e_ident[EI_NIDENT];	/* Magic number and other info */ -  Elf32_Half	e_type;			/* Object file type */ -  Elf32_Half	e_machine;		/* Architecture */ -  Elf32_Word	e_version;		/* Object file version */ -  Elf32_Addr	e_entry;		/* Entry point virtual address */ -  Elf32_Off	e_phoff;		/* Program header table file offset */ -  Elf32_Off	e_shoff;		/* Section header table file offset */ -  Elf32_Word	e_flags;		/* Processor-specific flags */ -  Elf32_Half	e_ehsize;		/* ELF header size in bytes */ -  Elf32_Half	e_phentsize;		/* Program header table entry size */ -  Elf32_Half	e_phnum;		/* Program header table entry count */ -  Elf32_Half	e_shentsize;		/* Section header table entry size */ -  Elf32_Half	e_shnum;		/* Section header table entry count */ -  Elf32_Half	e_shstrndx;		/* Section header string table index */ -} Elf32_Ehdr; - -typedef struct -{ -  unsigned char	e_ident[EI_NIDENT];	/* Magic number and other info */ -  Elf64_Half	e_type;			/* Object file type */ -  Elf64_Half	e_machine;		/* Architecture */ -  Elf64_Word	e_version;		/* Object file version */ -  Elf64_Addr	e_entry;		/* Entry point virtual address */ -  Elf64_Off	e_phoff;		/* Program header table file offset */ -  Elf64_Off	e_shoff;		/* Section header table file offset */ -  Elf64_Word	e_flags;		/* Processor-specific flags */ -  Elf64_Half	e_ehsize;		/* ELF header size in bytes */ -  Elf64_Half	e_phentsize;		/* Program header table entry size */ -  Elf64_Half	e_phnum;		/* Program header table entry count */ -  Elf64_Half	e_shentsize;		/* Section header table entry size */ -  Elf64_Half	e_shnum;		/* Section header table entry count */ -  Elf64_Half	e_shstrndx;		/* Section header string table index */ -} Elf64_Ehdr; - -/* Fields in the e_ident array.  The EI_* macros are indices into the -   array.  The macros under each EI_* macro are the values the byte -   may have.  */ - -#define EI_MAG0		0		/* File identification byte 0 index */ -#define ELFMAG0		0x7f		/* Magic number byte 0 */ - -#define EI_MAG1		1		/* File identification byte 1 index */ -#define ELFMAG1		'E'		/* Magic number byte 1 */ - -#define EI_MAG2		2		/* File identification byte 2 index */ -#define ELFMAG2		'L'		/* Magic number byte 2 */ - -#define EI_MAG3		3		/* File identification byte 3 index */ -#define ELFMAG3		'F'		/* Magic number byte 3 */ - -/* Conglomeration of the identification bytes, for easy testing as a word.  */ -#define	ELFMAG		"\177ELF" -#define	SELFMAG		4 - -#define EI_CLASS	4		/* File class byte index */ -#define ELFCLASSNONE	0		/* Invalid class */ -#define ELFCLASS32	1		/* 32-bit objects */ -#define ELFCLASS64	2		/* 64-bit objects */ -#define ELFCLASSNUM	3 - -#define EI_DATA		5		/* Data encoding byte index */ -#define ELFDATANONE	0		/* Invalid data encoding */ -#define ELFDATA2LSB	1		/* 2's complement, little endian */ -#define ELFDATA2MSB	2		/* 2's complement, big endian */ -#define ELFDATANUM	3 - -#define EI_VERSION	6		/* File version byte index */ -					/* Value must be EV_CURRENT */ - -#define EI_OSABI	7		/* OS ABI identification */ -#define ELFOSABI_NONE		0	/* UNIX System V ABI */ -#define ELFOSABI_SYSV		0	/* Alias.  */ -#define ELFOSABI_HPUX		1	/* HP-UX */ -#define ELFOSABI_NETBSD		2	/* NetBSD.  */ -#define ELFOSABI_LINUX		3	/* Linux.  */ -#define ELFOSABI_SOLARIS	6	/* Sun Solaris.  */ -#define ELFOSABI_AIX		7	/* IBM AIX.  */ -#define ELFOSABI_IRIX		8	/* SGI Irix.  */ -#define ELFOSABI_FREEBSD	9	/* FreeBSD.  */ -#define ELFOSABI_TRU64		10	/* Compaq TRU64 UNIX.  */ -#define ELFOSABI_MODESTO	11	/* Novell Modesto.  */ -#define ELFOSABI_OPENBSD	12	/* OpenBSD.  */ -#define ELFOSABI_ARM		97	/* ARM */ -#define ELFOSABI_STANDALONE	255	/* Standalone (embedded) application */ - -#define EI_ABIVERSION	8		/* ABI version */ - -#define EI_PAD		9		/* Byte index of padding bytes */ - -/* Legal values for e_type (object file type).  */ - -#define ET_NONE		0		/* No file type */ -#define ET_REL		1		/* Relocatable file */ -#define ET_EXEC		2		/* Executable file */ -#define ET_DYN		3		/* Shared object file */ -#define ET_CORE		4		/* Core file */ -#define	ET_NUM		5		/* Number of defined types */ -#define ET_LOOS		0xfe00		/* OS-specific range start */ -#define ET_HIOS		0xfeff		/* OS-specific range end */ -#define ET_LOPROC	0xff00		/* Processor-specific range start */ -#define ET_HIPROC	0xffff		/* Processor-specific range end */ - -/* Legal values for e_machine (architecture).  */ - -#define EM_NONE		 0		/* No machine */ -#define EM_M32		 1		/* AT&T WE 32100 */ -#define EM_SPARC	 2		/* SUN SPARC */ -#define EM_386		 3		/* Intel 80386 */ -#define EM_68K		 4		/* Motorola m68k family */ -#define EM_88K		 5		/* Motorola m88k family */ -#define EM_860		 7		/* Intel 80860 */ -#define EM_MIPS		 8		/* MIPS R3000 big-endian */ -#define EM_S370		 9		/* IBM System/370 */ -#define EM_MIPS_RS3_LE	10		/* MIPS R3000 little-endian */ - -#define EM_PARISC	15		/* HPPA */ -#define EM_VPP500	17		/* Fujitsu VPP500 */ -#define EM_SPARC32PLUS	18		/* Sun's "v8plus" */ -#define EM_960		19		/* Intel 80960 */ -#define EM_PPC		20		/* PowerPC */ -#define EM_PPC64	21		/* PowerPC 64-bit */ -#define EM_S390		22		/* IBM S390 */ - -#define EM_V800		36		/* NEC V800 series */ -#define EM_FR20		37		/* Fujitsu FR20 */ -#define EM_RH32		38		/* TRW RH-32 */ -#define EM_RCE		39		/* Motorola RCE */ -#define EM_ARM		40		/* ARM */ -#define EM_FAKE_ALPHA	41		/* Digital Alpha */ -#define EM_SH		42		/* Hitachi SH */ -#define EM_SPARCV9	43		/* SPARC v9 64-bit */ -#define EM_TRICORE	44		/* Siemens Tricore */ -#define EM_ARC		45		/* Argonaut RISC Core */ -#define EM_H8_300	46		/* Hitachi H8/300 */ -#define EM_H8_300H	47		/* Hitachi H8/300H */ -#define EM_H8S		48		/* Hitachi H8S */ -#define EM_H8_500	49		/* Hitachi H8/500 */ -#define EM_IA_64	50		/* Intel Merced */ -#define EM_MIPS_X	51		/* Stanford MIPS-X */ -#define EM_COLDFIRE	52		/* Motorola Coldfire */ -#define EM_68HC12	53		/* Motorola M68HC12 */ -#define EM_MMA		54		/* Fujitsu MMA Multimedia Accelerator*/ -#define EM_PCP		55		/* Siemens PCP */ -#define EM_NCPU		56		/* Sony nCPU embeeded RISC */ -#define EM_NDR1		57		/* Denso NDR1 microprocessor */ -#define EM_STARCORE	58		/* Motorola Start*Core processor */ -#define EM_ME16		59		/* Toyota ME16 processor */ -#define EM_ST100	60		/* STMicroelectronic ST100 processor */ -#define EM_TINYJ	61		/* Advanced Logic Corp. Tinyj emb.fam*/ -#define EM_X86_64	62		/* AMD x86-64 architecture */ -#define EM_PDSP		63		/* Sony DSP Processor */ - -#define EM_FX66		66		/* Siemens FX66 microcontroller */ -#define EM_ST9PLUS	67		/* STMicroelectronics ST9+ 8/16 mc */ -#define EM_ST7		68		/* STmicroelectronics ST7 8 bit mc */ -#define EM_68HC16	69		/* Motorola MC68HC16 microcontroller */ -#define EM_68HC11	70		/* Motorola MC68HC11 microcontroller */ -#define EM_68HC08	71		/* Motorola MC68HC08 microcontroller */ -#define EM_68HC05	72		/* Motorola MC68HC05 microcontroller */ -#define EM_SVX		73		/* Silicon Graphics SVx */ -#define EM_ST19		74		/* STMicroelectronics ST19 8 bit mc */ -#define EM_VAX		75		/* Digital VAX */ -#define EM_CRIS		76		/* Axis Communications 32-bit embedded processor */ -#define EM_JAVELIN	77		/* Infineon Technologies 32-bit embedded processor */ -#define EM_FIREPATH	78		/* Element 14 64-bit DSP Processor */ -#define EM_ZSP		79		/* LSI Logic 16-bit DSP Processor */ -#define EM_MMIX		80		/* Donald Knuth's educational 64-bit processor */ -#define EM_HUANY	81		/* Harvard University machine-independent object files */ -#define EM_PRISM	82		/* SiTera Prism */ -#define EM_AVR		83		/* Atmel AVR 8-bit microcontroller */ -#define EM_FR30		84		/* Fujitsu FR30 */ -#define EM_D10V		85		/* Mitsubishi D10V */ -#define EM_D30V		86		/* Mitsubishi D30V */ -#define EM_V850		87		/* NEC v850 */ -#define EM_M32R		88		/* Mitsubishi M32R */ -#define EM_MN10300	89		/* Matsushita MN10300 */ -#define EM_MN10200	90		/* Matsushita MN10200 */ -#define EM_PJ		91		/* picoJava */ -#define EM_OPENRISC	92		/* OpenRISC 32-bit embedded processor */ -#define EM_ARC_A5	93		/* ARC Cores Tangent-A5 */ -#define EM_XTENSA	94		/* Tensilica Xtensa Architecture */ -#define EM_NUM		95 - -/* If it is necessary to assign new unofficial EM_* values, please -   pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the -   chances of collision with official or non-GNU unofficial values.  */ - -#define EM_ALPHA	0x9026 - -/* Legal values for e_version (version).  */ - -#define EV_NONE		0		/* Invalid ELF version */ -#define EV_CURRENT	1		/* Current version */ -#define EV_NUM		2 - -/* Section header.  */ - -typedef struct -{ -  Elf32_Word	sh_name;		/* Section name (string tbl index) */ -  Elf32_Word	sh_type;		/* Section type */ -  Elf32_Word	sh_flags;		/* Section flags */ -  Elf32_Addr	sh_addr;		/* Section virtual addr at execution */ -  Elf32_Off	sh_offset;		/* Section file offset */ -  Elf32_Word	sh_size;		/* Section size in bytes */ -  Elf32_Word	sh_link;		/* Link to another section */ -  Elf32_Word	sh_info;		/* Additional section information */ -  Elf32_Word	sh_addralign;		/* Section alignment */ -  Elf32_Word	sh_entsize;		/* Entry size if section holds table */ -} Elf32_Shdr; - -typedef struct -{ -  Elf64_Word	sh_name;		/* Section name (string tbl index) */ -  Elf64_Word	sh_type;		/* Section type */ -  Elf64_Xword	sh_flags;		/* Section flags */ -  Elf64_Addr	sh_addr;		/* Section virtual addr at execution */ -  Elf64_Off	sh_offset;		/* Section file offset */ -  Elf64_Xword	sh_size;		/* Section size in bytes */ -  Elf64_Word	sh_link;		/* Link to another section */ -  Elf64_Word	sh_info;		/* Additional section information */ -  Elf64_Xword	sh_addralign;		/* Section alignment */ -  Elf64_Xword	sh_entsize;		/* Entry size if section holds table */ -} Elf64_Shdr; - -/* Special section indices.  */ - -#define SHN_UNDEF	0		/* Undefined section */ -#define SHN_LORESERVE	0xff00		/* Start of reserved indices */ -#define SHN_LOPROC	0xff00		/* Start of processor-specific */ -#define SHN_BEFORE	0xff00		/* Order section before all others -					   (Solaris).  */ -#define SHN_AFTER	0xff01		/* Order section after all others -					   (Solaris).  */ -#define SHN_HIPROC	0xff1f		/* End of processor-specific */ -#define SHN_LOOS	0xff20		/* Start of OS-specific */ -#define SHN_HIOS	0xff3f		/* End of OS-specific */ -#define SHN_ABS		0xfff1		/* Associated symbol is absolute */ -#define SHN_COMMON	0xfff2		/* Associated symbol is common */ -#define SHN_XINDEX	0xffff		/* Index is in extra table.  */ -#define SHN_HIRESERVE	0xffff		/* End of reserved indices */ - -/* Legal values for sh_type (section type).  */ - -#define SHT_NULL	  0		/* Section header table entry unused */ -#define SHT_PROGBITS	  1		/* Program data */ -#define SHT_SYMTAB	  2		/* Symbol table */ -#define SHT_STRTAB	  3		/* String table */ -#define SHT_RELA	  4		/* Relocation entries with addends */ -#define SHT_HASH	  5		/* Symbol hash table */ -#define SHT_DYNAMIC	  6		/* Dynamic linking information */ -#define SHT_NOTE	  7		/* Notes */ -#define SHT_NOBITS	  8		/* Program space with no data (bss) */ -#define SHT_REL		  9		/* Relocation entries, no addends */ -#define SHT_SHLIB	  10		/* Reserved */ -#define SHT_DYNSYM	  11		/* Dynamic linker symbol table */ -#define SHT_INIT_ARRAY	  14		/* Array of constructors */ -#define SHT_FINI_ARRAY	  15		/* Array of destructors */ -#define SHT_PREINIT_ARRAY 16		/* Array of pre-constructors */ -#define SHT_GROUP	  17		/* Section group */ -#define SHT_SYMTAB_SHNDX  18		/* Extended section indeces */ -#define	SHT_NUM		  19		/* Number of defined types.  */ -#define SHT_LOOS	  0x60000000	/* Start OS-specific */ -#define SHT_GNU_LIBLIST	  0x6ffffff7	/* Prelink library list */ -#define SHT_CHECKSUM	  0x6ffffff8	/* Checksum for DSO content.  */ -#define SHT_LOSUNW	  0x6ffffffa	/* Sun-specific low bound.  */ -#define SHT_SUNW_move	  0x6ffffffa -#define SHT_SUNW_COMDAT   0x6ffffffb -#define SHT_SUNW_syminfo  0x6ffffffc -#define SHT_GNU_verdef	  0x6ffffffd	/* Version definition section.  */ -#define SHT_GNU_verneed	  0x6ffffffe	/* Version needs section.  */ -#define SHT_GNU_versym	  0x6fffffff	/* Version symbol table.  */ -#define SHT_HISUNW	  0x6fffffff	/* Sun-specific high bound.  */ -#define SHT_HIOS	  0x6fffffff	/* End OS-specific type */ -#define SHT_LOPROC	  0x70000000	/* Start of processor-specific */ -#define SHT_HIPROC	  0x7fffffff	/* End of processor-specific */ -#define SHT_LOUSER	  0x80000000	/* Start of application-specific */ -#define SHT_HIUSER	  0x8fffffff	/* End of application-specific */ - -/* Legal values for sh_flags (section flags).  */ - -#define SHF_WRITE	     (1 << 0)	/* Writable */ -#define SHF_ALLOC	     (1 << 1)	/* Occupies memory during execution */ -#define SHF_EXECINSTR	     (1 << 2)	/* Executable */ -#define SHF_MERGE	     (1 << 4)	/* Might be merged */ -#define SHF_STRINGS	     (1 << 5)	/* Contains nul-terminated strings */ -#define SHF_INFO_LINK	     (1 << 6)	/* `sh_info' contains SHT index */ -#define SHF_LINK_ORDER	     (1 << 7)	/* Preserve order after combining */ -#define SHF_OS_NONCONFORMING (1 << 8)	/* Non-standard OS specific handling -					   required */ -#define SHF_GROUP	     (1 << 9)	/* Section is member of a group.  */ -#define SHF_TLS		     (1 << 10)	/* Section hold thread-local data.  */ -#define SHF_MASKOS	     0x0ff00000	/* OS-specific.  */ -#define SHF_MASKPROC	     0xf0000000	/* Processor-specific */ -#define SHF_ORDERED	     (1 << 30)	/* Special ordering requirement -					   (Solaris).  */ -#define SHF_EXCLUDE	     (1 << 31)	/* Section is excluded unless -					   referenced or allocated (Solaris).*/ - -/* Section group handling.  */ -#define GRP_COMDAT	0x1		/* Mark group as COMDAT.  */ - -/* Symbol table entry.  */ - -typedef struct -{ -  Elf32_Word	st_name;		/* Symbol name (string tbl index) */ -  Elf32_Addr	st_value;		/* Symbol value */ -  Elf32_Word	st_size;		/* Symbol size */ -  unsigned char	st_info;		/* Symbol type and binding */ -  unsigned char	st_other;		/* Symbol visibility */ -  Elf32_Section	st_shndx;		/* Section index */ -} Elf32_Sym; - -typedef struct -{ -  Elf64_Word	st_name;		/* Symbol name (string tbl index) */ -  unsigned char	st_info;		/* Symbol type and binding */ -  unsigned char st_other;		/* Symbol visibility */ -  Elf64_Section	st_shndx;		/* Section index */ -  Elf64_Addr	st_value;		/* Symbol value */ -  Elf64_Xword	st_size;		/* Symbol size */ -} Elf64_Sym; - -/* The syminfo section if available contains additional information about -   every dynamic symbol.  */ - -typedef struct -{ -  Elf32_Half si_boundto;		/* Direct bindings, symbol bound to */ -  Elf32_Half si_flags;			/* Per symbol flags */ -} Elf32_Syminfo; - -typedef struct -{ -  Elf64_Half si_boundto;		/* Direct bindings, symbol bound to */ -  Elf64_Half si_flags;			/* Per symbol flags */ -} Elf64_Syminfo; - -/* Possible values for si_boundto.  */ -#define SYMINFO_BT_SELF		0xffff	/* Symbol bound to self */ -#define SYMINFO_BT_PARENT	0xfffe	/* Symbol bound to parent */ -#define SYMINFO_BT_LOWRESERVE	0xff00	/* Beginning of reserved entries */ - -/* Possible bitmasks for si_flags.  */ -#define SYMINFO_FLG_DIRECT	0x0001	/* Direct bound symbol */ -#define SYMINFO_FLG_PASSTHRU	0x0002	/* Pass-thru symbol for translator */ -#define SYMINFO_FLG_COPY	0x0004	/* Symbol is a copy-reloc */ -#define SYMINFO_FLG_LAZYLOAD	0x0008	/* Symbol bound to object to be lazy -					   loaded */ -/* Syminfo version values.  */ -#define SYMINFO_NONE		0 -#define SYMINFO_CURRENT		1 -#define SYMINFO_NUM		2 - - -/* How to extract and insert information held in the st_info field.  */ - -#define ELF32_ST_BIND(val)		(((unsigned char) (val)) >> 4) -#define ELF32_ST_TYPE(val)		((val) & 0xf) -#define ELF32_ST_INFO(bind, type)	(((bind) << 4) + ((type) & 0xf)) - -/* Both Elf32_Sym and Elf64_Sym use the same one-byte st_info field.  */ -#define ELF64_ST_BIND(val)		ELF32_ST_BIND (val) -#define ELF64_ST_TYPE(val)		ELF32_ST_TYPE (val) -#define ELF64_ST_INFO(bind, type)	ELF32_ST_INFO ((bind), (type)) - -/* Legal values for ST_BIND subfield of st_info (symbol binding).  */ - -#define STB_LOCAL	0		/* Local symbol */ -#define STB_GLOBAL	1		/* Global symbol */ -#define STB_WEAK	2		/* Weak symbol */ -#define	STB_NUM		3		/* Number of defined types.  */ -#define STB_LOOS	10		/* Start of OS-specific */ -#define STB_HIOS	12		/* End of OS-specific */ -#define STB_LOPROC	13		/* Start of processor-specific */ -#define STB_HIPROC	15		/* End of processor-specific */ - -/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ - -#define STT_NOTYPE	0		/* Symbol type is unspecified */ -#define STT_OBJECT	1		/* Symbol is a data object */ -#define STT_FUNC	2		/* Symbol is a code object */ -#define STT_SECTION	3		/* Symbol associated with a section */ -#define STT_FILE	4		/* Symbol's name is file name */ -#define STT_COMMON	5		/* Symbol is a common data object */ -#define STT_TLS		6		/* Symbol is thread-local data object*/ -#define	STT_NUM		7		/* Number of defined types.  */ -#define STT_LOOS	10		/* Start of OS-specific */ -#define STT_HIOS	12		/* End of OS-specific */ -#define STT_LOPROC	13		/* Start of processor-specific */ -#define STT_HIPROC	15		/* End of processor-specific */ - - -/* Symbol table indices are found in the hash buckets and chain table -   of a symbol hash table section.  This special index value indicates -   the end of a chain, meaning no further symbols are found in that bucket.  */ - -#define STN_UNDEF	0		/* End of a chain.  */ - - -/* How to extract and insert information held in the st_other field.  */ - -#define ELF32_ST_VISIBILITY(o)	((o) & 0x03) - -/* For ELF64 the definitions are the same.  */ -#define ELF64_ST_VISIBILITY(o)	ELF32_ST_VISIBILITY (o) - -/* Symbol visibility specification encoded in the st_other field.  */ -#define STV_DEFAULT	0		/* Default symbol visibility rules */ -#define STV_INTERNAL	1		/* Processor specific hidden class */ -#define STV_HIDDEN	2		/* Sym unavailable in other modules */ -#define STV_PROTECTED	3		/* Not preemptible, not exported */ - - -/* Relocation table entry without addend (in section of type SHT_REL).  */ - -typedef struct -{ -  Elf32_Addr	r_offset;		/* Address */ -  Elf32_Word	r_info;			/* Relocation type and symbol index */ -} Elf32_Rel; - -/* I have seen two different definitions of the Elf64_Rel and -   Elf64_Rela structures, so we'll leave them out until Novell (or -   whoever) gets their act together.  */ -/* The following, at least, is used on Sparc v9, MIPS, and Alpha.  */ - -typedef struct -{ -  Elf64_Addr	r_offset;		/* Address */ -  Elf64_Xword	r_info;			/* Relocation type and symbol index */ -} Elf64_Rel; - -/* Relocation table entry with addend (in section of type SHT_RELA).  */ - -typedef struct -{ -  Elf32_Addr	r_offset;		/* Address */ -  Elf32_Word	r_info;			/* Relocation type and symbol index */ -  Elf32_Sword	r_addend;		/* Addend */ -} Elf32_Rela; - -typedef struct -{ -  Elf64_Addr	r_offset;		/* Address */ -  Elf64_Xword	r_info;			/* Relocation type and symbol index */ -  Elf64_Sxword	r_addend;		/* Addend */ -} Elf64_Rela; - -/* How to extract and insert information held in the r_info field.  */ - -#define ELF32_R_SYM(val)		((val) >> 8) -#define ELF32_R_TYPE(val)		((val) & 0xff) -#define ELF32_R_INFO(sym, type)		(((sym) << 8) + ((type) & 0xff)) - -#define ELF64_R_SYM(i)			((i) >> 32) -#define ELF64_R_TYPE(i)			((i) & 0xffffffff) -#define ELF64_R_INFO(sym,type)		((((Elf64_Xword) (sym)) << 32) + (type)) - -/* Program segment header.  */ - -typedef struct -{ -  Elf32_Word	p_type;			/* Segment type */ -  Elf32_Off	p_offset;		/* Segment file offset */ -  Elf32_Addr	p_vaddr;		/* Segment virtual address */ -  Elf32_Addr	p_paddr;		/* Segment physical address */ -  Elf32_Word	p_filesz;		/* Segment size in file */ -  Elf32_Word	p_memsz;		/* Segment size in memory */ -  Elf32_Word	p_flags;		/* Segment flags */ -  Elf32_Word	p_align;		/* Segment alignment */ -} Elf32_Phdr; - -typedef struct -{ -  Elf64_Word	p_type;			/* Segment type */ -  Elf64_Word	p_flags;		/* Segment flags */ -  Elf64_Off	p_offset;		/* Segment file offset */ -  Elf64_Addr	p_vaddr;		/* Segment virtual address */ -  Elf64_Addr	p_paddr;		/* Segment physical address */ -  Elf64_Xword	p_filesz;		/* Segment size in file */ -  Elf64_Xword	p_memsz;		/* Segment size in memory */ -  Elf64_Xword	p_align;		/* Segment alignment */ -} Elf64_Phdr; - -/* Legal values for p_type (segment type).  */ - -#define	PT_NULL		0		/* Program header table entry unused */ -#define PT_LOAD		1		/* Loadable program segment */ -#define PT_DYNAMIC	2		/* Dynamic linking information */ -#define PT_INTERP	3		/* Program interpreter */ -#define PT_NOTE		4		/* Auxiliary information */ -#define PT_SHLIB	5		/* Reserved */ -#define PT_PHDR		6		/* Entry for header table itself */ -#define PT_TLS		7		/* Thread-local storage segment */ -#define	PT_NUM		8		/* Number of defined types */ -#define PT_LOOS		0x60000000	/* Start of OS-specific */ -#define PT_GNU_EH_FRAME	0x6474e550	/* GCC .eh_frame_hdr segment */ -#define PT_GNU_STACK	0x6474e551	/* Indicates stack executability */ -#define PT_GNU_RELRO	0x6474e552	/* Read-only after relocation */ -#define PT_LOSUNW	0x6ffffffa -#define PT_SUNWBSS	0x6ffffffa	/* Sun Specific segment */ -#define PT_SUNWSTACK	0x6ffffffb	/* Stack segment */ -#define PT_HISUNW	0x6fffffff -#define PT_HIOS		0x6fffffff	/* End of OS-specific */ -#define PT_LOPROC	0x70000000	/* Start of processor-specific */ -#define PT_HIPROC	0x7fffffff	/* End of processor-specific */ - -/* Legal values for p_flags (segment flags).  */ - -#define PF_X		(1 << 0)	/* Segment is executable */ -#define PF_W		(1 << 1)	/* Segment is writable */ -#define PF_R		(1 << 2)	/* Segment is readable */ -#define PF_MASKOS	0x0ff00000	/* OS-specific */ -#define PF_MASKPROC	0xf0000000	/* Processor-specific */ - -/* Legal values for note segment descriptor types for core files. */ - -#define NT_PRSTATUS	1		/* Contains copy of prstatus struct */ -#define NT_FPREGSET	2		/* Contains copy of fpregset struct */ -#define NT_PRPSINFO	3		/* Contains copy of prpsinfo struct */ -#define NT_PRXREG	4		/* Contains copy of prxregset struct */ -#define NT_TASKSTRUCT	4		/* Contains copy of task structure */ -#define NT_PLATFORM	5		/* String from sysinfo(SI_PLATFORM) */ -#define NT_AUXV		6		/* Contains copy of auxv array */ -#define NT_GWINDOWS	7		/* Contains copy of gwindows struct */ -#define NT_ASRS		8		/* Contains copy of asrset struct */ -#define NT_PSTATUS	10		/* Contains copy of pstatus struct */ -#define NT_PSINFO	13		/* Contains copy of psinfo struct */ -#define NT_PRCRED	14		/* Contains copy of prcred struct */ -#define NT_UTSNAME	15		/* Contains copy of utsname struct */ -#define NT_LWPSTATUS	16		/* Contains copy of lwpstatus struct */ -#define NT_LWPSINFO	17		/* Contains copy of lwpinfo struct */ -#define NT_PRFPXREG	20		/* Contains copy of fprxregset struct*/ - -/* Legal values for the note segment descriptor types for object files.  */ - -#define NT_VERSION	1		/* Contains a version string.  */ - - -/* Dynamic section entry.  */ - -typedef struct -{ -  Elf32_Sword	d_tag;			/* Dynamic entry type */ -  union -    { -      Elf32_Word d_val;			/* Integer value */ -      Elf32_Addr d_ptr;			/* Address value */ -    } d_un; -} Elf32_Dyn; - -typedef struct -{ -  Elf64_Sxword	d_tag;			/* Dynamic entry type */ -  union -    { -      Elf64_Xword d_val;		/* Integer value */ -      Elf64_Addr d_ptr;			/* Address value */ -    } d_un; -} Elf64_Dyn; - -/* Legal values for d_tag (dynamic entry type).  */ - -#define DT_NULL		0		/* Marks end of dynamic section */ -#define DT_NEEDED	1		/* Name of needed library */ -#define DT_PLTRELSZ	2		/* Size in bytes of PLT relocs */ -#define DT_PLTGOT	3		/* Processor defined value */ -#define DT_HASH		4		/* Address of symbol hash table */ -#define DT_STRTAB	5		/* Address of string table */ -#define DT_SYMTAB	6		/* Address of symbol table */ -#define DT_RELA		7		/* Address of Rela relocs */ -#define DT_RELASZ	8		/* Total size of Rela relocs */ -#define DT_RELAENT	9		/* Size of one Rela reloc */ -#define DT_STRSZ	10		/* Size of string table */ -#define DT_SYMENT	11		/* Size of one symbol table entry */ -#define DT_INIT		12		/* Address of init function */ -#define DT_FINI		13		/* Address of termination function */ -#define DT_SONAME	14		/* Name of shared object */ -#define DT_RPATH	15		/* Library search path (deprecated) */ -#define DT_SYMBOLIC	16		/* Start symbol search here */ -#define DT_REL		17		/* Address of Rel relocs */ -#define DT_RELSZ	18		/* Total size of Rel relocs */ -#define DT_RELENT	19		/* Size of one Rel reloc */ -#define DT_PLTREL	20		/* Type of reloc in PLT */ -#define DT_DEBUG	21		/* For debugging; unspecified */ -#define DT_TEXTREL	22		/* Reloc might modify .text */ -#define DT_JMPREL	23		/* Address of PLT relocs */ -#define	DT_BIND_NOW	24		/* Process relocations of object */ -#define	DT_INIT_ARRAY	25		/* Array with addresses of init fct */ -#define	DT_FINI_ARRAY	26		/* Array with addresses of fini fct */ -#define	DT_INIT_ARRAYSZ	27		/* Size in bytes of DT_INIT_ARRAY */ -#define	DT_FINI_ARRAYSZ	28		/* Size in bytes of DT_FINI_ARRAY */ -#define DT_RUNPATH	29		/* Library search path */ -#define DT_FLAGS	30		/* Flags for the object being loaded */ -#define DT_ENCODING	32		/* Start of encoded range */ -#define DT_PREINIT_ARRAY 32		/* Array with addresses of preinit fct*/ -#define DT_PREINIT_ARRAYSZ 33		/* size in bytes of DT_PREINIT_ARRAY */ -#define	DT_NUM		34		/* Number used */ -#define DT_LOOS		0x6000000d	/* Start of OS-specific */ -#define DT_HIOS		0x6ffff000	/* End of OS-specific */ -#define DT_LOPROC	0x70000000	/* Start of processor-specific */ -#define DT_HIPROC	0x7fffffff	/* End of processor-specific */ -#define	DT_PROCNUM	DT_MIPS_NUM	/* Most used by any processor */ - -/* DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the -   Dyn.d_un.d_val field of the Elf*_Dyn structure.  This follows Sun's -   approach.  */ -#define DT_VALRNGLO	0x6ffffd00 -#define DT_GNU_PRELINKED 0x6ffffdf5	/* Prelinking timestamp */ -#define DT_GNU_CONFLICTSZ 0x6ffffdf6	/* Size of conflict section */ -#define DT_GNU_LIBLISTSZ 0x6ffffdf7	/* Size of library list */ -#define DT_CHECKSUM	0x6ffffdf8 -#define DT_PLTPADSZ	0x6ffffdf9 -#define DT_MOVEENT	0x6ffffdfa -#define DT_MOVESZ	0x6ffffdfb -#define DT_FEATURE_1	0x6ffffdfc	/* Feature selection (DTF_*).  */ -#define DT_POSFLAG_1	0x6ffffdfd	/* Flags for DT_* entries, effecting -					   the following DT_* entry.  */ -#define DT_SYMINSZ	0x6ffffdfe	/* Size of syminfo table (in bytes) */ -#define DT_SYMINENT	0x6ffffdff	/* Entry size of syminfo */ -#define DT_VALRNGHI	0x6ffffdff -#define DT_VALTAGIDX(tag)	(DT_VALRNGHI - (tag))	/* Reverse order! */ -#define DT_VALNUM 12 - -/* DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the -   Dyn.d_un.d_ptr field of the Elf*_Dyn structure. - -   If any adjustment is made to the ELF object after it has been -   built these entries will need to be adjusted.  */ -#define DT_ADDRRNGLO	0x6ffffe00 -#define DT_GNU_CONFLICT	0x6ffffef8	/* Start of conflict section */ -#define DT_GNU_LIBLIST	0x6ffffef9	/* Library list */ -#define DT_CONFIG	0x6ffffefa	/* Configuration information.  */ -#define DT_DEPAUDIT	0x6ffffefb	/* Dependency auditing.  */ -#define DT_AUDIT	0x6ffffefc	/* Object auditing.  */ -#define	DT_PLTPAD	0x6ffffefd	/* PLT padding.  */ -#define	DT_MOVETAB	0x6ffffefe	/* Move table.  */ -#define DT_SYMINFO	0x6ffffeff	/* Syminfo table.  */ -#define DT_ADDRRNGHI	0x6ffffeff -#define DT_ADDRTAGIDX(tag)	(DT_ADDRRNGHI - (tag))	/* Reverse order! */ -#define DT_ADDRNUM 10 - -/* The versioning entry types.  The next are defined as part of the -   GNU extension.  */ -#define DT_VERSYM	0x6ffffff0 - -#define DT_RELACOUNT	0x6ffffff9 -#define DT_RELCOUNT	0x6ffffffa - -/* These were chosen by Sun.  */ -#define DT_FLAGS_1	0x6ffffffb	/* State flags, see DF_1_* below.  */ -#define	DT_VERDEF	0x6ffffffc	/* Address of version definition -					   table */ -#define	DT_VERDEFNUM	0x6ffffffd	/* Number of version definitions */ -#define	DT_VERNEED	0x6ffffffe	/* Address of table with needed -					   versions */ -#define	DT_VERNEEDNUM	0x6fffffff	/* Number of needed versions */ -#define DT_VERSIONTAGIDX(tag)	(DT_VERNEEDNUM - (tag))	/* Reverse order! */ -#define DT_VERSIONTAGNUM 16 - -/* Sun added these machine-independent extensions in the "processor-specific" -   range.  Be compatible.  */ -#define DT_AUXILIARY    0x7ffffffd      /* Shared object to load before self */ -#define DT_FILTER       0x7fffffff      /* Shared object to get values from */ -#define DT_EXTRATAGIDX(tag)	((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) -#define DT_EXTRANUM	3 - -/* Values of `d_un.d_val' in the DT_FLAGS entry.  */ -#define DF_ORIGIN	0x00000001	/* Object may use DF_ORIGIN */ -#define DF_SYMBOLIC	0x00000002	/* Symbol resolutions starts here */ -#define DF_TEXTREL	0x00000004	/* Object contains text relocations */ -#define DF_BIND_NOW	0x00000008	/* No lazy binding for this object */ -#define DF_STATIC_TLS	0x00000010	/* Module uses the static TLS model */ - -/* State flags selectable in the `d_un.d_val' element of the DT_FLAGS_1 -   entry in the dynamic section.  */ -#define DF_1_NOW	0x00000001	/* Set RTLD_NOW for this object.  */ -#define DF_1_GLOBAL	0x00000002	/* Set RTLD_GLOBAL for this object.  */ -#define DF_1_GROUP	0x00000004	/* Set RTLD_GROUP for this object.  */ -#define DF_1_NODELETE	0x00000008	/* Set RTLD_NODELETE for this object.*/ -#define DF_1_LOADFLTR	0x00000010	/* Trigger filtee loading at runtime.*/ -#define DF_1_INITFIRST	0x00000020	/* Set RTLD_INITFIRST for this object*/ -#define DF_1_NOOPEN	0x00000040	/* Set RTLD_NOOPEN for this object.  */ -#define DF_1_ORIGIN	0x00000080	/* $ORIGIN must be handled.  */ -#define DF_1_DIRECT	0x00000100	/* Direct binding enabled.  */ -#define DF_1_TRANS	0x00000200 -#define DF_1_INTERPOSE	0x00000400	/* Object is used to interpose.  */ -#define DF_1_NODEFLIB	0x00000800	/* Ignore default lib search path.  */ -#define DF_1_NODUMP	0x00001000	/* Object can't be dldump'ed.  */ -#define DF_1_CONFALT	0x00002000	/* Configuration alternative created.*/ -#define DF_1_ENDFILTEE	0x00004000	/* Filtee terminates filters search. */ -#define	DF_1_DISPRELDNE	0x00008000	/* Disp reloc applied at build time. */ -#define	DF_1_DISPRELPND	0x00010000	/* Disp reloc applied at run-time.  */ - -/* Flags for the feature selection in DT_FEATURE_1.  */ -#define DTF_1_PARINIT	0x00000001 -#define DTF_1_CONFEXP	0x00000002 - -/* Flags in the DT_POSFLAG_1 entry effecting only the next DT_* entry.  */ -#define DF_P1_LAZYLOAD	0x00000001	/* Lazyload following object.  */ -#define DF_P1_GROUPPERM	0x00000002	/* Symbols from next object are not -					   generally available.  */ - -/* Version definition sections.  */ - -typedef struct -{ -  Elf32_Half	vd_version;		/* Version revision */ -  Elf32_Half	vd_flags;		/* Version information */ -  Elf32_Half	vd_ndx;			/* Version Index */ -  Elf32_Half	vd_cnt;			/* Number of associated aux entries */ -  Elf32_Word	vd_hash;		/* Version name hash value */ -  Elf32_Word	vd_aux;			/* Offset in bytes to verdaux array */ -  Elf32_Word	vd_next;		/* Offset in bytes to next verdef -					   entry */ -} Elf32_Verdef; - -typedef struct -{ -  Elf64_Half	vd_version;		/* Version revision */ -  Elf64_Half	vd_flags;		/* Version information */ -  Elf64_Half	vd_ndx;			/* Version Index */ -  Elf64_Half	vd_cnt;			/* Number of associated aux entries */ -  Elf64_Word	vd_hash;		/* Version name hash value */ -  Elf64_Word	vd_aux;			/* Offset in bytes to verdaux array */ -  Elf64_Word	vd_next;		/* Offset in bytes to next verdef -					   entry */ -} Elf64_Verdef; - - -/* Legal values for vd_version (version revision).  */ -#define VER_DEF_NONE	0		/* No version */ -#define VER_DEF_CURRENT	1		/* Current version */ -#define VER_DEF_NUM	2		/* Given version number */ - -/* Legal values for vd_flags (version information flags).  */ -#define VER_FLG_BASE	0x1		/* Version definition of file itself */ -#define VER_FLG_WEAK	0x2		/* Weak version identifier */ - -/* Versym symbol index values.  */ -#define	VER_NDX_LOCAL		0	/* Symbol is local.  */ -#define	VER_NDX_GLOBAL		1	/* Symbol is global.  */ -#define	VER_NDX_LORESERVE	0xff00	/* Beginning of reserved entries.  */ -#define	VER_NDX_ELIMINATE	0xff01	/* Symbol is to be eliminated.  */ - -/* Auxialiary version information.  */ - -typedef struct -{ -  Elf32_Word	vda_name;		/* Version or dependency names */ -  Elf32_Word	vda_next;		/* Offset in bytes to next verdaux -					   entry */ -} Elf32_Verdaux; - -typedef struct -{ -  Elf64_Word	vda_name;		/* Version or dependency names */ -  Elf64_Word	vda_next;		/* Offset in bytes to next verdaux -					   entry */ -} Elf64_Verdaux; - - -/* Version dependency section.  */ - -typedef struct -{ -  Elf32_Half	vn_version;		/* Version of structure */ -  Elf32_Half	vn_cnt;			/* Number of associated aux entries */ -  Elf32_Word	vn_file;		/* Offset of filename for this -					   dependency */ -  Elf32_Word	vn_aux;			/* Offset in bytes to vernaux array */ -  Elf32_Word	vn_next;		/* Offset in bytes to next verneed -					   entry */ -} Elf32_Verneed; - -typedef struct -{ -  Elf64_Half	vn_version;		/* Version of structure */ -  Elf64_Half	vn_cnt;			/* Number of associated aux entries */ -  Elf64_Word	vn_file;		/* Offset of filename for this -					   dependency */ -  Elf64_Word	vn_aux;			/* Offset in bytes to vernaux array */ -  Elf64_Word	vn_next;		/* Offset in bytes to next verneed -					   entry */ -} Elf64_Verneed; - - -/* Legal values for vn_version (version revision).  */ -#define VER_NEED_NONE	 0		/* No version */ -#define VER_NEED_CURRENT 1		/* Current version */ -#define VER_NEED_NUM	 2		/* Given version number */ - -/* Auxiliary needed version information.  */ - -typedef struct -{ -  Elf32_Word	vna_hash;		/* Hash value of dependency name */ -  Elf32_Half	vna_flags;		/* Dependency specific information */ -  Elf32_Half	vna_other;		/* Unused */ -  Elf32_Word	vna_name;		/* Dependency name string offset */ -  Elf32_Word	vna_next;		/* Offset in bytes to next vernaux -					   entry */ -} Elf32_Vernaux; - -typedef struct -{ -  Elf64_Word	vna_hash;		/* Hash value of dependency name */ -  Elf64_Half	vna_flags;		/* Dependency specific information */ -  Elf64_Half	vna_other;		/* Unused */ -  Elf64_Word	vna_name;		/* Dependency name string offset */ -  Elf64_Word	vna_next;		/* Offset in bytes to next vernaux -					   entry */ -} Elf64_Vernaux; - - -/* Legal values for vna_flags.  */ -#define VER_FLG_WEAK	0x2		/* Weak version identifier */ - - -/* Auxiliary vector.  */ - -/* This vector is normally only used by the program interpreter.  The -   usual definition in an ABI supplement uses the name auxv_t.  The -   vector is not usually defined in a standard <elf.h> file, but it -   can't hurt.  We rename it to avoid conflicts.  The sizes of these -   types are an arrangement between the exec server and the program -   interpreter, so we don't fully specify them here.  */ - -typedef struct -{ -  int a_type;			/* Entry type */ -  union -    { -      long int a_val;		/* Integer value */ -      void *a_ptr;		/* Pointer value */ -      void (*a_fcn) (void);	/* Function pointer value */ -    } a_un; -} Elf32_auxv_t; - -typedef struct -{ -  long int a_type;		/* Entry type */ -  union -    { -      long int a_val;		/* Integer value */ -      void *a_ptr;		/* Pointer value */ -      void (*a_fcn) (void);	/* Function pointer value */ -    } a_un; -} Elf64_auxv_t; - -/* Legal values for a_type (entry type).  */ - -#define AT_NULL		0		/* End of vector */ -#define AT_IGNORE	1		/* Entry should be ignored */ -#define AT_EXECFD	2		/* File descriptor of program */ -#define AT_PHDR		3		/* Program headers for program */ -#define AT_PHENT	4		/* Size of program header entry */ -#define AT_PHNUM	5		/* Number of program headers */ -#define AT_PAGESZ	6		/* System page size */ -#define AT_BASE		7		/* Base address of interpreter */ -#define AT_FLAGS	8		/* Flags */ -#define AT_ENTRY	9		/* Entry point of program */ -#define AT_NOTELF	10		/* Program is not ELF */ -#define AT_UID		11		/* Real uid */ -#define AT_EUID		12		/* Effective uid */ -#define AT_GID		13		/* Real gid */ -#define AT_EGID		14		/* Effective gid */ -#define AT_CLKTCK	17		/* Frequency of times() */ - -/* Some more special a_type values describing the hardware.  */ -#define AT_PLATFORM	15		/* String identifying platform.  */ -#define AT_HWCAP	16		/* Machine dependent hints about -					   processor capabilities.  */ - -/* This entry gives some information about the FPU initialization -   performed by the kernel.  */ -#define AT_FPUCW	18		/* Used FPU control word.  */ - -/* Cache block sizes.  */ -#define AT_DCACHEBSIZE	19		/* Data cache block size.  */ -#define AT_ICACHEBSIZE	20		/* Instruction cache block size.  */ -#define AT_UCACHEBSIZE	21		/* Unified cache block size.  */ - -/* A special ignored value for PPC, used by the kernel to control the -   interpretation of the AUXV. Must be > 16.  */ -#define AT_IGNOREPPC	22		/* Entry should be ignored.  */ - -#define	AT_SECURE	23		/* Boolean, was exec setuid-like?  */ - -/* Pointer to the global system page used for system calls and other -   nice things.  */ -#define AT_SYSINFO	32 -#define AT_SYSINFO_EHDR	33 - -/* Shapes of the caches.  Bits 0-3 contains associativity; bits 4-7 contains -   log2 of line size; mask those to get cache size.  */ -#define AT_L1I_CACHESHAPE	34 -#define AT_L1D_CACHESHAPE	35 -#define AT_L2_CACHESHAPE	36 -#define AT_L3_CACHESHAPE	37 - -/* Note section contents.  Each entry in the note section begins with -   a header of a fixed form.  */ - -typedef struct -{ -  Elf32_Word n_namesz;			/* Length of the note's name.  */ -  Elf32_Word n_descsz;			/* Length of the note's descriptor.  */ -  Elf32_Word n_type;			/* Type of the note.  */ -} Elf32_Nhdr; - -typedef struct -{ -  Elf64_Word n_namesz;			/* Length of the note's name.  */ -  Elf64_Word n_descsz;			/* Length of the note's descriptor.  */ -  Elf64_Word n_type;			/* Type of the note.  */ -} Elf64_Nhdr; - -/* Known names of notes.  */ - -/* Solaris entries in the note section have this name.  */ -#define ELF_NOTE_SOLARIS	"SUNW Solaris" - -/* Note entries for GNU systems have this name.  */ -#define ELF_NOTE_GNU		"GNU" - - -/* Defined types of notes for Solaris.  */ - -/* Value of descriptor (one word) is desired pagesize for the binary.  */ -#define ELF_NOTE_PAGESIZE_HINT	1 - - -/* Defined note types for GNU systems.  */ - -/* ABI information.  The descriptor consists of words: -   word 0: OS descriptor -   word 1: major version of the ABI -   word 2: minor version of the ABI -   word 3: subminor version of the ABI -*/ -#define ELF_NOTE_ABI		1 - -/* Known OSes.  These value can appear in word 0 of an ELF_NOTE_ABI -   note section entry.  */ -#define ELF_NOTE_OS_LINUX	0 -#define ELF_NOTE_OS_GNU		1 -#define ELF_NOTE_OS_SOLARIS2	2 -#define ELF_NOTE_OS_FREEBSD	3 - - -/* Move records.  */ -typedef struct -{ -  Elf32_Xword m_value;		/* Symbol value.  */ -  Elf32_Word m_info;		/* Size and index.  */ -  Elf32_Word m_poffset;		/* Symbol offset.  */ -  Elf32_Half m_repeat;		/* Repeat count.  */ -  Elf32_Half m_stride;		/* Stride info.  */ -} Elf32_Move; - -typedef struct -{ -  Elf64_Xword m_value;		/* Symbol value.  */ -  Elf64_Xword m_info;		/* Size and index.  */ -  Elf64_Xword m_poffset;	/* Symbol offset.  */ -  Elf64_Half m_repeat;		/* Repeat count.  */ -  Elf64_Half m_stride;		/* Stride info.  */ -} Elf64_Move; - -/* Macro to construct move records.  */ -#define ELF32_M_SYM(info)	((info) >> 8) -#define ELF32_M_SIZE(info)	((unsigned char) (info)) -#define ELF32_M_INFO(sym, size)	(((sym) << 8) + (unsigned char) (size)) - -#define ELF64_M_SYM(info)	ELF32_M_SYM (info) -#define ELF64_M_SIZE(info)	ELF32_M_SIZE (info) -#define ELF64_M_INFO(sym, size)	ELF32_M_INFO (sym, size) - - -/* Motorola 68k specific definitions.  */ - -/* Values for Elf32_Ehdr.e_flags.  */ -#define EF_CPU32	0x00810000 - -/* m68k relocs.  */ - -#define R_68K_NONE	0		/* No reloc */ -#define R_68K_32	1		/* Direct 32 bit  */ -#define R_68K_16	2		/* Direct 16 bit  */ -#define R_68K_8		3		/* Direct 8 bit  */ -#define R_68K_PC32	4		/* PC relative 32 bit */ -#define R_68K_PC16	5		/* PC relative 16 bit */ -#define R_68K_PC8	6		/* PC relative 8 bit */ -#define R_68K_GOT32	7		/* 32 bit PC relative GOT entry */ -#define R_68K_GOT16	8		/* 16 bit PC relative GOT entry */ -#define R_68K_GOT8	9		/* 8 bit PC relative GOT entry */ -#define R_68K_GOT32O	10		/* 32 bit GOT offset */ -#define R_68K_GOT16O	11		/* 16 bit GOT offset */ -#define R_68K_GOT8O	12		/* 8 bit GOT offset */ -#define R_68K_PLT32	13		/* 32 bit PC relative PLT address */ -#define R_68K_PLT16	14		/* 16 bit PC relative PLT address */ -#define R_68K_PLT8	15		/* 8 bit PC relative PLT address */ -#define R_68K_PLT32O	16		/* 32 bit PLT offset */ -#define R_68K_PLT16O	17		/* 16 bit PLT offset */ -#define R_68K_PLT8O	18		/* 8 bit PLT offset */ -#define R_68K_COPY	19		/* Copy symbol at runtime */ -#define R_68K_GLOB_DAT	20		/* Create GOT entry */ -#define R_68K_JMP_SLOT	21		/* Create PLT entry */ -#define R_68K_RELATIVE	22		/* Adjust by program base */ -/* Keep this the last entry.  */ -#define R_68K_NUM	23 - -/* Intel 80386 specific definitions.  */ - -/* i386 relocs.  */ - -#define R_386_NONE	   0		/* No reloc */ -#define R_386_32	   1		/* Direct 32 bit  */ -#define R_386_PC32	   2		/* PC relative 32 bit */ -#define R_386_GOT32	   3		/* 32 bit GOT entry */ -#define R_386_PLT32	   4		/* 32 bit PLT address */ -#define R_386_COPY	   5		/* Copy symbol at runtime */ -#define R_386_GLOB_DAT	   6		/* Create GOT entry */ -#define R_386_JMP_SLOT	   7		/* Create PLT entry */ -#define R_386_RELATIVE	   8		/* Adjust by program base */ -#define R_386_GOTOFF	   9		/* 32 bit offset to GOT */ -#define R_386_GOTPC	   10		/* 32 bit PC relative offset to GOT */ -#define R_386_32PLT	   11 -#define R_386_TLS_TPOFF	   14		/* Offset in static TLS block */ -#define R_386_TLS_IE	   15		/* Address of GOT entry for static TLS -					   block offset */ -#define R_386_TLS_GOTIE	   16		/* GOT entry for static TLS block -					   offset */ -#define R_386_TLS_LE	   17		/* Offset relative to static TLS -					   block */ -#define R_386_TLS_GD	   18		/* Direct 32 bit for GNU version of -					   general dynamic thread local data */ -#define R_386_TLS_LDM	   19		/* Direct 32 bit for GNU version of -					   local dynamic thread local data -					   in LE code */ -#define R_386_16	   20 -#define R_386_PC16	   21 -#define R_386_8		   22 -#define R_386_PC8	   23 -#define R_386_TLS_GD_32	   24		/* Direct 32 bit for general dynamic -					   thread local data */ -#define R_386_TLS_GD_PUSH  25		/* Tag for pushl in GD TLS code */ -#define R_386_TLS_GD_CALL  26		/* Relocation for call to -					   __tls_get_addr() */ -#define R_386_TLS_GD_POP   27		/* Tag for popl in GD TLS code */ -#define R_386_TLS_LDM_32   28		/* Direct 32 bit for local dynamic -					   thread local data in LE code */ -#define R_386_TLS_LDM_PUSH 29		/* Tag for pushl in LDM TLS code */ -#define R_386_TLS_LDM_CALL 30		/* Relocation for call to -					   __tls_get_addr() in LDM code */ -#define R_386_TLS_LDM_POP  31		/* Tag for popl in LDM TLS code */ -#define R_386_TLS_LDO_32   32		/* Offset relative to TLS block */ -#define R_386_TLS_IE_32	   33		/* GOT entry for negated static TLS -					   block offset */ -#define R_386_TLS_LE_32	   34		/* Negated offset relative to static -					   TLS block */ -#define R_386_TLS_DTPMOD32 35		/* ID of module containing symbol */ -#define R_386_TLS_DTPOFF32 36		/* Offset in TLS block */ -#define R_386_TLS_TPOFF32  37		/* Negated offset in static TLS block */ -/* Keep this the last entry.  */ -#define R_386_NUM	   38 - -/* SUN SPARC specific definitions.  */ - -/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ - -#define STT_SPARC_REGISTER	13	/* Global register reserved to app. */ - -/* Values for Elf64_Ehdr.e_flags.  */ - -#define EF_SPARCV9_MM		3 -#define EF_SPARCV9_TSO		0 -#define EF_SPARCV9_PSO		1 -#define EF_SPARCV9_RMO		2 -#define EF_SPARC_LEDATA		0x800000 /* little endian data */ -#define EF_SPARC_EXT_MASK	0xFFFF00 -#define EF_SPARC_32PLUS		0x000100 /* generic V8+ features */ -#define EF_SPARC_SUN_US1	0x000200 /* Sun UltraSPARC1 extensions */ -#define EF_SPARC_HAL_R1		0x000400 /* HAL R1 extensions */ -#define EF_SPARC_SUN_US3	0x000800 /* Sun UltraSPARCIII extensions */ - -/* SPARC relocs.  */ - -#define R_SPARC_NONE		0	/* No reloc */ -#define R_SPARC_8		1	/* Direct 8 bit */ -#define R_SPARC_16		2	/* Direct 16 bit */ -#define R_SPARC_32		3	/* Direct 32 bit */ -#define R_SPARC_DISP8		4	/* PC relative 8 bit */ -#define R_SPARC_DISP16		5	/* PC relative 16 bit */ -#define R_SPARC_DISP32		6	/* PC relative 32 bit */ -#define R_SPARC_WDISP30		7	/* PC relative 30 bit shifted */ -#define R_SPARC_WDISP22		8	/* PC relative 22 bit shifted */ -#define R_SPARC_HI22		9	/* High 22 bit */ -#define R_SPARC_22		10	/* Direct 22 bit */ -#define R_SPARC_13		11	/* Direct 13 bit */ -#define R_SPARC_LO10		12	/* Truncated 10 bit */ -#define R_SPARC_GOT10		13	/* Truncated 10 bit GOT entry */ -#define R_SPARC_GOT13		14	/* 13 bit GOT entry */ -#define R_SPARC_GOT22		15	/* 22 bit GOT entry shifted */ -#define R_SPARC_PC10		16	/* PC relative 10 bit truncated */ -#define R_SPARC_PC22		17	/* PC relative 22 bit shifted */ -#define R_SPARC_WPLT30		18	/* 30 bit PC relative PLT address */ -#define R_SPARC_COPY		19	/* Copy symbol at runtime */ -#define R_SPARC_GLOB_DAT	20	/* Create GOT entry */ -#define R_SPARC_JMP_SLOT	21	/* Create PLT entry */ -#define R_SPARC_RELATIVE	22	/* Adjust by program base */ -#define R_SPARC_UA32		23	/* Direct 32 bit unaligned */ - -/* Additional Sparc64 relocs.  */ - -#define R_SPARC_PLT32		24	/* Direct 32 bit ref to PLT entry */ -#define R_SPARC_HIPLT22		25	/* High 22 bit PLT entry */ -#define R_SPARC_LOPLT10		26	/* Truncated 10 bit PLT entry */ -#define R_SPARC_PCPLT32		27	/* PC rel 32 bit ref to PLT entry */ -#define R_SPARC_PCPLT22		28	/* PC rel high 22 bit PLT entry */ -#define R_SPARC_PCPLT10		29	/* PC rel trunc 10 bit PLT entry */ -#define R_SPARC_10		30	/* Direct 10 bit */ -#define R_SPARC_11		31	/* Direct 11 bit */ -#define R_SPARC_64		32	/* Direct 64 bit */ -#define R_SPARC_OLO10		33	/* 10bit with secondary 13bit addend */ -#define R_SPARC_HH22		34	/* Top 22 bits of direct 64 bit */ -#define R_SPARC_HM10		35	/* High middle 10 bits of ... */ -#define R_SPARC_LM22		36	/* Low middle 22 bits of ... */ -#define R_SPARC_PC_HH22		37	/* Top 22 bits of pc rel 64 bit */ -#define R_SPARC_PC_HM10		38	/* High middle 10 bit of ... */ -#define R_SPARC_PC_LM22		39	/* Low miggle 22 bits of ... */ -#define R_SPARC_WDISP16		40	/* PC relative 16 bit shifted */ -#define R_SPARC_WDISP19		41	/* PC relative 19 bit shifted */ -#define R_SPARC_7		43	/* Direct 7 bit */ -#define R_SPARC_5		44	/* Direct 5 bit */ -#define R_SPARC_6		45	/* Direct 6 bit */ -#define R_SPARC_DISP64		46	/* PC relative 64 bit */ -#define R_SPARC_PLT64		47	/* Direct 64 bit ref to PLT entry */ -#define R_SPARC_HIX22		48	/* High 22 bit complemented */ -#define R_SPARC_LOX10		49	/* Truncated 11 bit complemented */ -#define R_SPARC_H44		50	/* Direct high 12 of 44 bit */ -#define R_SPARC_M44		51	/* Direct mid 22 of 44 bit */ -#define R_SPARC_L44		52	/* Direct low 10 of 44 bit */ -#define R_SPARC_REGISTER	53	/* Global register usage */ -#define R_SPARC_UA64		54	/* Direct 64 bit unaligned */ -#define R_SPARC_UA16		55	/* Direct 16 bit unaligned */ -#define R_SPARC_TLS_GD_HI22	56 -#define R_SPARC_TLS_GD_LO10	57 -#define R_SPARC_TLS_GD_ADD	58 -#define R_SPARC_TLS_GD_CALL	59 -#define R_SPARC_TLS_LDM_HI22	60 -#define R_SPARC_TLS_LDM_LO10	61 -#define R_SPARC_TLS_LDM_ADD	62 -#define R_SPARC_TLS_LDM_CALL	63 -#define R_SPARC_TLS_LDO_HIX22	64 -#define R_SPARC_TLS_LDO_LOX10	65 -#define R_SPARC_TLS_LDO_ADD	66 -#define R_SPARC_TLS_IE_HI22	67 -#define R_SPARC_TLS_IE_LO10	68 -#define R_SPARC_TLS_IE_LD	69 -#define R_SPARC_TLS_IE_LDX	70 -#define R_SPARC_TLS_IE_ADD	71 -#define R_SPARC_TLS_LE_HIX22	72 -#define R_SPARC_TLS_LE_LOX10	73 -#define R_SPARC_TLS_DTPMOD32	74 -#define R_SPARC_TLS_DTPMOD64	75 -#define R_SPARC_TLS_DTPOFF32	76 -#define R_SPARC_TLS_DTPOFF64	77 -#define R_SPARC_TLS_TPOFF32	78 -#define R_SPARC_TLS_TPOFF64	79 -/* Keep this the last entry.  */ -#define R_SPARC_NUM		80 - -/* For Sparc64, legal values for d_tag of Elf64_Dyn.  */ - -#define DT_SPARC_REGISTER 0x70000001 -#define DT_SPARC_NUM	2 - -/* Bits present in AT_HWCAP, primarily for Sparc32.  */ - -#define HWCAP_SPARC_FLUSH	1	/* The cpu supports flush insn.  */ -#define HWCAP_SPARC_STBAR	2 -#define HWCAP_SPARC_SWAP	4 -#define HWCAP_SPARC_MULDIV	8 -#define HWCAP_SPARC_V9		16	/* The cpu is v9, so v8plus is ok.  */ -#define HWCAP_SPARC_ULTRA3	32 - -/* MIPS R3000 specific definitions.  */ - -/* Legal values for e_flags field of Elf32_Ehdr.  */ - -#define EF_MIPS_NOREORDER   1		/* A .noreorder directive was used */ -#define EF_MIPS_PIC	    2		/* Contains PIC code */ -#define EF_MIPS_CPIC	    4		/* Uses PIC calling sequence */ -#define EF_MIPS_XGOT	    8 -#define EF_MIPS_64BIT_WHIRL 16 -#define EF_MIPS_ABI2	    32 -#define EF_MIPS_ABI_ON32    64 -#define EF_MIPS_ARCH	    0xf0000000	/* MIPS architecture level */ - -/* Legal values for MIPS architecture level.  */ - -#define EF_MIPS_ARCH_1	    0x00000000	/* -mips1 code.  */ -#define EF_MIPS_ARCH_2	    0x10000000	/* -mips2 code.  */ -#define EF_MIPS_ARCH_3	    0x20000000	/* -mips3 code.  */ -#define EF_MIPS_ARCH_4	    0x30000000	/* -mips4 code.  */ -#define EF_MIPS_ARCH_5	    0x40000000	/* -mips5 code.  */ -#define EF_MIPS_ARCH_32	    0x60000000	/* MIPS32 code.  */ -#define EF_MIPS_ARCH_64	    0x70000000	/* MIPS64 code.  */ - -/* The following are non-official names and should not be used.  */ - -#define E_MIPS_ARCH_1	  0x00000000	/* -mips1 code.  */ -#define E_MIPS_ARCH_2	  0x10000000	/* -mips2 code.  */ -#define E_MIPS_ARCH_3	  0x20000000	/* -mips3 code.  */ -#define E_MIPS_ARCH_4	  0x30000000	/* -mips4 code.  */ -#define E_MIPS_ARCH_5	  0x40000000	/* -mips5 code.  */ -#define E_MIPS_ARCH_32	  0x60000000	/* MIPS32 code.  */ -#define E_MIPS_ARCH_64	  0x70000000	/* MIPS64 code.  */ - -/* Special section indices.  */ - -#define SHN_MIPS_ACOMMON    0xff00	/* Allocated common symbols */ -#define SHN_MIPS_TEXT	    0xff01	/* Allocated test symbols.  */ -#define SHN_MIPS_DATA	    0xff02	/* Allocated data symbols.  */ -#define SHN_MIPS_SCOMMON    0xff03	/* Small common symbols */ -#define SHN_MIPS_SUNDEFINED 0xff04	/* Small undefined symbols */ - -/* Legal values for sh_type field of Elf32_Shdr.  */ - -#define SHT_MIPS_LIBLIST       0x70000000 /* Shared objects used in link */ -#define SHT_MIPS_MSYM	       0x70000001 -#define SHT_MIPS_CONFLICT      0x70000002 /* Conflicting symbols */ -#define SHT_MIPS_GPTAB	       0x70000003 /* Global data area sizes */ -#define SHT_MIPS_UCODE	       0x70000004 /* Reserved for SGI/MIPS compilers */ -#define SHT_MIPS_DEBUG	       0x70000005 /* MIPS ECOFF debugging information*/ -#define SHT_MIPS_REGINFO       0x70000006 /* Register usage information */ -#define SHT_MIPS_PACKAGE       0x70000007 -#define SHT_MIPS_PACKSYM       0x70000008 -#define SHT_MIPS_RELD	       0x70000009 -#define SHT_MIPS_IFACE         0x7000000b -#define SHT_MIPS_CONTENT       0x7000000c -#define SHT_MIPS_OPTIONS       0x7000000d /* Miscellaneous options.  */ -#define SHT_MIPS_SHDR	       0x70000010 -#define SHT_MIPS_FDESC	       0x70000011 -#define SHT_MIPS_EXTSYM	       0x70000012 -#define SHT_MIPS_DENSE	       0x70000013 -#define SHT_MIPS_PDESC	       0x70000014 -#define SHT_MIPS_LOCSYM	       0x70000015 -#define SHT_MIPS_AUXSYM	       0x70000016 -#define SHT_MIPS_OPTSYM	       0x70000017 -#define SHT_MIPS_LOCSTR	       0x70000018 -#define SHT_MIPS_LINE	       0x70000019 -#define SHT_MIPS_RFDESC	       0x7000001a -#define SHT_MIPS_DELTASYM      0x7000001b -#define SHT_MIPS_DELTAINST     0x7000001c -#define SHT_MIPS_DELTACLASS    0x7000001d -#define SHT_MIPS_DWARF         0x7000001e /* DWARF debugging information.  */ -#define SHT_MIPS_DELTADECL     0x7000001f -#define SHT_MIPS_SYMBOL_LIB    0x70000020 -#define SHT_MIPS_EVENTS	       0x70000021 /* Event section.  */ -#define SHT_MIPS_TRANSLATE     0x70000022 -#define SHT_MIPS_PIXIE	       0x70000023 -#define SHT_MIPS_XLATE	       0x70000024 -#define SHT_MIPS_XLATE_DEBUG   0x70000025 -#define SHT_MIPS_WHIRL	       0x70000026 -#define SHT_MIPS_EH_REGION     0x70000027 -#define SHT_MIPS_XLATE_OLD     0x70000028 -#define SHT_MIPS_PDR_EXCEPTION 0x70000029 - -/* Legal values for sh_flags field of Elf32_Shdr.  */ - -#define SHF_MIPS_GPREL	 0x10000000	/* Must be part of global data area */ -#define SHF_MIPS_MERGE	 0x20000000 -#define SHF_MIPS_ADDR	 0x40000000 -#define SHF_MIPS_STRINGS 0x80000000 -#define SHF_MIPS_NOSTRIP 0x08000000 -#define SHF_MIPS_LOCAL	 0x04000000 -#define SHF_MIPS_NAMES	 0x02000000 -#define SHF_MIPS_NODUPE	 0x01000000 - - -/* Symbol tables.  */ - -/* MIPS specific values for `st_other'.  */ -#define STO_MIPS_DEFAULT		0x0 -#define STO_MIPS_INTERNAL		0x1 -#define STO_MIPS_HIDDEN			0x2 -#define STO_MIPS_PROTECTED		0x3 -#define STO_MIPS_SC_ALIGN_UNUSED	0xff - -/* MIPS specific values for `st_info'.  */ -#define STB_MIPS_SPLIT_COMMON		13 - -/* Entries found in sections of type SHT_MIPS_GPTAB.  */ - -typedef union -{ -  struct -    { -      Elf32_Word gt_current_g_value;	/* -G value used for compilation */ -      Elf32_Word gt_unused;		/* Not used */ -    } gt_header;			/* First entry in section */ -  struct -    { -      Elf32_Word gt_g_value;		/* If this value were used for -G */ -      Elf32_Word gt_bytes;		/* This many bytes would be used */ -    } gt_entry;				/* Subsequent entries in section */ -} Elf32_gptab; - -/* Entry found in sections of type SHT_MIPS_REGINFO.  */ - -typedef struct -{ -  Elf32_Word	ri_gprmask;		/* General registers used */ -  Elf32_Word	ri_cprmask[4];		/* Coprocessor registers used */ -  Elf32_Sword	ri_gp_value;		/* $gp register value */ -} Elf32_RegInfo; - -/* Entries found in sections of type SHT_MIPS_OPTIONS.  */ - -typedef struct -{ -  unsigned char kind;		/* Determines interpretation of the -				   variable part of descriptor.  */ -  unsigned char size;		/* Size of descriptor, including header.  */ -  Elf32_Section section;	/* Section header index of section affected, -				   0 for global options.  */ -  Elf32_Word info;		/* Kind-specific information.  */ -} Elf_Options; - -/* Values for `kind' field in Elf_Options.  */ - -#define ODK_NULL	0	/* Undefined.  */ -#define ODK_REGINFO	1	/* Register usage information.  */ -#define ODK_EXCEPTIONS	2	/* Exception processing options.  */ -#define ODK_PAD		3	/* Section padding options.  */ -#define ODK_HWPATCH	4	/* Hardware workarounds performed */ -#define ODK_FILL	5	/* record the fill value used by the linker. */ -#define ODK_TAGS	6	/* reserve space for desktop tools to write. */ -#define ODK_HWAND	7	/* HW workarounds.  'AND' bits when merging. */ -#define ODK_HWOR	8	/* HW workarounds.  'OR' bits when merging.  */ - -/* Values for `info' in Elf_Options for ODK_EXCEPTIONS entries.  */ - -#define OEX_FPU_MIN	0x1f	/* FPE's which MUST be enabled.  */ -#define OEX_FPU_MAX	0x1f00	/* FPE's which MAY be enabled.  */ -#define OEX_PAGE0	0x10000	/* page zero must be mapped.  */ -#define OEX_SMM		0x20000	/* Force sequential memory mode?  */ -#define OEX_FPDBUG	0x40000	/* Force floating point debug mode?  */ -#define OEX_PRECISEFP	OEX_FPDBUG -#define OEX_DISMISS	0x80000	/* Dismiss invalid address faults?  */ - -#define OEX_FPU_INVAL	0x10 -#define OEX_FPU_DIV0	0x08 -#define OEX_FPU_OFLO	0x04 -#define OEX_FPU_UFLO	0x02 -#define OEX_FPU_INEX	0x01 - -/* Masks for `info' in Elf_Options for an ODK_HWPATCH entry.  */ - -#define OHW_R4KEOP	0x1	/* R4000 end-of-page patch.  */ -#define OHW_R8KPFETCH	0x2	/* may need R8000 prefetch patch.  */ -#define OHW_R5KEOP	0x4	/* R5000 end-of-page patch.  */ -#define OHW_R5KCVTL	0x8	/* R5000 cvt.[ds].l bug.  clean=1.  */ - -#define OPAD_PREFIX	0x1 -#define OPAD_POSTFIX	0x2 -#define OPAD_SYMBOL	0x4 - -/* Entry found in `.options' section.  */ - -typedef struct -{ -  Elf32_Word hwp_flags1;	/* Extra flags.  */ -  Elf32_Word hwp_flags2;	/* Extra flags.  */ -} Elf_Options_Hw; - -/* Masks for `info' in ElfOptions for ODK_HWAND and ODK_HWOR entries.  */ - -#define OHWA0_R4KEOP_CHECKED	0x00000001 -#define OHWA1_R4KEOP_CLEAN	0x00000002 - -/* MIPS relocs.  */ - -#define R_MIPS_NONE		0	/* No reloc */ -#define R_MIPS_16		1	/* Direct 16 bit */ -#define R_MIPS_32		2	/* Direct 32 bit */ -#define R_MIPS_REL32		3	/* PC relative 32 bit */ -#define R_MIPS_26		4	/* Direct 26 bit shifted */ -#define R_MIPS_HI16		5	/* High 16 bit */ -#define R_MIPS_LO16		6	/* Low 16 bit */ -#define R_MIPS_GPREL16		7	/* GP relative 16 bit */ -#define R_MIPS_LITERAL		8	/* 16 bit literal entry */ -#define R_MIPS_GOT16		9	/* 16 bit GOT entry */ -#define R_MIPS_PC16		10	/* PC relative 16 bit */ -#define R_MIPS_CALL16		11	/* 16 bit GOT entry for function */ -#define R_MIPS_GPREL32		12	/* GP relative 32 bit */ - -#define R_MIPS_SHIFT5		16 -#define R_MIPS_SHIFT6		17 -#define R_MIPS_64		18 -#define R_MIPS_GOT_DISP		19 -#define R_MIPS_GOT_PAGE		20 -#define R_MIPS_GOT_OFST		21 -#define R_MIPS_GOT_HI16		22 -#define R_MIPS_GOT_LO16		23 -#define R_MIPS_SUB		24 -#define R_MIPS_INSERT_A		25 -#define R_MIPS_INSERT_B		26 -#define R_MIPS_DELETE		27 -#define R_MIPS_HIGHER		28 -#define R_MIPS_HIGHEST		29 -#define R_MIPS_CALL_HI16	30 -#define R_MIPS_CALL_LO16	31 -#define R_MIPS_SCN_DISP		32 -#define R_MIPS_REL16		33 -#define R_MIPS_ADD_IMMEDIATE	34 -#define R_MIPS_PJUMP		35 -#define R_MIPS_RELGOT		36 -#define R_MIPS_JALR		37 -/* Keep this the last entry.  */ -#define R_MIPS_NUM		38 - -/* Legal values for p_type field of Elf32_Phdr.  */ - -#define PT_MIPS_REGINFO	0x70000000	/* Register usage information */ -#define PT_MIPS_RTPROC  0x70000001	/* Runtime procedure table. */ -#define PT_MIPS_OPTIONS 0x70000002 - -/* Special program header types.  */ - -#define PF_MIPS_LOCAL	0x10000000 - -/* Legal values for d_tag field of Elf32_Dyn.  */ - -#define DT_MIPS_RLD_VERSION  0x70000001	/* Runtime linker interface version */ -#define DT_MIPS_TIME_STAMP   0x70000002	/* Timestamp */ -#define DT_MIPS_ICHECKSUM    0x70000003	/* Checksum */ -#define DT_MIPS_IVERSION     0x70000004	/* Version string (string tbl index) */ -#define DT_MIPS_FLAGS	     0x70000005	/* Flags */ -#define DT_MIPS_BASE_ADDRESS 0x70000006	/* Base address */ -#define DT_MIPS_MSYM	     0x70000007 -#define DT_MIPS_CONFLICT     0x70000008	/* Address of CONFLICT section */ -#define DT_MIPS_LIBLIST	     0x70000009	/* Address of LIBLIST section */ -#define DT_MIPS_LOCAL_GOTNO  0x7000000a	/* Number of local GOT entries */ -#define DT_MIPS_CONFLICTNO   0x7000000b	/* Number of CONFLICT entries */ -#define DT_MIPS_LIBLISTNO    0x70000010	/* Number of LIBLIST entries */ -#define DT_MIPS_SYMTABNO     0x70000011	/* Number of DYNSYM entries */ -#define DT_MIPS_UNREFEXTNO   0x70000012	/* First external DYNSYM */ -#define DT_MIPS_GOTSYM	     0x70000013	/* First GOT entry in DYNSYM */ -#define DT_MIPS_HIPAGENO     0x70000014	/* Number of GOT page table entries */ -#define DT_MIPS_RLD_MAP	     0x70000016	/* Address of run time loader map.  */ -#define DT_MIPS_DELTA_CLASS  0x70000017	/* Delta C++ class definition.  */ -#define DT_MIPS_DELTA_CLASS_NO    0x70000018 /* Number of entries in -						DT_MIPS_DELTA_CLASS.  */ -#define DT_MIPS_DELTA_INSTANCE    0x70000019 /* Delta C++ class instances.  */ -#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a /* Number of entries in -						DT_MIPS_DELTA_INSTANCE.  */ -#define DT_MIPS_DELTA_RELOC  0x7000001b /* Delta relocations.  */ -#define DT_MIPS_DELTA_RELOC_NO 0x7000001c /* Number of entries in -					     DT_MIPS_DELTA_RELOC.  */ -#define DT_MIPS_DELTA_SYM    0x7000001d /* Delta symbols that Delta -					   relocations refer to.  */ -#define DT_MIPS_DELTA_SYM_NO 0x7000001e /* Number of entries in -					   DT_MIPS_DELTA_SYM.  */ -#define DT_MIPS_DELTA_CLASSSYM 0x70000020 /* Delta symbols that hold the -					     class declaration.  */ -#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 /* Number of entries in -						DT_MIPS_DELTA_CLASSSYM.  */ -#define DT_MIPS_CXX_FLAGS    0x70000022 /* Flags indicating for C++ flavor.  */ -#define DT_MIPS_PIXIE_INIT   0x70000023 -#define DT_MIPS_SYMBOL_LIB   0x70000024 -#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 -#define DT_MIPS_LOCAL_GOTIDX 0x70000026 -#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 -#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 -#define DT_MIPS_OPTIONS	     0x70000029 /* Address of .options.  */ -#define DT_MIPS_INTERFACE    0x7000002a /* Address of .interface.  */ -#define DT_MIPS_DYNSTR_ALIGN 0x7000002b -#define DT_MIPS_INTERFACE_SIZE 0x7000002c /* Size of the .interface section. */ -#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d /* Address of rld_text_rsolve -						    function stored in GOT.  */ -#define DT_MIPS_PERF_SUFFIX  0x7000002e /* Default suffix of dso to be added -					   by rld on dlopen() calls.  */ -#define DT_MIPS_COMPACT_SIZE 0x7000002f /* (O32)Size of compact rel section. */ -#define DT_MIPS_GP_VALUE     0x70000030 /* GP value for aux GOTs.  */ -#define DT_MIPS_AUX_DYNAMIC  0x70000031 /* Address of aux .dynamic.  */ -#define DT_MIPS_NUM	     0x32 - -/* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry.  */ - -#define RHF_NONE		   0		/* No flags */ -#define RHF_QUICKSTART		   (1 << 0)	/* Use quickstart */ -#define RHF_NOTPOT		   (1 << 1)	/* Hash size not power of 2 */ -#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2)	/* Ignore LD_LIBRARY_PATH */ -#define RHF_NO_MOVE		   (1 << 3) -#define RHF_SGI_ONLY		   (1 << 4) -#define RHF_GUARANTEE_INIT	   (1 << 5) -#define RHF_DELTA_C_PLUS_PLUS	   (1 << 6) -#define RHF_GUARANTEE_START_INIT   (1 << 7) -#define RHF_PIXIE		   (1 << 8) -#define RHF_DEFAULT_DELAY_LOAD	   (1 << 9) -#define RHF_REQUICKSTART	   (1 << 10) -#define RHF_REQUICKSTARTED	   (1 << 11) -#define RHF_CORD		   (1 << 12) -#define RHF_NO_UNRES_UNDEF	   (1 << 13) -#define RHF_RLD_ORDER_SAFE	   (1 << 14) - -/* Entries found in sections of type SHT_MIPS_LIBLIST.  */ - -typedef struct -{ -  Elf32_Word l_name;		/* Name (string table index) */ -  Elf32_Word l_time_stamp;	/* Timestamp */ -  Elf32_Word l_checksum;	/* Checksum */ -  Elf32_Word l_version;		/* Interface version */ -  Elf32_Word l_flags;		/* Flags */ -} Elf32_Lib; - -typedef struct -{ -  Elf64_Word l_name;		/* Name (string table index) */ -  Elf64_Word l_time_stamp;	/* Timestamp */ -  Elf64_Word l_checksum;	/* Checksum */ -  Elf64_Word l_version;		/* Interface version */ -  Elf64_Word l_flags;		/* Flags */ -} Elf64_Lib; - - -/* Legal values for l_flags.  */ - -#define LL_NONE		  0 -#define LL_EXACT_MATCH	  (1 << 0)	/* Require exact match */ -#define LL_IGNORE_INT_VER (1 << 1)	/* Ignore interface version */ -#define LL_REQUIRE_MINOR  (1 << 2) -#define LL_EXPORTS	  (1 << 3) -#define LL_DELAY_LOAD	  (1 << 4) -#define LL_DELTA	  (1 << 5) - -/* Entries found in sections of type SHT_MIPS_CONFLICT.  */ - -typedef Elf32_Addr Elf32_Conflict; - - -/* HPPA specific definitions.  */ - -/* Legal values for e_flags field of Elf32_Ehdr.  */ - -#define EF_PARISC_TRAPNIL	0x00010000 /* Trap nil pointer dereference.  */ -#define EF_PARISC_EXT		0x00020000 /* Program uses arch. extensions. */ -#define EF_PARISC_LSB		0x00040000 /* Program expects little endian. */ -#define EF_PARISC_WIDE		0x00080000 /* Program expects wide mode.  */ -#define EF_PARISC_NO_KABP	0x00100000 /* No kernel assisted branch -					      prediction.  */ -#define EF_PARISC_LAZYSWAP	0x00400000 /* Allow lazy swapping.  */ -#define EF_PARISC_ARCH		0x0000ffff /* Architecture version.  */ - -/* Defined values for `e_flags & EF_PARISC_ARCH' are:  */ - -#define EFA_PARISC_1_0		    0x020b /* PA-RISC 1.0 big-endian.  */ -#define EFA_PARISC_1_1		    0x0210 /* PA-RISC 1.1 big-endian.  */ -#define EFA_PARISC_2_0		    0x0214 /* PA-RISC 2.0 big-endian.  */ - -/* Additional section indeces.  */ - -#define SHN_PARISC_ANSI_COMMON	0xff00	   /* Section for tenatively declared -					      symbols in ANSI C.  */ -#define SHN_PARISC_HUGE_COMMON	0xff01	   /* Common blocks in huge model.  */ - -/* Legal values for sh_type field of Elf32_Shdr.  */ - -#define SHT_PARISC_EXT		0x70000000 /* Contains product specific ext. */ -#define SHT_PARISC_UNWIND	0x70000001 /* Unwind information.  */ -#define SHT_PARISC_DOC		0x70000002 /* Debug info for optimized code. */ - -/* Legal values for sh_flags field of Elf32_Shdr.  */ - -#define SHF_PARISC_SHORT	0x20000000 /* Section with short addressing. */ -#define SHF_PARISC_HUGE		0x40000000 /* Section far from gp.  */ -#define SHF_PARISC_SBP		0x80000000 /* Static branch prediction code. */ - -/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ - -#define STT_PARISC_MILLICODE	13	/* Millicode function entry point.  */ - -#define STT_HP_OPAQUE		(STT_LOOS + 0x1) -#define STT_HP_STUB		(STT_LOOS + 0x2) - -/* HPPA relocs.  */ - -#define R_PARISC_NONE		0	/* No reloc.  */ -#define R_PARISC_DIR32		1	/* Direct 32-bit reference.  */ -#define R_PARISC_DIR21L		2	/* Left 21 bits of eff. address.  */ -#define R_PARISC_DIR17R		3	/* Right 17 bits of eff. address.  */ -#define R_PARISC_DIR17F		4	/* 17 bits of eff. address.  */ -#define R_PARISC_DIR14R		6	/* Right 14 bits of eff. address.  */ -#define R_PARISC_PCREL32	9	/* 32-bit rel. address.  */ -#define R_PARISC_PCREL21L	10	/* Left 21 bits of rel. address.  */ -#define R_PARISC_PCREL17R	11	/* Right 17 bits of rel. address.  */ -#define R_PARISC_PCREL17F	12	/* 17 bits of rel. address.  */ -#define R_PARISC_PCREL14R	14	/* Right 14 bits of rel. address.  */ -#define R_PARISC_DPREL21L	18	/* Left 21 bits of rel. address.  */ -#define R_PARISC_DPREL14R	22	/* Right 14 bits of rel. address.  */ -#define R_PARISC_GPREL21L	26	/* GP-relative, left 21 bits.  */ -#define R_PARISC_GPREL14R	30	/* GP-relative, right 14 bits.  */ -#define R_PARISC_LTOFF21L	34	/* LT-relative, left 21 bits.  */ -#define R_PARISC_LTOFF14R	38	/* LT-relative, right 14 bits.  */ -#define R_PARISC_SECREL32	41	/* 32 bits section rel. address.  */ -#define R_PARISC_SEGBASE	48	/* No relocation, set segment base.  */ -#define R_PARISC_SEGREL32	49	/* 32 bits segment rel. address.  */ -#define R_PARISC_PLTOFF21L	50	/* PLT rel. address, left 21 bits.  */ -#define R_PARISC_PLTOFF14R	54	/* PLT rel. address, right 14 bits.  */ -#define R_PARISC_LTOFF_FPTR32	57	/* 32 bits LT-rel. function pointer. */ -#define R_PARISC_LTOFF_FPTR21L	58	/* LT-rel. fct ptr, left 21 bits. */ -#define R_PARISC_LTOFF_FPTR14R	62	/* LT-rel. fct ptr, right 14 bits. */ -#define R_PARISC_FPTR64		64	/* 64 bits function address.  */ -#define R_PARISC_PLABEL32	65	/* 32 bits function address.  */ -#define R_PARISC_PLABEL21L	66	/* Left 21 bits of fct ptr.  */ -#define R_PARISC_PLABEL14R	70	/* Left 21 bits of fct ptr.  */ -#define R_PARISC_PCREL64	72	/* 64 bits PC-rel. address.  */ -#define R_PARISC_PCREL22F	74	/* 22 bits PC-rel. address.  */ -#define R_PARISC_PCREL14WR	75	/* PC-rel. address, right 14 bits.  */ -#define R_PARISC_PCREL14DR	76	/* PC rel. address, right 14 bits.  */ -#define R_PARISC_PCREL16F	77	/* 16 bits PC-rel. address.  */ -#define R_PARISC_PCREL16WF	78	/* 16 bits PC-rel. address.  */ -#define R_PARISC_PCREL16DF	79	/* 16 bits PC-rel. address.  */ -#define R_PARISC_DIR64		80	/* 64 bits of eff. address.  */ -#define R_PARISC_DIR14WR	83	/* 14 bits of eff. address.  */ -#define R_PARISC_DIR14DR	84	/* 14 bits of eff. address.  */ -#define R_PARISC_DIR16F		85	/* 16 bits of eff. address.  */ -#define R_PARISC_DIR16WF	86	/* 16 bits of eff. address.  */ -#define R_PARISC_DIR16DF	87	/* 16 bits of eff. address.  */ -#define R_PARISC_GPREL64	88	/* 64 bits of GP-rel. address.  */ -#define R_PARISC_GPREL14WR	91	/* GP-rel. address, right 14 bits.  */ -#define R_PARISC_GPREL14DR	92	/* GP-rel. address, right 14 bits.  */ -#define R_PARISC_GPREL16F	93	/* 16 bits GP-rel. address.  */ -#define R_PARISC_GPREL16WF	94	/* 16 bits GP-rel. address.  */ -#define R_PARISC_GPREL16DF	95	/* 16 bits GP-rel. address.  */ -#define R_PARISC_LTOFF64	96	/* 64 bits LT-rel. address.  */ -#define R_PARISC_LTOFF14WR	99	/* LT-rel. address, right 14 bits.  */ -#define R_PARISC_LTOFF14DR	100	/* LT-rel. address, right 14 bits.  */ -#define R_PARISC_LTOFF16F	101	/* 16 bits LT-rel. address.  */ -#define R_PARISC_LTOFF16WF	102	/* 16 bits LT-rel. address.  */ -#define R_PARISC_LTOFF16DF	103	/* 16 bits LT-rel. address.  */ -#define R_PARISC_SECREL64	104	/* 64 bits section rel. address.  */ -#define R_PARISC_SEGREL64	112	/* 64 bits segment rel. address.  */ -#define R_PARISC_PLTOFF14WR	115	/* PLT-rel. address, right 14 bits.  */ -#define R_PARISC_PLTOFF14DR	116	/* PLT-rel. address, right 14 bits.  */ -#define R_PARISC_PLTOFF16F	117	/* 16 bits LT-rel. address.  */ -#define R_PARISC_PLTOFF16WF	118	/* 16 bits PLT-rel. address.  */ -#define R_PARISC_PLTOFF16DF	119	/* 16 bits PLT-rel. address.  */ -#define R_PARISC_LTOFF_FPTR64	120	/* 64 bits LT-rel. function ptr.  */ -#define R_PARISC_LTOFF_FPTR14WR	123	/* LT-rel. fct. ptr., right 14 bits. */ -#define R_PARISC_LTOFF_FPTR14DR	124	/* LT-rel. fct. ptr., right 14 bits. */ -#define R_PARISC_LTOFF_FPTR16F	125	/* 16 bits LT-rel. function ptr.  */ -#define R_PARISC_LTOFF_FPTR16WF	126	/* 16 bits LT-rel. function ptr.  */ -#define R_PARISC_LTOFF_FPTR16DF	127	/* 16 bits LT-rel. function ptr.  */ -#define R_PARISC_LORESERVE	128 -#define R_PARISC_COPY		128	/* Copy relocation.  */ -#define R_PARISC_IPLT		129	/* Dynamic reloc, imported PLT */ -#define R_PARISC_EPLT		130	/* Dynamic reloc, exported PLT */ -#define R_PARISC_TPREL32	153	/* 32 bits TP-rel. address.  */ -#define R_PARISC_TPREL21L	154	/* TP-rel. address, left 21 bits.  */ -#define R_PARISC_TPREL14R	158	/* TP-rel. address, right 14 bits.  */ -#define R_PARISC_LTOFF_TP21L	162	/* LT-TP-rel. address, left 21 bits. */ -#define R_PARISC_LTOFF_TP14R	166	/* LT-TP-rel. address, right 14 bits.*/ -#define R_PARISC_LTOFF_TP14F	167	/* 14 bits LT-TP-rel. address.  */ -#define R_PARISC_TPREL64	216	/* 64 bits TP-rel. address.  */ -#define R_PARISC_TPREL14WR	219	/* TP-rel. address, right 14 bits.  */ -#define R_PARISC_TPREL14DR	220	/* TP-rel. address, right 14 bits.  */ -#define R_PARISC_TPREL16F	221	/* 16 bits TP-rel. address.  */ -#define R_PARISC_TPREL16WF	222	/* 16 bits TP-rel. address.  */ -#define R_PARISC_TPREL16DF	223	/* 16 bits TP-rel. address.  */ -#define R_PARISC_LTOFF_TP64	224	/* 64 bits LT-TP-rel. address.  */ -#define R_PARISC_LTOFF_TP14WR	227	/* LT-TP-rel. address, right 14 bits.*/ -#define R_PARISC_LTOFF_TP14DR	228	/* LT-TP-rel. address, right 14 bits.*/ -#define R_PARISC_LTOFF_TP16F	229	/* 16 bits LT-TP-rel. address.  */ -#define R_PARISC_LTOFF_TP16WF	230	/* 16 bits LT-TP-rel. address.  */ -#define R_PARISC_LTOFF_TP16DF	231	/* 16 bits LT-TP-rel. address.  */ -#define R_PARISC_HIRESERVE	255 - -/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr.  */ - -#define PT_HP_TLS		(PT_LOOS + 0x0) -#define PT_HP_CORE_NONE		(PT_LOOS + 0x1) -#define PT_HP_CORE_VERSION	(PT_LOOS + 0x2) -#define PT_HP_CORE_KERNEL	(PT_LOOS + 0x3) -#define PT_HP_CORE_COMM		(PT_LOOS + 0x4) -#define PT_HP_CORE_PROC		(PT_LOOS + 0x5) -#define PT_HP_CORE_LOADABLE	(PT_LOOS + 0x6) -#define PT_HP_CORE_STACK	(PT_LOOS + 0x7) -#define PT_HP_CORE_SHM		(PT_LOOS + 0x8) -#define PT_HP_CORE_MMF		(PT_LOOS + 0x9) -#define PT_HP_PARALLEL		(PT_LOOS + 0x10) -#define PT_HP_FASTBIND		(PT_LOOS + 0x11) -#define PT_HP_OPT_ANNOT		(PT_LOOS + 0x12) -#define PT_HP_HSL_ANNOT		(PT_LOOS + 0x13) -#define PT_HP_STACK		(PT_LOOS + 0x14) - -#define PT_PARISC_ARCHEXT	0x70000000 -#define PT_PARISC_UNWIND	0x70000001 - -/* Legal values for p_flags field of Elf32_Phdr/Elf64_Phdr.  */ - -#define PF_PARISC_SBP		0x08000000 - -#define PF_HP_PAGE_SIZE		0x00100000 -#define PF_HP_FAR_SHARED	0x00200000 -#define PF_HP_NEAR_SHARED	0x00400000 -#define PF_HP_CODE		0x01000000 -#define PF_HP_MODIFY		0x02000000 -#define PF_HP_LAZYSWAP		0x04000000 -#define PF_HP_SBP		0x08000000 - - -/* Alpha specific definitions.  */ - -/* Legal values for e_flags field of Elf64_Ehdr.  */ - -#define EF_ALPHA_32BIT		1	/* All addresses must be < 2GB.  */ -#define EF_ALPHA_CANRELAX	2	/* Relocations for relaxing exist.  */ - -/* Legal values for sh_type field of Elf64_Shdr.  */ - -/* These two are primerily concerned with ECOFF debugging info.  */ -#define SHT_ALPHA_DEBUG		0x70000001 -#define SHT_ALPHA_REGINFO	0x70000002 - -/* Legal values for sh_flags field of Elf64_Shdr.  */ - -#define SHF_ALPHA_GPREL		0x10000000 - -/* Legal values for st_other field of Elf64_Sym.  */ -#define STO_ALPHA_NOPV		0x80	/* No PV required.  */ -#define STO_ALPHA_STD_GPLOAD	0x88	/* PV only used for initial ldgp.  */ - -/* Alpha relocs.  */ - -#define R_ALPHA_NONE		0	/* No reloc */ -#define R_ALPHA_REFLONG		1	/* Direct 32 bit */ -#define R_ALPHA_REFQUAD		2	/* Direct 64 bit */ -#define R_ALPHA_GPREL32		3	/* GP relative 32 bit */ -#define R_ALPHA_LITERAL		4	/* GP relative 16 bit w/optimization */ -#define R_ALPHA_LITUSE		5	/* Optimization hint for LITERAL */ -#define R_ALPHA_GPDISP		6	/* Add displacement to GP */ -#define R_ALPHA_BRADDR		7	/* PC+4 relative 23 bit shifted */ -#define R_ALPHA_HINT		8	/* PC+4 relative 16 bit shifted */ -#define R_ALPHA_SREL16		9	/* PC relative 16 bit */ -#define R_ALPHA_SREL32		10	/* PC relative 32 bit */ -#define R_ALPHA_SREL64		11	/* PC relative 64 bit */ -#define R_ALPHA_GPRELHIGH	17	/* GP relative 32 bit, high 16 bits */ -#define R_ALPHA_GPRELLOW	18	/* GP relative 32 bit, low 16 bits */ -#define R_ALPHA_GPREL16		19	/* GP relative 16 bit */ -#define R_ALPHA_COPY		24	/* Copy symbol at runtime */ -#define R_ALPHA_GLOB_DAT	25	/* Create GOT entry */ -#define R_ALPHA_JMP_SLOT	26	/* Create PLT entry */ -#define R_ALPHA_RELATIVE	27	/* Adjust by program base */ -#define R_ALPHA_TLS_GD_HI	28 -#define R_ALPHA_TLSGD		29 -#define R_ALPHA_TLS_LDM		30 -#define R_ALPHA_DTPMOD64	31 -#define R_ALPHA_GOTDTPREL	32 -#define R_ALPHA_DTPREL64	33 -#define R_ALPHA_DTPRELHI	34 -#define R_ALPHA_DTPRELLO	35 -#define R_ALPHA_DTPREL16	36 -#define R_ALPHA_GOTTPREL	37 -#define R_ALPHA_TPREL64		38 -#define R_ALPHA_TPRELHI		39 -#define R_ALPHA_TPRELLO		40 -#define R_ALPHA_TPREL16		41 -/* Keep this the last entry.  */ -#define R_ALPHA_NUM		46 - -/* Magic values of the LITUSE relocation addend.  */ -#define LITUSE_ALPHA_ADDR	0 -#define LITUSE_ALPHA_BASE	1 -#define LITUSE_ALPHA_BYTOFF	2 -#define LITUSE_ALPHA_JSR	3 -#define LITUSE_ALPHA_TLS_GD	4 -#define LITUSE_ALPHA_TLS_LDM	5 - - -/* PowerPC specific declarations */ - -/* Values for Elf32/64_Ehdr.e_flags.  */ -#define EF_PPC_EMB		0x80000000	/* PowerPC embedded flag */ - -/* Cygnus local bits below */ -#define EF_PPC_RELOCATABLE	0x00010000	/* PowerPC -mrelocatable flag*/ -#define EF_PPC_RELOCATABLE_LIB	0x00008000	/* PowerPC -mrelocatable-lib -						   flag */ - -/* PowerPC relocations defined by the ABIs */ -#define R_PPC_NONE		0 -#define R_PPC_ADDR32		1	/* 32bit absolute address */ -#define R_PPC_ADDR24		2	/* 26bit address, 2 bits ignored.  */ -#define R_PPC_ADDR16		3	/* 16bit absolute address */ -#define R_PPC_ADDR16_LO		4	/* lower 16bit of absolute address */ -#define R_PPC_ADDR16_HI		5	/* high 16bit of absolute address */ -#define R_PPC_ADDR16_HA		6	/* adjusted high 16bit */ -#define R_PPC_ADDR14		7	/* 16bit address, 2 bits ignored */ -#define R_PPC_ADDR14_BRTAKEN	8 -#define R_PPC_ADDR14_BRNTAKEN	9 -#define R_PPC_REL24		10	/* PC relative 26 bit */ -#define R_PPC_REL14		11	/* PC relative 16 bit */ -#define R_PPC_REL14_BRTAKEN	12 -#define R_PPC_REL14_BRNTAKEN	13 -#define R_PPC_GOT16		14 -#define R_PPC_GOT16_LO		15 -#define R_PPC_GOT16_HI		16 -#define R_PPC_GOT16_HA		17 -#define R_PPC_PLTREL24		18 -#define R_PPC_COPY		19 -#define R_PPC_GLOB_DAT		20 -#define R_PPC_JMP_SLOT		21 -#define R_PPC_RELATIVE		22 -#define R_PPC_LOCAL24PC		23 -#define R_PPC_UADDR32		24 -#define R_PPC_UADDR16		25 -#define R_PPC_REL32		26 -#define R_PPC_PLT32		27 -#define R_PPC_PLTREL32		28 -#define R_PPC_PLT16_LO		29 -#define R_PPC_PLT16_HI		30 -#define R_PPC_PLT16_HA		31 -#define R_PPC_SDAREL16		32 -#define R_PPC_SECTOFF		33 -#define R_PPC_SECTOFF_LO	34 -#define R_PPC_SECTOFF_HI	35 -#define R_PPC_SECTOFF_HA	36 - -/* PowerPC relocations defined for the TLS access ABI.  */ -#define R_PPC_TLS		67 /* none	(sym+add)@tls */ -#define R_PPC_DTPMOD32		68 /* word32	(sym+add)@dtpmod */ -#define R_PPC_TPREL16		69 /* half16*	(sym+add)@tprel */ -#define R_PPC_TPREL16_LO	70 /* half16	(sym+add)@tprel@l */ -#define R_PPC_TPREL16_HI	71 /* half16	(sym+add)@tprel@h */ -#define R_PPC_TPREL16_HA	72 /* half16	(sym+add)@tprel@ha */ -#define R_PPC_TPREL32		73 /* word32	(sym+add)@tprel */ -#define R_PPC_DTPREL16		74 /* half16*	(sym+add)@dtprel */ -#define R_PPC_DTPREL16_LO	75 /* half16	(sym+add)@dtprel@l */ -#define R_PPC_DTPREL16_HI	76 /* half16	(sym+add)@dtprel@h */ -#define R_PPC_DTPREL16_HA	77 /* half16	(sym+add)@dtprel@ha */ -#define R_PPC_DTPREL32		78 /* word32	(sym+add)@dtprel */ -#define R_PPC_GOT_TLSGD16	79 /* half16*	(sym+add)@got@tlsgd */ -#define R_PPC_GOT_TLSGD16_LO	80 /* half16	(sym+add)@got@tlsgd@l */ -#define R_PPC_GOT_TLSGD16_HI	81 /* half16	(sym+add)@got@tlsgd@h */ -#define R_PPC_GOT_TLSGD16_HA	82 /* half16	(sym+add)@got@tlsgd@ha */ -#define R_PPC_GOT_TLSLD16	83 /* half16*	(sym+add)@got@tlsld */ -#define R_PPC_GOT_TLSLD16_LO	84 /* half16	(sym+add)@got@tlsld@l */ -#define R_PPC_GOT_TLSLD16_HI	85 /* half16	(sym+add)@got@tlsld@h */ -#define R_PPC_GOT_TLSLD16_HA	86 /* half16	(sym+add)@got@tlsld@ha */ -#define R_PPC_GOT_TPREL16	87 /* half16*	(sym+add)@got@tprel */ -#define R_PPC_GOT_TPREL16_LO	88 /* half16	(sym+add)@got@tprel@l */ -#define R_PPC_GOT_TPREL16_HI	89 /* half16	(sym+add)@got@tprel@h */ -#define R_PPC_GOT_TPREL16_HA	90 /* half16	(sym+add)@got@tprel@ha */ -#define R_PPC_GOT_DTPREL16	91 /* half16*	(sym+add)@got@dtprel */ -#define R_PPC_GOT_DTPREL16_LO	92 /* half16*	(sym+add)@got@dtprel@l */ -#define R_PPC_GOT_DTPREL16_HI	93 /* half16*	(sym+add)@got@dtprel@h */ -#define R_PPC_GOT_DTPREL16_HA	94 /* half16*	(sym+add)@got@dtprel@ha */ - -/* Keep this the last entry.  */ -#define R_PPC_NUM		95 - -/* The remaining relocs are from the Embedded ELF ABI, and are not -   in the SVR4 ELF ABI.  */ -#define R_PPC_EMB_NADDR32	101 -#define R_PPC_EMB_NADDR16	102 -#define R_PPC_EMB_NADDR16_LO	103 -#define R_PPC_EMB_NADDR16_HI	104 -#define R_PPC_EMB_NADDR16_HA	105 -#define R_PPC_EMB_SDAI16	106 -#define R_PPC_EMB_SDA2I16	107 -#define R_PPC_EMB_SDA2REL	108 -#define R_PPC_EMB_SDA21		109	/* 16 bit offset in SDA */ -#define R_PPC_EMB_MRKREF	110 -#define R_PPC_EMB_RELSEC16	111 -#define R_PPC_EMB_RELST_LO	112 -#define R_PPC_EMB_RELST_HI	113 -#define R_PPC_EMB_RELST_HA	114 -#define R_PPC_EMB_BIT_FLD	115 -#define R_PPC_EMB_RELSDA	116	/* 16 bit relative offset in SDA */ - -/* Diab tool relocations.  */ -#define R_PPC_DIAB_SDA21_LO	180	/* like EMB_SDA21, but lower 16 bit */ -#define R_PPC_DIAB_SDA21_HI	181	/* like EMB_SDA21, but high 16 bit */ -#define R_PPC_DIAB_SDA21_HA	182	/* like EMB_SDA21, adjusted high 16 */ -#define R_PPC_DIAB_RELSDA_LO	183	/* like EMB_RELSDA, but lower 16 bit */ -#define R_PPC_DIAB_RELSDA_HI	184	/* like EMB_RELSDA, but high 16 bit */ -#define R_PPC_DIAB_RELSDA_HA	185	/* like EMB_RELSDA, adjusted high 16 */ - -/* This is a phony reloc to handle any old fashioned TOC16 references -   that may still be in object files.  */ -#define R_PPC_TOC16		255 - - -/* PowerPC64 relocations defined by the ABIs */ -#define R_PPC64_NONE		R_PPC_NONE -#define R_PPC64_ADDR32		R_PPC_ADDR32 /* 32bit absolute address */ -#define R_PPC64_ADDR24		R_PPC_ADDR24 /* 26bit address, word aligned */ -#define R_PPC64_ADDR16		R_PPC_ADDR16 /* 16bit absolute address */ -#define R_PPC64_ADDR16_LO	R_PPC_ADDR16_LO	/* lower 16bits of address */ -#define R_PPC64_ADDR16_HI	R_PPC_ADDR16_HI	/* high 16bits of address. */ -#define R_PPC64_ADDR16_HA	R_PPC_ADDR16_HA /* adjusted high 16bits.  */ -#define R_PPC64_ADDR14		R_PPC_ADDR14 /* 16bit address, word aligned */ -#define R_PPC64_ADDR14_BRTAKEN	R_PPC_ADDR14_BRTAKEN -#define R_PPC64_ADDR14_BRNTAKEN	R_PPC_ADDR14_BRNTAKEN -#define R_PPC64_REL24		R_PPC_REL24 /* PC-rel. 26 bit, word aligned */ -#define R_PPC64_REL14		R_PPC_REL14 /* PC relative 16 bit */ -#define R_PPC64_REL14_BRTAKEN	R_PPC_REL14_BRTAKEN -#define R_PPC64_REL14_BRNTAKEN	R_PPC_REL14_BRNTAKEN -#define R_PPC64_GOT16		R_PPC_GOT16 -#define R_PPC64_GOT16_LO	R_PPC_GOT16_LO -#define R_PPC64_GOT16_HI	R_PPC_GOT16_HI -#define R_PPC64_GOT16_HA	R_PPC_GOT16_HA - -#define R_PPC64_COPY		R_PPC_COPY -#define R_PPC64_GLOB_DAT	R_PPC_GLOB_DAT -#define R_PPC64_JMP_SLOT	R_PPC_JMP_SLOT -#define R_PPC64_RELATIVE	R_PPC_RELATIVE - -#define R_PPC64_UADDR32		R_PPC_UADDR32 -#define R_PPC64_UADDR16		R_PPC_UADDR16 -#define R_PPC64_REL32		R_PPC_REL32 -#define R_PPC64_PLT32		R_PPC_PLT32 -#define R_PPC64_PLTREL32	R_PPC_PLTREL32 -#define R_PPC64_PLT16_LO	R_PPC_PLT16_LO -#define R_PPC64_PLT16_HI	R_PPC_PLT16_HI -#define R_PPC64_PLT16_HA	R_PPC_PLT16_HA - -#define R_PPC64_SECTOFF		R_PPC_SECTOFF -#define R_PPC64_SECTOFF_LO	R_PPC_SECTOFF_LO -#define R_PPC64_SECTOFF_HI	R_PPC_SECTOFF_HI -#define R_PPC64_SECTOFF_HA	R_PPC_SECTOFF_HA -#define R_PPC64_ADDR30		37 /* word30 (S + A - P) >> 2 */ -#define R_PPC64_ADDR64		38 /* doubleword64 S + A */ -#define R_PPC64_ADDR16_HIGHER	39 /* half16 #higher(S + A) */ -#define R_PPC64_ADDR16_HIGHERA	40 /* half16 #highera(S + A) */ -#define R_PPC64_ADDR16_HIGHEST	41 /* half16 #highest(S + A) */ -#define R_PPC64_ADDR16_HIGHESTA	42 /* half16 #highesta(S + A) */ -#define R_PPC64_UADDR64		43 /* doubleword64 S + A */ -#define R_PPC64_REL64		44 /* doubleword64 S + A - P */ -#define R_PPC64_PLT64		45 /* doubleword64 L + A */ -#define R_PPC64_PLTREL64	46 /* doubleword64 L + A - P */ -#define R_PPC64_TOC16		47 /* half16* S + A - .TOC */ -#define R_PPC64_TOC16_LO	48 /* half16 #lo(S + A - .TOC.) */ -#define R_PPC64_TOC16_HI	49 /* half16 #hi(S + A - .TOC.) */ -#define R_PPC64_TOC16_HA	50 /* half16 #ha(S + A - .TOC.) */ -#define R_PPC64_TOC		51 /* doubleword64 .TOC */ -#define R_PPC64_PLTGOT16	52 /* half16* M + A */ -#define R_PPC64_PLTGOT16_LO	53 /* half16 #lo(M + A) */ -#define R_PPC64_PLTGOT16_HI	54 /* half16 #hi(M + A) */ -#define R_PPC64_PLTGOT16_HA	55 /* half16 #ha(M + A) */ - -#define R_PPC64_ADDR16_DS	56 /* half16ds* (S + A) >> 2 */ -#define R_PPC64_ADDR16_LO_DS	57 /* half16ds  #lo(S + A) >> 2 */ -#define R_PPC64_GOT16_DS	58 /* half16ds* (G + A) >> 2 */ -#define R_PPC64_GOT16_LO_DS	59 /* half16ds  #lo(G + A) >> 2 */ -#define R_PPC64_PLT16_LO_DS	60 /* half16ds  #lo(L + A) >> 2 */ -#define R_PPC64_SECTOFF_DS	61 /* half16ds* (R + A) >> 2 */ -#define R_PPC64_SECTOFF_LO_DS	62 /* half16ds  #lo(R + A) >> 2 */ -#define R_PPC64_TOC16_DS	63 /* half16ds* (S + A - .TOC.) >> 2 */ -#define R_PPC64_TOC16_LO_DS	64 /* half16ds  #lo(S + A - .TOC.) >> 2 */ -#define R_PPC64_PLTGOT16_DS	65 /* half16ds* (M + A) >> 2 */ -#define R_PPC64_PLTGOT16_LO_DS	66 /* half16ds  #lo(M + A) >> 2 */ - -/* PowerPC64 relocations defined for the TLS access ABI.  */ -#define R_PPC64_TLS		67 /* none	(sym+add)@tls */ -#define R_PPC64_DTPMOD64	68 /* doubleword64 (sym+add)@dtpmod */ -#define R_PPC64_TPREL16		69 /* half16*	(sym+add)@tprel */ -#define R_PPC64_TPREL16_LO	70 /* half16	(sym+add)@tprel@l */ -#define R_PPC64_TPREL16_HI	71 /* half16	(sym+add)@tprel@h */ -#define R_PPC64_TPREL16_HA	72 /* half16	(sym+add)@tprel@ha */ -#define R_PPC64_TPREL64		73 /* doubleword64 (sym+add)@tprel */ -#define R_PPC64_DTPREL16	74 /* half16*	(sym+add)@dtprel */ -#define R_PPC64_DTPREL16_LO	75 /* half16	(sym+add)@dtprel@l */ -#define R_PPC64_DTPREL16_HI	76 /* half16	(sym+add)@dtprel@h */ -#define R_PPC64_DTPREL16_HA	77 /* half16	(sym+add)@dtprel@ha */ -#define R_PPC64_DTPREL64	78 /* doubleword64 (sym+add)@dtprel */ -#define R_PPC64_GOT_TLSGD16	79 /* half16*	(sym+add)@got@tlsgd */ -#define R_PPC64_GOT_TLSGD16_LO	80 /* half16	(sym+add)@got@tlsgd@l */ -#define R_PPC64_GOT_TLSGD16_HI	81 /* half16	(sym+add)@got@tlsgd@h */ -#define R_PPC64_GOT_TLSGD16_HA	82 /* half16	(sym+add)@got@tlsgd@ha */ -#define R_PPC64_GOT_TLSLD16	83 /* half16*	(sym+add)@got@tlsld */ -#define R_PPC64_GOT_TLSLD16_LO	84 /* half16	(sym+add)@got@tlsld@l */ -#define R_PPC64_GOT_TLSLD16_HI	85 /* half16	(sym+add)@got@tlsld@h */ -#define R_PPC64_GOT_TLSLD16_HA	86 /* half16	(sym+add)@got@tlsld@ha */ -#define R_PPC64_GOT_TPREL16_DS	87 /* half16ds*	(sym+add)@got@tprel */ -#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l */ -#define R_PPC64_GOT_TPREL16_HI	89 /* half16	(sym+add)@got@tprel@h */ -#define R_PPC64_GOT_TPREL16_HA	90 /* half16	(sym+add)@got@tprel@ha */ -#define R_PPC64_GOT_DTPREL16_DS	91 /* half16ds*	(sym+add)@got@dtprel */ -#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l */ -#define R_PPC64_GOT_DTPREL16_HI	93 /* half16	(sym+add)@got@dtprel@h */ -#define R_PPC64_GOT_DTPREL16_HA	94 /* half16	(sym+add)@got@dtprel@ha */ -#define R_PPC64_TPREL16_DS	95 /* half16ds*	(sym+add)@tprel */ -#define R_PPC64_TPREL16_LO_DS	96 /* half16ds	(sym+add)@tprel@l */ -#define R_PPC64_TPREL16_HIGHER	97 /* half16	(sym+add)@tprel@higher */ -#define R_PPC64_TPREL16_HIGHERA	98 /* half16	(sym+add)@tprel@highera */ -#define R_PPC64_TPREL16_HIGHEST	99 /* half16	(sym+add)@tprel@highest */ -#define R_PPC64_TPREL16_HIGHESTA 100 /* half16	(sym+add)@tprel@highesta */ -#define R_PPC64_DTPREL16_DS	101 /* half16ds* (sym+add)@dtprel */ -#define R_PPC64_DTPREL16_LO_DS	102 /* half16ds	(sym+add)@dtprel@l */ -#define R_PPC64_DTPREL16_HIGHER	103 /* half16	(sym+add)@dtprel@higher */ -#define R_PPC64_DTPREL16_HIGHERA 104 /* half16	(sym+add)@dtprel@highera */ -#define R_PPC64_DTPREL16_HIGHEST 105 /* half16	(sym+add)@dtprel@highest */ -#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16	(sym+add)@dtprel@highesta */ - -/* Keep this the last entry.  */ -#define R_PPC64_NUM		107 - -/* PowerPC64 specific values for the Dyn d_tag field.  */ -#define DT_PPC64_GLINK  (DT_LOPROC + 0) -#define DT_PPC64_OPD	(DT_LOPROC + 1) -#define DT_PPC64_OPDSZ	(DT_LOPROC + 2) -#define DT_PPC64_NUM    3 - - -/* ARM specific declarations */ - -/* Processor specific flags for the ELF header e_flags field.  */ -#define EF_ARM_RELEXEC     0x01 -#define EF_ARM_HASENTRY    0x02 -#define EF_ARM_INTERWORK   0x04 -#define EF_ARM_APCS_26     0x08 -#define EF_ARM_APCS_FLOAT  0x10 -#define EF_ARM_PIC         0x20 -#define EF_ARM_ALIGN8      0x40		/* 8-bit structure alignment is in use */ -#define EF_ARM_NEW_ABI     0x80 -#define EF_ARM_OLD_ABI     0x100 - -/* Other constants defined in the ARM ELF spec. version B-01.  */ -/* NB. These conflict with values defined above.  */ -#define EF_ARM_SYMSARESORTED	0x04 -#define EF_ARM_DYNSYMSUSESEGIDX 0x08 -#define EF_ARM_MAPSYMSFIRST	0x10 -#define EF_ARM_EABIMASK		0XFF000000 - -#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) -#define EF_ARM_EABI_UNKNOWN  0x00000000 -#define EF_ARM_EABI_VER1     0x01000000 -#define EF_ARM_EABI_VER2     0x02000000 - -/* Additional symbol types for Thumb */ -#define STT_ARM_TFUNC      0xd - -/* ARM-specific values for sh_flags */ -#define SHF_ARM_ENTRYSECT  0x10000000   /* Section contains an entry point */ -#define SHF_ARM_COMDEF     0x80000000   /* Section may be multiply defined -					   in the input to a link step */ - -/* ARM-specific program header flags */ -#define PF_ARM_SB          0x10000000   /* Segment contains the location -					   addressed by the static base */ - -/* ARM relocs.  */ -#define R_ARM_NONE		0	/* No reloc */ -#define R_ARM_PC24		1	/* PC relative 26 bit branch */ -#define R_ARM_ABS32		2	/* Direct 32 bit  */ -#define R_ARM_REL32		3	/* PC relative 32 bit */ -#define R_ARM_PC13		4 -#define R_ARM_ABS16		5	/* Direct 16 bit */ -#define R_ARM_ABS12		6	/* Direct 12 bit */ -#define R_ARM_THM_ABS5		7 -#define R_ARM_ABS8		8	/* Direct 8 bit */ -#define R_ARM_SBREL32		9 -#define R_ARM_THM_PC22		10 -#define R_ARM_THM_PC8		11 -#define R_ARM_AMP_VCALL9	12 -#define R_ARM_SWI24		13 -#define R_ARM_THM_SWI8		14 -#define R_ARM_XPC25		15 -#define R_ARM_THM_XPC22		16 -#define R_ARM_COPY		20	/* Copy symbol at runtime */ -#define R_ARM_GLOB_DAT		21	/* Create GOT entry */ -#define R_ARM_JUMP_SLOT		22	/* Create PLT entry */ -#define R_ARM_RELATIVE		23	/* Adjust by program base */ -#define R_ARM_GOTOFF		24	/* 32 bit offset to GOT */ -#define R_ARM_GOTPC		25	/* 32 bit PC relative offset to GOT */ -#define R_ARM_GOT32		26	/* 32 bit GOT entry */ -#define R_ARM_PLT32		27	/* 32 bit PLT address */ -#define R_ARM_ALU_PCREL_7_0	32 -#define R_ARM_ALU_PCREL_15_8	33 -#define R_ARM_ALU_PCREL_23_15	34 -#define R_ARM_LDR_SBREL_11_0	35 -#define R_ARM_ALU_SBREL_19_12	36 -#define R_ARM_ALU_SBREL_27_20	37 -#define R_ARM_GNU_VTENTRY	100 -#define R_ARM_GNU_VTINHERIT	101 -#define R_ARM_THM_PC11		102	/* thumb unconditional branch */ -#define R_ARM_THM_PC9		103	/* thumb conditional branch */ -#define R_ARM_RXPC25		249 -#define R_ARM_RSBREL32		250 -#define R_ARM_THM_RPC22		251 -#define R_ARM_RREL32		252 -#define R_ARM_RABS22		253 -#define R_ARM_RPC24		254 -#define R_ARM_RBASE		255 -/* Keep this the last entry.  */ -#define R_ARM_NUM		256 - -/* IA-64 specific declarations.  */ - -/* Processor specific flags for the Ehdr e_flags field.  */ -#define EF_IA_64_MASKOS		0x0000000f	/* os-specific flags */ -#define EF_IA_64_ABI64		0x00000010	/* 64-bit ABI */ -#define EF_IA_64_ARCH		0xff000000	/* arch. version mask */ - -/* Processor specific values for the Phdr p_type field.  */ -#define PT_IA_64_ARCHEXT	(PT_LOPROC + 0)	/* arch extension bits */ -#define PT_IA_64_UNWIND		(PT_LOPROC + 1)	/* ia64 unwind bits */ -#define PT_IA_64_HP_OPT_ANOT	(PT_LOOS + 0x12) -#define PT_IA_64_HP_HSL_ANOT	(PT_LOOS + 0x13) -#define PT_IA_64_HP_STACK	(PT_LOOS + 0x14) - -/* Processor specific flags for the Phdr p_flags field.  */ -#define PF_IA_64_NORECOV	0x80000000	/* spec insns w/o recovery */ - -/* Processor specific values for the Shdr sh_type field.  */ -#define SHT_IA_64_EXT		(SHT_LOPROC + 0) /* extension bits */ -#define SHT_IA_64_UNWIND	(SHT_LOPROC + 1) /* unwind bits */ - -/* Processor specific flags for the Shdr sh_flags field.  */ -#define SHF_IA_64_SHORT		0x10000000	/* section near gp */ -#define SHF_IA_64_NORECOV	0x20000000	/* spec insns w/o recovery */ - -/* Processor specific values for the Dyn d_tag field.  */ -#define DT_IA_64_PLT_RESERVE	(DT_LOPROC + 0) -#define DT_IA_64_NUM		1 - -/* IA-64 relocations.  */ -#define R_IA64_NONE		0x00	/* none */ -#define R_IA64_IMM14		0x21	/* symbol + addend, add imm14 */ -#define R_IA64_IMM22		0x22	/* symbol + addend, add imm22 */ -#define R_IA64_IMM64		0x23	/* symbol + addend, mov imm64 */ -#define R_IA64_DIR32MSB		0x24	/* symbol + addend, data4 MSB */ -#define R_IA64_DIR32LSB		0x25	/* symbol + addend, data4 LSB */ -#define R_IA64_DIR64MSB		0x26	/* symbol + addend, data8 MSB */ -#define R_IA64_DIR64LSB		0x27	/* symbol + addend, data8 LSB */ -#define R_IA64_GPREL22		0x2a	/* @gprel(sym + add), add imm22 */ -#define R_IA64_GPREL64I		0x2b	/* @gprel(sym + add), mov imm64 */ -#define R_IA64_GPREL32MSB	0x2c	/* @gprel(sym + add), data4 MSB */ -#define R_IA64_GPREL32LSB	0x2d	/* @gprel(sym + add), data4 LSB */ -#define R_IA64_GPREL64MSB	0x2e	/* @gprel(sym + add), data8 MSB */ -#define R_IA64_GPREL64LSB	0x2f	/* @gprel(sym + add), data8 LSB */ -#define R_IA64_LTOFF22		0x32	/* @ltoff(sym + add), add imm22 */ -#define R_IA64_LTOFF64I		0x33	/* @ltoff(sym + add), mov imm64 */ -#define R_IA64_PLTOFF22		0x3a	/* @pltoff(sym + add), add imm22 */ -#define R_IA64_PLTOFF64I	0x3b	/* @pltoff(sym + add), mov imm64 */ -#define R_IA64_PLTOFF64MSB	0x3e	/* @pltoff(sym + add), data8 MSB */ -#define R_IA64_PLTOFF64LSB	0x3f	/* @pltoff(sym + add), data8 LSB */ -#define R_IA64_FPTR64I		0x43	/* @fptr(sym + add), mov imm64 */ -#define R_IA64_FPTR32MSB	0x44	/* @fptr(sym + add), data4 MSB */ -#define R_IA64_FPTR32LSB	0x45	/* @fptr(sym + add), data4 LSB */ -#define R_IA64_FPTR64MSB	0x46	/* @fptr(sym + add), data8 MSB */ -#define R_IA64_FPTR64LSB	0x47	/* @fptr(sym + add), data8 LSB */ -#define R_IA64_PCREL60B		0x48	/* @pcrel(sym + add), brl */ -#define R_IA64_PCREL21B		0x49	/* @pcrel(sym + add), ptb, call */ -#define R_IA64_PCREL21M		0x4a	/* @pcrel(sym + add), chk.s */ -#define R_IA64_PCREL21F		0x4b	/* @pcrel(sym + add), fchkf */ -#define R_IA64_PCREL32MSB	0x4c	/* @pcrel(sym + add), data4 MSB */ -#define R_IA64_PCREL32LSB	0x4d	/* @pcrel(sym + add), data4 LSB */ -#define R_IA64_PCREL64MSB	0x4e	/* @pcrel(sym + add), data8 MSB */ -#define R_IA64_PCREL64LSB	0x4f	/* @pcrel(sym + add), data8 LSB */ -#define R_IA64_LTOFF_FPTR22	0x52	/* @ltoff(@fptr(s+a)), imm22 */ -#define R_IA64_LTOFF_FPTR64I	0x53	/* @ltoff(@fptr(s+a)), imm64 */ -#define R_IA64_LTOFF_FPTR32MSB	0x54	/* @ltoff(@fptr(s+a)), data4 MSB */ -#define R_IA64_LTOFF_FPTR32LSB	0x55	/* @ltoff(@fptr(s+a)), data4 LSB */ -#define R_IA64_LTOFF_FPTR64MSB	0x56	/* @ltoff(@fptr(s+a)), data8 MSB */ -#define R_IA64_LTOFF_FPTR64LSB	0x57	/* @ltoff(@fptr(s+a)), data8 LSB */ -#define R_IA64_SEGREL32MSB	0x5c	/* @segrel(sym + add), data4 MSB */ -#define R_IA64_SEGREL32LSB	0x5d	/* @segrel(sym + add), data4 LSB */ -#define R_IA64_SEGREL64MSB	0x5e	/* @segrel(sym + add), data8 MSB */ -#define R_IA64_SEGREL64LSB	0x5f	/* @segrel(sym + add), data8 LSB */ -#define R_IA64_SECREL32MSB	0x64	/* @secrel(sym + add), data4 MSB */ -#define R_IA64_SECREL32LSB	0x65	/* @secrel(sym + add), data4 LSB */ -#define R_IA64_SECREL64MSB	0x66	/* @secrel(sym + add), data8 MSB */ -#define R_IA64_SECREL64LSB	0x67	/* @secrel(sym + add), data8 LSB */ -#define R_IA64_REL32MSB		0x6c	/* data 4 + REL */ -#define R_IA64_REL32LSB		0x6d	/* data 4 + REL */ -#define R_IA64_REL64MSB		0x6e	/* data 8 + REL */ -#define R_IA64_REL64LSB		0x6f	/* data 8 + REL */ -#define R_IA64_LTV32MSB		0x74	/* symbol + addend, data4 MSB */ -#define R_IA64_LTV32LSB		0x75	/* symbol + addend, data4 LSB */ -#define R_IA64_LTV64MSB		0x76	/* symbol + addend, data8 MSB */ -#define R_IA64_LTV64LSB		0x77	/* symbol + addend, data8 LSB */ -#define R_IA64_PCREL21BI	0x79	/* @pcrel(sym + add), 21bit inst */ -#define R_IA64_PCREL22		0x7a	/* @pcrel(sym + add), 22bit inst */ -#define R_IA64_PCREL64I		0x7b	/* @pcrel(sym + add), 64bit inst */ -#define R_IA64_IPLTMSB		0x80	/* dynamic reloc, imported PLT, MSB */ -#define R_IA64_IPLTLSB		0x81	/* dynamic reloc, imported PLT, LSB */ -#define R_IA64_COPY		0x84	/* copy relocation */ -#define R_IA64_SUB		0x85	/* Addend and symbol difference */ -#define R_IA64_LTOFF22X		0x86	/* LTOFF22, relaxable.  */ -#define R_IA64_LDXMOV		0x87	/* Use of LTOFF22X.  */ -#define R_IA64_TPREL14		0x91	/* @tprel(sym + add), imm14 */ -#define R_IA64_TPREL22		0x92	/* @tprel(sym + add), imm22 */ -#define R_IA64_TPREL64I		0x93	/* @tprel(sym + add), imm64 */ -#define R_IA64_TPREL64MSB	0x96	/* @tprel(sym + add), data8 MSB */ -#define R_IA64_TPREL64LSB	0x97	/* @tprel(sym + add), data8 LSB */ -#define R_IA64_LTOFF_TPREL22	0x9a	/* @ltoff(@tprel(s+a)), imm2 */ -#define R_IA64_DTPMOD64MSB	0xa6	/* @dtpmod(sym + add), data8 MSB */ -#define R_IA64_DTPMOD64LSB	0xa7	/* @dtpmod(sym + add), data8 LSB */ -#define R_IA64_LTOFF_DTPMOD22	0xaa	/* @ltoff(@dtpmod(sym + add)), imm22 */ -#define R_IA64_DTPREL14		0xb1	/* @dtprel(sym + add), imm14 */ -#define R_IA64_DTPREL22		0xb2	/* @dtprel(sym + add), imm22 */ -#define R_IA64_DTPREL64I	0xb3	/* @dtprel(sym + add), imm64 */ -#define R_IA64_DTPREL32MSB	0xb4	/* @dtprel(sym + add), data4 MSB */ -#define R_IA64_DTPREL32LSB	0xb5	/* @dtprel(sym + add), data4 LSB */ -#define R_IA64_DTPREL64MSB	0xb6	/* @dtprel(sym + add), data8 MSB */ -#define R_IA64_DTPREL64LSB	0xb7	/* @dtprel(sym + add), data8 LSB */ -#define R_IA64_LTOFF_DTPREL22	0xba	/* @ltoff(@dtprel(s+a)), imm22 */ - -/* SH specific declarations */ - -/* SH relocs.  */ -#define	R_SH_NONE		0 -#define	R_SH_DIR32		1 -#define	R_SH_REL32		2 -#define	R_SH_DIR8WPN		3 -#define	R_SH_IND12W		4 -#define	R_SH_DIR8WPL		5 -#define	R_SH_DIR8WPZ		6 -#define	R_SH_DIR8BP		7 -#define	R_SH_DIR8W		8 -#define	R_SH_DIR8L		9 -#define	R_SH_SWITCH16		25 -#define	R_SH_SWITCH32		26 -#define	R_SH_USES		27 -#define	R_SH_COUNT		28 -#define	R_SH_ALIGN		29 -#define	R_SH_CODE		30 -#define	R_SH_DATA		31 -#define	R_SH_LABEL		32 -#define	R_SH_SWITCH8		33 -#define	R_SH_GNU_VTINHERIT	34 -#define	R_SH_GNU_VTENTRY	35 -#define	R_SH_TLS_GD_32		144 -#define	R_SH_TLS_LD_32		145 -#define	R_SH_TLS_LDO_32		146 -#define	R_SH_TLS_IE_32		147 -#define	R_SH_TLS_LE_32		148 -#define	R_SH_TLS_DTPMOD32	149 -#define	R_SH_TLS_DTPOFF32	150 -#define	R_SH_TLS_TPOFF32	151 -#define	R_SH_GOT32		160 -#define	R_SH_PLT32		161 -#define	R_SH_COPY		162 -#define	R_SH_GLOB_DAT		163 -#define	R_SH_JMP_SLOT		164 -#define	R_SH_RELATIVE		165 -#define	R_SH_GOTOFF		166 -#define	R_SH_GOTPC		167 -/* Keep this the last entry.  */ -#define	R_SH_NUM		256 - -/* Additional s390 relocs */ - -#define R_390_NONE		0	/* No reloc.  */ -#define R_390_8			1	/* Direct 8 bit.  */ -#define R_390_12		2	/* Direct 12 bit.  */ -#define R_390_16		3	/* Direct 16 bit.  */ -#define R_390_32		4	/* Direct 32 bit.  */ -#define R_390_PC32		5	/* PC relative 32 bit.	*/ -#define R_390_GOT12		6	/* 12 bit GOT offset.  */ -#define R_390_GOT32		7	/* 32 bit GOT offset.  */ -#define R_390_PLT32		8	/* 32 bit PC relative PLT address.  */ -#define R_390_COPY		9	/* Copy symbol at runtime.  */ -#define R_390_GLOB_DAT		10	/* Create GOT entry.  */ -#define R_390_JMP_SLOT		11	/* Create PLT entry.  */ -#define R_390_RELATIVE		12	/* Adjust by program base.  */ -#define R_390_GOTOFF32		13	/* 32 bit offset to GOT.	 */ -#define R_390_GOTPC		14	/* 32 bit PC relative offset to GOT.  */ -#define R_390_GOT16		15	/* 16 bit GOT offset.  */ -#define R_390_PC16		16	/* PC relative 16 bit.	*/ -#define R_390_PC16DBL		17	/* PC relative 16 bit shifted by 1.  */ -#define R_390_PLT16DBL		18	/* 16 bit PC rel. PLT shifted by 1.  */ -#define R_390_PC32DBL		19	/* PC relative 32 bit shifted by 1.  */ -#define R_390_PLT32DBL		20	/* 32 bit PC rel. PLT shifted by 1.  */ -#define R_390_GOTPCDBL		21	/* 32 bit PC rel. GOT shifted by 1.  */ -#define R_390_64		22	/* Direct 64 bit.  */ -#define R_390_PC64		23	/* PC relative 64 bit.	*/ -#define R_390_GOT64		24	/* 64 bit GOT offset.  */ -#define R_390_PLT64		25	/* 64 bit PC relative PLT address.  */ -#define R_390_GOTENT		26	/* 32 bit PC rel. to GOT entry >> 1. */ -#define R_390_GOTOFF16		27	/* 16 bit offset to GOT. */ -#define R_390_GOTOFF64		28	/* 64 bit offset to GOT. */ -#define R_390_GOTPLT12		29	/* 12 bit offset to jump slot.	*/ -#define R_390_GOTPLT16		30	/* 16 bit offset to jump slot.	*/ -#define R_390_GOTPLT32		31	/* 32 bit offset to jump slot.	*/ -#define R_390_GOTPLT64		32	/* 64 bit offset to jump slot.	*/ -#define R_390_GOTPLTENT		33	/* 32 bit rel. offset to jump slot.  */ -#define R_390_PLTOFF16		34	/* 16 bit offset from GOT to PLT. */ -#define R_390_PLTOFF32		35	/* 32 bit offset from GOT to PLT. */ -#define R_390_PLTOFF64		36	/* 16 bit offset from GOT to PLT. */ -#define R_390_TLS_LOAD		37	/* Tag for load insn in TLS code.  */ -#define R_390_TLS_GDCALL	38	/* Tag for function call in general -					   dynamic TLS code. */ -#define R_390_TLS_LDCALL	39	/* Tag for function call in local -					   dynamic TLS code. */ -#define R_390_TLS_GD32		40	/* Direct 32 bit for general dynamic -					   thread local data.  */ -#define R_390_TLS_GD64		41	/* Direct 64 bit for general dynamic -					  thread local data.  */ -#define R_390_TLS_GOTIE12	42	/* 12 bit GOT offset for static TLS -					   block offset.  */ -#define R_390_TLS_GOTIE32	43	/* 32 bit GOT offset for static TLS -					   block offset.  */ -#define R_390_TLS_GOTIE64	44	/* 64 bit GOT offset for static TLS -					   block offset. */ -#define R_390_TLS_LDM32		45	/* Direct 32 bit for local dynamic -					   thread local data in LE code.  */ -#define R_390_TLS_LDM64		46	/* Direct 64 bit for local dynamic -					   thread local data in LE code.  */ -#define R_390_TLS_IE32		47	/* 32 bit address of GOT entry for -					   negated static TLS block offset.  */ -#define R_390_TLS_IE64		48	/* 64 bit address of GOT entry for -					   negated static TLS block offset.  */ -#define R_390_TLS_IEENT		49	/* 32 bit rel. offset to GOT entry for -					   negated static TLS block offset.  */ -#define R_390_TLS_LE32		50	/* 32 bit negated offset relative to -					   static TLS block.  */ -#define R_390_TLS_LE64		51	/* 64 bit negated offset relative to -					   static TLS block.  */ -#define R_390_TLS_LDO32		52	/* 32 bit offset relative to TLS -					   block.  */ -#define R_390_TLS_LDO64		53	/* 64 bit offset relative to TLS -					   block.  */ -#define R_390_TLS_DTPMOD	54	/* ID of module containing symbol.  */ -#define R_390_TLS_DTPOFF	55	/* Offset in TLS block.	 */ -#define R_390_TLS_TPOFF		56	/* Negated offset in static TLS -					   block.  */ -#define R_390_20		57	/* Direct 20 bit.  */ -#define R_390_GOT20		58	/* 20 bit GOT offset.  */ -#define R_390_GOTPLT20		59	/* 20 bit offset to jump slot.  */ -#define R_390_TLS_GOTIE20	60	/* 20 bit GOT offset for static TLS -					   block offset.  */ -/* Keep this the last entry.  */ -#define R_390_NUM		61 - - -/* CRIS relocations.  */ -#define R_CRIS_NONE		0 -#define R_CRIS_8		1 -#define R_CRIS_16		2 -#define R_CRIS_32		3 -#define R_CRIS_8_PCREL		4 -#define R_CRIS_16_PCREL		5 -#define R_CRIS_32_PCREL		6 -#define R_CRIS_GNU_VTINHERIT	7 -#define R_CRIS_GNU_VTENTRY	8 -#define R_CRIS_COPY		9 -#define R_CRIS_GLOB_DAT		10 -#define R_CRIS_JUMP_SLOT	11 -#define R_CRIS_RELATIVE		12 -#define R_CRIS_16_GOT		13 -#define R_CRIS_32_GOT		14 -#define R_CRIS_16_GOTPLT	15 -#define R_CRIS_32_GOTPLT	16 -#define R_CRIS_32_GOTREL	17 -#define R_CRIS_32_PLT_GOTREL	18 -#define R_CRIS_32_PLT_PCREL	19 - -#define R_CRIS_NUM		20 - - -/* AMD x86-64 relocations.  */ -#define R_X86_64_NONE		0	/* No reloc */ -#define R_X86_64_64		1	/* Direct 64 bit  */ -#define R_X86_64_PC32		2	/* PC relative 32 bit signed */ -#define R_X86_64_GOT32		3	/* 32 bit GOT entry */ -#define R_X86_64_PLT32		4	/* 32 bit PLT address */ -#define R_X86_64_COPY		5	/* Copy symbol at runtime */ -#define R_X86_64_GLOB_DAT	6	/* Create GOT entry */ -#define R_X86_64_JUMP_SLOT	7	/* Create PLT entry */ -#define R_X86_64_RELATIVE	8	/* Adjust by program base */ -#define R_X86_64_GOTPCREL	9	/* 32 bit signed PC relative -					   offset to GOT */ -#define R_X86_64_32		10	/* Direct 32 bit zero extended */ -#define R_X86_64_32S		11	/* Direct 32 bit sign extended */ -#define R_X86_64_16		12	/* Direct 16 bit zero extended */ -#define R_X86_64_PC16		13	/* 16 bit sign extended pc relative */ -#define R_X86_64_8		14	/* Direct 8 bit sign extended  */ -#define R_X86_64_PC8		15	/* 8 bit sign extended pc relative */ -#define R_X86_64_DTPMOD64	16	/* ID of module containing symbol */ -#define R_X86_64_DTPOFF64	17	/* Offset in module's TLS block */ -#define R_X86_64_TPOFF64	18	/* Offset in initial TLS block */ -#define R_X86_64_TLSGD		19	/* 32 bit signed PC relative offset -					   to two GOT entries for GD symbol */ -#define R_X86_64_TLSLD		20	/* 32 bit signed PC relative offset -					   to two GOT entries for LD symbol */ -#define R_X86_64_DTPOFF32	21	/* Offset in TLS block */ -#define R_X86_64_GOTTPOFF	22	/* 32 bit signed PC relative offset -					   to GOT entry for IE symbol */ -#define R_X86_64_TPOFF32	23	/* Offset in initial TLS block */ - -#define R_X86_64_NUM		24 - - -/* AM33 relocations.  */ -#define R_MN10300_NONE		0	/* No reloc.  */ -#define R_MN10300_32		1	/* Direct 32 bit.  */ -#define R_MN10300_16		2	/* Direct 16 bit.  */ -#define R_MN10300_8		3	/* Direct 8 bit.  */ -#define R_MN10300_PCREL32	4	/* PC-relative 32-bit.  */ -#define R_MN10300_PCREL16	5	/* PC-relative 16-bit signed.  */ -#define R_MN10300_PCREL8	6	/* PC-relative 8-bit signed.  */ -#define R_MN10300_GNU_VTINHERIT	7	/* Ancient C++ vtable garbage... */ -#define R_MN10300_GNU_VTENTRY	8	/* ... collection annotation.  */ -#define R_MN10300_24		9	/* Direct 24 bit.  */ -#define R_MN10300_GOTPC32	10	/* 32-bit PCrel offset to GOT.  */ -#define R_MN10300_GOTPC16	11	/* 16-bit PCrel offset to GOT.  */ -#define R_MN10300_GOTOFF32	12	/* 32-bit offset from GOT.  */ -#define R_MN10300_GOTOFF24	13	/* 24-bit offset from GOT.  */ -#define R_MN10300_GOTOFF16	14	/* 16-bit offset from GOT.  */ -#define R_MN10300_PLT32		15	/* 32-bit PCrel to PLT entry.  */ -#define R_MN10300_PLT16		16	/* 16-bit PCrel to PLT entry.  */ -#define R_MN10300_GOT32		17	/* 32-bit offset to GOT entry.  */ -#define R_MN10300_GOT24		18	/* 24-bit offset to GOT entry.  */ -#define R_MN10300_GOT16		19	/* 16-bit offset to GOT entry.  */ -#define R_MN10300_COPY		20	/* Copy symbol at runtime.  */ -#define R_MN10300_GLOB_DAT	21	/* Create GOT entry.  */ -#define R_MN10300_JMP_SLOT	22	/* Create PLT entry.  */ -#define R_MN10300_RELATIVE	23	/* Adjust by program base.  */ - -#define R_MN10300_NUM		24 - - -/* M32R relocs.  */ -#define R_M32R_NONE		0	/* No reloc. */ -#define R_M32R_16		1	/* Direct 16 bit. */ -#define R_M32R_32		2	/* Direct 32 bit. */ -#define R_M32R_24		3	/* Direct 24 bit. */ -#define R_M32R_10_PCREL		4	/* PC relative 10 bit shifted. */ -#define R_M32R_18_PCREL		5	/* PC relative 18 bit shifted. */ -#define R_M32R_26_PCREL		6	/* PC relative 26 bit shifted. */ -#define R_M32R_HI16_ULO		7	/* High 16 bit with unsigned low. */ -#define R_M32R_HI16_SLO		8	/* High 16 bit with signed low. */ -#define R_M32R_LO16		9	/* Low 16 bit. */ -#define R_M32R_SDA16		10	/* 16 bit offset in SDA. */ -#define R_M32R_GNU_VTINHERIT	11 -#define R_M32R_GNU_VTENTRY	12 -/* M32R relocs use SHT_RELA.  */ -#define R_M32R_16_RELA		33	/* Direct 16 bit. */ -#define R_M32R_32_RELA		34	/* Direct 32 bit. */ -#define R_M32R_24_RELA		35	/* Direct 24 bit. */ -#define R_M32R_10_PCREL_RELA	36	/* PC relative 10 bit shifted. */ -#define R_M32R_18_PCREL_RELA	37	/* PC relative 18 bit shifted. */ -#define R_M32R_26_PCREL_RELA	38	/* PC relative 26 bit shifted. */ -#define R_M32R_HI16_ULO_RELA	39	/* High 16 bit with unsigned low */ -#define R_M32R_HI16_SLO_RELA	40	/* High 16 bit with signed low */ -#define R_M32R_LO16_RELA	41	/* Low 16 bit */ -#define R_M32R_SDA16_RELA	42	/* 16 bit offset in SDA */ -#define R_M32R_RELA_GNU_VTINHERIT	43 -#define R_M32R_RELA_GNU_VTENTRY	44 -#define R_M32R_REL32		45	/* PC relative 32 bit */ - -#define R_M32R_GOT24		48	/* 24 bit GOT entry */ -#define R_M32R_26_PLTREL	49	/* 26 bit PC relative to PLT shifted */ -#define R_M32R_COPY		50	/* Copy symbol at runtime */ -#define R_M32R_GLOB_DAT		51	/* Create GOT entry */ -#define R_M32R_JMP_SLOT		52	/* Create PLT entry */ -#define R_M32R_RELATIVE		53	/* Adjust by program base */ -#define R_M32R_GOTOFF		54	/* 24 bit offset to GOT */ -#define R_M32R_GOTPC24		55	/* 24 bit PC relative offset to GOT */ -#define R_M32R_GOT16_HI_ULO	56	/* High 16 bit GOT entry with unsigned -					   low */ -#define R_M32R_GOT16_HI_SLO	57	/* High 16 bit GOT entry with signed -					   low */ -#define R_M32R_GOT16_LO		58	/* Low 16 bit GOT entry */ -#define R_M32R_GOTPC_HI_ULO	59	/* High 16 bit PC relative offset to -					   GOT with unsigned low */ -#define R_M32R_GOTPC_HI_SLO	60	/* High 16 bit PC relative offset to -					   GOT with signed low */ -#define R_M32R_GOTPC_LO		61	/* Low 16 bit PC relative offset to -					   GOT */ -#define R_M32R_GOTOFF_HI_ULO	62	/* High 16 bit offset to GOT -					   with unsigned low */ -#define R_M32R_GOTOFF_HI_SLO	63	/* High 16 bit offset to GOT -					   with signed low */ -#define R_M32R_GOTOFF_LO	64	/* Low 16 bit offset to GOT */ -#define R_M32R_NUM		256	/* Keep this the last entry. */ - - -__END_DECLS - -#endif	/* elf.h */ diff --git a/adk/tools/pkgmaker.c b/adk/tools/pkgmaker.c index 30a0d11ca..e4306d7cc 100644 --- a/adk/tools/pkgmaker.c +++ b/adk/tools/pkgmaker.c @@ -353,7 +353,7 @@ int main() {  	char *pkg_name, *pkg_depends, *pkg_kdepends, *pkg_needs, *pkg_depends_system, *pkg_depends_libc, *pkg_section, *pkg_descr, *pkg_url;  	char *pkg_subpkgs, *pkg_cfline, *pkg_dflt;  	char *pkgname, *sysname, *pkg_debug, *pkg_bb; -	char *pkg_libc_depends, *pkg_host_depends, *pkg_system_depends, *pkg_arch_depends, *pkg_flavours, *pkg_flavours_string, *pkg_choices, *pseudo_name; +	char *pkg_libc_depends, *pkg_system_depends, *pkg_arch_depends, *pkg_flavours, *pkg_flavours_string, *pkg_choices, *pseudo_name;  	char *packages, *pkg_name_u, *pkgs, *pkg_opts, *pkg_libname;  	char *saveptr, *p_ptr, *s_ptr, *pkg_helper, *sname, *sname2;  	int result; @@ -377,7 +377,6 @@ int main() {  	pkg_subpkgs = NULL;  	pkg_arch_depends = NULL;  	pkg_system_depends = NULL; -	pkg_host_depends = NULL;  	pkg_libc_depends = NULL;  	pkg_dflt = NULL;  	pkg_cfline = NULL; @@ -574,8 +573,6 @@ int main() {  						continue;  					if ((parse_var(buf, "PKG_LIBC_DEPENDS", NULL, &pkg_libc_depends)) == 0)  						continue; -					if ((parse_var(buf, "PKG_HOST_DEPENDS", NULL, &pkg_host_depends)) == 0) -						continue;  					if ((parse_var(buf, "PKG_ARCH_DEPENDS", NULL, &pkg_arch_depends)) == 0)  						continue;  					if ((parse_var(buf, "PKG_SYSTEM_DEPENDS", NULL, &pkg_system_depends)) == 0) @@ -864,26 +861,6 @@ int main() {  					free(pkg_helper);  					pkg_helper = NULL;  				} -				/* create package host dependency information */ -				if (pkg_host_depends != NULL) { -					pkg_helper = strdup(pkg_host_depends); -					token = strtok(pkg_helper, " "); -					fprintf(cfg, "\tdepends on "); -					sp = ""; -					while (token != NULL) { -						if(strncmp(token, "!", 1) == 0) { -							fprintf(cfg, "%s!ADK_HOST%s", sp, toupperstr(token)); -							sp = " && "; -						} else { -							fprintf(cfg, "%sADK_HOST_%s", sp, toupperstr(token)); -							sp = " || "; -						} -						token = strtok(NULL, " "); -					} -					fprintf(cfg, "\n"); -					free(pkg_helper); -					pkg_helper = NULL; -				}  				/* create package libc dependency information */  				if (pkg_libc_depends != NULL) { @@ -1248,7 +1225,6 @@ int main() {  			free(pkg_subpkgs);  			free(pkg_arch_depends);  			free(pkg_system_depends); -			free(pkg_host_depends);  			free(pkg_libc_depends);  			free(pkg_dflt);  			free(pkg_cfline); @@ -1266,7 +1242,6 @@ int main() {  			pkg_subpkgs = NULL;  			pkg_arch_depends = NULL;  			pkg_system_depends = NULL; -			pkg_host_depends = NULL;  			pkg_libc_depends = NULL;  			pkg_dflt = NULL;  			pkg_cfline = NULL; diff --git a/docs/adding-packages-directory.txt b/docs/adding-packages-directory.txt index 227107a89..2f87b7c3e 100644 --- a/docs/adding-packages-directory.txt +++ b/docs/adding-packages-directory.txt @@ -45,10 +45,6 @@ are space separated and can be negated with ! as a prefix.  ** variable used PKG_LIBC_DEPENDS  ** allowed values are: uclibc-ng glibc musl -* Host system -** variable used PKG_HOST_DEPENDS -** allowed values are: linux darwin cygwin freebsd netbsd openbsd -  * Special support needed (Toolchain with Threads, Realtime or C++ enabled)  ** variable used PKG_NEEDS  ** allowed values are: threads rt c++ diff --git a/docs/prerequisite.txt b/docs/prerequisite.txt index 342592414..32fb77a75 100644 --- a/docs/prerequisite.txt +++ b/docs/prerequisite.txt @@ -5,16 +5,11 @@  System requirements  ------------------- -OpenADK is designed to run on Linux systems. But there is support to run on -MacOS X, Windows with Cygwin, OpenBSD, MirBSD, NetBSD and FreeBSD. Main -development happens on Debian/GNU Linux and MacOS X. The other host platforms -are occasionally tested.  OpenADK detects the host system and displays only the -software packages, which are known to be cross-compilable on the used host. -For example OpenJDK7 is only cross-compilable on a Linux host. - +OpenADK is designed to run on Linux systems.  +Main development happens on Debian/GNU Linux.   OpenADK needs some software to be already installed on the host  system; here is the list of the mandatory packages, -package names may vary between host systems. +package names may vary between Linux systems.  * Build tools: @@ -28,6 +23,7 @@ package names may vary between host systems.  ** +git+  ** +strings+  ** +curl or wget+ +** +xz+  ** +ncurses development files+  ** +zlib development files+  ** +libc development files+ diff --git a/mk/build.mk b/mk/build.mk index aae4ffeca..89c7303bf 100644 --- a/mk/build.mk +++ b/mk/build.mk @@ -101,6 +101,12 @@ POSTCONFIG=		-@\  				rebuild=1;\  			fi; \  		done; \ +		for i in ADK_TARGET_DUAL_BOOT ADK_TARGET_QEMU_WITH_GRAPHIC;do \ +			if [ "$$(grep ^$$i .config|md5sum)" != "$$(grep ^$$i .config.old|md5sum)" ];then \ +				touch .rebuild.grub;\ +				rebuild=1;\ +			fi; \ +		done; \  		for i in ADK_TARGET_GPU_MEM ADK_LINUX_KERNEL_SND_BCM2708;do \  			if [ "$$(grep ^$$i .config|md5sum)" != "$$(grep ^$$i .config.old|md5sum)" ];then \  				touch .rebuild.bcm28xx-bootloader;\ diff --git a/mk/host-bottom.mk b/mk/host-bottom.mk index 21ba5223f..26526dff9 100644 --- a/mk/host-bottom.mk +++ b/mk/host-bottom.mk @@ -66,6 +66,7 @@ ifeq (${HOST_CONFIG_STYLE},meson)  		meson setup --prefix $(STAGING_HOST_DIR)/usr \  		 --pkg-config-path $(STAGING_HOST_DIR)/usr/lib/pkgconfig \  		 --buildtype release $(HOST_MESON_FLAGS) \ +		 --wrap-mode=nodownload \  		$(WRKSRC) $(WRKBUILD) $(MAKE_TRACE)  endif  ifeq (${HOST_CONFIG_STYLE},perl) @@ -87,7 +88,7 @@ host-build:  ${_HOST_BUILD_COOKIE}: ${_HOST_CONFIGURE_COOKIE}  	@$(CMD_TRACE) "compiling.. "  ifneq ($(filter meson,${HOST_STYLE}),) -	PATH='$(HOST_PATH)' ninja -v -C $(WRKBUILD) $(MAKE_TRACE) +	PATH='$(HOST_PATH)' LD_LIBRARY_PATH='$(STAGING_HOST_DIR)/usr/lib' ninja -v -C $(WRKBUILD) $(MAKE_TRACE)  else ifneq (${HOST_STYLE},manual)  	cd ${WRKBUILD} && env ${HOST_MAKE_ENV} ${MAKE} -j${ADK_MAKE_JOBS} -f ${MAKE_FILE} \  	    ${HOST_MAKE_FLAGS} ${HOST_ALL_TARGET} $(MAKE_TRACE) diff --git a/mk/image.mk b/mk/image.mk index 364b80db3..f4def3c0a 100644 --- a/mk/image.mk +++ b/mk/image.mk @@ -13,6 +13,8 @@ ifeq (${ADK_BINSH_ASH},y)  BINSH:=ash  else ifeq (${ADK_BINSH_BASH},y)  BINSH:=bash +else ifeq (${ADK_BINSH_TOYSH},y) +BINSH:=toysh  else ifeq (${ADK_BINSH_SASH},y)  BINSH:=sash  else ifeq (${ADK_BINSH_HUSH},y) @@ -30,6 +32,8 @@ ifeq (${ADK_ROOTSH_ASH},y)  ROOTSH:=/bin/ash  else ifeq (${ADK_ROOTSH_BASH},y)  ROOTSH:=/bin/bash +else ifeq (${ADK_ROOTSH_TOYSH},y) +ROOTSH:=/bin/toysh  else ifeq (${ADK_ROOTSH_SASH},y)  ROOTSH:=/bin/sash  else ifeq (${ADK_ROOTSH_HUSH},y) @@ -66,12 +70,10 @@ image-prepare-post:  	rng=/dev/arandom; test -e $$rng || rng=/dev/urandom; \  	    dd if=$$rng bs=512 count=1 >>${TARGET_DIR}/etc/.rnd 2>/dev/null; \  	    chmod 600 ${TARGET_DIR}/etc/.rnd -	-for dir in X11 truetype; do \ +	-for dir in X11 truetype dejavu; do \  		if [ -d ${TARGET_DIR}/usr/share/fonts/$${dir} ];then \ -			for i in $$(ls ${TARGET_DIR}/usr/share/fonts/$${dir}/);do \ -				mkfontdir ${TARGET_DIR}/usr/share/fonts/$${dir}/$${i}; \ -				mkfontscale ${TARGET_DIR}/usr/share/fonts/$${dir}/$${i}; \ -			done; \ +			mkfontdir ${TARGET_DIR}/usr/share/fonts/$${dir}; \ +			mkfontscale ${TARGET_DIR}/usr/share/fonts/$${dir}; \  		fi; \  	done  	$(SED) '/^root:/s!:/bin/sh$$!:${ROOTSH}!' ${TARGET_DIR}/etc/passwd @@ -160,9 +162,14 @@ ${STAGING_TARGET_DIR}/${INITRAMFS}_list: ${TARGET_DIR}/.adk  	( \  		echo "nod /dev/console 0644 0 0 c 5 1"; \  		echo "nod /dev/tty 0644 0 0 c 5 0"; \ -		for i in 0 1 2 3 4; do \ -			echo "nod /dev/tty$$i 0644 0 0 c 4 $$$$i"; \ -		done; \ +		echo "nod /dev/tty0 0644 0 0 c 4 0"; \ +		echo "nod /dev/tty1 0644 0 0 c 4 1"; \ +		echo "nod /dev/tty2 0644 0 0 c 4 2"; \ +		echo "nod /dev/tty3 0644 0 0 c 4 3"; \ +		echo "nod /dev/tty4 0644 0 0 c 4 4"; \ +		echo "nod /dev/tty5 0644 0 0 c 4 5"; \ +		echo "nod /dev/tty6 0644 0 0 c 4 6"; \ +		echo "nod /dev/tty11 0644 0 0 c 4 11"; \  		echo "nod /dev/null 0666 0 0 c 1 3"; \  		echo "nod /dev/zero 0666 0 0 c 1 5"; \  		echo "nod /dev/kmsg 0644 0 0 c 1 11"; \ @@ -347,7 +354,7 @@ ${FW_DIR}/${GENIMAGE}: ${TARGET_DIR} kernel-package  	mkdir -p $(TARGET_DIR)/boot/extlinux  	$(CP) $(EXTLINUX) $(TARGET_DIR)/boot/extlinux  	$(CP) $(FW_DIR)/kernel $(TARGET_DIR)/boot -	-$(CP) $(FW_DIR)/*.dtb $(TARGET_DIR)/boot +	-$(CP) $(FW_DIR)/*.dtb $(TARGET_DIR)/boot 2>/dev/null  ifeq ($(ADK_RUNTIME_FIX_PERMISSION),y)  	echo '#!/bin/sh' > $(ADK_TOPDIR)/scripts/fakeroot.sh  	echo "chown -R 0:0 $(TARGET_DIR)" >> $(ADK_TOPDIR)/scripts/fakeroot.sh @@ -359,7 +366,7 @@ ifeq ($(ADK_RUNTIME_FIX_PERMISSION),y)  endif  ifeq ($(ADK_TARGET_DUAL_BOOT),y)  	$(CP) $(FW_DIR)/kernel $(TARGET_DIR) -	-$(CP) $(FW_DIR)/*.dtb $(TARGET_DIR) +	-$(CP) $(FW_DIR)/*.dtb $(TARGET_DIR) 2>/dev/null  	mkdir $(TARGET_DIR)/extlinux  	$(CP) $(EXTLINUX) $(TARGET_DIR)/extlinux  	$(SED) "s#root=.*#root=/dev/$(ADK_TARGET_ROOTDEV)p1#" $(TARGET_DIR)/extlinux/extlinux.conf @@ -393,10 +400,10 @@ endif  ifeq ($(ADK_TARGET_DUAL_BOOT),y)  	(cd ${TARGET_DIR}; find . | sed -n '/^\.\//s///p' | sort | \  		PATH='${HOST_PATH}' $(CPIO) -o --quiet -Hustar --owner=0:0 | \ -		${GZIP} -c > ${FW_DIR}/openadk.tar.gz) +		gzip -c > ${FW_DIR}/openadk.tar.gz)  	(cd ${FW_DIR}; PATH='${HOST_PATH}' sha256sum openadk.tar.gz \  		| cut -d\  -f1 > sha256.txt) -	(cd ${FW_DIR}; PATH='${HOST_PATH}' tar -cf ${ADK_TARGET_SYSTEM}-update.tar openadk.tar.gzip sha256.txt) +	(cd ${FW_DIR}; PATH='${HOST_PATH}' tar -cf ${ADK_TARGET_SYSTEM}-update.tar openadk.tar.gz sha256.txt)  	@rm -rf ${FW_DIR}/temp  endif  ifeq ($(ADK_PACKAGE_GRUB_EFI_X86)$(ADK_PACKAGE_GRUB_EFI_X86_64),y) diff --git a/mk/kernel-build.mk b/mk/kernel-build.mk index 29458abf0..f13bad41a 100644 --- a/mk/kernel-build.mk +++ b/mk/kernel-build.mk @@ -121,7 +121,7 @@ ifneq ($(KERNEL_MODULES_USED),)  	done  	$(CMD_TRACE) " done"  	$(END_TRACE) -	$(CP) $(LINUX_BUILD_DIR)/modules/lib/modules/$(KERNEL_VERSION)/modules.{order,builtin} \ +	-$(CP) $(LINUX_BUILD_DIR)/modules/lib/modules/$(KERNEL_VERSION)/modules.{order,builtin} \  		$(TARGET_DIR)/lib/modules/$(KERNEL_VERSION)/  endif diff --git a/mk/kernel-vars.mk b/mk/kernel-vars.mk index 475353d6f..e65d513f6 100644 --- a/mk/kernel-vars.mk +++ b/mk/kernel-vars.mk @@ -15,20 +15,8 @@ KERNEL_MAKE_OPTS+=	V=1 \  			HOSTCC="${HOST_CC}" \  			HOSTCXX="${HOST_CXX}" \  			SHELL='${SHELL}' \ -			CONFIG_SHELL='${SHELL}' - -# regex for relocs needs pcre -ifeq ($(OS_FOR_BUILD),Darwin) -KERNEL_MAKE_OPTS+=	HOSTLDFLAGS='-lpcreposix -Wl,-no_pie' -endif - -# non-Linux platforms need elf.h -ifneq ($(OS_FOR_BUILD),Linux) -KERNEL_MAKE_OPTS+=	HOSTCFLAGS='$(HOST_CPPFLAGS) ${HOST_CFLAGS}' -KERNEL_MAKE_OPTS+=	HOST_EXTRACFLAGS='-I${LINUX_DIR}/tools/include -I${LINUX_DIR}/usr/include -I${LINUX_DIR}/security/selinux/include -I${ADK_TOPDIR}/adk/include -I${LINUX_DIR}/scripts/dtc/libfdt -DKBUILD_NO_NLS' -else -KERNEL_MAKE_OPTS+=	HOSTCFLAGS='${HOST_CFLAGS}' -endif +			CONFIG_SHELL='${SHELL}' \ +			HOSTCFLAGS='$(HOST_CPPFLAGS) $(HOST_CFLAGS)'  ifneq ($(ADK_TARGET_KERNEL_LOADADDR),)  KERNEL_MAKE_OPTS+=	LOADADDR=$(ADK_TARGET_KERNEL_LOADADDR) diff --git a/mk/linux-ver.mk b/mk/linux-ver.mk index 3527f2564..e375752a4 100644 --- a/mk/linux-ver.mk +++ b/mk/linux-ver.mk @@ -15,47 +15,47 @@ KERNEL_FILE_VER:=	$(ADK_TARGET_LINUX_KERNEL_GIT)  KERNEL_RELEASE:=	1  KERNEL_VERSION:=	$(ADK_TARGET_LINUX_KERNEL_GIT_VER)-$(KERNEL_RELEASE)  endif -ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_6_13),y) -KERNEL_FILE_VER:=	6.13.6 +ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_6_17),y) +KERNEL_FILE_VER:=	6.17.2  KERNEL_RELEASE:=	1  KERNEL_VERSION:=	$(KERNEL_FILE_VER)-$(KERNEL_RELEASE) -KERNEL_HASH:=		de0053cb413d408f20fd1d5788219951b8a4403e5dac1b1d9032090938acd199 +KERNEL_HASH:=		fdebcb065065f5c1b8dc68a6fb59cda50cdddbf9103d207c2196d55ea764f57f  endif  ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_6_12),y) -KERNEL_FILE_VER:=	6.12.18 +KERNEL_FILE_VER:=	6.12.52  KERNEL_RELEASE:=	1  KERNEL_VERSION:=	$(KERNEL_FILE_VER)-$(KERNEL_RELEASE) -KERNEL_HASH:=		beb902a5f69d9e57710112203db38111dad6d30556ea8ce389284c8077fe944d +KERNEL_HASH:=		b4850cf670a032c70f38b713a27d62046c5f747caf028c5f50b18f98606a9eb1  endif  ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_6_6),y) -KERNEL_FILE_VER:=	6.6.82 +KERNEL_FILE_VER:=	6.6.88  KERNEL_RELEASE:=	1  KERNEL_VERSION:=	$(KERNEL_FILE_VER)-$(KERNEL_RELEASE) -KERNEL_HASH:=		f3c2389b8c23cabe747f104a3e434201ca6e7725bbbfb3a8c59a063ac4820e41 +KERNEL_HASH:=		19df89b63ef7e950de7297dabfac0569183bf87636f4c300a25336c7da490650  endif  ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_6_1),y) -KERNEL_FILE_VER:=	6.1.130 +KERNEL_FILE_VER:=	6.1.135  KERNEL_RELEASE:=	1  KERNEL_VERSION:=	$(KERNEL_FILE_VER)-$(KERNEL_RELEASE) -KERNEL_HASH:=		9416b2c2d448ec7f54bb0ce5713fb34c32dae4a4edf1abd8cf7a8995cbac66fd +KERNEL_HASH:=		e9d17ae1ff96a771e0c5061a50cf9209ce457cf28c8e01165d611523f3957eb9  endif  ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_5_15),y) -KERNEL_FILE_VER:=	5.15.178 +KERNEL_FILE_VER:=	5.15.180  KERNEL_RELEASE:=	1  KERNEL_VERSION:=	$(KERNEL_FILE_VER)-$(KERNEL_RELEASE) -KERNEL_HASH:=		efe9f7eb5ea4d26cec6290689343e1804eb3b4a88ff5a60497a696fc08157c42 +KERNEL_HASH:=		f51f68b8bbe60aca5e1ff3781f7e5d2ca6a31dd299c8446c39bf880bfff1cd39  endif  ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_5_10),y) -KERNEL_FILE_VER:=	5.10.234 +KERNEL_FILE_VER:=	5.10.236  KERNEL_RELEASE:=	1  KERNEL_VERSION:=	$(KERNEL_FILE_VER)-$(KERNEL_RELEASE) -KERNEL_HASH:=		9597c4fee2f1ce452acfec516f4325ad342155872052fd5f0d9ce2ddcc26ebe5 +KERNEL_HASH:=		6da5cc8f7d39ed3acb4d59129a3f1570d981526ebbf58ea82595b7b6e000fb89  endif  ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_5_4),y) -KERNEL_FILE_VER:=	5.4.289 +KERNEL_FILE_VER:=	5.4.292  KERNEL_RELEASE:=	1  KERNEL_VERSION:=	$(KERNEL_FILE_VER)-$(KERNEL_RELEASE) -KERNEL_HASH:=		1e3e5fc052c8e15f8eaa37d30bf4f0b3eef7430dd234d9fed0d0005852a06d10 +KERNEL_HASH:=		0bcbf580d1ea623ac5879d0f2d69796c82431b3f653c4749e63766dbf737be85  endif  ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_4_19),y)  KERNEL_FILE_VER:=	4.19.320 diff --git a/mk/mirrors.mk b/mk/mirrors.mk index dba447fec..4ef464402 100644 --- a/mk/mirrors.mk +++ b/mk/mirrors.mk @@ -22,6 +22,8 @@ MASTER_SITE_KERNEL?=	\  endif  MASTER_SITE_GNU?=	\ +	https://ftp.fau.de/gnu/ \ +	https://ftp.halifax.rwth-aachen.de/gnu/ \  	https://ftp.gnu.org/gnu/ \  	http://ftp.gnu.org/gnu/ \ diff --git a/mk/pkg-bottom.mk b/mk/pkg-bottom.mk index abc1e1604..e3bae5255 100644 --- a/mk/pkg-bottom.mk +++ b/mk/pkg-bottom.mk @@ -69,7 +69,8 @@ else ifneq ($(filter cmake,${CONFIG_STYLE}),)  		-e "s#@@STAGING_HOST_DIR@@#$(STAGING_HOST_DIR)#g" \  		$(SCRIPT_DIR)/toolchain.cmake.in > $(SCRIPT_DIR)/toolchain.cmake  	(cd ${WRKBUILD} && PATH='${HOST_PATH}' \ -		cmake -Wno-dev -DCMAKE_INSTALL_PREFIX:PATH=/usr \ +		cmake -Wno-dev -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE=Release \ +			-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \  			-DCMAKE_TOOLCHAIN_FILE="$(SCRIPT_DIR)/toolchain.cmake" \  			${CMAKE_FLAGS} ${WRKSRC}) $(MAKE_TRACE)  else ifneq ($(filter minimal,${CONFIG_STYLE}),) @@ -140,11 +141,11 @@ ${_BUILD_COOKIE}: ${_CONFIGURE_COOKIE}  	@env ${MAKE_ENV} ${MAKE} pre-build $(MAKE_TRACE)  	@$(CMD_TRACE) "compiling.. "  ifneq ($(filter meson,${BUILD_STYLE}),) -	PATH='$(HOST_PATH)' ninja -v -C $(WRKBUILD) $(MAKE_TRACE) +	PATH='$(HOST_PATH)' LD_LIBRARY_PATH='$(STAGING_HOST_DIR)/usr/lib' ninja -v -C $(WRKBUILD) $(MAKE_TRACE)  else ifneq ($(filter manual,${BUILD_STYLE}),)  	env ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} do-build $(MAKE_TRACE)  else ifeq ($(strip ${BUILD_STYLE}),) -	cd ${WRKBUILD} && env ${MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \ +	cd ${WRKBUILD} && env ${MAKE_ENV} LD_LIBRARY_PATH='$(STAGING_HOST_DIR)/usr/lib' ${MAKE} -f ${MAKE_FILE} \  	    ${MAKE_FLAGS} ${ALL_TARGET} $(MAKE_TRACE)  else  	@echo "Invalid BUILD_STYLE '${BUILD_STYLE}'" >&2 @@ -168,7 +169,7 @@ ifneq ($(filter meson,${INSTALL_STYLE}),)  else ifneq ($(filter manual,${INSTALL_STYLE}),)  	env ${MAKE_ENV} ${MAKE} do-install $(MAKE_TRACE)  else ifeq ($(strip ${INSTALL_STYLE}),) -	cd ${WRKBUILD} && env ${MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \ +	cd ${WRKBUILD} && env ${MAKE_ENV} LD_LIBRARY_PATH='$(STAGING_HOST_DIR)/usr/lib' ${MAKE} -f ${MAKE_FILE} \  	    DESTDIR='${WRKINST}' ${FAKE_FLAGS} ${INSTALL_TARGET} $(MAKE_TRACE)  	env ${MAKE_ENV} ${MAKE} post-install $(MAKE_TRACE)  else diff --git a/mk/vars.mk b/mk/vars.mk index b99230c84..91dfc700e 100644 --- a/mk/vars.mk +++ b/mk/vars.mk @@ -168,6 +168,10 @@ ifeq ($(ADK_TARGET_ARCH_MIPS),y)  TARGET_CFLAGS+=		-m$(ADK_TARGET_FLOAT)-float  TARGET_CXXFLAGS+=	-m$(ADK_TARGET_FLOAT)-float  endif +ifeq ($(ADK_TARGET_ARCH_OR1K),y) +TARGET_CFLAGS+=		-m$(ADK_TARGET_FLOAT)-float +TARGET_CXXFLAGS+=	-m$(ADK_TARGET_FLOAT)-float +endif  endif  ifeq ($(ADK_TARGET_BINFMT_FLAT),y) @@ -319,11 +323,7 @@ endif  # host compiler and linker flags  HOST_CPPFLAGS:=		-I$(STAGING_HOST_DIR)/usr/include -ifeq ($(OS_FOR_BUILD),Darwin) -HOST_LDFLAGS:=		-L$(STAGING_HOST_DIR)/usr/lib -else  HOST_LDFLAGS:=		-L$(STAGING_HOST_DIR)/usr/lib -Wl,-rpath -Wl,${STAGING_HOST_DIR}/usr/lib -endif  ifneq (${ADK_UPDATE_PATCHES_GIT},)  PATCH=			PATH='${HOST_PATH}' ${BASH} $(SCRIPT_DIR)/patch_git.sh diff --git a/package/ant/Makefile b/package/ant/Makefile deleted file mode 100644 index b9d989ac3..000000000 --- a/package/ant/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		ant -PKG_VERSION:=		1.8.4 -PKG_RELEASE:=		1 -PKG_HASH:=		5de65f7ba3f67e436ffffcdc0a73f591d1006e9fb41af8632c1f1f84d4a3e0b1 -PKG_DESCR:=		java code build utility -PKG_SECTION:=		dev/tools -HOST_BUILDDEP:=		gcj-host -PKG_SITES:=		http://archive.apache.org/dist/ant/source/ - -PKG_CFLINE_ANT:=	depends on ADK_HOST_ONLY - -DISTFILES:=             apache-$(PKG_NAME)-$(PKG_VERSION)-src.tar.bz2 -WRKDIST=                $(WRKDIR)/apache-$(PKG_NAME)-$(PKG_VERSION) - -include $(ADK_TOPDIR)/mk/host.mk -include $(ADK_TOPDIR)/mk/package.mk - -$(eval $(call HOST_template,ANT,ant,$(PKG_VERSION)-${PKG_RELEASE})) - -HOST_STYLE:=		manual - -host-build: -	if [ ! -f $(WRKBUILD)/lib/optional/junit-4.9b2.jar ];then \ -		cd $(WRKBUILD)/lib/optional; wget http://distfiles.openadk.org/junit-4.9b2.jar; \ -	fi -	cp $(DL_DIR)/ecj*.jar $(WRKBUILD)/lib/optional/ecj.jar -	(cd ${WRKBUILD}; \ -		export ANT_OPTS="-Xms256m -Xmx256m" ;\ -		export JAVA_HOME=$(STAGING_HOST_DIR)/usr/lib/jvm ;\ -		export CLASSPATH=$(STAGING_HOST_DIR)/usr/lib/jvm/lib/tools.jar ;\ -		export JAVAC=$(STAGING_HOST_DIR)/usr/bin/ecj ;\ -		export JAVACMD=$(STAGING_HOST_DIR)/usr/bin/gij ;\ -		$(BASH) ./build.sh) - -ant-hostinstall: -	cd $(WRKBUILD)/dist; \ -	$(CP) bin/* $(STAGING_HOST_DIR)/usr/bin ; \ -	$(CP) lib/* $(STAGING_HOST_DIR)/usr/lib - -include ${ADK_TOPDIR}/mk/host-bottom.mk -include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/apcupsd/Makefile b/package/apcupsd/Makefile index 52b6def9a..382f33e2d 100644 --- a/package/apcupsd/Makefile +++ b/package/apcupsd/Makefile @@ -11,12 +11,12 @@ PKG_DESCR:=		APC UPS daemon with integrated tcp/ip remote shutdown  PKG_SECTION:=		sys/misc  PKG_DEPENDS:=		libusb  PKG_BUILDDEP:=		libusb +PKG_KDEPENDS:=		usb-hid usb-hiddev  PKG_URL:=		http://www.apcupsd.org  PKG_SITES:=		$(MASTER_SITE_SOURCEFORGE:=apcupsd/)  DISTFILES:=             $(PKG_NAME)-$(PKG_VERSION).tar.gz  PKG_CFLINE_APCUPSD:=	select BUSYBOX_WALL@ -PKG_CFLINE_APCUPSD+=	select ADK_LINUX_KERNEL_USB_HID@  include $(ADK_TOPDIR)/mk/package.mk diff --git a/package/apex/Makefile b/package/apex/Makefile new file mode 100644 index 000000000..7d2b79ea9 --- /dev/null +++ b/package/apex/Makefile @@ -0,0 +1,46 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		apex +PKG_VERSION:=		main +PKG_GIT:=		branch +PKG_HASH:=		d6c17d16012bc71989c2d608436c1954b27588510d5af69da7f5d5c04ef417aa +PKG_RELEASE:=		1 +PKG_DESCR:=		bootloader for ixp4xx devices +PKG_SECTION:=		base/boot +PKG_SITES:=		https://github.com/linusw/apex.git + +PKG_SYSTEM_DEPENDS:=	linksys-nslu2 + +DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tar.gz + +include $(ADK_TOPDIR)/mk/host.mk +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,APEX,apex,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +CONFIG_STYLE:=		manual +BUILD_STYLE:=		manual +INSTALL_STYLE:=		manual + +TARGET_LDFLAGS:= + +do-configure: +	(cd $(WRKBUILD) && PATH='$(HOST_PATH)' ARCH=arm $(MAKE) openwrt-nslu2-armeb_config ) + +do-build: +	(cd $(WRKBUILD) && env \ +		PATH='$(HOST_PATH)' \ +		CROSS_COMPILE='$(TARGET_CROSS)' \ +		KBUILD_HAVE_NLS=no \ +		V=1 \ +		ARCH=arm \ +		$(MAKE) all) + +apex-install: +	$(CP) $(WRKBUILD)/src/arch-arm/rom/apex.bin $(FW_DIR) + +include $(ADK_TOPDIR)/mk/host-bottom.mk +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/apex/patches/patch-src_mach-ixp42x_openwrt-nslu2-armeb_config b/package/apex/patches/patch-src_mach-ixp42x_openwrt-nslu2-armeb_config new file mode 100644 index 000000000..fe182278c --- /dev/null +++ b/package/apex/patches/patch-src_mach-ixp42x_openwrt-nslu2-armeb_config @@ -0,0 +1,13 @@ +--- apex-main.orig/src/mach-ixp42x/openwrt-nslu2-armeb_config	2025-04-07 09:10:43.000000000 +0200 ++++ apex-main/src/mach-ixp42x/openwrt-nslu2-armeb_config	2025-04-08 20:18:52.524389031 +0200 +@@ -19,8 +19,8 @@ CONFIG_EXPERIMENTAL=y + # + # General Setup + # +-CONFIG_TARGET_DESCRIPTION="OpenWrt NSLU2/BE (8MiB Flash)" +-CONFIG_CROSS_COMPILE="armeb-openwrt-linux-" ++CONFIG_TARGET_DESCRIPTION="OpenADK NSLU2/BE (8MiB Flash)" ++CONFIG_CROSS_COMPILE="armeb-openadk-linux-" + CONFIG_AEABI=y + # CONFIG_DRIVER_LONG_LONG_SIZE is not set + CONFIG_CC_OPTIMIZE_FOR_SIZE=y diff --git a/package/arm-trusted-firmware/Makefile b/package/arm-trusted-firmware/Makefile index 10bb72a25..17f59c444 100644 --- a/package/arm-trusted-firmware/Makefile +++ b/package/arm-trusted-firmware/Makefile @@ -11,6 +11,8 @@ PKG_DESCR:=		ARM Trusted Firmware  PKG_SECTION:=		base/boot  PKG_SITES:=		https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git +PKG_ARCH_DEPENDS:=	arm +  include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,ARM_TRUSTED_FIRMWARE,arm-trusted-firmware,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) diff --git a/package/asterisk/Makefile b/package/asterisk/Makefile index 5d9f10881..ced4fbacc 100644 --- a/package/asterisk/Makefile +++ b/package/asterisk/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		asterisk -PKG_VERSION:=		20.11.1 +PKG_VERSION:=		22.3.0  PKG_RELEASE:=		1 -PKG_HASH:=		5ad25c136c7772f0ad10ae02d59f19b32c0cf64027278e3de6a6314ee24d5ff9 +PKG_HASH:=		9cd9a29db5ebff861431f85b317a1f8263d49587f596886df1fcd298bd545593  PKG_DESCR:=		open source pbx  PKG_SECTION:=		net/voip  PKG_DEPENDS:=		libncurses libcurl libopenssl libedit libuuid libjansson diff --git a/package/at-spi2-atk/Makefile b/package/at-spi2-atk/Makefile index fd87d5d70..41ca90494 100644 --- a/package/at-spi2-atk/Makefile +++ b/package/at-spi2-atk/Makefile @@ -4,14 +4,14 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		at-spi2-atk -PKG_VERSION:=		2.15.3 -PKG_EXTRAVER:=		2.15 -PKG_RELEASE:=		2 -PKG_HASH:=		eaef8fcf2775e35e1e054840940808775dfa9b71bcd7bda1dd6ecbdf5b1a9e18 +PKG_VERSION:=		2.38.0 +PKG_EXTRAVER:=		2.38 +PKG_RELEASE:=		1 +PKG_HASH:=		cfa008a5af822b36ae6287f18182c40c91dd699c55faa38605881ed175ca464f  PKG_DESCR:=		d-bus based accessibility framework  PKG_SECTION:=		libs/misc  PKG_DEPENDS:=		glib libxtst -PKG_BUILDDEP:=		glib libXtst +PKG_BUILDDEP:=		meson-host glib libXtst  PKG_URL:=		http://www.gnome.org/  PKG_SITES:=		$(MASTER_SITE_GNOME:=at-spi2-atk/$(PKG_EXTRAVER)/)  PKG_OPTS:=		dev @@ -20,6 +20,12 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,AT_SPI2_ATK,at-spi2-atk,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj + +CONFIG_STYLE:=		meson +BUILD_STYLE:=		meson +INSTALL_STYLE:=		meson +  at-spi2-atk-install:  	$(INSTALL_DIR) $(IDIR_AT_SPI2_ATK)/usr/lib  	$(CP) $(WRKINST)/usr/lib/libat*.so* $(IDIR_AT_SPI2_ATK)/usr/lib diff --git a/package/at-spi2-core/Makefile b/package/at-spi2-core/Makefile index c6db623bf..29d2e40e9 100644 --- a/package/at-spi2-core/Makefile +++ b/package/at-spi2-core/Makefile @@ -4,14 +4,14 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		at-spi2-core -PKG_VERSION:=		2.15.3 -PKG_EXTRAVER:=		2.15 +PKG_VERSION:=		2.56.0 +PKG_EXTRAVER:=		2.56  PKG_RELEASE:=		1 -PKG_HASH:=		bae426d13d4a1ae3a35c6dd444e7fdef2159fbc9170eb39b6ae3213a27042d92 +PKG_HASH:=		80d7e8ea0be924e045525367f909d6668dfdd3e87cd40792c6cfd08e6b58e95c  PKG_DESCR:=		d-bus based accessibility framework  PKG_SECTION:=		libs/misc  PKG_DEPENDS:=		glib libxtst -PKG_BUILDDEP:=		glib libXtst libSM intltool-host +PKG_BUILDDEP:=		meson-host glib libXtst libSM intltool-host  PKG_NEEDS:=		intl  PKG_URL:=		http://www.gnome.org/  PKG_SITES:=		$(MASTER_SITE_GNOME:=at-spi2-core/$(PKG_EXTRAVER)/) @@ -21,6 +21,12 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,AT_SPI2_CORE,at-spi2-core,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj + +CONFIG_STYLE:=		meson +BUILD_STYLE:=		meson +INSTALL_STYLE:=		meson +  at-spi2-core-install:  	$(INSTALL_DIR) $(IDIR_AT_SPI2_CORE)/usr/lib  	$(CP) $(WRKINST)/usr/lib/libat*.so* $(IDIR_AT_SPI2_CORE)/usr/lib diff --git a/package/atk/Makefile b/package/atk/Makefile deleted file mode 100644 index ad6335f1b..000000000 --- a/package/atk/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		atk -PKG_VERSION:=		2.36.0 -PKG_EXTRAVER:=		2.36 -PKG_RELEASE:=		1 -PKG_HASH:=		fb76247e369402be23f1f5c65d38a9639c1164d934e40f6a9cf3c9e96b652788 -PKG_DESCR:=		accessibility toolkit library -PKG_SECTION:=		libs/misc -PKG_BUILDDEP:=		glib meson-host -PKG_URL:=		http://www.gnome.org/ -PKG_SITES:=		$(MASTER_SITE_GNOME:=atk/$(PKG_EXTRAVER)/) -PKG_LIBNAME:=		libatk -PKG_OPTS:=		dev - -include $(ADK_TOPDIR)/mk/package.mk - -$(eval $(call PKG_template,LIBATK,libatk,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) - -WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj - -CONFIG_STYLE:=		meson -BUILD_STYLE:=		meson -INSTALL_STYLE:=		meson - -MESON_FLAGS+=		-Dintrospection=false - -libatk-install: -	$(INSTALL_DIR) $(IDIR_LIBATK)/usr/lib -	$(CP) $(WRKINST)/usr/lib/libatk-*.so* $(IDIR_LIBATK)/usr/lib - -include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/audit/Makefile b/package/audit/Makefile index 8f6eea1a0..105f30884 100644 --- a/package/audit/Makefile +++ b/package/audit/Makefile @@ -19,10 +19,6 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,AUDIT,audit,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) -ifeq ($(OS_FOR_BUILD),Darwin) -HOST_CFLAGS+=		-I$(STAGING_TARGET_DIR)/usr/include -endif -  CONFIGURE_ARGS+=	--without-python \  			--without-python3 \  			--without-libcap-ng \ diff --git a/package/barebox/Makefile b/package/barebox/Makefile index b4490f1d6..6a78a32c4 100644 --- a/package/barebox/Makefile +++ b/package/barebox/Makefile @@ -4,15 +4,17 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		barebox -PKG_VERSION:=		2019.09.0 +PKG_VERSION:=		2025.03.0  PKG_RELEASE:=		1 -PKG_HASH:=		beab6bdba2466bece57d23834daf4f0d530a594efc11ca0ddb69372981e6e159 +PKG_HASH:=		0bf7118004e445bdd57feeef89ee9064982acc221e8a046c4a7994d3da6da2ec  PKG_DESCR:=		portable bootloader  PKG_SECTION:=		base/boot  PKG_BUILDDEP:=		lzop-host  PKG_URL:=		http://www.barebox.org  PKG_SITES:=		http://www.barebox.org/download/ +PKG_ARCH_DEPENDS:=	aarch64 arm mips or1k ppc riscv32 riscv64 x86_64 +  DISTFILES:=             $(PKG_NAME)-$(PKG_VERSION).tar.bz2  include $(ADK_TOPDIR)/mk/package.mk @@ -25,15 +27,19 @@ BUILD_STYLE:=		manual  INSTALL_STYLE:=		manual  BAREBOX_ARCH:=		$(ADK_TARGET_ARCH) -ifeq ($(ADK_TARGET_ARCH_X86),y) -CONFIG:=		efi_defconfig -endif  ifeq ($(ADK_TARGET_ARCH_X86_64),y)  CONFIG:=		efi_defconfig  BAREBOX_ARCH:=		x86 +BAREBOX:=		barebox.efi  endif  ifeq ($(ADK_TARGET_SYSTEM_QEMU_MIPS),y) +ifeq ($(ADK_TARGET_LITTLE_ENDIAN),y) +CONFIG:=		qemu-maltael_defconfig +BAREBOX:=		images/barebox-qemu-malta.img.swapped +else  CONFIG:=		qemu-malta_defconfig +BAREBOX:=		images/barebox-qemu-malta.img +endif  endif  ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_VEXPRESS_A9),y)  CONFIG:=		vexpress_ca9_defconfig @@ -53,6 +59,6 @@ do-build:  		$(MAKE))  barebox-install: -	$(CP) $(WRKBUILD)/barebox.bin $(FW_DIR) +	$(CP) $(WRKBUILD)/$(BAREBOX) $(FW_DIR)  include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/base-files/Makefile b/package/base-files/Makefile index 9b3191ae7..0c7ce0b24 100644 --- a/package/base-files/Makefile +++ b/package/base-files/Makefile @@ -127,9 +127,6 @@ ifeq ($(ADK_TARGET_WITH_ROOT_RW),y)  else  	echo 'export IPKGTMPDIR=/tmp' >> $(IDIR_BASE_FILES)/etc/profile  endif -ifeq ($(ADK_TARGET_BOARD_BCM28XX),y) -	echo 'export LD_LIBRARY_PATH=/opt/vc/lib' >> $(IDIR_BASE_FILES)/etc/profile -endif  endif  ifeq (${ADK_TARGET_PACKAGE_IPKG},y)  	$(CP) ./files/ipkg.conf $(IDIR_BASE_FILES)/etc/ diff --git a/package/base-files/files/inittab.sysv b/package/base-files/files/inittab.sysv index f1fd8b126..a6684a4ea 100644 --- a/package/base-files/files/inittab.sysv +++ b/package/base-files/files/inittab.sysv @@ -1,5 +1,6 @@  null::sysinit:/bin/mount -t proc proc /proc  null::sysinit:/bin/mount -t sysfs sys /sys +null::sysinit:/bin/mount -t devtmpfs devtmpfs /dev  null::sysinit:/bin/mkdir -p /dev/pts  null::sysinit:/bin/mkdir -p /dev/shm  null::sysinit:/bin/mount -a -t devpts diff --git a/package/base-files/files/rcdev.mdev b/package/base-files/files/rcdev.mdev index b8afd453c..93d678932 100644 --- a/package/base-files/files/rcdev.mdev +++ b/package/base-files/files/rcdev.mdev @@ -1,5 +1,5 @@  # remount /dev with smaller size -mount -o remount,nosuid,size=128k,mode=0755 -t tmpfs mdev /dev +#mount -o remount,nosuid,size=128k,mode=0755 -t tmpfs mdev /dev  # start mdev dynamic device node management  echo >/dev/mdev.seq  @ADK_RUNTIME_DEV_MDEV_LOGGING@ diff --git a/package/bash/Makefile b/package/bash/Makefile index bfed5373c..3d8acfc22 100644 --- a/package/bash/Makefile +++ b/package/bash/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		bash -PKG_VERSION:=		5.2.21 +PKG_VERSION:=		5.2.37  PKG_RELEASE:=		1 -PKG_HASH:=		c8e31bdc59b69aaffc5b36509905ba3e5cbb12747091d27b4b977f078560d5b8 +PKG_HASH:=		9599b22ecd1d5787ad7d3b7bf0c59f312b3396d1e281175dd1f8a4014da621ff  PKG_DESCR:=		bourne-again shell  PKG_SECTION:=		base/shells  PKG_URL:=		http://www.gnu.org/software/bash/ diff --git a/package/bcm28xx-bootloader/Makefile b/package/bcm28xx-bootloader/Makefile index 83a594ad0..58ae843dc 100644 --- a/package/bcm28xx-bootloader/Makefile +++ b/package/bcm28xx-bootloader/Makefile @@ -66,7 +66,6 @@ ifeq ($(ADK_PACKAGE_BCM28XX_BOOTLOADER_CUTDOWN),y)  endif  	printf "gpu_mem=$(ADK_TARGET_GPU_MEM)\n" >> \  		$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt -ifeq ($(ADK_PACKAGE_KODI),y)  ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI4)$(ADK_TARGET_SYSTEM_RASPBERRY_PI4_64),y)  	printf "dtoverlay=vc4-kms-v3d-pi4\n" >> \  		$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt @@ -75,7 +74,6 @@ ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI5),y)  	printf "dtoverlay=vc4-kms-v3d-pi5\n" >> \  		$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt  endif -endif  ifneq ($(ADK_TARGET_HARDWARE_HIFIBERRY_AMP),)  	printf "dtoverlay=hifiberry-amp\n" >> \  		$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt @@ -121,7 +119,7 @@ ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI4),y)  		$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt  endif  ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI3_64)$(ADK_TARGET_SYSTEM_RASPBERRY_PI4_64),y) -	printf "arm_control=0x200\n" >> \ +	printf "arm_64bit=1\n" >> \  		$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt  	printf "enable_uart=1\n" >> \  		$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt diff --git a/package/bcm28xx-bootloader/src/boot/bootcode.bin b/package/bcm28xx-bootloader/src/boot/bootcode.bin Binary files differindex 9e831a273..636933850 100644 --- a/package/bcm28xx-bootloader/src/boot/bootcode.bin +++ b/package/bcm28xx-bootloader/src/boot/bootcode.bin diff --git a/package/bcm28xx-bootloader/src/boot/fixup.dat b/package/bcm28xx-bootloader/src/boot/fixup.dat Binary files differindex 2ff966820..667cafba8 100644 --- a/package/bcm28xx-bootloader/src/boot/fixup.dat +++ b/package/bcm28xx-bootloader/src/boot/fixup.dat diff --git a/package/bcm28xx-bootloader/src/boot/fixup4.dat b/package/bcm28xx-bootloader/src/boot/fixup4.dat Binary files differindex 4380d320e..9bf503434 100644 --- a/package/bcm28xx-bootloader/src/boot/fixup4.dat +++ b/package/bcm28xx-bootloader/src/boot/fixup4.dat diff --git a/package/bcm28xx-bootloader/src/boot/fixup4cd.dat b/package/bcm28xx-bootloader/src/boot/fixup4cd.dat Binary files differindex 79a0b55e7..c0614cd5d 100644 --- a/package/bcm28xx-bootloader/src/boot/fixup4cd.dat +++ b/package/bcm28xx-bootloader/src/boot/fixup4cd.dat diff --git a/package/bcm28xx-bootloader/src/boot/fixup4db.dat b/package/bcm28xx-bootloader/src/boot/fixup4db.dat Binary files differindex 4d13d6581..9ef1b932b 100644 --- a/package/bcm28xx-bootloader/src/boot/fixup4db.dat +++ b/package/bcm28xx-bootloader/src/boot/fixup4db.dat diff --git a/package/bcm28xx-bootloader/src/boot/fixup4x.dat b/package/bcm28xx-bootloader/src/boot/fixup4x.dat Binary files differindex 4d8ff5a96..9c10b2d5e 100644 --- a/package/bcm28xx-bootloader/src/boot/fixup4x.dat +++ b/package/bcm28xx-bootloader/src/boot/fixup4x.dat diff --git a/package/bcm28xx-bootloader/src/boot/fixup_cd.dat b/package/bcm28xx-bootloader/src/boot/fixup_cd.dat Binary files differindex 79a0b55e7..c0614cd5d 100644 --- a/package/bcm28xx-bootloader/src/boot/fixup_cd.dat +++ b/package/bcm28xx-bootloader/src/boot/fixup_cd.dat diff --git a/package/bcm28xx-bootloader/src/boot/fixup_db.dat b/package/bcm28xx-bootloader/src/boot/fixup_db.dat Binary files differindex 3927ea52e..e695c9f9d 100644 --- a/package/bcm28xx-bootloader/src/boot/fixup_db.dat +++ b/package/bcm28xx-bootloader/src/boot/fixup_db.dat diff --git a/package/bcm28xx-bootloader/src/boot/fixup_x.dat b/package/bcm28xx-bootloader/src/boot/fixup_x.dat Binary files differindex b93bc0620..ea04cdbdb 100644 --- a/package/bcm28xx-bootloader/src/boot/fixup_x.dat +++ b/package/bcm28xx-bootloader/src/boot/fixup_x.dat diff --git a/package/bcm28xx-bootloader/src/boot/start.elf b/package/bcm28xx-bootloader/src/boot/start.elf Binary files differindex f5d78d670..0af80e5cf 100644 --- a/package/bcm28xx-bootloader/src/boot/start.elf +++ b/package/bcm28xx-bootloader/src/boot/start.elf diff --git a/package/bcm28xx-bootloader/src/boot/start4.elf b/package/bcm28xx-bootloader/src/boot/start4.elf Binary files differindex 300e7a8a4..a5b6bf0ef 100644 --- a/package/bcm28xx-bootloader/src/boot/start4.elf +++ b/package/bcm28xx-bootloader/src/boot/start4.elf diff --git a/package/bcm28xx-bootloader/src/boot/start4cd.elf b/package/bcm28xx-bootloader/src/boot/start4cd.elf Binary files differindex b7fe9328d..eee7efc46 100644 --- a/package/bcm28xx-bootloader/src/boot/start4cd.elf +++ b/package/bcm28xx-bootloader/src/boot/start4cd.elf diff --git a/package/bcm28xx-bootloader/src/boot/start4db.elf b/package/bcm28xx-bootloader/src/boot/start4db.elf Binary files differindex acd07e82c..f3e979f10 100644 --- a/package/bcm28xx-bootloader/src/boot/start4db.elf +++ b/package/bcm28xx-bootloader/src/boot/start4db.elf diff --git a/package/bcm28xx-bootloader/src/boot/start4x.elf b/package/bcm28xx-bootloader/src/boot/start4x.elf Binary files differindex 274a62944..f9901aa7a 100644 --- a/package/bcm28xx-bootloader/src/boot/start4x.elf +++ b/package/bcm28xx-bootloader/src/boot/start4x.elf diff --git a/package/bcm28xx-bootloader/src/boot/start_cd.elf b/package/bcm28xx-bootloader/src/boot/start_cd.elf Binary files differindex 5e616d0c6..46517c526 100644 --- a/package/bcm28xx-bootloader/src/boot/start_cd.elf +++ b/package/bcm28xx-bootloader/src/boot/start_cd.elf diff --git a/package/bcm28xx-bootloader/src/boot/start_db.elf b/package/bcm28xx-bootloader/src/boot/start_db.elf Binary files differindex f10f87fa3..80a04b2ba 100644 --- a/package/bcm28xx-bootloader/src/boot/start_db.elf +++ b/package/bcm28xx-bootloader/src/boot/start_db.elf diff --git a/package/bcm28xx-bootloader/src/boot/start_x.elf b/package/bcm28xx-bootloader/src/boot/start_x.elf Binary files differindex 26c1de866..b21614bc2 100644 --- a/package/bcm28xx-bootloader/src/boot/start_x.elf +++ b/package/bcm28xx-bootloader/src/boot/start_x.elf diff --git a/package/bcm28xx-utils/Makefile b/package/bcm28xx-utils/Makefile deleted file mode 100644 index e59dbde56..000000000 --- a/package/bcm28xx-utils/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		bcm28xx-utils -PKG_VERSION:=		e65f5ec102e74218cda7da9fdc8b1caa0fd1127d -PKG_GIT:=		hash -PKG_RELEASE:=		1 -PKG_DESCR:=		videocore tools and utils -PKG_SECTION:=		sys/hw -PKG_BUILDDEP:=		cmake-host -PKG_NEEDS:=		c++ threads -PKG_URL:=		https://github.com/raspberrypi/utils -PKG_SITES:=		https://github.com/raspberrypi/utils.git - -PKG_SYSTEM_DEPENDS:=	raspberry-pi raspberry-pi0 raspberry-pi2 raspberry-pi3 raspberry-pi3-64 raspberry-pi4 raspberry-pi4-64 raspberry-pi5 - -include $(ADK_TOPDIR)/mk/package.mk - -$(eval $(call PKG_template,BCM28XX_UTILS,bcm28xx-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) - -CONFIG_STYLE:=          cmake - -bcm28xx-utils-install: -	$(INSTALL_DIR) $(IDIR_BCM28XX_UTILS)/usr/bin -	$(INSTALL_BIN) $(WRKINST)/usr/bin/vcgencmd \ -		$(IDIR_BCM28XX_UTILS)/usr/bin -	$(INSTALL_BIN) $(WRKINST)/usr/bin/vclog \ -		$(IDIR_BCM28XX_UTILS)/usr/bin - -include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/bcm28xx-utils/patches/patch-CMakeLists_txt b/package/bcm28xx-utils/patches/patch-CMakeLists_txt deleted file mode 100644 index 956feac7e..000000000 --- a/package/bcm28xx-utils/patches/patch-CMakeLists_txt +++ /dev/null @@ -1,16 +0,0 @@ ---- bcm28xx-utils-e65f5ec102e74218cda7da9fdc8b1caa0fd1127d.orig/CMakeLists.txt	2024-01-23 03:17:28.000000000 +0100 -+++ bcm28xx-utils-e65f5ec102e74218cda7da9fdc8b1caa0fd1127d/CMakeLists.txt	2024-01-23 03:21:39.257325745 +0100 -@@ -3,13 +3,10 @@ cmake_minimum_required(VERSION 3.1...3.2 - project(utils) -  - # List of subsidiary CMakeLists --add_subdirectory(dtmerge) - add_subdirectory(eeptools) - add_subdirectory(otpset) - add_subdirectory(overlaycheck) - add_subdirectory(ovmerge) --add_subdirectory(pinctrl) - add_subdirectory(raspinfo) - add_subdirectory(vcgencmd) - add_subdirectory(vclog) --add_subdirectory(vcmailbox) diff --git a/package/binutils/Makefile b/package/binutils/Makefile index 27748b0d1..ef869e414 100644 --- a/package/binutils/Makefile +++ b/package/binutils/Makefile @@ -15,8 +15,6 @@ PKG_SUBPKGS:=		BINUTILS LIBBFD  PKGSD_LIBBFD:=		binary file descriptor library  PKGSC_LIBBFD:=		libs/misc -PKG_HOST_DEPENDS:=      !cygwin -  include ${ADK_TOPDIR}/mk/package.mk  $(eval $(call PKG_template,BINUTILS,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) diff --git a/package/busybox/Makefile b/package/busybox/Makefile index 78b76ead5..c50e4af11 100644 --- a/package/busybox/Makefile +++ b/package/busybox/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		busybox -PKG_VERSION:=		1.36.1 +PKG_VERSION:=		1.37.0  PKG_RELEASE:=		1 -PKG_HASH:=		b8cc24c9574d809e7279c3be349795c5d5ceb6fdf19ca709f80cde50e47de314 +PKG_HASH:=		3311dff32e746499f4df0d5df04d7eb396382d7e108bb9250e7b519b837043a4  PKG_DESCR:=		core utilities for embedded systems  PKG_SECTION:=		base/apps  PKG_URL:=		http://www.busybox.net/ diff --git a/package/busybox/config/Config.in b/package/busybox/config/Config.in index d5cbed6a5..573c55f8c 100644 --- a/package/busybox/config/Config.in +++ b/package/busybox/config/Config.in @@ -108,6 +108,17 @@ config BUSYBOX_LFS  	programs that can benefit from large file support include dd, gzip,  	cp, mount, tar. +config BUSYBOX_TIME64 +	bool "Support 64bit wide time types" +	default y +	depends on BUSYBOX_LFS +	help +	Make times later than 2038 representable for several libc syscalls +	(stat, clk_gettime etc.). Note this switch is specific to glibc +	and has no effect on platforms that already use 64bit wide time types +	(i.e. all 64bit archs and some selected 32bit archs (currently riscv +	and x32)). +  config BUSYBOX_PAM  	bool "Support PAM (Pluggable Authentication Modules)"  	default n diff --git a/package/busybox/config/findutils/Config.in b/package/busybox/config/findutils/Config.in index d4aa403a5..ff1f5ed0c 100644 --- a/package/busybox/config/findutils/Config.in +++ b/package/busybox/config/findutils/Config.in @@ -136,6 +136,13 @@ config BUSYBOX_FEATURE_FIND_EXEC_PLUS  	Without this option, -exec + is a synonym for -exec ;  	(IOW: it works correctly, but without expected speedup) +config BUSYBOX_FEATURE_FIND_EXEC_OK +	bool "Enable -ok: execute confirmed commands" +	default y +	depends on BUSYBOX_FEATURE_FIND_EXEC +	help +	Support the 'find -ok' option which prompts before executing. +  config BUSYBOX_FEATURE_FIND_USER  	bool "Enable -user: username/uid matching"  	default y diff --git a/package/busybox/config/miscutils/Config.in b/package/busybox/config/miscutils/Config.in index 82aeff339..612d270e1 100644 --- a/package/busybox/config/miscutils/Config.in +++ b/package/busybox/config/miscutils/Config.in @@ -380,6 +380,11 @@ config BUSYBOX_FLASHCP  	help  	The flashcp binary, inspired by mtd-utils as of git head 5eceb74f7.  	This utility is used to copy images into a MTD device. +config BUSYBOX_GETFATTR +	bool "getfattr (12.3 kb)" +	default y +	help +	Get extended attributes on files  config BUSYBOX_HDPARM  	bool "hdparm (25 kb)"  	default y diff --git a/package/busybox/config/networking/Config.in b/package/busybox/config/networking/Config.in index 5e0ea5819..9ed63b71f 100644 --- a/package/busybox/config/networking/Config.in +++ b/package/busybox/config/networking/Config.in @@ -582,6 +582,12 @@ config BUSYBOX_IPLINK  	help  	Short form of "ip link" +config BUSYBOX_FEATURE_IP_LINK_CAN +	bool "ip link set type can" +	default n +	help +	Configure CAN devices with "ip". +  config BUSYBOX_IPROUTE  	bool "iproute (15 kb)"  	default y diff --git a/package/busybox/config/networking/udhcp/Config.in b/package/busybox/config/networking/udhcp/Config.in index 111e6b5f5..9018780aa 100644 --- a/package/busybox/config/networking/udhcp/Config.in +++ b/package/busybox/config/networking/udhcp/Config.in @@ -11,6 +11,13 @@ config BUSYBOX_UDHCPD  	udhcpd is a DHCP server geared primarily toward embedded systems,  	while striving to be fully functional and RFC compliant. +config BUSYBOX_FEATURE_UDHCPD_BOOTP +	bool "Answer to BOOTP requests as well" +	default y +	depends on BUSYBOX_UDHCPD +	help +	Support old BOOTP protocol too. +  config BUSYBOX_FEATURE_UDHCPD_BASE_IP_ON_MAC  	bool "Select IP address based on client MAC"  	default n diff --git a/package/busybox/config/shell/Config.in b/package/busybox/config/shell/Config.in index 6ffa3b2b0..b26195889 100644 --- a/package/busybox/config/shell/Config.in +++ b/package/busybox/config/shell/Config.in @@ -201,11 +201,6 @@ config BUSYBOX_ASH_TEST  	default y  	depends on BUSYBOX_SHELL_ASH -config BUSYBOX_ASH_SLEEP -	bool "sleep builtin" -	default y -	depends on BUSYBOX_SHELL_ASH -  config BUSYBOX_ASH_HELP  	bool "help builtin"  	default y diff --git a/package/busybox/patches/004-libbb-sha-add-missing-guard.patch b/package/busybox/patches/004-libbb-sha-add-missing-guard.patch new file mode 100644 index 000000000..ec41ba73a --- /dev/null +++ b/package/busybox/patches/004-libbb-sha-add-missing-guard.patch @@ -0,0 +1,17 @@ +diff --git a/libbb/hash_md5_sha.c b/libbb/hash_md5_sha.c +index 57a801459..75a61c32c 100644 +--- a/libbb/hash_md5_sha.c ++++ b/libbb/hash_md5_sha.c +@@ -1313,7 +1313,9 @@ unsigned FAST_FUNC sha1_end(sha1_ctx_t *ctx, void *resbuf) + 	hash_size = 8; + 	if (ctx->process_block == sha1_process_block64 + #if ENABLE_SHA1_HWACCEL ++# if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) + 	 || ctx->process_block == sha1_process_block64_shaNI ++# endif + #endif + 	) { + 		hash_size = 5; +--  +2.48.1 + diff --git a/package/busybox/patches/005-syslogd-fix-wrong-OPT_localog-flag-detection.patch b/package/busybox/patches/005-syslogd-fix-wrong-OPT_localog-flag-detection.patch new file mode 100644 index 000000000..1dfd6f379 --- /dev/null +++ b/package/busybox/patches/005-syslogd-fix-wrong-OPT_localog-flag-detection.patch @@ -0,0 +1,37 @@ +From 34d331d642c3312e1c04e4650f547f1a67abee24 Mon Sep 17 00:00:00 2001 +From: Andrej Valek <andrej.v@skyrain.eu> +Date: Wed, 16 Oct 2024 10:15:08 +0200 +Subject: [PATCH] syslogd: fix wrong OPT_locallog flag detection + +The OPT_locallog was set on "option_mask32" but checked on local +"opts" variable. While this flag it's used on multiple places can't be +has to be used with "option_mask32". Without this change syslogd +is more-less unusable while no messages are logged locally. + +Signed-off-by: Andrej Valek <andrej.v@skyrain.eu> +Upstream: https://lists.busybox.net/pipermail/busybox/2024-October/090969.html +[Thomas: this was reported as beeing needed by Bernd Kuhls at +https://lore.kernel.org/buildroot/pan$de0bb$35c5a64$ca9b6f21$2408ff40@ID-313208.user.individual.net/, +but also on the Busybox mailing list at +https://lists.busybox.net/pipermail/busybox/2023-September/090499.html] +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> +--- + sysklogd/syslogd.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c +index 7558051f0..fa03aa280 100644 +--- a/sysklogd/syslogd.c ++++ b/sysklogd/syslogd.c +@@ -1179,7 +1179,7 @@ int syslogd_main(int argc UNUSED_PARAM, char **argv) + 			} + 		} + #endif +-		if (!ENABLE_FEATURE_REMOTE_LOG || (opts & OPT_locallog)) { ++		if (!ENABLE_FEATURE_REMOTE_LOG || (option_mask32 & OPT_locallog)) { + 			recvbuf[sz] = '\0'; /* ensure it *is* NUL terminated */ + 			split_escape_and_log(recvbuf, sz); + 		} +--  +2.48.1 + diff --git a/package/cairo/Makefile b/package/cairo/Makefile index 315766c57..09960903b 100644 --- a/package/cairo/Makefile +++ b/package/cairo/Makefile @@ -4,91 +4,34 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		cairo -PKG_VERSION:=		1.14.6 +PKG_VERSION:=		1.18.2  PKG_RELEASE:=		1 -PKG_HASH:=		613cb38447b76a93ff7235e17acd55a78b52ea84a9df128c3f2257f8eaa7b252 +PKG_HASH:=		a62b9bb42425e844cc3d6ddde043ff39dbabedd1542eba57a2eb79f85889d45a  PKG_DESCR:=		graphics library  PKG_SECTION:=		libs/image  PKG_DEPENDS:=		fontconfig libfreetype libx11 pixman -PKG_DEPENDS+=		libxrender +PKG_DEPENDS+=		libxrender libpng  PKG_BUILDDEP:=		pixman freetype fontconfig libX11 libXrender glib -PKG_BUILDDEP+=		libXext +PKG_BUILDDEP+=		libXext libpng  HOST_BUILDDEP:=		libpng-host pixman-host freetype-host fontconfig-host  PKG_URL:=		http://cairographics.org/  PKG_SITES:=		http://cairographics.org/releases/  PKG_OPTS:=		dev -PKG_FLAVOURS_CAIRO:=	WITH_PS WITH_PDF WITH_XML WITH_PNG WITH_TEE WITH_SVG WITH_XRENDER -PKGFD_WITH_PS:=		postscript support -PKGFD_WITH_PDF:=	pdf support -PKGFD_WITH_XML:=	xml support -PKGFD_WITH_PNG:=	png support -PKGFB_WITH_PNG:=	libpng -PKGFS_WITH_PNG:=	libpng -PKGFD_WITH_TEE:=	tee support -PKGFD_WITH_SVG:=	svg support -PKGFD_WITH_XRENDER:=	xorg xrender support -  include ${ADK_TOPDIR}/mk/host.mk  include ${ADK_TOPDIR}/mk/package.mk  $(eval $(call HOST_template,CAIRO,cairo,${PKG_VERSION}-${PKG_RELEASE}))  $(eval $(call PKG_template,CAIRO,cairo,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) -HOST_STYLE:=		auto -HOST_CONFIGURE_ARGS+=	--enable-ft=yes \ -			--enable-png=yes \ -			--enable-fc=yes \ -			--enable-tee=no \ -			--enable-xlib=no \ -			--enable-pdf=no \ -			--enable-quartz=no \ -			--disable-test-surfaces \ -			--disable-full-testing +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj -ifneq ($(ADK_PACKAGE_CAIRO_WITH_XRENDER),) -CONFIGURE_ARGS+=	--enable-xlib-xrender=yes -else -CONFIGURE_ARGS+=	--enable-xlib-xrender=no -endif -ifneq ($(ADK_PACKAGE_CAIRO_WITH_SVG),) -CONFIGURE_ARGS+=	--enable-svg=yes \ -			--enable-png=yes -else -CONFIGURE_ARGS+=	--enable-svg=no -endif -ifneq ($(ADK_PACKAGE_CAIRO_WITH_PDF),) -CONFIGURE_ARGS+=	--enable-pdf=yes -else -CONFIGURE_ARGS+=	--enable-pdf=no -endif -ifneq ($(ADK_PACKAGE_CAIRO_WITH_PS),) -CONFIGURE_ARGS+=	--enable-ps=yes -else -CONFIGURE_ARGS+=	--enable-ps=no -endif -ifneq ($(ADK_PACKAGE_CAIRO_WITH_PNG)$(ADK_PACKAGE_CAIRO_WITH_SVG),) -CONFIGURE_ARGS+=	--enable-png=yes -else -CONFIGURE_ARGS+=	--enable-png=no -endif -ifneq ($(ADK_PACKAGE_CAIRO_WITH_XML),) -CONFIGURE_ARGS+=	--enable-xml=yes -else -CONFIGURE_ARGS+=	--enable-xml=no -endif -ifneq ($(ADK_PACKAGE_CAIRO_WITH_TEE),) -CONFIGURE_ARGS+=	--enable-tee=yes -else -CONFIGURE_ARGS+=	--enable-tee=no -endif +MESON_FLAGS+=		-Dtests=disabled -CONFIGURE_ARGS+=	--enable-ft=yes \ -			--enable-fc=yes \ -			--enable-xlib=yes \ -			--enable-quartz=no \ -			--disable-test-surfaces \ -			--disable-full-testing +HOST_STYLE:=		meson +CONFIG_STYLE:=		meson +BUILD_STYLE:=		meson +INSTALL_STYLE:=		meson  cairo-install:  	${INSTALL_DIR} ${IDIR_CAIRO}/usr/lib/cairo diff --git a/package/cairo/patches/patch-Makefile_in b/package/cairo/patches/patch-Makefile_in deleted file mode 100644 index 8716b0820..000000000 --- a/package/cairo/patches/patch-Makefile_in +++ /dev/null @@ -1,20 +0,0 @@ ---- cairo-1.14.0.orig/Makefile.in	2014-10-14 03:47:28.000000000 +0200 -+++ cairo-1.14.0/Makefile.in	2015-02-26 11:39:05.000000000 +0100 -@@ -63,7 +63,7 @@ EXTRA_PROGRAMS = - TESTS = - check_PROGRAMS = - # libpng is required for our test programs --@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_1 = boilerplate test perf -+@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_1 = boilerplate perf - subdir = . - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/build/aclocal.cairo.m4 \ -@@ -417,7 +417,7 @@ MAINTAINERCLEANFILES = Makefile.in $(src - #	$(srcdir)/build/Makefile.win32.features-h \ - #	$(NULL) - ACLOCAL_AMFLAGS = -I build ${ACLOCAL_FLAGS} --DIST_SUBDIRS = src doc util boilerplate test perf -+DIST_SUBDIRS = src doc util boilerplate perf - SUBDIRS = src doc util $(am__append_1) - DISTCHECK_CONFIGURE_FLAGS = \ - 	--enable-gtk-doc \ diff --git a/package/cairo/patches/patch-configure b/package/cairo/patches/patch-configure deleted file mode 100644 index 9e0f39f0d..000000000 --- a/package/cairo/patches/patch-configure +++ /dev/null @@ -1,101 +0,0 @@ ---- cairo-1.14.0.orig/configure	2014-10-14 03:47:29.000000000 +0200 -+++ cairo-1.14.0/configure	2015-02-26 13:27:59.000000000 +0100 -@@ -18371,7 +18371,7 @@ fi - rm -f core conftest.err conftest.$ac_objext \ -     conftest$ac_exeext conftest.$ac_ext -  --	if test "x$cairo_cc_stderr" != "x"; then -+	if false ; then - 		cairo_cc_flag=no - 	fi -  -@@ -18418,7 +18418,7 @@ fi - rm -f core conftest.err conftest.$ac_objext \ -     conftest$ac_exeext conftest.$ac_ext -  --	if test "x$cairo_cc_stderr" != "x"; then -+	if false ; then - 		cairo_cc_flag=no - 	fi -  -@@ -18469,7 +18469,7 @@ fi - rm -f core conftest.err conftest.$ac_objext \ -     conftest$ac_exeext conftest.$ac_ext -  --	if test "x$cairo_cc_stderr" != "x"; then -+	if false ; then - 		cairo_cc_flag=no - 	fi -  -@@ -18516,7 +18516,7 @@ fi - rm -f core conftest.err conftest.$ac_objext \ -     conftest$ac_exeext conftest.$ac_ext -  --	if test "x$cairo_cc_stderr" != "x"; then -+	if false ; then - 		cairo_cc_flag=no - 	fi -  -@@ -18585,7 +18585,7 @@ fi - rm -f core conftest.err conftest.$ac_objext \ -     conftest$ac_exeext conftest.$ac_ext -  --	if test "x$cairo_cc_stderr" != "x"; then -+	if false ; then - 		cairo_cc_flag=no - 	fi -  -@@ -18641,7 +18641,7 @@ fi - rm -f core conftest.err conftest.$ac_objext \ -     conftest$ac_exeext conftest.$ac_ext -  --	if test "x$cairo_cc_stderr" != "x"; then -+	if false ; then - 		cairo_cc_flag=no - 	fi -  -@@ -20089,7 +20089,7 @@ fi - rm -f core conftest.err conftest.$ac_objext \ -     conftest$ac_exeext conftest.$ac_ext -  --	if test "x$cairo_cc_stderr" != "x"; then -+	if false ; then - 		cairo_cc_flag=no - 	fi -  -@@ -20136,7 +20136,7 @@ fi - rm -f core conftest.err conftest.$ac_objext \ -     conftest$ac_exeext conftest.$ac_ext -  --	if test "x$cairo_cc_stderr" != "x"; then -+	if false ; then - 		cairo_cc_flag=no - 	fi -  -@@ -33208,7 +33208,7 @@ fi - rm -f core conftest.err conftest.$ac_objext \ -     conftest$ac_exeext conftest.$ac_ext -  --	if test "x$cairo_cc_stderr" != "x"; then -+	if false ; then - 		cairo_cc_flag=no - 	fi -  -@@ -33327,7 +33327,7 @@ fi - rm -f core conftest.err conftest.$ac_objext \ -     conftest$ac_exeext conftest.$ac_ext -  --	if test "x$cairo_cc_stderr" != "x"; then -+	if false ; then - 		cairo_cc_flag=no - 	fi -  -@@ -33408,7 +33408,7 @@ fi - rm -f core conftest.err conftest.$ac_objext \ -     conftest$ac_exeext conftest.$ac_ext -  --	if test "x$cairo_cc_stderr" != "x"; then -+	if false; then - 		cairo_cc_flag=no - 	fi -  diff --git a/package/ccache/Makefile b/package/ccache/Makefile index 613cfe8aa..10dc9b945 100644 --- a/package/ccache/Makefile +++ b/package/ccache/Makefile @@ -4,12 +4,13 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		ccache -PKG_VERSION:=		3.3.4 +PKG_VERSION:=		4.11.3  PKG_RELEASE:=		1 -PKG_HASH:=		24f15bf389e38c41548c9c259532187774ec0cb9686c3497bbb75504c8dc404f +PKG_HASH:=		d5a340e199977b7b1e89c0add794132c977fdc2ecc7ca5451e03d43627a1b1be  PKG_DESCR:=		compiler cache utility  PKG_SECTION:=		dev/tools -PKG_SITES:=		http://samba.org/ftp/ccache/ +HOST_BUILDDEP:=		cmake-host +PKG_SITES:=		https://github.com/ccache/ccache/releases/download/v$(PKG_VERSION)/  PKG_CFLINE_CCACHE:=	depends on ADK_HOST_ONLY @@ -18,5 +19,15 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call HOST_template,CCACHE,ccache,$(PKG_VERSION)-${PKG_RELEASE})) +HOST_STYLE:=		cmake + +host-build: +	(cd ${WRKBUILD} && env ${HOST_MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \ +		${HOST_MAKE_FLAGS} ${HOST_ALL_TARGET}) + +hostpost-install: +	(cd ${WRKBUILD} && env ${HOST_MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \ +		${HOST_FAKE_FLAGS} ${HOST_INSTALL_TARGET}) +  include ${ADK_TOPDIR}/mk/host-bottom.mk  include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/cfgfs/Makefile b/package/cfgfs/Makefile index 209b9ff88..2253d2865 100644 --- a/package/cfgfs/Makefile +++ b/package/cfgfs/Makefile @@ -29,6 +29,7 @@ $(eval $(call PKG_template,CFGFS,cfgfs,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPEN  # runtime problems on x86_64 with O3  TARGET_CFLAGS:=         $(subst O3,Os,$(TARGET_CFLAGS)) +TARGET_CFLAGS+=		-Wno-incompatible-pointer-types  CONFIG_STYLE:=		manual  INSTALL_STYLE:=		manual diff --git a/package/clamav/Makefile b/package/clamav/Makefile deleted file mode 100644 index 1812b4dcb..000000000 --- a/package/clamav/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		clamav -PKG_VERSION:=		0.103.4 -PKG_RELEASE:=		1 -PKG_HASH:=		def0ad15500fa6aff81d8e68b9f83aa75ee5b607a01335c1d26dbcc959932f85 -PKG_DESCR:=		anti-virus software -PKG_SECTION:=		sys/misc -PKG_DEPENDS:=		libressl zlib libpcre libncurses libcurl libmspack -PKG_BUILDDEP:=		libressl zlib pcre ncurses curl libmspack -PKG_NEEDS:=		c++ threads -PKG_URL:=		http://www.clamav.net/ -PKG_SITES:=		http://www.clamav.net/downloads/production/ - -DISTFILES:=             $(PKG_NAME)-$(PKG_VERSION).tar.gz - -include $(ADK_TOPDIR)/mk/package.mk - -$(eval $(call PKG_template,CLAMAV,clamav,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) - -TARGET_LDFLAGS+=	-ltinfo -CONFIGURE_ENV+=		ac_cv_c_mmap_private=yes -CONFIGURE_ARGS+=	--enable-mempool \ -			--with-system-libmspack \ -			--disable-xml \ -			--disable-check \ -			--with-libcurl="$(STAGING_TARGET_DIR)/usr" \ -			--with-openssl="$(STAGING_TARGET_DIR)/usr" \ -			--with-pcre="$(STAGING_TARGET_DIR)/usr" - -clamav-install: -	$(INSTALL_DIR) $(IDIR_CLAMAV)/etc -	$(CP) $(WRKINST)/etc/* \ -		$(IDIR_CLAMAV)/etc -	$(INSTALL_DIR) $(IDIR_CLAMAV)/usr/lib -	$(CP) $(WRKINST)/usr/lib*/lib*.so* \ -		$(IDIR_CLAMAV)/usr/lib -	$(INSTALL_DIR) $(IDIR_CLAMAV)/usr/bin -	$(INSTALL_BIN) $(WRKINST)/usr/bin/* \ -		$(IDIR_CLAMAV)/usr/bin -	$(INSTALL_DIR) $(IDIR_CLAMAV)/usr/sbin -	$(INSTALL_BIN) $(WRKINST)/usr/sbin/clamd \ -		$(IDIR_CLAMAV)/usr/sbin - -include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/clamav/patches/patch-clamdscan_proto_c b/package/clamav/patches/patch-clamdscan_proto_c deleted file mode 100644 index a1d18ce41..000000000 --- a/package/clamav/patches/patch-clamdscan_proto_c +++ /dev/null @@ -1,10 +0,0 @@ ---- clamav-0.103.0.orig/clamdscan/proto.c	2020-09-13 02:27:09.000000000 +0200 -+++ clamav-0.103.0/clamdscan/proto.c	2021-01-28 04:40:12.604606645 +0100 -@@ -39,6 +39,7 @@ - #include <errno.h> - #include <stdlib.h> - #include <sys/types.h> -+#include <sys/un.h> - #include <sys/stat.h> - #include <fcntl.h> - #include <sys/types.h> diff --git a/package/clamav/patches/patch-libclamav_mbox_c b/package/clamav/patches/patch-libclamav_mbox_c deleted file mode 100644 index 86e81131a..000000000 --- a/package/clamav/patches/patch-libclamav_mbox_c +++ /dev/null @@ -1,11 +0,0 @@ ---- clamav-0.103.0.orig/libclamav/mbox.c	2020-09-13 02:27:10.000000000 +0200 -+++ clamav-0.103.0/libclamav/mbox.c	2021-01-28 04:48:50.156979494 +0100 -@@ -91,7 +91,7 @@ - #include <features.h> - #endif -  --#if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 -+#if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 && !defined(__UCLIBC__) || defined(__UCLIBC_HAS_BACKTRACE__) - #define HAVE_BACKTRACE - #endif - #endif diff --git a/package/classpath/Makefile b/package/classpath/Makefile deleted file mode 100644 index 65efa2900..000000000 --- a/package/classpath/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		classpath -PKG_VERSION:=		0.99 -PKG_RELEASE:=		1 -PKG_HASH:=		f929297f8ae9b613a1a167e231566861893260651d913ad9b6c11933895fecc8 26ca659f47d77384f518cf2b6463892fcd4f0b0d4d8c0de2addf697e63e7326b -PKG_DESCR:=		java classpath -PKG_SECTION:=		dev/tools -PKG_BUILDDEP:=		libgtk2 gdk-pixbuf orbit2 gconf -PKG_DEPENDS:=		libgtk2 gdk-pixbuf orbit2 gconf -HOST_BUILDDEP:=		gcj-host ecj-host -PKG_URL:=		http://www.gnu.org/software/classpath/home.html -PKG_SITES:=		ftp://ftp.gnu.org/gnu/classpath/ \ -			http://www.antlr3.org/download/ - -DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz antlr-3.5.2-complete.jar - -PKG_HOST_DEPENDS:=	linux -PKG_CFLINE_CLASSPATH:=	depends on ADK_HOST_ONLY - -include $(ADK_TOPDIR)/mk/host.mk -include $(ADK_TOPDIR)/mk/package.mk - -$(eval $(call HOST_template,CLASSPATH,classpath,$(PKG_VERSION)-${PKG_RELEASE})) -$(eval $(call PKG_template,CLASSPATH,classpath,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) - -HOST_CONFIGURE_ARGS+=	--disable-plugin \ -			--enable-tools \ -			--with-antlr-jar=${WRKBUILD}/antlr-3.5.2-complete.jar \ -			--disable-examples \ -			--disable-gtk-peer \ -			--disable-gconf-peer \ -			--disable-alsa \ -			--disable-Werror \ -			--without-x -CONFIGURE_ARGS+=	--disable-plugin \ -			--disable-tools \ -			--disable-examples - -classpath-install: -	$(INSTALL_DIR) $(IDIR_CLASSPATH)/usr/share/classpath -	$(CP) $(WRKINST)/usr/share/classpath/glibj.zip \ -		$(IDIR_CLASSPATH)/usr/share/classpath -	$(INSTALL_DIR) $(IDIR_CLASSPATH)/usr/lib/classpath -	$(CP) $(WRKINST)/usr/lib/classpath/lib*so.* \ -		$(IDIR_CLASSPATH)/usr/lib/classpath -	# install to staging directory -	$(INSTALL_DIR) $(STAGING_TARGET_DIR)/usr/share/classpath -	$(CP) $(WRKINST)/usr/share/classpath/glibj.zip \ -		$(STAGING_TARGET_DIR)/usr/share/classpath - -include ${ADK_TOPDIR}/mk/host-bottom.mk -include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/classpath/patches/classpath-fix.patch b/package/classpath/patches/classpath-fix.patch deleted file mode 100644 index 80fef0f35..000000000 --- a/package/classpath/patches/classpath-fix.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Nur classpath-0.98.orig//lib/Makefile.in classpath-0.98/lib/Makefile.in ---- classpath-0.99.orig/lib/Makefile.in	2012-03-09 00:54:14.000000000 +0100 -+++ classpath-0.99/lib/Makefile.in	2014-08-24 21:21:19.000000000 +0200 -@@ -305,7 +305,7 @@ top_srcdir = @top_srcdir@ - uudecode = @uudecode@ - vm_classes = @vm_classes@ - JAVA_DEPEND = java.dep --compile_classpath = $(vm_classes):$(top_srcdir):$(top_srcdir)/external/w3c_dom:$(top_srcdir)/external/sax:$(top_srcdir)/external/relaxngDatatype:$(top_srcdir)/external/jsr166:.:$(PATH_TO_GLIBJ_ZIP):$(PATH_TO_ESCHER) -+compile_classpath = $(vm_classes) -cp $(top_srcdir) -cp $(top_srcdir)/external/w3c_dom -cp $(top_srcdir)/external/sax -cp $(top_srcdir)/external/relaxngDatatype -cp $(top_srcdir)/external/jsr166 -cp . -cp $(PATH_TO_GLIBJ_ZIP) -cp $(PATH_TO_ESCHER) - @GCJ_JAVAC_FALSE@JCOMPILER = $(JAVAC) $(JAVACFLAGS) $(JAVAC_MEM_OPT) -source 1.5 -target 1.5 -bootclasspath '' -classpath $(compile_classpath) -d . @classes -  - # handling source to bytecode compiler programs like gcj, jikes  and kjc diff --git a/package/cmake/Makefile b/package/cmake/Makefile index 9ad0a74a3..b27983bb6 100644 --- a/package/cmake/Makefile +++ b/package/cmake/Makefile @@ -4,14 +4,14 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		cmake -PKG_VERSION:=		3.21.3 +PKG_VERSION:=		4.1.2  PKG_RELEASE:=		1 -PKG_HASH:=		d14d06df4265134ee42c4d50f5a60cb8b471b7b6a47da8e5d914d49dd783794f +PKG_HASH:=		643f04182b7ba323ab31f526f785134fb79cba3188a852206ef0473fee282a15  PKG_DESCR:=		build utility  PKG_SECTION:=		dev/tools  HOST_BUILDDEP:=		curl-host  PKG_URL:=		http://www.cmake.org/ -PKG_SITES:=		https://github.com/Kitware/CMake/releases/download/v3.21.3/ +PKG_SITES:=		https://github.com/Kitware/CMake/releases/download/v$(PKG_VERSION)/  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz diff --git a/package/cog/Makefile b/package/cog/Makefile new file mode 100644 index 000000000..7302f570f --- /dev/null +++ b/package/cog/Makefile @@ -0,0 +1,55 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		cog +PKG_VERSION:=		0.18.5 +PKG_RELEASE:=		1 +PKG_HASH:=		0ede9d09ab635ac519beec0543378e3fc51b56561a5fb7aa9c0cbca54c31b97c +PKG_DESCR:=		minimalistic browser +PKG_SECTION:=		app/browser +PKG_DEPENDS:=		wpewebkit wpebackend-fdo libinput glib-networking ca-certificates +PKG_BUILDDEP:=		wpewebkit wpebackend-fdo libinput +PKG_URL:=		https://wpewebkit.org +PKG_SITES:=		https://wpewebkit.org/releases/ + +PKG_CHOICES_COG:=	WITH_X11 WITH_WAYLAND +PKGCD_WITH_WAYLAND:=	with wayland support +PKGCD_WITH_X11:=	with X11 support + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,COG,cog,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj + +MESON_FLAGS+=		-Ddocumentation=false \ +			-Dmanpages=false \ +			-Dprograms=true \ +			-Dwpe_api=2.0 + +ifeq ($(ADK_PACKAGE_COG_WITH_WAYLAND),y) +MESON_FLAGS+=		-Dplatforms="wayland" +endif + +ifeq ($(ADK_PACKAGE_COG_WITH_X11),y) +MESON_FLAGS+=		-Dplatforms="x11" +endif + +CONFIG_STYLE:=		meson +BUILD_STYLE:=		meson +INSTALL_STYLE:=		meson + +cog-install: +	$(INSTALL_DIR) $(IDIR_COG)/usr/lib +	$(CP) $(WRKINST)/usr/lib/libcogcore.so* \ +		$(IDIR_COG)/usr/lib +	$(INSTALL_DIR) $(IDIR_COG)/usr/lib/cog/modules +	$(CP) $(WRKINST)/usr/lib/cog/modules/* \ +		$(IDIR_COG)/usr/lib/cog/modules +	$(INSTALL_DIR) $(IDIR_COG)/usr/bin +	$(INSTALL_BIN) $(WRKINST)/usr/bin/cog \ +		$(IDIR_COG)/usr/bin + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/curl/Makefile b/package/curl/Makefile index a7c53c947..c4711a7d2 100644 --- a/package/curl/Makefile +++ b/package/curl/Makefile @@ -4,12 +4,13 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		curl -PKG_VERSION:=		8.12.1 +PKG_VERSION:=		8.16.0  PKG_RELEASE:=		1 -PKG_HASH:=		0341f1ed97a26c811abaebd37d62b833956792b7607ea3f15d001613c76de202 +PKG_HASH:=		40c8cddbcb6cc6251c03dea423a472a6cea4037be654ba5cf5dec6eb2d22ff1d  PKG_DESCR:=		client-side url transfer tool  PKG_SECTION:=		net/http  PKG_BUILDDEP:=		zlib +HOST_BUILDDEP:=		openssl-host  PKG_NEEDS:=		threads  PKG_URL:=		https://curl.se/  PKG_SITES:=		https://curl.se/download/ @@ -20,7 +21,7 @@ PKG_SUBPKGS:=		LIBCURL CURL  PKGSD_LIBCURL:=		client-side url transfer library  PKGSC_LIBCURL:=		libs/net  PKGSS_LIBCURL:=		zlib -PKGSD_CURL:=		client-side url transfer utiity +PKGSD_CURL:=		client-side url transfer utility  PKGSC_CURL:=		net/http  PKGSS_CURL:=		zlib libcurl @@ -49,7 +50,7 @@ $(eval $(call HOST_template,CURL,curl,${PKG_VERSION}-${PKG_RELEASE}))  $(eval $(call PKG_template,LIBCURL,libcurl,${PKG_VERSION}-${PKG_RELEASE},${PKGSS_LIBCURL},${PKGSD_LIBCURL},${PKGSC_LIBCURL},${PKG_OPTS}))  $(eval $(call PKG_template,CURL,curl,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) -HOST_CONFIGURE_ARGS+=	--without-ssl \ +HOST_CONFIGURE_ARGS+=	--with-openssl="$(STAGING_HOST_DIR)/usr" \  			--without-libpsl  ifeq (${ADK_PACKAGE_LIBCURL_WITH_LIBRESSL},y) diff --git a/package/daq/Makefile b/package/daq/Makefile deleted file mode 100644 index 3e72dca8c..000000000 --- a/package/daq/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		daq -PKG_VERSION:=		2.0.7 -PKG_RELEASE:=		1 -PKG_HASH:=		d1f6709bc5dbddee3fdf170cdc1e49fb926e2031d4869ecf367a8c47efc87279 -PKG_DESCR:=		data acquisition library -PKG_SECTION:=		libs/misc -PKG_DEPENDS:=		libpcap libdnet -PKG_BUILDDEP:=		libpcap libdnet -PKG_URL:=		http://www.snort.org -PKG_SITES:=		https://www.snort.org/downloads/snort/ -PKG_OPTS:=		dev -PKG_NOPARALLEL:=	1 - -DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz - -include $(ADK_TOPDIR)/mk/package.mk - -$(eval $(call PKG_template,DAQ,daq,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) - -AUTOTOOL_STYLE:=	autoreconf -CONFIGURE_ARGS+=	--disable-ipfw-module - -daq-install: -	$(INSTALL_DIR) $(IDIR_DAQ)/usr/lib/daq -	$(CP) $(WRKINST)/usr/lib/daq/*.so \ -		$(IDIR_DAQ)/usr/lib/daq -	$(CP) $(WRKINST)/usr/lib/*.so* \ -		$(IDIR_DAQ)/usr/lib - -include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/daq/patches/patch-configure_ac b/package/daq/patches/patch-configure_ac deleted file mode 100644 index 4f8d40df3..000000000 --- a/package/daq/patches/patch-configure_ac +++ /dev/null @@ -1,10 +0,0 @@ ---- daq-2.0.0.orig/configure.ac	2012-09-06 17:17:23.000000000 +0200 -+++ daq-2.0.0/configure.ac	2013-11-15 15:21:19.546122100 +0100 -@@ -179,7 +179,6 @@ AC_ARG_ENABLE(pcap-module, -               [enable_pcap_module="$enableval"], [enable_pcap_module="$DEFAULT_ENABLE"]) - if test "$enable_pcap_module" = yes; then -     AC_CHECK_HEADER([pcap.h], [], [enable_pcap_module=no]) --    AC_CHECK_PCAP_VER("1.0.0") -     if test "$enable_pcap_module" = yes; then -         STATIC_LIBS="${STATIC_LIBS} -lpcap" -     fi diff --git a/package/dbus-glib/Makefile b/package/dbus-glib/Makefile index 47a00144c..e4af44995 100644 --- a/package/dbus-glib/Makefile +++ b/package/dbus-glib/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		dbus-glib -PKG_VERSION:=		0.102 +PKG_VERSION:=		0.114  PKG_RELEASE:=		1 -PKG_HASH:=		6964ed585bb8149a14ab744b5ded5e77cf71ec5446e6dcc5fcf5eebcc52df29c +PKG_HASH:=		c09c5c085b2a0e391b8ee7d783a1d63fe444e96717cc1814d61b5e8fc2827a7c  PKG_DESCR:=		glib bindings for dbus  PKG_SECTION:=		libs/misc  PKG_DEPENDS:=		libdbus glib diff --git a/package/dbus-glib/patches/patch-Makefile_in b/package/dbus-glib/patches/patch-Makefile_in index b42b1d3ba..d9a3b3840 100644 --- a/package/dbus-glib/patches/patch-Makefile_in +++ b/package/dbus-glib/patches/patch-Makefile_in @@ -1,13 +1,13 @@ ---- dbus-glib-0.86.orig/Makefile.in	2010-03-25 01:20:00.000000000 +0100 -+++ dbus-glib-0.86/Makefile.in	2010-04-11 12:29:52.000000000 +0200 -@@ -312,8 +312,8 @@ top_builddir = @top_builddir@ +--- dbus-glib-0.114.orig/Makefile.in	2025-03-13 19:45:45.000000000 +0100 ++++ dbus-glib-0.114/Makefile.in	2025-04-07 12:35:46.540747017 +0200 +@@ -421,8 +421,8 @@ top_builddir = @top_builddir@   top_srcdir = @top_srcdir@   ACLOCAL_AMFLAGS = -I m4   GLIB_PC = dbus-glib-1.pc --SUBDIRS = dbus tools test doc --DIST_SUBDIRS = dbus tools test doc m4 -+SUBDIRS = dbus -+DIST_SUBDIRS = dbus tools m4 +-SUBDIRS = dbus-gmain dbus tools test doc +-DIST_SUBDIRS = dbus-gmain dbus tools test doc m4 ++SUBDIRS = dbus-gmain dbus test ++DIST_SUBDIRS = dbus-gmain dbus test m4   pkgconfigdir = $(libdir)/pkgconfig   pkgconfig_DATA = $(GLIB_PC)   DISTCLEANFILES = \ diff --git a/package/dbus-glib/patches/patch-dbus_Makefile_in b/package/dbus-glib/patches/patch-dbus_Makefile_in index 161f53563..692b875ad 100644 --- a/package/dbus-glib/patches/patch-dbus_Makefile_in +++ b/package/dbus-glib/patches/patch-dbus_Makefile_in @@ -1,11 +1,11 @@ ---- dbus-glib-0.86.orig/dbus/Makefile.in	2010-03-25 01:19:59.000000000 +0100 -+++ dbus-glib-0.86/dbus/Makefile.in	2010-04-11 12:15:19.000000000 +0200 -@@ -369,7 +369,7 @@ target_vendor = @target_vendor@ +--- dbus-glib-0.114.orig/dbus/Makefile.in	2025-03-13 19:45:45.000000000 +0100 ++++ dbus-glib-0.114/dbus/Makefile.in	2025-04-07 12:33:57.583768144 +0200 +@@ -637,7 +637,7 @@ target_alias = @target_alias@   top_build_prefix = @top_build_prefix@   top_builddir = @top_builddir@   top_srcdir = @top_srcdir@  -SUBDIRS = . examples  +SUBDIRS = . - INCLUDES = \ + AM_CPPFLAGS = \   	-I$(top_srcdir)						\   	-I$(top_builddir)					\ diff --git a/package/dejavu-ttf-fonts/Makefile b/package/dejavu-ttf-fonts/Makefile new file mode 100644 index 000000000..c1bc7d6f5 --- /dev/null +++ b/package/dejavu-ttf-fonts/Makefile @@ -0,0 +1,30 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		dejavu-fonts-ttf +PKG_VERSION:=		2.37 +PKG_RELEASE:=		1 +PKG_HASH:=		fa9ca4d13871dd122f61258a80d01751d603b4d3ee14095d65453b4e846e17d7 +PKG_DESCR:=		free fonts +PKG_SECTION:=		x11/fonts +PKG_URL:=		https://dejavu-fonts.github.io/ +PKG_SITES:=		http://sourceforge.net/projects/dejavu/files/dejavu/$(PKG_VERSION)/ + +DISTFILES:=             $(PKG_NAME)-$(PKG_VERSION).tar.bz2 + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,DEJAVU_FONTS_TTF,dejavu-fonts-ttf,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +CONFIG_STYLE:=		manual +BUILD_STYLE:=		manual +INSTALL_STYLE:=		manual + +dejavu-fonts-ttf-install: +	$(INSTALL_DIR) $(IDIR_DEJAVU_FONTS_TTF)/usr/share/fonts/dejavu +	$(INSTALL_BIN) $(WRKBUILD)/ttf/*.ttf \ +		$(IDIR_DEJAVU_FONTS_TTF)/usr/share/fonts/dejavu + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/dillo/Makefile b/package/dillo/Makefile index 0535edb69..8718e78e2 100644 --- a/package/dillo/Makefile +++ b/package/dillo/Makefile @@ -4,19 +4,19 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		dillo -PKG_VERSION:=		3.0.5 +PKG_VERSION:=		3.2.0  PKG_RELEASE:=		1 -PKG_HASH:=		db1be16c1c5842ebe07b419aa7c6ef11a45603a75df2877f99635f4f8345148b +PKG_HASH:=		1066ed42ea7fe0ce19e79becd029c651c15689922de8408e13e70bb5701931bf  PKG_DESCR:=		small graphical web browser  PKG_SECTION:=		x11/apps -PKG_DEPENDS:=		libfltk libxi libpng zlib libjpeg-turbo libressl -PKG_BUILDDEP:=		fltk libXi libjpeg-turbo libpng zlib libressl +PKG_DEPENDS:=		libfltk libxi libpng zlib libjpeg-turbo libopenssl +PKG_DEPENDS+=		libXrender libXfixes libXext fontconfig libxml2 +PKG_BUILDDEP:=		fltk libXi libjpeg-turbo libpng zlib openssl  PKG_NEEDS:=		threads cxx -PKG_URL:=		http://www.dillo.org/ -PKG_SITES:=		http://www.dillo.org/download/ +PKG_URL:=		https://dillo-browser.github.io/ +PKG_SITES:=		https://github.com/dillo-browser/dillo/releases/download/v$(PKG_VERSION)/ -PKG_HOST_DEPENDS:=	!cygwin -PKG_ARCH_DEPENDS:=	arm mips mips64 x86 x86_64 +PKG_ARCH_DEPENDS:=	aarch64 arm mips mips64 sh x86 x86_64  DISTFILES:=             ${PKG_NAME}-${PKG_VERSION}.tar.bz2 @@ -24,11 +24,9 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,DILLO,dillo,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) -TARGET_CFLAGS+=		-fcommon -TARGET_CXXFLAGS+=	-fcommon -TARGET_LDFLAGS+=	-liconv +TARGET_LDFLAGS+=	-latomic  CONFIGURE_ENV+=		PNG_CONFIG=$(STAGING_TARGET_DIR)/scripts/libpng-config -CONFIGURE_ARGS+=	--enable-ssl +CONFIGURE_ARGS+=	--enable-tls  dillo-install:  	$(INSTALL_DIR) $(IDIR_DILLO)/etc/dillo diff --git a/package/dillo/patches/patch-src_decode_c b/package/dillo/patches/patch-src_decode_c new file mode 100644 index 000000000..012903a25 --- /dev/null +++ b/package/dillo/patches/patch-src_decode_c @@ -0,0 +1,11 @@ +--- dillo-3.2.0.orig/src/decode.c	2024-10-23 22:26:03.000000000 +0200 ++++ dillo-3.2.0/src/decode.c	2025-08-17 08:44:05.687194623 +0200 +@@ -373,7 +373,7 @@ Decode *a_Decode_charset_init(const char +       iconv_t ic = iconv_open("UTF-8", format); +       if (ic != (iconv_t) -1) { +            dc = dNew(Decode, 1); +-           dc->state = ic; ++           dc->state = (void *)ic; +            dc->buffer = dNew(char, bufsize); +            dc->leftover = dStr_new(""); +  diff --git a/package/dnsmasq/Makefile b/package/dnsmasq/Makefile index d204305b0..d036235a1 100644 --- a/package/dnsmasq/Makefile +++ b/package/dnsmasq/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		dnsmasq -PKG_VERSION:=		2.90 +PKG_VERSION:=		2.91  PKG_RELEASE:=		1 -PKG_HASH:=		8e50309bd837bfec9649a812e066c09b6988b73d749b7d293c06c57d46a109e4 +PKG_HASH:=		f622682848b33677adb2b6ad08264618a2ae0a01da486a93fd8cd91186b3d153  PKG_DESCR:=		lightweight dns, dhcp and tftp server  PKG_SECTION:=		net/dns  PKG_KDEPENDS:=		inotify-user diff --git a/package/e2fsprogs/Makefile b/package/e2fsprogs/Makefile index cfadb30af..b47fe75ed 100644 --- a/package/e2fsprogs/Makefile +++ b/package/e2fsprogs/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		e2fsprogs -PKG_VERSION:=		1.47.1 +PKG_VERSION:=		1.47.2  PKG_RELEASE:=		1 -PKG_HASH:=		5a33dc047fd47284bca4bb10c13cfe7896377ae3d01cb81a05d406025d99e0d1 +PKG_HASH:=		08242e64ca0e8194d9c1caad49762b19209a06318199b63ce74ae4ef2d74e63c  PKG_DESCR:=		ext2/3/4 filesystem utilities  PKG_SECTION:=		sys/fs  PKG_BUILDDEP:=		util-linux diff --git a/package/ecj/Makefile b/package/ecj/Makefile deleted file mode 100644 index 26bace2c8..000000000 --- a/package/ecj/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		ecj -PKG_VERSION:=		4.9 -PKG_RELEASE:=		1 -PKG_HASH:=		9506e75b862f782213df61af67338eb7a23c35ff425d328affc65585477d34cd -PKG_DESCR:=		ecj java compiler -PKG_SECTION:=		dev/lang -PKG_SITES:=		ftp://sourceware.org/pub/java/ - -PKG_CFLINE_ECJ:=	depends on ADK_HOST_ONLY -DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.jar - -include $(ADK_TOPDIR)/mk/host.mk -include $(ADK_TOPDIR)/mk/package.mk - -$(eval $(call HOST_template,ECJ,ecj,$(PKG_VERSION)-${PKG_RELEASE})) - -HOST_STYLE:=		manual - -ecj-hostinstall: -	env LD_LIBRARY_PATH=$(STAGING_HOST_DIR)/usr/lib:$(STAGING_HOST_DIR)/usr/lib64 \ -	$(STAGING_HOST_DIR)/usr/bin/gcj -lgcj -O2 -findirect-dispatch \ -		-o ${STAGING_HOST_DIR}/usr/bin/ecj.native \ -		--main=org.eclipse.jdt.internal.compiler.batch.Main \ -		$(DL_DIR)/${PKG_NAME}-${PKG_VERSION}.jar -	echo "env LD_LIBRARY_PATH=$(STAGING_HOST_DIR)/usr/lib:$(STAGING_HOST_DIR)/usr/lib64 ${STAGING_HOST_DIR}/usr/bin/ecj.native \$$@" > \ -		${STAGING_HOST_DIR}/usr/bin/ecj -	chmod u+x ${STAGING_HOST_DIR}/usr/bin/ecj -	# put a wrapper for java here -	mv ${STAGING_HOST_DIR}/usr/bin/gij ${STAGING_HOST_DIR}/usr/bin/gij.native -	echo "env LD_LIBRARY_PATH=$(STAGING_HOST_DIR)/usr/lib:$(STAGING_HOST_DIR)/usr/lib64 ${STAGING_HOST_DIR}/usr/bin/gij.native \"\$$@\"" > \ -		${STAGING_HOST_DIR}/usr/bin/hostjava -	chmod u+x ${STAGING_HOST_DIR}/usr/bin/hostjava -	echo "env LD_LIBRARY_PATH=$(STAGING_HOST_DIR)/usr/lib:$(STAGING_HOST_DIR)/usr/lib64 ${STAGING_HOST_DIR}/usr/bin/gij.native \"\$$@\"" > \ -		${STAGING_HOST_DIR}/usr/bin/gij -	chmod u+x ${STAGING_HOST_DIR}/usr/bin/gij - -include ${ADK_TOPDIR}/mk/host-bottom.mk -include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/elftoaout/Makefile b/package/elftoaout/Makefile index 51af97ee8..9f374e31d 100644 --- a/package/elftoaout/Makefile +++ b/package/elftoaout/Makefile @@ -20,10 +20,6 @@ $(eval $(call HOST_template,ELFTOAOUT,elftoaout,$(PKG_VERSION)-$(PKG_RELEASE)))  HOST_STYLE:=		manual -ifeq ($(OS_FOR_BUILD),Darwin) -HOST_CFLAGS+=		-I$(ADK_TOPDIR)/adk/include -endif -  host-build:  	$(HOST_CC) $(HOST_CFLAGS) -o $(WRKBUILD)/elftoaout $(WRKBUILD)/elftoaout.c diff --git a/package/elfutils/Makefile b/package/elfutils/Makefile index 231559424..e4f1d49a9 100644 --- a/package/elfutils/Makefile +++ b/package/elfutils/Makefile @@ -9,6 +9,8 @@ PKG_RELEASE:=		1  PKG_HASH:=		39bd8f1a338e2b7cd4abc3ff11a0eddc6e690f69578a57478d8179b4148708c8  PKG_DESCR:=		libraries/utilities to handle elf objects (drop in replacement for libelf)  PKG_SECTION:=		base/libs +PKG_DEPENDS:=		zlib +PKG_BUILDDEP:=		zlib  PKG_NEEDS:=		intl  PKG_SITES:=		https://sourceware.org/elfutils/ftp/$(PKG_VERSION)/ diff --git a/package/enchant/Makefile b/package/enchant/Makefile index 84ffa533f..bfc5e9727 100644 --- a/package/enchant/Makefile +++ b/package/enchant/Makefile @@ -4,12 +4,12 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		enchant -PKG_VERSION:=		1.6.0 +PKG_VERSION:=		2.8.2  PKG_RELEASE:=		1 -PKG_HASH:=		2fac9e7be7e9424b2c5570d8affe568db39f7572c10ed48d4e13cddf03f7097f +PKG_HASH:=		8f19535adb5577b83b00e02f330fe9b9eb40dd21f19e2899636fc4d3a7696375  PKG_DESCR:=		spelling library  PKG_SECTION:=		libs/misc -PKG_SITES:=		http://www.abisource.com/downloads/enchant/1.6.0/ +PKG_SITES:=		https://github.com/rrthomas/enchant/releases/download/v$(PKG_VERSION)/  DISTFILES:=             $(PKG_NAME)-$(PKG_VERSION).tar.gz diff --git a/package/enchant/patches/patch-src_Makefile_am b/package/enchant/patches/patch-src_Makefile_am new file mode 100644 index 000000000..35b03b11d --- /dev/null +++ b/package/enchant/patches/patch-src_Makefile_am @@ -0,0 +1,12 @@ +--- enchant-2.8.2.orig/src/Makefile.am	2024-04-25 14:23:39.000000000 +0200 ++++ enchant-2.8.2/src/Makefile.am	2025-03-30 13:10:04.475913008 +0200 +@@ -13,9 +13,6 @@ +  + AM_CPPFLAGS = -I$(top_srcdir) $(ISYSTEM)$(top_builddir)/libgnu $(ISYSTEM)$(top_srcdir)/libgnu -I$(top_srcdir)/lib $(GLIB_CFLAGS) $(WARN_CFLAGS) -DG_LOG_DOMAIN='"libenchant"' +  +-dist_man_MANS = enchant-@ENCHANT_MAJOR_VERSION@.1 enchant-lsmod-@ENCHANT_MAJOR_VERSION@.1 +-nodist_doc_DATA = enchant-@ENCHANT_MAJOR_VERSION@.html enchant-lsmod-@ENCHANT_MAJOR_VERSION@.html +- + edit = sed \ + 	-e 's|@PKGDATADIR[@]|$(pkgdatadir)|g' \ + 	-e 's|@SYSCONFDIR[@]|$(sysconfdir)|g' diff --git a/package/enchant/patches/patch-src_Makefile_in b/package/enchant/patches/patch-src_Makefile_in new file mode 100644 index 000000000..324c4016b --- /dev/null +++ b/package/enchant/patches/patch-src_Makefile_in @@ -0,0 +1,22 @@ +--- enchant-2.8.2.orig/src/Makefile.in	2024-08-14 11:33:20.000000000 +0200 ++++ enchant-2.8.2/src/Makefile.in	2025-04-01 05:16:13.945853550 +0200 +@@ -472,8 +472,8 @@ top_build_prefix = @top_build_prefix@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + AM_CPPFLAGS = -I$(top_srcdir) $(ISYSTEM)$(top_builddir)/libgnu $(ISYSTEM)$(top_srcdir)/libgnu -I$(top_srcdir)/lib $(GLIB_CFLAGS) $(WARN_CFLAGS) -DG_LOG_DOMAIN='"libenchant"' +-dist_man_MANS = enchant-@ENCHANT_MAJOR_VERSION@.1 enchant-lsmod-@ENCHANT_MAJOR_VERSION@.1 +-nodist_doc_DATA = enchant-@ENCHANT_MAJOR_VERSION@.html enchant-lsmod-@ENCHANT_MAJOR_VERSION@.html ++dist_man_MANS =  ++nodist_doc_DATA =  + edit = sed \ + 	-e 's|@PKGDATADIR[@]|$(pkgdatadir)|g' \ + 	-e 's|@SYSCONFDIR[@]|$(sysconfdir)|g' +@@ -727,7 +727,7 @@ distdir-am: $(DISTFILES) + 	done + check-am: all-am + check: check-am +-all-am: Makefile $(PROGRAMS) $(MANS) $(DATA) ++all-am: Makefile $(PROGRAMS) $(DATA) + installdirs: + 	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)"; do \ + 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \ diff --git a/package/ethtool/Makefile b/package/ethtool/Makefile index 5360d31ee..ddf9ae9d8 100644 --- a/package/ethtool/Makefile +++ b/package/ethtool/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		ethtool -PKG_VERSION:=		5.15 +PKG_VERSION:=		6.14  PKG_RELEASE:=		1 -PKG_HASH:=		686fd6110389d49c2a120f00c3cd5dfe43debada8e021e4270d74bbe452a116d +PKG_HASH:=		9338bb00e492878d3bbe3cd2894e60db35813634c208db0b20f5c7ee84da69b1  PKG_DESCR:=		display or change ethernet card settings  PKG_DEPENDS:=		libmnl  PKG_BUILDDEP:=		libmnl diff --git a/package/ethtool/patches/patch-netlink_msgbuff_c b/package/ethtool/patches/patch-netlink_msgbuff_c new file mode 100644 index 000000000..6c8338bb5 --- /dev/null +++ b/package/ethtool/patches/patch-netlink_msgbuff_c @@ -0,0 +1,15 @@ +--- ethtool-6.14.orig/netlink/msgbuff.c	2024-10-08 23:24:51.000000000 +0200 ++++ ethtool-6.14/netlink/msgbuff.c	2025-04-09 09:16:53.367670289 +0200 +@@ -4,10 +4,12 @@ +  * Data structures and code for flexible message buffer abstraction. +  */ +  ++#define _BSD_SOURCE + #include <string.h> + #include <errno.h> + #include <stdlib.h> + #include <stdint.h> ++#include <unistd.h> +  + #include "../internal.h" + #include "netlink.h" diff --git a/package/ethtool/patches/patch-netlink_permaddr_c b/package/ethtool/patches/patch-netlink_permaddr_c new file mode 100644 index 000000000..3230c13df --- /dev/null +++ b/package/ethtool/patches/patch-netlink_permaddr_c @@ -0,0 +1,14 @@ +--- ethtool-6.14.orig/netlink/permaddr.c	2022-12-08 13:20:15.000000000 +0100 ++++ ethtool-6.14/netlink/permaddr.c	2025-04-09 09:17:36.070462620 +0200 +@@ -4,9 +4,11 @@ +  * Implementation of "ethtool -P <dev>" +  */ +  ++#define _BSD_SOURCE + #include <errno.h> + #include <string.h> + #include <stdio.h> ++#include <unistd.h> + #include <linux/rtnetlink.h> + #include <linux/if_link.h> +  diff --git a/package/etrax-tools/src/e100boot/Makefile b/package/etrax-tools/src/e100boot/Makefile index 828b40221..f8e4ced02 100644 --- a/package/etrax-tools/src/e100boot/Makefile +++ b/package/etrax-tools/src/e100boot/Makefile @@ -11,7 +11,7 @@ INSTALL_PATH     = /usr/local  INSTALL_PATH_BIN = $(INSTALL_PATH)/bin  INSTALL_PATH_DOC = $(INSTALL_PATH)/man/man1 -DIRS = libpcap-0.4 sbl doc +DIRS = libpcap-0.4 sbl  -include $(AXIS_TOP_DIR)/tools/build/Rules.axis  ifdef prefix diff --git a/package/etrax-tools/src/e100boot/libpcap-0.4/pcap-linux.c b/package/etrax-tools/src/e100boot/libpcap-0.4/pcap-linux.c index 089ea0ab8..1adc8ef95 100644 --- a/package/etrax-tools/src/e100boot/libpcap-0.4/pcap-linux.c +++ b/package/etrax-tools/src/e100boot/libpcap-0.4/pcap-linux.c @@ -37,6 +37,7 @@ static const char rcsid[] =  #include <linux/if_ether.h>  #include <netinet/in.h> +#include <linux/sockios.h>  #include <errno.h>  #include <malloc.h> diff --git a/package/eudev/Makefile b/package/eudev/Makefile index 8ed7c39d7..a14ee569c 100644 --- a/package/eudev/Makefile +++ b/package/eudev/Makefile @@ -4,15 +4,16 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		eudev -PKG_VERSION:=		3.2.8 +PKG_VERSION:=		3.2.14  PKG_RELEASE:=		1 -PKG_HASH:=		61e4948e9e51271c3cce2bb5311a30b206dd03ef011062e6c627fb007e43f6b8 +PKG_HASH:=		8da4319102f24abbf7fff5ce9c416af848df163b29590e666d334cc1927f006f  PKG_DESCR:=		device manager  PKG_SECTION:=		sys/utils -PKG_BUILDDEP:=		gperf-host glib -PKG_DEPENDS:=		glib libkmod +PKG_BUILDDEP:=		gperf-host +PKG_DEPENDS:=		libkmod +PKG_KDEPENDS:=		inotify-user  PKG_URL:=		http://wiki.gentoo.org/wiki/Project:Eudev -PKG_SITES:=		http://dev.gentoo.org/~blueness/eudev/ +PKG_SITES:=		https://github.com/eudev-project/eudev/releases/download/v$(PKG_VERSION)/  PKG_LIBNAME:=		libudev  PKG_OPTS:=		dev diff --git a/package/eudev/files/udev.postinst b/package/eudev/files/udev.postinst index 67c5d00df..ac8535079 100644 --- a/package/eudev/files/udev.postinst +++ b/package/eudev/files/udev.postinst @@ -5,8 +5,10 @@ add_group dialout $(get_next_gid)  add_group disk $(get_next_gid)  add_group input $(get_next_gid)  add_group kmem $(get_next_gid) +add_group kvm $(get_next_gid)  add_group lp $(get_next_gid)  add_group tape $(get_next_gid) +add_group sgx $(get_next_gid)  echo Generating hwdb  udevadm hwdb --update --root="$IPKG_INSTROOT"  rm -rf "$IPKG_INSTROOT/etc/udev/hwdb.d" diff --git a/package/evilwm/Makefile b/package/evilwm/Makefile index 908bfa3f0..11230e356 100644 --- a/package/evilwm/Makefile +++ b/package/evilwm/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		evilwm -PKG_VERSION:=		1.1.1 +PKG_VERSION:=		1.4.3  PKG_RELEASE:=		1 -PKG_HASH:=		79589c296a5915ee0bae1d231e8912601fc794d9f0a9cacb6b648ff9a5f2602a +PKG_HASH:=		d5945b20b12c91db2412fac0dbda3fb9c3ec8debb8e1b109838992b2b1bbe5d4  PKG_DESCR:=		minimalist window manager  PKG_SECTION:=		x11/apps  PKG_DEPENDS:=		libx11 libxext libxrandr diff --git a/package/evilwm/patches/patch-Makefile b/package/evilwm/patches/patch-Makefile index 3c24aa646..4abd6cdb0 100644 --- a/package/evilwm/patches/patch-Makefile +++ b/package/evilwm/patches/patch-Makefile @@ -1,17 +1,6 @@ ---- evilwm-1.1.1.orig/Makefile	2015-07-13 12:19:36.000000000 +0200 -+++ evilwm-1.1.1/Makefile	2016-11-10 02:38:08.961425099 +0100 -@@ -17,6 +17,10 @@ desktopfilesdir = $(datarootdir)/applica - ############################################################################ - # Features -  -+XROOT    ?= /usr/X11R6  -+OPT_CPPFLAGS += -I$(XROOT)/include  -+OPT_LDLIBS += -L$(XROOT)/lib -+ - # Uncomment to enable info banner on holding Ctrl+Alt+I. - OPT_CPPFLAGS += -DINFOBANNER -  -@@ -71,10 +75,10 @@ OPT_CPPFLAGS += -DVWM +--- evilwm-1.4.3.orig/Makefile	2024-03-09 11:20:46.000000000 +0100 ++++ evilwm-1.4.3/Makefile	2025-04-12 11:03:24.427876287 +0200 +@@ -83,10 +83,10 @@ OPT_CPPFLAGS += -DNDEBUG  # disable asse   # Build tools   # Change this if you don't use gcc: @@ -24,12 +13,12 @@   WARN = -Wall -W -Wstrict-prototypes -Wpointer-arith -Wcast-align \   	-Wshadow -Waggregate-return -Wnested-externs -Winline -Wwrite-strings \   	-Wundef -Wsign-compare -Wmissing-prototypes -Wredundant-decls -@@ -89,7 +93,7 @@ WARN = -Wall -W -Wstrict-prototypes -Wpo +@@ -100,7 +100,7 @@ WARN = -Wall -W -Wstrict-prototypes -Wpo + #EXEEXT = .exe - # Override INSTALL_STRIP if you don't want a stripped binary   INSTALL = install --INSTALL_STRIP = -s -+INSTALL_STRIP = +-STRIP = strip ++STRIP ?= strip   INSTALL_DIR = $(INSTALL) -d -m 0755   INSTALL_FILE = $(INSTALL) -m 0644 - INSTALL_PROGRAM = $(INSTALL) -m 0755 $(INSTALL_STRIP) + INSTALL_PROGRAM = $(INSTALL) -m 0755 diff --git a/package/evilwm/patches/patch-keymap_h b/package/evilwm/patches/patch-keymap_h deleted file mode 100644 index 9b8fa0f22..000000000 --- a/package/evilwm/patches/patch-keymap_h +++ /dev/null @@ -1,44 +0,0 @@ ---- evilwm-1.1.0.orig/keymap.h	2011-07-03 16:14:21.000000000 +0200 -+++ evilwm-1.1.0/keymap.h	2011-11-29 19:54:57.437509136 +0100 -@@ -2,23 +2,23 @@ - #define _KEYMAP_H -  - #define KEY_NEXT        XK_Tab --#define KEY_NEW         XK_Return --#define KEY_TOPLEFT     XK_y --#define KEY_TOPRIGHT    XK_u --#define KEY_BOTTOMLEFT  XK_b --#define KEY_BOTTOMRIGHT XK_n -+#define KEY_NEW         XK_e -+#define KEY_TOPLEFT     XK_a -+#define KEY_TOPRIGHT    XK_s -+#define KEY_BOTTOMLEFT  XK_y -+#define KEY_BOTTOMRIGHT XK_x - #define KEY_LEFT        XK_h - #define KEY_RIGHT       XK_l - #define KEY_DOWN        XK_j --#define KEY_UP          XK_k -+#define KEY_UP          XK_g - #define KEY_LOWER       XK_Insert - #define KEY_ALTLOWER    XK_KP_Insert - #define KEY_INFO        XK_i - #define KEY_MAXVERT     XK_equal --#define KEY_MAX         XK_x --#define KEY_DOCK_TOGGLE XK_d -+#define KEY_MAX         XK_m -+#define KEY_DOCK_TOGGLE XK_f - #ifdef VWM --# define KEY_FIX        XK_f -+# define KEY_FIX        XK_d - # define KEY_PREVDESK   XK_Left - # define KEY_NEXTDESK   XK_Right - # define KEY_TOGGLEDESK XK_a -@@ -26,7 +26,7 @@ - /* Mixtures of Ctrl, Alt an Escape are used for things like VMWare and -  * XFree86/Cygwin, so the KILL key is an option in the Makefile  */ - #ifndef KEY_KILL --# define KEY_KILL       XK_Escape -+# define KEY_KILL       XK_k - #endif -  - #endif diff --git a/package/exiv2/Makefile b/package/exiv2/Makefile new file mode 100644 index 000000000..4768487c1 --- /dev/null +++ b/package/exiv2/Makefile @@ -0,0 +1,33 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		exiv2 +PKG_VERSION:=		0.28.7 +PKG_RELEASE:=		1 +PKG_HASH:=		5e292b02614dbc0cee40fe1116db2f42f63ef6b2ba430c77b614e17b8d61a638 +PKG_DESCR:=		fast read and write access to the Exif, IPTC and XMP metadata of an image +PKG_SECTION:=		libs/misc +PKG_DEPENDS:=		libinih +PKG_BUILDDEP:=		libinih +PKG_URL:=		https://www.exiv2.org +PKG_SITES:=		https://github.com/Exiv2/exiv2/archive/refs/tags/ +PKG_OPTS:=		dev + +DISTFILES:=             v$(PKG_VERSION).tar.gz + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,EXIV2,exiv2,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) + +CONFIG_STYLE:=		cmake +CMAKE_FLAGS+=		-DEXIV2_ENABLE_BROTLI=OFF \ +			-DBUILD_WITH_STACK_PROTECTOR=OFF + +exiv2-install: +	$(INSTALL_DIR) $(IDIR_EXIV2)/usr/lib +	$(CP) $(WRKINST)/usr/lib/libexiv2*.so* \ +		$(IDIR_EXIV2)/usr/lib + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/expat/Makefile b/package/expat/Makefile index 6b58ee822..d4f529697 100644 --- a/package/expat/Makefile +++ b/package/expat/Makefile @@ -4,13 +4,12 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		expat -PKG_VERSION:=		2.7.0 +PKG_VERSION:=		2.7.3  PKG_RELEASE:=		1 -PKG_HASH:=		25df13dd2819e85fb27a1ce0431772b7047d72af81ae78dc26b4c6e0805f48d1 +PKG_HASH:=		71df8f40706a7bb0a80a5367079ea75d91da4f8c65c58ec59bcdfbf7decdab9f  PKG_DESCR:=		xml parsing library  PKG_SECTION:=		libs/data -PKG_NEEDS:=		c++ -PKG_SITES:=		https://github.com/libexpat/libexpat/releases/download/R_2_7_0/ +PKG_SITES:=		https://github.com/libexpat/libexpat/releases/download/R_2_7_3/  PKG_LIBNAME:=		libexpat  PKG_OPTS:=		dev @@ -25,7 +24,8 @@ TARGET_CFLAGS:=	$(filter-out -static,$(TARGET_CFLAGS))  TARGET_LDFLAGS:=$(filter-out -static,$(TARGET_LDFLAGS))  endif -CONFIGURE_ARGS+=	--without-docbook +CONFIGURE_ARGS+=	--without-docbook \ +			--without-tests  libexpat-install:  	${INSTALL_DIR} ${IDIR_LIBEXPAT}/usr/lib diff --git a/package/faad2/Makefile b/package/faad2/Makefile index 97c2e2995..8ed5cf72b 100644 --- a/package/faad2/Makefile +++ b/package/faad2/Makefile @@ -21,8 +21,6 @@ include ${ADK_TOPDIR}/mk/package.mk  $(eval $(call PKG_template,LIBFAAD2,libfaad2,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))  AUTOTOOL_STYLE:=	autoreconf -# check for lrintf fails on Darwin, don't know why -CONFIGURE_ENV+=		ac_cv_c99_lrintf=yes  CONFIGURE_ARGS+=	--without-mpeg4ip \  			--without-xmms  TARGET_LDFLAGS+=	-lm diff --git a/package/fastjar/Makefile b/package/fastjar/Makefile deleted file mode 100644 index bb19be675..000000000 --- a/package/fastjar/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		fastjar -PKG_VERSION:=		0.98 -PKG_RELEASE:=		1 -PKG_HASH:=		f156abc5de8658f22ee8f08d7a72c88f9409ebd8c7933e9466b0842afeb2f145 -PKG_DESCR:=		fastjar utility -PKG_SECTION:=		dev/tools -PKG_SITES:=		http://download.savannah.gnu.org/releases/fastjar/ - -DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz - -PKG_CFLINE_FASTJAR:=	depends on ADK_HOST_ONLY - -include $(ADK_TOPDIR)/mk/host.mk -include $(ADK_TOPDIR)/mk/package.mk - -$(eval $(call HOST_template,FASTJAR,fastjar,$(PKG_VERSION)-${PKG_RELEASE})) - -include ${ADK_TOPDIR}/mk/host-bottom.mk -include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/ffmpeg/Makefile b/package/ffmpeg/Makefile index 2920791d7..ce7180293 100644 --- a/package/ffmpeg/Makefile +++ b/package/ffmpeg/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		ffmpeg -PKG_VERSION:=		6.1.1 -PKG_RELEASE:=		2 -PKG_HASH:=		5e3133939a61ef64ac9b47ffd29a5ea6e337a4023ef0ad972094b4da844e3a20 +PKG_VERSION:=		7.1.2 +PKG_RELEASE:=		1 +PKG_HASH:=		5eb62f529114778333b7eb0381cb16e2b8725ce2ae081d07b1082effe22b12e9  PKG_DESCR:=		record, convert and stream audio & video  PKG_SECTION:=		libs/video  PKG_NEEDS:=		threads @@ -17,7 +17,7 @@ PKG_SITES:=		http://www.ffmpeg.org/releases/  PKG_LIBNAME:=		libffmpeg  PKG_OPTS:=		dev -PKG_CHOICES_LIBFFMPEG:=	WITH_LIBRESSL WITH_OPENSSL +PKG_CHOICES_LIBFFMPEG:=	WITH_OPENSSL WITH_LIBRESSL  PKGCD_WITH_LIBRESSL:=	use libressl for crypto  PKGCS_WITH_LIBRESSL:=	libressl ca-certificates  PKGCB_WITH_LIBRESSL:=	libressl @@ -196,7 +196,6 @@ CONFIGURE_ARGS:=	--prefix=/usr \  			--disable-doc \  			--disable-debug \  			--disable-iconv \ -			--disable-yasm \  			--disable-optimizations \  			--disable-stripping \  			--enable-shared \ @@ -206,6 +205,7 @@ CONFIGURE_ARGS:=	--prefix=/usr \  			--enable-swscale \  			--enable-postproc \  			--enable-openssl \ +			--disable-x86asm \  			$(CONFIGURE_CPU_OPTS)  ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_BZIP2),y) diff --git a/package/ffmpeg/patches/0001-libavcodec-arm-mlpdsp_armv5te-fix-label-format-to-wo.patch b/package/ffmpeg/patches/0001-libavcodec-arm-mlpdsp_armv5te-fix-label-format-to-wo.patch deleted file mode 100644 index a23de2e78..000000000 --- a/package/ffmpeg/patches/0001-libavcodec-arm-mlpdsp_armv5te-fix-label-format-to-wo.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 654bd47716c4f36719fb0f3f7fd8386d5ed0b916 Mon Sep 17 00:00:00 2001 -From: Ross Burton <ross.burton@arm.com> -Date: Fri, 9 Aug 2024 11:32:00 +0100 -Subject: [PATCH] libavcodec/arm/mlpdsp_armv5te: fix label format to work with - binutils 2.43 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -binutils 2.43 has stricter validation for labels[1] and results in errors -when building ffmpeg for armv5: - -src/libavcodec/arm/mlpdsp_armv5te.S:232: Error: junk at end of line, first unrecognized character is `0' - -Remove the leading zero in the "01" label to resolve this error. - -[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=226749d5a6ff0d5c607d6428d6c81e1e7e7a994b - -Signed-off-by: Ross Burton <ross.burton@arm.com> -Signed-off-by: Martin Storsjö <martin@martin.st> -Signed-off-by: Phil Sutter <phil@nwl.cc> ---- - libavcodec/arm/mlpdsp_armv5te.S | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/libavcodec/arm/mlpdsp_armv5te.S b/libavcodec/arm/mlpdsp_armv5te.S -index 4f9aa485fd21a..d31568611c30f 100644 ---- a/libavcodec/arm/mlpdsp_armv5te.S -+++ b/libavcodec/arm/mlpdsp_armv5te.S -@@ -229,7 +229,7 @@ A .endif -   .endif -  -         // Begin loop --01: -+1: -   .if TOTAL_TAPS == 0 -         // Things simplify a lot in this case -         // In fact this could be pipelined further if it's worth it... -@@ -241,7 +241,7 @@ A .endif -         str     ST0, [PST, #-4]! -         str     ST0, [PST, #4 * (MAX_BLOCKSIZE + MAX_FIR_ORDER)] -         str     ST0, [PSAMP], #4 * MAX_CHANNELS --        bne     01b -+        bne     1b -   .else -     .if \fir_taps & 1 -       .set LOAD_REG, 1 -@@ -333,7 +333,7 @@ T       orr     AC0, AC0, AC1 -         str     ST3, [PST, #-4]! -         str     ST2, [PST, #4 * (MAX_BLOCKSIZE + MAX_FIR_ORDER)] -         str     ST3, [PSAMP], #4 * MAX_CHANNELS --        bne     01b -+        bne     1b -   .endif -         b       99f -  ---  -2.43.0 - diff --git a/package/firefox/Makefile b/package/firefox/Makefile index 93a0199cb..7256f3fe5 100644 --- a/package/firefox/Makefile +++ b/package/firefox/Makefile @@ -10,9 +10,9 @@ PKG_HASH:=		35a1da121af474833d013ecbc1f77aa55bb35678fe06d438842d320dfab3f344  PKG_DESCR:=		www browser  PKG_SECTION:=		app/browser  PKG_DEPENDS:=		pango libfreetype fontconfig libxcomposite libxcursor -PKG_DEPENDS+=		libgtk3 dbus-glib alsa-lib libatk harfbuzz +PKG_DEPENDS+=		libgtk3 dbus-glib alsa-lib harfbuzz  PKG_BUILDDEP:=		python3-host nodejs-host pango freetype fontconfig libXcomposite -PKG_BUILDDEP+=		libXcursor libgtk3 dbus-glib alsa-lib atk harfbuzz +PKG_BUILDDEP+=		libXcursor libgtk3 dbus-glib alsa-lib harfbuzz  PKG_SITES:=		https://ftp.mozilla.org/pub/firefox/releases/$(PKG_VERSION)/source/  PKG_ARCH_DEPENDS:=	aarch64 diff --git a/package/flac/Makefile b/package/flac/Makefile index d6a89159d..ceeb695cd 100644 --- a/package/flac/Makefile +++ b/package/flac/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		flac -PKG_VERSION:=		1.3.4 +PKG_VERSION:=		1.5.0  PKG_RELEASE:=		1 -PKG_HASH:=		8ff0607e75a322dd7cd6ec48f4f225471404ae2730d0ea945127b1355155e737 +PKG_HASH:=		f2c1c76592a82ffff8413ba3c4a1299b6c7ab06c734dee03fd88630485c2b920  PKG_DESCR:=		free lossless audio codec utility  PKG_SECTION:=		mm/audio  PKG_DEPENDS:=		libflac diff --git a/package/flatbuffers/Makefile b/package/flatbuffers/Makefile index f4811d7a8..719b5359e 100644 --- a/package/flatbuffers/Makefile +++ b/package/flatbuffers/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		flatbuffers -PKG_VERSION:=		2.0.6 +PKG_VERSION:=		25.9.23  PKG_RELEASE:=		1 -PKG_HASH:=		e2dc24985a85b278dd06313481a9ca051d048f9474e0f199e372fea3ea4248c9 +PKG_HASH:=		9102253214dea6ae10c2ac966ea1ed2155d22202390b532d1dea64935c518ada  PKG_DESCR:=		cross platform serialization library  PKG_SECTION:=		libs/misc  PKG_BUILDDEP:=		flatbuffers-host diff --git a/package/flex/Makefile b/package/flex/Makefile index 5570365ff..812eb241b 100644 --- a/package/flex/Makefile +++ b/package/flex/Makefile @@ -23,6 +23,7 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call HOST_template,FLEX,flex,$(PKG_VERSION)-$(PKG_RELEASE)))  $(eval $(call PKG_template,FLEX,flex,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) +TARGET_CFLAGS+=		-Wno-int-conversion -Wno-implicit-function-declaration  AUTOTOOL_STYLE:=	autoreconf  HOST_MAKE_FLAGS+=	STAGE1FLEX=$(WRKSRC)/src/stage1flex   MAKE_FLAGS+=		STAGE1FLEX=$(STAGING_HOST_DIR)/usr/bin/stage1flex diff --git a/package/flex/patches/patch-lib_malloc_c b/package/flex/patches/patch-lib_malloc_c new file mode 100644 index 000000000..e7b92c836 --- /dev/null +++ b/package/flex/patches/patch-lib_malloc_c @@ -0,0 +1,11 @@ +--- flex-2.6.4.orig/lib/malloc.c	2016-10-21 02:43:44.000000000 +0200 ++++ flex-2.6.4/lib/malloc.c	2025-04-11 16:38:56.667984564 +0200 +@@ -3,7 +3,7 @@ +       +      #include <sys/types.h> +       +-     void *malloc (); ++     void *malloc (size_t n); +       +      /* Allocate an N-byte block of memory from the heap. +         If N is zero, allocate a 1-byte block.  */ diff --git a/package/fltk/Makefile b/package/fltk/Makefile index ce17671e8..77d299cf9 100644 --- a/package/fltk/Makefile +++ b/package/fltk/Makefile @@ -4,19 +4,20 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		fltk -PKG_VERSION:=		1.3.8 +PKG_VERSION:=		1.3.11  PKG_RELEASE:=		1 -PKG_HASH:=		f3c1102b07eb0e7a50538f9fc9037c18387165bc70d4b626e94ab725b9d4d1bf +PKG_HASH:=		92805abc84505e3e7e27aec775ab0754ecb4182fe2d8ff2a9d568ccdcb2811ac  PKG_DESCR:=		fast light toolkit  PKG_SECTION:=		libs/misc  PKG_DEPENDS:=		mesa libx11 libxi freeglut libfreetype  PKG_BUILDDEP:=		libX11 libXi mesa freeglut freetype +PKG_NEEDS:=		locale  PKG_URL:=		http://www.fltk.org/ -PKG_SITES:=		http://fltk.org/pub/fltk/$(PKG_VERSION)/ +PKG_SITES:=		https://github.com/fltk/fltk/releases/download/release-$(PKG_VERSION)/  PKG_LIBNAME:=		libfltk  PKG_OPTS:=		dev -PKG_ARCH_DEPENDS:=	x86 x86_64 mips arm +PKG_ARCH_DEPENDS:=	aarch64 x86 x86_64 mips sh arm  DISTFILES:=		${PKG_NAME}-$(PKG_VERSION)-source.tar.gz @@ -24,7 +25,10 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,LIBFLTK,libfltk,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) -CONFIGURE_ARGS+=	--disable-xinerama +CONFIGURE_ARGS+=	--disable-xinerama \ +			--disable-print \ +			--disable-fluid \ +			--disable-test  libfltk-install:  	$(INSTALL_DIR) $(IDIR_LIBFLTK)/usr/lib diff --git a/package/fltk/patches/patch-Makefile b/package/fltk/patches/patch-Makefile index d6755ba24..1d7f0ea9b 100644 --- a/package/fltk/patches/patch-Makefile +++ b/package/fltk/patches/patch-Makefile @@ -1,11 +1,11 @@ ---- fltk-1.3.2.orig/Makefile	2011-07-19 06:49:30.000000000 +0200 -+++ fltk-1.3.2/Makefile	2014-05-28 13:50:10.000000000 +0200 -@@ -18,7 +18,7 @@ +--- fltk-1.3.11.orig/Makefile	2025-02-05 15:03:09.000000000 +0100 ++++ fltk-1.3.11/Makefile	2025-08-03 08:48:11.761069409 +0200 +@@ -16,7 +16,7 @@   include makeinclude  -DIRS = $(IMAGEDIRS) src $(CAIRODIR) fluid test documentation -+DIRS = $(IMAGEDIRS) src $(CAIRODIR) fluid documentation ++DIRS = $(IMAGEDIRS) src $(CAIRODIR)   all: makeinclude fltk-config   	for dir in $(DIRS); do\ diff --git a/package/fltk/patches/patch-makeinclude_in b/package/fltk/patches/patch-makeinclude_in deleted file mode 100644 index 8581117de..000000000 --- a/package/fltk/patches/patch-makeinclude_in +++ /dev/null @@ -1,12 +0,0 @@ ---- fltk-1.3.2.orig/makeinclude.in	2012-12-05 15:53:03.000000000 +0100 -+++ fltk-1.3.2/makeinclude.in	2014-05-28 16:08:25.000000000 +0200 -@@ -130,9 +130,6 @@ INSTALL_SCRIPT	= $(INSTALL) -m 755 - INSTALL_DESKTOP	= @INSTALL_DESKTOP@ - UNINSTALL_DESKTOP = @UNINSTALL_DESKTOP@ -  --# Be quiet when building... --.SILENT: -- - # Build commands and filename extensions... - .SUFFIXES:	.0 .1 .3 .6 .c .cxx .mm .h .fl .man .o .z $(EXEEXT) -  diff --git a/package/fmt/Makefile b/package/fmt/Makefile index 82d25c0cf..81d9d08aa 100644 --- a/package/fmt/Makefile +++ b/package/fmt/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		fmt -PKG_VERSION:=		8.1.1 +PKG_VERSION:=		11.2.0  PKG_RELEASE:=		1 -PKG_HASH:=		3d794d3cf67633b34b2771eb9f073bde87e846e0d395d254df7b211ef1ec7346 +PKG_HASH:=		bc23066d87ab3168f27cef3e97d545fa63314f5c79df5ea444d41d56f962c6af  PKG_DESCR:=		modern formatting library  PKG_SECTION:=		libs/misc  PKG_BUILDDEP:=		cmake-host diff --git a/package/font-adobe-100dpi/Makefile b/package/font-adobe-100dpi/Makefile index d0cd64f30..cf4f25c08 100644 --- a/package/font-adobe-100dpi/Makefile +++ b/package/font-adobe-100dpi/Makefile @@ -14,19 +14,15 @@ PKG_BUILDDEP:=		font-util  PKG_URL:=		http://www.x.org/  PKG_SITES:=		http://www.x.org/releases/individual/font/ -PKG_HOST_DEPENDS:=      !netbsd !openbsd !cygwin !freebsd !mirbsd -  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,FONT_ADOBE_100DPI,font-adobe-100dpi,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) -XAKE_FLAGS+=		DESTDIR='' -  font-adobe-100dpi-install:  	$(INSTALL_DIR) $(IDIR_FONT_ADOBE_100DPI)/usr/share/fonts/X11/100dpi -	$(CP) ${STAGING_TARGET_DIR}/usr/share/fonts/X11/100dpi/* \ +	$(CP) ${WRKINST}/usr/share/fonts/X11/100dpi/* \  		$(IDIR_FONT_ADOBE_100DPI)/usr/share/fonts/X11/100dpi  include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/font-adobe-75dpi/Makefile b/package/font-adobe-75dpi/Makefile index 68ae9963b..61dc6568a 100644 --- a/package/font-adobe-75dpi/Makefile +++ b/package/font-adobe-75dpi/Makefile @@ -14,19 +14,15 @@ PKG_BUILDDEP:=		font-util  PKG_URL:=		http://www.x.org/  PKG_SITES:=		http://www.x.org/releases/individual/font/ -PKG_HOST_DEPENDS:=      !netbsd !openbsd !cygwin !freebsd !mirbsd -  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,FONT_ADOBE_75DPI,font-adobe-75dpi,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) -XAKE_FLAGS+=		DESTDIR='' -  font-adobe-75dpi-install:  	$(INSTALL_DIR) $(IDIR_FONT_ADOBE_75DPI)/usr/share/fonts/X11/75dpi -	$(CP) ${STAGING_TARGET_DIR}/usr/share/fonts/X11/75dpi/* \ +	$(CP) ${WRKINST}/usr/share/fonts/X11/75dpi/* \  		$(IDIR_FONT_ADOBE_75DPI)/usr/share/fonts/X11/75dpi  include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/font-alias/Makefile b/package/font-alias/Makefile new file mode 100644 index 000000000..a65622140 --- /dev/null +++ b/package/font-alias/Makefile @@ -0,0 +1,35 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include ${ADK_TOPDIR}/rules.mk + +PKG_NAME:=		font-alias +PKG_VERSION:=		1.0.5 +PKG_RELEASE:=		1 +PKG_HASH:=		f8e0ca6537003f11fcaf36c598f7de9c0428f8ed587388a8a37ff18ccc597730 +PKG_DESCR:=		font alias utility +PKG_SECTION:=		x11/fonts +PKG_URL:=		http://www.x.org/ +PKG_SITES:=		http://www.x.org/releases/individual/font/ + +DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz + +include ${ADK_TOPDIR}/mk/host.mk +include ${ADK_TOPDIR}/mk/package.mk + +$(eval $(call HOST_template,FONT_ALIAS,font-alias,${PKG_VERSION}-${PKG_RELEASE})) +$(eval $(call PKG_template,FONT_ALIAS,font-alias,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) + +font-alias-install: +	${INSTALL_DIR} ${IDIR_FONT_ALIAS}/usr/share/fonts/X11/misc +	${CP} ${WRKINST}/usr/share/fonts/X11/misc/fonts.alias \ +		${IDIR_FONT_ALIAS}/usr/share/fonts/X11/misc +	${INSTALL_DIR} ${IDIR_FONT_ALIAS}/usr/share/fonts/X11/100dpi +	${CP} ${WRKINST}/usr/share/fonts/X11/100dpi/fonts.alias \ +		${IDIR_FONT_ALIAS}/usr/share/fonts/X11/100dpi +	${INSTALL_DIR} ${IDIR_FONT_ALIAS}/usr/share/fonts/X11/75dpi +	${CP} ${WRKINST}/usr/share/fonts/X11/75dpi/fonts.alias \ +		${IDIR_FONT_ALIAS}/usr/share/fonts/X11/75dpi + +include ${ADK_TOPDIR}/mk/host-bottom.mk +include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/font-bh-100dpi/Makefile b/package/font-bh-100dpi/Makefile index 4d7f0f702..392913fa9 100644 --- a/package/font-bh-100dpi/Makefile +++ b/package/font-bh-100dpi/Makefile @@ -13,8 +13,6 @@ PKG_BUILDDEP:=		font-util  PKG_URL:=		http://www.x.org/  PKG_SITES:=		http://www.x.org/releases/individual/font/ -PKG_HOST_DEPENDS:=      !netbsd !openbsd !cygwin !freebsd !mirbsd -  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  include $(ADK_TOPDIR)/mk/package.mk diff --git a/package/font-bh-75dpi/Makefile b/package/font-bh-75dpi/Makefile index 4e74525ff..2855c94d3 100644 --- a/package/font-bh-75dpi/Makefile +++ b/package/font-bh-75dpi/Makefile @@ -13,8 +13,6 @@ PKG_BUILDDEP:=		font-util  PKG_URL:=		http://www.x.org/  PKG_SITES:=		http://www.x.org/releases/individual/font/ -PKG_HOST_DEPENDS:=      !netbsd !openbsd !cygwin !freebsd !mirbsd -  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  include $(ADK_TOPDIR)/mk/package.mk diff --git a/package/font-bh-lucidatypewriter-100dpi/Makefile b/package/font-bh-lucidatypewriter-100dpi/Makefile index 7f0112666..f4dab632c 100644 --- a/package/font-bh-lucidatypewriter-100dpi/Makefile +++ b/package/font-bh-lucidatypewriter-100dpi/Makefile @@ -13,8 +13,6 @@ PKG_BUILDDEP:=		font-util  PKG_URL:=		http://www.x.org/  PKG_SITES:=		http://www.x.org/releases/individual/font/ -PKG_HOST_DEPENDS:=      !netbsd !openbsd !cygwin !freebsd !mirbsd -  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  include $(ADK_TOPDIR)/mk/package.mk diff --git a/package/font-bh-lucidatypewriter-75dpi/Makefile b/package/font-bh-lucidatypewriter-75dpi/Makefile index b5fd10f89..ae0315385 100644 --- a/package/font-bh-lucidatypewriter-75dpi/Makefile +++ b/package/font-bh-lucidatypewriter-75dpi/Makefile @@ -13,8 +13,6 @@ PKG_BUILDDEP:=		font-util  PKG_URL:=		http://www.x.org/  PKG_SITES:=		http://www.x.org/releases/individual/font/ -PKG_HOST_DEPENDS:=      !netbsd !openbsd !cygwin !freebsd !mirbsd -  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  include $(ADK_TOPDIR)/mk/package.mk diff --git a/package/font-bh-ttf/Makefile b/package/font-bh-ttf/Makefile index 203dcb36c..7a26e0292 100644 --- a/package/font-bh-ttf/Makefile +++ b/package/font-bh-ttf/Makefile @@ -13,8 +13,6 @@ PKG_BUILDDEP:=		font-util  PKG_URL:=		http://www.x.org/  PKG_SITES:=		http://www.x.org/releases/individual/font/ -PKG_HOST_DEPENDS:=      !netbsd !openbsd !cygwin !freebsd !mirbsd -  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  include $(ADK_TOPDIR)/mk/package.mk diff --git a/package/font-bh-type1/Makefile b/package/font-bh-type1/Makefile index e485ff58f..ed23ff38b 100644 --- a/package/font-bh-type1/Makefile +++ b/package/font-bh-type1/Makefile @@ -13,8 +13,6 @@ PKG_BUILDDEP:=		font-util  PKG_URL:=		http://www.x.org/  PKG_SITES:=		http://www.x.org/releases/individual/font/ -PKG_HOST_DEPENDS:=      !netbsd !openbsd !cygwin !freebsd !mirbsd -  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  include $(ADK_TOPDIR)/mk/package.mk diff --git a/package/font-bitstream-100dpi/Makefile b/package/font-bitstream-100dpi/Makefile index 3e7293563..aa1f8613f 100644 --- a/package/font-bitstream-100dpi/Makefile +++ b/package/font-bitstream-100dpi/Makefile @@ -13,8 +13,6 @@ PKG_BUILDDEP:=		font-util  PKG_URL:=		http://www.x.org/  PKG_SITES:=		http://www.x.org/releases/individual/font/ -PKG_HOST_DEPENDS:=      !netbsd !openbsd !cygwin !freebsd !mirbsd -  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  include $(ADK_TOPDIR)/mk/package.mk diff --git a/package/font-bitstream-75dpi/Makefile b/package/font-bitstream-75dpi/Makefile index f6009a628..7a9560911 100644 --- a/package/font-bitstream-75dpi/Makefile +++ b/package/font-bitstream-75dpi/Makefile @@ -13,8 +13,6 @@ PKG_BUILDDEP:=		font-util  PKG_URL:=		http://www.x.org/  PKG_SITES:=		http://www.x.org/releases/individual/font/ -PKG_HOST_DEPENDS:=      !netbsd !openbsd !cygwin !freebsd !mirbsd -  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  include $(ADK_TOPDIR)/mk/package.mk diff --git a/package/font-bitstream-type1/Makefile b/package/font-bitstream-type1/Makefile index fd7936466..2b1445fde 100644 --- a/package/font-bitstream-type1/Makefile +++ b/package/font-bitstream-type1/Makefile @@ -13,8 +13,6 @@ PKG_BUILDDEP:=		font-util  PKG_URL:=		http://www.x.org/  PKG_SITES:=		http://www.x.org/releases/individual/font/ -PKG_HOST_DEPENDS:=      !netbsd !openbsd !cygwin !freebsd !mirbsd -  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  include $(ADK_TOPDIR)/mk/package.mk diff --git a/package/font-cursor-misc/Makefile b/package/font-cursor-misc/Makefile new file mode 100644 index 000000000..bcc7c9687 --- /dev/null +++ b/package/font-cursor-misc/Makefile @@ -0,0 +1,29 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include ${ADK_TOPDIR}/rules.mk + +PKG_NAME:=		font-cursor-misc +PKG_VERSION:=		1.0.4 +PKG_RELEASE:=		1 +PKG_HASH:=		37ef2363b3cfa6f5e20b65feab736db77fad484127c267b78de95d55fa39f61d +PKG_DESCR:=		font cursor-misc +PKG_SECTION:=		x11/fonts +PKG_URL:=		http://www.x.org/ +PKG_SITES:=		http://www.x.org/releases/individual/font/ + +DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz + +include ${ADK_TOPDIR}/mk/host.mk +include ${ADK_TOPDIR}/mk/package.mk + +$(eval $(call HOST_template,FONT_CURSOR_MISC,font-cursor-misc,${PKG_VERSION}-${PKG_RELEASE})) +$(eval $(call PKG_template,FONT_CURSOR_MISC,font-cursor-misc,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) + +font-cursor-misc-install: +	${INSTALL_DIR} ${IDIR_FONT_CURSOR_MISC}/usr/share/fonts/X11/misc +	${CP} ${WRKINST}/usr/share/fonts/X11/misc/cursor.pcf.gz \ +		${IDIR_FONT_CURSOR_MISC}/usr/share/fonts/X11/misc + +include ${ADK_TOPDIR}/mk/host-bottom.mk +include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/font-misc-misc/Makefile b/package/font-misc-misc/Makefile index 43ba411f4..ee3f80426 100644 --- a/package/font-misc-misc/Makefile +++ b/package/font-misc-misc/Makefile @@ -13,8 +13,6 @@ PKG_BUILDDEP:=		font-util  PKG_URL:=		http://www.x.org/  PKG_SITES:=		http://www.x.org/releases/individual/font/ -PKG_HOST_DEPENDS:=      !netbsd !openbsd !cygwin !freebsd !mirbsd -  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  include $(ADK_TOPDIR)/mk/package.mk diff --git a/package/font-util/Makefile b/package/font-util/Makefile index 5b9289f89..eeb265a28 100644 --- a/package/font-util/Makefile +++ b/package/font-util/Makefile @@ -14,8 +14,10 @@ PKG_SITES:=		http://www.x.org/releases/individual/font/  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz +include ${ADK_TOPDIR}/mk/host.mk  include ${ADK_TOPDIR}/mk/package.mk +$(eval $(call HOST_template,FONT_UTIL,font-util,${PKG_VERSION}-${PKG_RELEASE}))  $(eval $(call PKG_template,FONT_UTIL,font-util,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))  # XXX: Push the mapping files to a place where we can find them @@ -38,4 +40,5 @@ font-util-install:  	${CP} ${WRKINST}/usr/share/fonts/X11/util/* \  		${IDIR_FONT_UTIL}/usr/share/fonts/X11/util +include ${ADK_TOPDIR}/mk/host-bottom.mk  include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/font-xfree86-type1/Makefile b/package/font-xfree86-type1/Makefile index 3fa93b93a..20bb46569 100644 --- a/package/font-xfree86-type1/Makefile +++ b/package/font-xfree86-type1/Makefile @@ -13,8 +13,6 @@ PKG_BUILDDEP:=		font-util  PKG_URL:=		http://www.x.org/  PKG_SITES:=		http://www.x.org/releases/individual/font/ -PKG_HOST_DEPENDS:=      !netbsd !openbsd !cygwin !freebsd !mirbsd -  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  include $(ADK_TOPDIR)/mk/package.mk diff --git a/package/fontconfig/Makefile b/package/fontconfig/Makefile index 614a16381..aeb6fc8e9 100644 --- a/package/fontconfig/Makefile +++ b/package/fontconfig/Makefile @@ -4,20 +4,18 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		fontconfig -PKG_VERSION:=		2.15.0 +PKG_VERSION:=		2.16.0  PKG_RELEASE:=		1 -PKG_HASH:=		f5f359d6332861bd497570848fcb42520964a9e83d5e3abe397b6b6db9bcaaf4 +PKG_HASH:=		6a33dc555cc9ba8b10caf7695878ef134eeb36d0af366041f639b1da9b6ed220  PKG_DESCR:=		library for configuring and customizing font access  PKG_SECTION:=		libs/fonts -PKG_DEPENDS:=		libxml2 +PKG_DEPENDS:=		libfreetype libxml2  PKG_BUILDDEP:=		freetype libxml2 gperf-host util-linux  HOST_BUILDDEP:=		expat-host  PKG_URL:=		http://fontconfig.org/  PKG_SITES:=		http://fontconfig.org/release/  PKG_OPTS:=		dev -DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz -  include ${ADK_TOPDIR}/mk/host.mk  include ${ADK_TOPDIR}/mk/package.mk @@ -25,11 +23,13 @@ $(eval $(call HOST_template,FONTCONFIG,fontconfig,${PKG_VERSION}-${PKG_RELEASE})  $(eval $(call PKG_template,FONTCONFIG,fontconfig,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))  HOST_STYLE:=		auto -CONFIGURE_ARGS+=	--with-arch=${ADK_TARGET_ARCH} \ -			--enable-libxml2 \ +CONFIGURE_ARGS+=	--enable-libxml2 \  			--disable-docs  fontconfig-install: +	${INSTALL_DIR} ${IDIR_FONTCONFIG}/usr/bin +	${INSTALL_BIN} ${WRKINST}/usr/bin/fc-* \ +		${IDIR_FONTCONFIG}/usr/bin  	${INSTALL_DIR} ${IDIR_FONTCONFIG}/usr/lib ${IDIR_FONTCONFIG}/etc/fonts  	${CP} ${WRKINST}/usr/lib/libfontconfig.so* ${IDIR_FONTCONFIG}/usr/lib  	$(CP) ${WRKINST}/etc/fonts/* ${IDIR_FONTCONFIG}/etc/fonts diff --git a/package/freeglut/Makefile b/package/freeglut/Makefile index 1ed30db0d..84f8246c5 100644 --- a/package/freeglut/Makefile +++ b/package/freeglut/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		freeglut -PKG_VERSION:=		3.2.1 +PKG_VERSION:=		3.6.0  PKG_RELEASE:=		1 -PKG_HASH:=		d4000e02102acaf259998c870e25214739d1f16f67f99cb35e4f46841399da68 +PKG_HASH:=		9c3d4d6516fbfa0280edc93c77698fb7303e443c1aaaf37d269e3288a6c3ea52  PKG_DESCR:=		opengl utility toolkit libraries  PKG_SECTION:=		libs/video  PKG_DEPENDS:=		libglu @@ -18,13 +18,14 @@ PKG_OPTS:=		dev  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz -PKG_ARCH_DEPENDS:=	arm mips mipsel mips64 mips64el x86 x86_64 +PKG_ARCH_DEPENDS:=	arm mips mipsel mips64 mips64el sh x86 x86_64  include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,FREEGLUT,freeglut,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))  CONFIG_STYLE:=		cmake +CMAKE_FLAGS+=		-DFREEGLUT_BUILD_DEMOS=OFF  freeglut-install:  	$(INSTALL_DIR) $(IDIR_FREEGLUT)/usr/lib diff --git a/package/freeglut/patches/patch-Makefile_in b/package/freeglut/patches/patch-Makefile_in deleted file mode 100644 index 143efe98a..000000000 --- a/package/freeglut/patches/patch-Makefile_in +++ /dev/null @@ -1,31 +0,0 @@ ---- freeglut-2.6.0.orig/Makefile.in	2009-11-25 20:14:30.000000000 +0100 -+++ freeglut-2.6.0/Makefile.in	2012-03-12 15:05:53.767407283 +0100 -@@ -220,28 +220,6 @@ EXTRA_DIST = \ - 	freeglut_static_vs2008.vcproj \ - 	freeglut_vs2008.sln \ - 	freeglut_vs2008.vcproj \ --	progs/demos/CallbackMaker/CallbackMakerStatic.dsp \ --	progs/demos/CallbackMaker/CallbackMakerStatic_vs2008.vcproj \ --	progs/demos/CallbackMaker/CallbackMaker_vs2008.vcproj \ --	progs/demos/Fractals/FractalsStatic.dsp \ --	progs/demos/Fractals/FractalsStatic_vs2008.vcproj \ --	progs/demos/Fractals/Fractals_vs2008.vcproj \ --	progs/demos/Fractals_random/Fractals_randomStatic.dsp \ --	progs/demos/Fractals_random/Fractals_randomStatic_vs2008.vcproj \ --	progs/demos/Fractals_random/Fractals_random_vs2008.vcproj \ --	progs/demos/Lorenz/lorenzStatic.dsp \ --	progs/demos/Lorenz/lorenzStatic_vs2008.vcproj \ --	progs/demos/Lorenz/lorenz_vs2008.vcproj \ --	progs/demos/One/oneStatic.dsp \ --	progs/demos/One/oneStatic_vs2008.vcproj \ --	progs/demos/One/one_vs2008.vcproj \ --	progs/demos/demos_vs2008.sln \ --	progs/demos/shapes/shapesStatic.dsp \ --	progs/demos/shapes/shapesStatic_vs2008.vcproj \ --	progs/demos/shapes/shapes_vs2008.vcproj \ --	progs/demos/smooth_opengl3/smooth_opengl3Static.dsp \ --	progs/demos/smooth_opengl3/smooth_opengl3Static_vs2008.vcproj \ --	progs/demos/smooth_opengl3/smooth_opengl3_vs2008.vcproj -  - all: config.h - 	$(MAKE) $(AM_MAKEFLAGS) all-recursive diff --git a/package/freeglut/patches/patch-progs_Makefile_in b/package/freeglut/patches/patch-progs_Makefile_in deleted file mode 100644 index e5d2993d1..000000000 --- a/package/freeglut/patches/patch-progs_Makefile_in +++ /dev/null @@ -1,11 +0,0 @@ ---- freeglut-2.6.0.orig/progs/Makefile.in	2009-11-25 20:14:29.000000000 +0100 -+++ freeglut-2.6.0/progs/Makefile.in	2012-03-12 15:06:38.667411355 +0100 -@@ -177,7 +177,7 @@ sysconfdir = @sysconfdir@ - target_alias = @target_alias@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ --SUBDIRS = demos -+SUBDIRS = - all: all-recursive -  - .SUFFIXES: diff --git a/package/freeglut/patches/patch-src_fg_gl2_c b/package/freeglut/patches/patch-src_fg_gl2_c deleted file mode 100644 index dbd947a91..000000000 --- a/package/freeglut/patches/patch-src_fg_gl2_c +++ /dev/null @@ -1,23 +0,0 @@ ---- freeglut-3.2.1.orig/src/fg_gl2.c	2014-06-01 11:24:47.000000000 +0200 -+++ freeglut-3.2.1/src/fg_gl2.c	2021-11-02 10:29:44.673793670 +0100 -@@ -27,6 +27,20 @@ - #include "fg_internal.h" - #include "fg_gl2.h" -  -+#ifndef GL_ES_VERSION_2_0 -+/* GLES2 has the corresponding entry points built-in, and these fgh-prefixed -+ * names are defined in fg_gl2.h header to reference them, for any other case, -+ * define them as function pointers here. -+ */ -+FGH_PFNGLGENBUFFERSPROC fghGenBuffers; -+FGH_PFNGLDELETEBUFFERSPROC fghDeleteBuffers; -+FGH_PFNGLBINDBUFFERPROC fghBindBuffer; -+FGH_PFNGLBUFFERDATAPROC fghBufferData; -+FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC fghEnableVertexAttribArray; -+FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC fghDisableVertexAttribArray; -+FGH_PFNGLVERTEXATTRIBPOINTERPROC fghVertexAttribPointer; -+#endif -+ - void FGAPIENTRY glutSetVertexAttribCoord3(GLint attrib) { -   if (fgStructure.CurrentWindow != NULL) -     fgStructure.CurrentWindow->Window.attribute_v_coord = attrib; diff --git a/package/freeglut/patches/patch-src_fg_gl2_h b/package/freeglut/patches/patch-src_fg_gl2_h deleted file mode 100644 index a552d4fa9..000000000 --- a/package/freeglut/patches/patch-src_fg_gl2_h +++ /dev/null @@ -1,23 +0,0 @@ ---- freeglut-3.2.1.orig/src/fg_gl2.h	2012-04-21 20:22:24.000000000 +0200 -+++ freeglut-3.2.1/src/fg_gl2.h	2021-11-02 10:29:44.673793670 +0100 -@@ -67,13 +67,13 @@ typedef void (APIENTRY *FGH_PFNGLENABLEV - typedef void (APIENTRY *FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint); - typedef void (APIENTRY *FGH_PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); -  --FGH_PFNGLGENBUFFERSPROC fghGenBuffers; --FGH_PFNGLDELETEBUFFERSPROC fghDeleteBuffers; --FGH_PFNGLBINDBUFFERPROC fghBindBuffer; --FGH_PFNGLBUFFERDATAPROC fghBufferData; --FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC fghEnableVertexAttribArray; --FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC fghDisableVertexAttribArray; --FGH_PFNGLVERTEXATTRIBPOINTERPROC fghVertexAttribPointer; -+extern FGH_PFNGLGENBUFFERSPROC fghGenBuffers; -+extern FGH_PFNGLDELETEBUFFERSPROC fghDeleteBuffers; -+extern FGH_PFNGLBINDBUFFERPROC fghBindBuffer; -+extern FGH_PFNGLBUFFERDATAPROC fghBufferData; -+extern FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC fghEnableVertexAttribArray; -+extern FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC fghDisableVertexAttribArray; -+extern FGH_PFNGLVERTEXATTRIBPOINTERPROC fghVertexAttribPointer; -  - #    endif -  diff --git a/package/freeglut/patches/patch-src_fg_version_h b/package/freeglut/patches/patch-src_fg_version_h deleted file mode 100644 index 6bb5f6d69..000000000 --- a/package/freeglut/patches/patch-src_fg_version_h +++ /dev/null @@ -1,16 +0,0 @@ ---- freeglut-3.2.1.orig/src/fg_version.h	2014-08-18 04:00:40.000000000 +0200 -+++ freeglut-3.2.1/src/fg_version.h	2021-11-02 09:37:27.466889937 +0100 -@@ -37,11 +37,11 @@ - #endif -  - #ifndef VERSION_MINOR --#define VERSION_MINOR 0 -+#define VERSION_MINOR 2 - #endif -  - #ifndef VERSION_PATCH --#define VERSION_PATCH 0 -+#define VERSION_PATCH 1 - #endif -  - #endif diff --git a/package/freeradius-server/Makefile b/package/freeradius-server/Makefile index e58967d6b..20b144231 100644 --- a/package/freeradius-server/Makefile +++ b/package/freeradius-server/Makefile @@ -4,16 +4,16 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		freeradius-server -PKG_VERSION:=		3.2.6 +PKG_VERSION:=		3.2.7  PKG_RELEASE:=		1 -PKG_HASH:=		dfed5a53596470e8c977fa2d4d154622ad673a0717d56dd085fb5000eda32f0d +PKG_HASH:=		3fd3b7725faa8b5e6c5a331a395e392ea9f7eceb3c0d42e82e82c32f2ff5b098  PKG_DESCR:=		flexible radius server  PKG_SECTION:=		net/radius -PKG_DEPENDS:=		libltdl libpcre libtalloc libopenssl libatomic libreadline -PKG_BUILDDEP:=		libtool pcre talloc openssl readline +PKG_DEPENDS:=		libltdl libpcre2 libtalloc libopenssl libatomic libreadline +PKG_BUILDDEP:=		libtool pcre2 talloc openssl readline  PKG_NEEDS:=		threads  PKG_URL:=		http://www.freeradius.org/ -PKG_SITES:=		https://github.com/FreeRADIUS/freeradius-server/releases/download/release_3_2_6/ +PKG_SITES:=		https://github.com/FreeRADIUS/freeradius-server/releases/download/release_3_2_7/  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz @@ -149,6 +149,7 @@ CONFIGURE_ARGS+=	${PKG_CONFIGURE_OPTS} \  			--without-snmp \  			--without-experimental-modules \  			--without-rlm_attr-rewrite \ +			--without-rlm_mschap \  			--without-rlm_checkval \  			--without-rlm_counter \  			--without-rlm_dbm \ diff --git a/package/freeswitch/Makefile b/package/freeswitch/Makefile deleted file mode 100644 index 0d6f067c8..000000000 --- a/package/freeswitch/Makefile +++ /dev/null @@ -1,58 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		freeswitch -PKG_VERSION:=		1.10.11 -PKG_RELEASE:=		1 -PKG_HASH:=		4437edfa08558aa407c9fad5e4eed58f757357c53ca735aed9977e48aa1c53e3 -PKG_DESCR:=		cross-platform telephony platform -PKG_SECTION:=		net/voip -PKG_DEPENDS:=		libpcre libcurl zlib libjpeg-turbo libsqlite -PKG_DEPENDS+=		libressl libopus spandsp sofia-sip -PKG_BUILDDEP:=		util-linux zlib libjpeg-turbo sqlite curl pcre -PKG_BUILDDEP+=		speex libressl opus spandsp sofia-sip -PKG_URL:=		http://www.freeswitch.org/ -PKG_SITES:=		https://github.com/signalwire/freeswitch/archive/refs/tags/ - -DISTFILES:=		v$(PKG_VERSION).tar.gz - -include $(ADK_TOPDIR)/mk/package.mk - -$(eval $(call PKG_template,FREESWITCH,freeswitch,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) - -AUTOTOOL_STYLE:=	bootstrap -CONFIGURE_ARGS+=	--disable-core-libedit-support \ -			--disable-libvpx -CONFIGURE_ENV+=		ac_cv_file__dev_ptmx=yes \ -			ac_cv_file__dev_zero=yes \ -			ac_cv_file__dev_urandom=yes \ -			ac_cv_sizeof_ssize_t=4 \ -		 	ac_cv_func_realloc_0_nonnull=yes \ -		       	ac_cv_func_malloc_0_nonnull=yes \ -			ac_cv_gcc_supports_w_no_unused_result=no \ -			apr_cv_tcp_nodelay_with_cork=yes \ -			apr_cv_process_shared_works=no \ -			ac_cv_file_dbd_apr_dbd_mysql_c=no \ -			ac_cv_func_setpgrp_void=yes - -pre-configure: -	$(SED) "/applications\/mod_av/d" $(WRKBUILD)/modules.conf -	$(SED) "/applications\/mod_enum/d" $(WRKBUILD)/modules.conf -	$(SED) "/applications\/mod_fsv/d" $(WRKBUILD)/modules.conf -	$(SED) "/applications\/mod_signalwire/d" $(WRKBUILD)/modules.conf -	$(SED) "/applications\/mod_spandsp/d" $(WRKBUILD)/modules.conf -	$(SED) "/databases\/mod_pgsql/d" $(WRKBUILD)/modules.conf -	$(SED) "/languages\/mod_lua/d" $(WRKBUILD)/modules.conf -	$(SED) "/endpoints\/mod_sofia/d" $(WRKBUILD)/modules.conf -	$(SED) "/endpoints\/mod_verto/d" $(WRKBUILD)/modules.conf -	$(SED) "/codecs\/mod_vpx/d" $(WRKBUILD)/modules.conf -	$(SED) "/formats\/mod_sndfile/d" $(WRKBUILD)/modules.conf - -freeswitch-install: -	$(INSTALL_DIR) $(IDIR_FREESWITCH)/usr/bin -	$(INSTALL_BIN) $(WRKINST)/usr/bin/freeswitch \ -		$(IDIR_FREESWITCH)/usr/bin - -include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/freeswitch/patches/patch-libs_srtp_crypto_hash_hmac_ossl_c b/package/freeswitch/patches/patch-libs_srtp_crypto_hash_hmac_ossl_c deleted file mode 100644 index aab43c797..000000000 --- a/package/freeswitch/patches/patch-libs_srtp_crypto_hash_hmac_ossl_c +++ /dev/null @@ -1,22 +0,0 @@ ---- freeswitch-1.10.11.orig/libs/srtp/crypto/hash/hmac_ossl.c	2023-12-22 19:08:31.000000000 +0100 -+++ freeswitch-1.10.11/libs/srtp/crypto/hash/hmac_ossl.c	2024-02-29 00:19:04.687821875 +0100 -@@ -80,7 +80,8 @@ static srtp_err_status_t srtp_hmac_alloc -  - /* OpenSSL 1.1.0 made HMAC_CTX an opaque structure, which must be allocated -    using HMAC_CTX_new.  But this function doesn't exist in OpenSSL 1.0.x. */ --#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER -+#if OPENSSL_VERSION_NUMBER < 0x10100000L || \ -+	(defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x30500000L) -     { -         /* allocate memory for auth and HMAC_CTX structures */ -         uint8_t *pointer; -@@ -126,7 +127,8 @@ static srtp_err_status_t srtp_hmac_deall -  -     hmac_ctx = (HMAC_CTX *)a->state; -  --#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER -+#if OPENSSL_VERSION_NUMBER < 0x10100000L || \ -+	(defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x30500000L) -     HMAC_CTX_cleanup(hmac_ctx); -  -     /* zeroize entire state*/ diff --git a/package/freetype/Makefile b/package/freetype/Makefile index 5db6dea81..1e427ecee 100644 --- a/package/freetype/Makefile +++ b/package/freetype/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		freetype -PKG_VERSION:=		2.11.1 -PKG_RELEASE:=		2 -PKG_HASH:=		f8db94d307e9c54961b39a1cc799a67d46681480696ed72ecf78d4473770f09b +PKG_VERSION:=		2.14.1 +PKG_RELEASE:=		1 +PKG_HASH:=		174d9e53402e1bf9ec7277e22ec199ba3e55a6be2c0740cb18c0ee9850fc8c34  PKG_DESCR:=		free, high-quality and portable font engine  PKG_SECTION:=		libs/fonts  PKG_DEPENDS:=		zlib diff --git a/package/gcj/Makefile b/package/gcj/Makefile deleted file mode 100644 index c4fdd7e06..000000000 --- a/package/gcj/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		gcj -PKG_VERSION:=		5.4.0 -PKG_RELEASE:=		1 -PKG_HASH:=		37089e80c3f2e9a0663d7ccc51c2a6c7dbbf3275bc1e4ed1ed3b1460cd5b3030 -PKG_DESCR:=		java compiler -PKG_SECTION:=		dev/lang -HOST_BUILDDEP:=		zip-host -PKG_SITES:=		${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/} - -PKG_CFLINE_GCJ:=	depends on ADK_HOST_ONLY - -DISTFILES:=		gcc-$(PKG_VERSION).tar.gz -WRKDIST=		${WRKDIR}/gcc-${PKG_VERSION} - -include $(ADK_TOPDIR)/mk/host.mk -include $(ADK_TOPDIR)/mk/package.mk - -$(eval $(call HOST_template,GCJ,gcj,$(PKG_VERSION)-${PKG_RELEASE})) - -HOST_MAKE_ENV+=		"JAR=no LDFLAGS=-liconv" -# http://gcc.gnu.org/bugzilla/attachment.cgi?id=30880&action=diff -HOST_CONFIGURE_ARGS:=	--enable-dependency-tracking \ -			--enable-java-home \ -			--enable-languages=java \ -			--enable-shared \ -			--with-ffi \ -			--with-mpc=$(STAGING_HOST_DIR) \ -			--with-mpfr=$(STAGING_HOST_DIR) \ -			--with-gmp=$(STAGING_HOST_DIR) \ -			--disable-nls \ -			--without-libiconv-prefix \ -			--disable-libmudflap \ -			--disable-libgomp \ -			--disable-biarch \ -			--disable-decimal-float \ -			--disable-multilib \ -			--disable-bootstrap - -include ${ADK_TOPDIR}/mk/host-bottom.mk -include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/gdk-pixbuf/Makefile b/package/gdk-pixbuf/Makefile index 058134b26..c47c5c131 100644 --- a/package/gdk-pixbuf/Makefile +++ b/package/gdk-pixbuf/Makefile @@ -4,14 +4,15 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		gdk-pixbuf -PKG_VERSION:=		2.34.0 -PKG_EXTRAVER:=		2.34 +PKG_VERSION:=		2.42.12 +PKG_EXTRAVER:=		2.42  PKG_RELEASE:=		1 -PKG_HASH:=		d55e5b383ee219bd0e23bf6ed4427d56a7db5379729a6e3e0a0e0eba9a8d8879 +PKG_HASH:=		b9505b3445b9a7e48ced34760c3bcb73e966df3ac94c95a148cb669ab748e3c7  PKG_DESCR:=		image loading and pixel buffer manipulation library  PKG_SECTION:=		libs/image -PKG_BUILDDEP:=		libjpeg-turbo libtiff glib libpng -HOST_BUILDDEP:=		libiconv-host glib-host libffi-host +PKG_DEPENDS:=		libjpeg-turbo libtiff glib libpng +PKG_BUILDDEP:=		libjpeg-turbo libtiff glib libpng gdk-pixbuf-host +HOST_BUILDDEP:=		glib-host libffi-host libpng-host libjpeg-turbo-host  PKG_NEEDS:=		c++  PKG_SITES:=		$(MASTER_SITE_GNOME:=gdk-pixbuf/$(PKG_EXTRAVER)/)  PKG_OPTS:=		dev @@ -22,13 +23,26 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call HOST_template,GDK_PIXBUF,gdk-pixbuf,$(PKG_VERSION)-$(PKG_RELEASE)))  $(eval $(call PKG_template,GDK_PIXBUF,gdk-pixbuf,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) -HOST_STYLE:=		auto -HOST_LDFLAGS+=		-lz -ldl -lresolv -liconv -lmount -lffi -HOST_CONFIGURE_ARGS+=	--disable-glibtest \ -			--without-libjpeg \ -			--without-libpng \ -			--without-libtiff -CONFIGURE_ENV+=		gio_can_sniff=no +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj + +HOST_LDFLAGS+=		-lpng -ljpeg +HOST_STYLE:=		meson +HOST_INSTALL_STYLE:=	meson + +CONFIG_STYLE:=		meson +BUILD_STYLE:=		meson +INSTALL_STYLE:=		meson + +HOST_MESON_FLAGS:=	-Dgio_sniffing=false \ +			-Dtests=false \ +			-Dinstalled_tests=false \ +			-Dintrospection=disabled \ +			-Dman=false \ +			--default-library=static +MESON_FLAGS:=		-Dgio_sniffing=false \ +			-Dtests=false \ +			-Dinstalled_tests=false \ +			-Dman=false  gdk-pixbuf-install:  	$(INSTALL_DIR) $(IDIR_GDK_PIXBUF)/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/ diff --git a/package/gdk-pixbuf/patches/patch-Makefile_in b/package/gdk-pixbuf/patches/patch-Makefile_in deleted file mode 100644 index dc5e3a98f..000000000 --- a/package/gdk-pixbuf/patches/patch-Makefile_in +++ /dev/null @@ -1,11 +0,0 @@ ---- gdk-pixbuf-2.34.0.orig/Makefile.in	2016-03-24 20:17:33.000000000 +0100 -+++ gdk-pixbuf-2.34.0/Makefile.in	2016-04-04 01:04:57.039201579 +0200 -@@ -448,7 +448,7 @@ target_alias = @target_alias@ - top_build_prefix = @top_build_prefix@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ --SUBDIRS = gdk-pixbuf po docs tests contrib build -+SUBDIRS = gdk-pixbuf contrib build - EXTRA_DIST = \ - 	config.h.win32 		\ - 	glib-tap.mk		\ diff --git a/package/gettext/Makefile b/package/gettext/Makefile index 6594eb995..fb38bea8e 100644 --- a/package/gettext/Makefile +++ b/package/gettext/Makefile @@ -4,14 +4,14 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		gettext -PKG_VERSION:=		0.19.8 +PKG_VERSION:=		0.26  PKG_RELEASE:=		1 -PKG_HASH:=		9c1781328238caa1685d7bc7a2e1dcf1c6c134e86b42ed554066734b621bd12f +PKG_HASH:=		d1fb86e260cfe7da6031f94d2e44c0da55903dbae0a2fa0fae78c91ae1b56f00  PKG_DESCR:=		i18n tools and libs  PKG_SECTION:=		libs/misc  HOST_BUILDDEP:=		automake-host  PKG_URL:=		https://www.gnu.org/software/gettext/ -PKG_SITES:=		http://ftp.gnu.org/pub/gnu/gettext/ +PKG_SITES:=		${MASTER_SITE_GNU:=gettext/}  PKG_OPTS:=		dev  PKG_CFLINE_GETTEXT:=	depends on !ADK_TARGET_LIBC_WITHOUT_LIBICONV diff --git a/package/git/Makefile b/package/git/Makefile index 7e520abee..e128c3783 100644 --- a/package/git/Makefile +++ b/package/git/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		git -PKG_VERSION:=		2.47.0 +PKG_VERSION:=		2.51.0  PKG_RELEASE:=		1 -PKG_HASH:=		1ce114da88704271b43e027c51e04d9399f8c88e9ef7542dae7aebae7d87bc4e +PKG_HASH:=		60a7c2251cc2e588d5cd87bae567260617c6de0c22dca9cdbfc4c7d2b8990b62  PKG_DESCR:=		fast version control system  PKG_SECTION:=		dev/scm  PKG_BUILDDEP:=		zlib curl expat diff --git a/package/glib-networking/Makefile b/package/glib-networking/Makefile new file mode 100644 index 000000000..29108145e --- /dev/null +++ b/package/glib-networking/Makefile @@ -0,0 +1,38 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		glib-networking +PKG_VERSION:=		2.80.1 +PKG_RELEASE:=		1 +PKG_HASH:=		35ca3d6ca638493765a7dc11c5f46b816dbc407ec939c1f69682960b6cfb76c9 +PKG_DESCR:=		low-level core library for networking +PKG_SECTION:=		libs/misc +PKG_DEPENDS:=		glib +PKG_BUILDDEP:=		glib +PKG_SITES:=		https://gitlab.gnome.org/GNOME/glib-networking/-/archive/2.80.1/ + +DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tar.gz + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,GLIB_NETWORKING,glib-networking,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) + +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj + +CONFIG_STYLE:=		meson +BUILD_STYLE:=		meson +INSTALL_STYLE:=		meson + +MESON_FLAGS+=		-Dlibproxy=disabled \ +			-Dgnome_proxy=disabled \ +			-Dgnutls=disabled \ +			-Dopenssl=enabled + +glib-networking-install: +	$(INSTALL_DIR) $(IDIR_GLIB_NETWORKING)/usr/lib/gio/modules +	$(CP) $(WRKINST)/usr/lib/gio/modules/*.so \ +		$(IDIR_GLIB_NETWORKING)/usr/lib/gio/modules + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/glib/Makefile b/package/glib/Makefile index 188f1fc2e..51276ee1a 100644 --- a/package/glib/Makefile +++ b/package/glib/Makefile @@ -4,16 +4,16 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		glib -PKG_VERSION:=		2.78.4 +PKG_VERSION:=		2.84.3  PKG_RELEASE:=		1 -PKG_EXTRAVER:=		2.78 -PKG_HASH:=		24b8e0672dca120cc32d394bccb85844e732e04fe75d18bb0573b2dbc7548f63 +PKG_EXTRAVER:=		2.84 +PKG_HASH:=		aa4f87c3225bf57ca85f320888f7484901a17934ca37023c3bd8435a72db863e  PKG_DESCR:=		low-level core library that forms the basis of gtk+  PKG_SECTION:=		libs/misc -PKG_DEPENDS:=		pcre2 zlib libffi libiconv -PKG_BUILDDEP:=		glib-host util-linux libffi zlib dbus pcre2 libiconv -HOST_BUILDDEP:=		pkgconf-host libiconv-host libffi-host python3-host gettext-host util-linux-host -HOST_BUILDDEP+=		pcre2-host meson-host zlib-host +PKG_DEPENDS:=		pcre2 zlib libffi +PKG_BUILDDEP:=		glib-host util-linux libffi zlib dbus pcre2 +HOST_BUILDDEP:=		pkgconf-host libffi-host python3-host gettext-host util-linux-host +HOST_BUILDDEP+=		pcre2-host meson-host zlib-host libiconv-host  PKG_NEEDS:=		threads intl iconv  PKG_URL:=		http://www.gtk.org/  PKG_SITES:=		http://ftp.gnome.org/pub/GNOME/sources/glib/$(PKG_EXTRAVER)/ @@ -35,11 +35,23 @@ CONFIG_STYLE:=		meson  BUILD_STYLE:=		meson  INSTALL_STYLE:=		meson -HOST_MESON_FLAGS:=	--default-library static -Dtests=false -Dxattr=false -Doss_fuzz=disabled -MESON_FLAGS:=		-Dtests=false -Dxattr=false -Doss_fuzz=disabled +HOST_MESON_FLAGS:=	-Dintrospection=disabled \ +			-Dnls=disabled \ +			-Dtests=false \ +			-Dxattr=false \ +		       	-Doss_fuzz=disabled \ +			-Dsysprof=disabled \ +			--default-library=static +MESON_FLAGS:=		-Dintrospection=disabled \ +			-Dnls=disabled \ +			-Dtests=false \ +			-Dxattr=false \ +			-Doss_fuzz=disabled \ +			-Dglib_debug=disabled \ +			-Dsysprof=disabled  hostpost-install: -	$(CP) $(HOSTWRKBUILD)/../glib-obj/meson-private/glib-2.0.pc \ +	$(CP) $(HOSTWRKBUILD)/../glib-obj/meson-private/*.pc \  		$(STAGING_HOST_DIR)/usr/lib/pkgconfig  	$(INSTALL_BIN) $(HOSTWRKBUILD)/../glib-obj/gobject/glib-mkenums \  		$(STAGING_HOST_DIR)/usr/bin @@ -53,6 +65,7 @@ glib-install:  	$(CP) $(WRKINST)/usr/lib/libgobject*.so* $(IDIR_GLIB)/usr/lib  	$(CP) $(WRKINST)/usr/lib/libgmodule*.so* $(IDIR_GLIB)/usr/lib  	$(CP) $(WRKINST)/usr/lib/libgthread*.so* $(IDIR_GLIB)/usr/lib +	-$(CP) $(WRKINST)/usr/lib/libintl*.so* $(IDIR_GLIB)/usr/lib  	# workaround for dev subpackage  	$(INSTALL_DIR) $(IDIR_GLIB_DEV)/usr/include  	$(INSTALL_DIR) $(IDIR_GLIB_DEV)/usr/lib/glib-2.0/include diff --git a/package/glib/patches/patch-glib_gnulib_meson_build b/package/glib/patches/patch-glib_gnulib_meson_build index 4039f468f..bd37116c2 100644 --- a/package/glib/patches/patch-glib_gnulib_meson_build +++ b/package/glib/patches/patch-glib_gnulib_meson_build @@ -1,6 +1,6 @@ ---- glib-2.75.2.orig/glib/gnulib/meson.build	2023-01-06 13:49:52.000000000 +0100 -+++ glib-2.75.2/glib/gnulib/meson.build	2023-01-22 14:08:55.068305964 +0100 -@@ -312,9 +312,6 @@ endif +--- glib-2.84.0.orig/glib/gnulib/meson.build	2025-03-06 14:09:13.000000000 +0100 ++++ glib-2.84.0/glib/gnulib/meson.build	2025-03-30 06:00:21.051043526 +0200 +@@ -315,9 +315,6 @@ endif   if not gl_cv_func_frexp_works and gl_cv_func_frexp_broken_beyond_repair     error ('frexp() is missing or broken beyond repair, and we have nothing to replace it with')   endif diff --git a/package/glib/patches/patch-meson_build b/package/glib/patches/patch-meson_build deleted file mode 100644 index dbc6c7457..000000000 --- a/package/glib/patches/patch-meson_build +++ /dev/null @@ -1,10 +0,0 @@ ---- glib-2.78.4.orig/meson.build	2024-01-21 20:48:20.000000000 +0100 -+++ glib-2.78.4/meson.build	2024-08-30 10:20:24.877632538 +0200 -@@ -527,6 +527,7 @@ if cc.get_id() == 'gcc' or cc.get_id() = -     '-Werror=missing-include-dirs', -     '-Werror=pointer-arith', -     '-Werror=unused-result', -+    '-Wno-error=format-nonliteral', -   ] -  -   warning_c_args = warning_common_args + [ diff --git a/package/glibc/Makefile b/package/glibc/Makefile index a36c30903..73a65372b 100644 --- a/package/glibc/Makefile +++ b/package/glibc/Makefile @@ -50,7 +50,7 @@ do-install:  ifneq ($(ADK_TARGET_USE_STATIC_LIBS_ONLY),y)  	${INSTALL_DIR} ${IDIR_GLIBC}/$(ADK_TARGET_LIBC_PATH)  	$(CP) $(STAGING_TARGET_DIR)/lib/ld*.so* $(IDIR_GLIBC)/$(ADK_TARGET_LIBC_PATH) -	for file in libc libpthread librt libdl libm libanl libnsl libresolv libutil libnss_dns libnss_files; do \ +	for file in libc libpthread librt libdl libm libanl libnsl libresolv libutil libnss_dns libnss_files libmvec; do \  		$(CP) $(STAGING_TARGET_DIR)/lib/$$file.so* $(IDIR_GLIBC)/$(ADK_TARGET_LIBC_PATH); \  	done  else diff --git a/package/gmp/Makefile b/package/gmp/Makefile index 674c2323e..ccda78c16 100644 --- a/package/gmp/Makefile +++ b/package/gmp/Makefile @@ -13,8 +13,10 @@ PKG_NEEDS:=		c++  PKG_LIBNAME:=		libgmp  PKG_OPTS:=		dev +include ${ADK_TOPDIR}/mk/host.mk  include ${ADK_TOPDIR}/mk/package.mk +$(eval $(call HOST_template,LIBGMP,libgmp,${PKG_VERSION}-${PKG_RELEASE}))  $(eval $(call PKG_template,LIBGMP,libgmp,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))  ifeq ($(ADK_TARGET_CPU_MIPS_MIPS32R6)$(ADK_TARGET_CPU_MIPS_MIPS64R6),y) @@ -26,4 +28,5 @@ libgmp-install:  	${CP} ${WRKINST}/usr/lib/libgmp.so* \  		${IDIR_LIBGMP}/usr/lib +include ${ADK_TOPDIR}/mk/host-bottom.mk  include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/gmp/patches/patch-configure b/package/gmp/patches/patch-configure new file mode 100644 index 000000000..4b2862039 --- /dev/null +++ b/package/gmp/patches/patch-configure @@ -0,0 +1,11 @@ +--- gmp-6.3.0.orig/configure	2023-07-29 15:42:22.000000000 +0200 ++++ gmp-6.3.0/configure	2025-04-07 14:52:01.231530118 +0200 +@@ -6568,7 +6568,7 @@ if test "$gmp_prog_cc_works" = yes; then +  + #if defined (__GNUC__) && ! defined (__cplusplus) + typedef unsigned long long t1;typedef t1*t2; +-void g(){} ++void g(int, const t1*, t1, t1*, const t1*, int){} + void h(){} + static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0) + {t1 c,x,r;int i;if(v0){c=1;for(i=1;i<n;i++){x=up[i];r=x+1;rp[i]=r;}}return c;} diff --git a/package/gnupg2/Makefile b/package/gnupg2/Makefile index a9e5a44c0..64e94c4da 100644 --- a/package/gnupg2/Makefile +++ b/package/gnupg2/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		gnupg2 -PKG_VERSION:=		2.4.4 +PKG_VERSION:=		2.4.8  PKG_RELEASE:=		1 -PKG_HASH:=		67ebe016ca90fa7688ce67a387ebd82c6261e95897db7b23df24ff335be85bc6 +PKG_HASH:=		b58c80d79b04d3243ff49c1c3fc6b5f83138eb3784689563bcdd060595318616  PKG_DESCR:=		gnu privacy guard (modern)  PKG_SECTION:=		app/crypto  PKG_DEPENDS:=		libreadline libncurses libgcrypt libgpg-error libassuan @@ -15,7 +15,7 @@ PKG_BUILDDEP:=		readline ncurses libgcrypt libgpg-error libassuan  PKG_BUILDDEP+=		libksba npth  PKG_NEEDS:=		iconv  PKG_URL:=		http://www.gnupg.org/ -PKG_SITES:=		ftp://ftp.gnupg.org/gcrypt/gnupg/ +PKG_SITES:=		https://www.gnupg.org/ftp/gcrypt/gnupg/  DISTFILES:=		gnupg-$(PKG_VERSION).tar.bz2  WRKDIST=		${WRKDIR}/gnupg-${PKG_VERSION} @@ -28,6 +28,7 @@ $(eval $(call PKG_template,GNUPG2,gnupg2,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEP  $(eval $(call PKG_template,GPGV2,gpgv2,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))  CONFIGURE_ARGS+=	--disable-dirmngr \ +			--disable-keyboxd \  			--disable-gpgsm \  			--disable-scdaemon \  			--disable-card-support \ diff --git a/package/gnutls/Makefile b/package/gnutls/Makefile index b93c9f15d..188d5b3d5 100644 --- a/package/gnutls/Makefile +++ b/package/gnutls/Makefile @@ -4,14 +4,15 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		gnutls -PKG_VERSION:=		3.8.9 +PKG_VERSION:=		3.8.10  PKG_RELEASE:=		1 -PKG_HASH:=		69e113d802d1670c4d5ac1b99040b1f2d5c7c05daec5003813c049b5184820ed +PKG_HASH:=		db7fab7cce791e7727ebbef2334301c821d79a550ec55c9ef096b610b03eb6b7  PKG_DESCR:=		transport layer security library  PKG_SECTION:=		libs/crypto  PKG_DEPENDS:=		libgcrypt libtasn1 zlib libnettle libgmp libunistring  PKG_BUILDDEP:=		libgcrypt liblzo libtasn1  PKG_BUILDDEP+=		zlib ncurses libnettle libunistring +HOST_BUILDDEP:=		libnettle-host libtasn1-host libunistring-host  PKG_URL:=		http://www.gnutls.org/  PKG_SITES:=		https://www.gnupg.org/ftp/gcrypt/gnutls/v3.8/  PKG_LIBNAME:=		libgnutls @@ -27,8 +28,10 @@ PKG_FLAVOURS_LIBGNUTLS:=WITH_CRYPTODEV  PKGFD_WITH_CRYPTODEV:=	enable support for cryptodev-linux  PKGFB_WITH_CRYPTODEV:=	cryptodev-linux +include ${ADK_TOPDIR}/mk/host.mk  include $(ADK_TOPDIR)/mk/package.mk +$(eval $(call HOST_template,LIBGNUTLS,libgnutls,${PKG_VERSION}-${PKG_RELEASE}))  $(eval $(call PKG_template,LIBGNUTLS,libgnutls,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKGSC_LIBGNUTLS),$(PKG_OPTS)))  $(eval $(call PKG_template,GNUTLS_UTILS,gnutls-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS_GNUTLS_UTILS),$(PKGSD_GNUTLS_UTILS),$(PKGSC_GNUTLS_UTILS))) @@ -37,6 +40,10 @@ CONFIGURE_ARGS+= 	--enable-cryptodev  endif  TARGET_LDFLAGS+=	-pthread +HOST_CONFIGURE_ARGS+=	--without-p11-kit \ +			--disable-seccomp-tests \ +			--disable-tests \ +			--disable-doc  CONFIGURE_ARGS+=	--disable-rpath \  			--disable-doc \  			--disable-tests \ @@ -54,4 +61,5 @@ gnutls-utils-install:  	$(CP) $(WRKINST)/usr/bin/{{cert,psk}tool,gnutls-{cli,serv}} \  	    $(IDIR_GNUTLS_UTILS)/usr/bin +include ${ADK_TOPDIR}/mk/host-bottom.mk  include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/gpgme/Makefile b/package/gpgme/Makefile index 1e2cf83ec..45cce6539 100644 --- a/package/gpgme/Makefile +++ b/package/gpgme/Makefile @@ -10,7 +10,7 @@ PKG_HASH:=		9499e8b1f33cccb6815527a1bc16049d35a6198a6c5fae0185f2bd561bce5224  PKG_DESCR:=		easy access to gnupg for applications  PKG_SECTION:=		libs/crypto  PKG_DEPENDS:=		libgpg-error libassuan -PKG_BUILDDEP:=		python-setuptools-host libgpg-error libassuan +PKG_BUILDDEP:=		python3-setuptools-host libgpg-error libassuan  PKG_NEEDS:=		c++  PKG_URL:=		https://gnupg.org/related_software/gpgme/index.html  PKG_SITES:=		https://gnupg.org/ftp/gcrypt/gpgme/ diff --git a/package/gptfdisk/Makefile b/package/gptfdisk/Makefile index 37d170761..af6efcb03 100644 --- a/package/gptfdisk/Makefile +++ b/package/gptfdisk/Makefile @@ -24,10 +24,7 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call HOST_template,GPTFDISK,gptfdisk,$(PKG_VERSION)-$(PKG_RELEASE)))  $(eval $(call PKG_template,GPTFDISK,gptfdisk,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) -ifneq ($(OS_FOR_BUILD),Darwin)  TARGET_LDFLAGS+=	-ltinfo -endif -  HOST_STYLE:=		manual  CONFIG_STYLE:=		manual  INSTALL_STYLE:=		manual diff --git a/package/grep/Makefile b/package/grep/Makefile index 845ba5685..cc726bba7 100644 --- a/package/grep/Makefile +++ b/package/grep/Makefile @@ -9,9 +9,9 @@ PKG_RELEASE:=		1  PKG_HASH:=		1db2aedde89d0dea42b16d9528f894c8d15dae4e190b59aecc78f5a951276eab  PKG_DESCR:=		global search for a regex  PKG_SECTION:=		base/tools -PKG_DEPENDS:=		libpcre -PKG_BUILDDEP:=		pcre -HOST_BUILDDEP:=		pcre-host +PKG_DEPENDS:=		libpcre2 +PKG_BUILDDEP:=		pcre2 +HOST_BUILDDEP:=		pcre2-host  PKG_URL:=		http://www.gnu.org/software/grep/  PKG_SITES:=		${MASTER_SITE_GNU:=grep/}  PKG_NOPARALLEL:=	1 diff --git a/package/grub/Makefile b/package/grub/Makefile index d37472b8c..3d7f8d868 100644 --- a/package/grub/Makefile +++ b/package/grub/Makefile @@ -66,6 +66,11 @@ GRUB_PREFIX=		(hd0,msdos1)/boot/grub  GRUB_TARGET=		i386  GRUB_PLATFORM=		pc  GRUB_MODULES=		boot linux ext2 fat part_msdos part_gpt normal biosdisk +ifeq ($(ADK_TARGET_QEMU_WITH_GRAPHIC),y) +GRUB_CFG=		grub-pc-vga.cfg +else +GRUB_CFG=		grub-pc-serial.cfg +endif  endif  ifeq ($(ADK_PACKAGE_GRUB_EFI_X86),y) @@ -77,6 +82,11 @@ GRUB_PREFIX=		/EFI/BOOT  GRUB_TARGET=		i386  GRUB_PLATFORM=		efi  GRUB_MODULES=		boot linux ext2 fat part_msdos part_gpt normal efi_gop +ifeq ($(ADK_TARGET_DUAL_BOOT),y) +GRUB_CFG=		grub-efi-serial-dual.cfg +else +GRUB_CFG=		grub-efi-serial.cfg +endif  endif  ifeq ($(ADK_PACKAGE_GRUB_EFI_X86_64),y) @@ -88,15 +98,10 @@ GRUB_PREFIX=		/EFI/BOOT  GRUB_TARGET=		x86_64  GRUB_PLATFORM=		efi  GRUB_MODULES=		boot linux ext2 fat part_msdos part_gpt normal efi_gop -endif -  ifeq ($(ADK_TARGET_DUAL_BOOT),y) -GRUB_CFG=		grub-dual.cfg -else -ifeq ($(ADK_TARGET_QEMU_WITH_GRAPHIC),y) -GRUB_CFG=		grub-pc-vga.cfg +GRUB_CFG=		grub-efi-dual-serial.cfg  else -GRUB_CFG=		grub.cfg +GRUB_CFG=		grub-efi-serial.cfg  endif  endif diff --git a/package/grub/files/grub-dual.cfg b/package/grub/files/grub-efi-dual-serial.cfg index 46b5451ad..fde844e09 100644 --- a/package/grub/files/grub-dual.cfg +++ b/package/grub/files/grub-efi-dual-serial.cfg @@ -1,13 +1,17 @@ +serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1 +terminal_input serial +terminal_output serial +  if [ "x\${timeout}" != "x-1" ]; then    if keystatus; then      if keystatus --shift; then        set timeout=-1      else -      set timeout=0 +      set timeout=2      fi    else      if sleep --interruptible 2; then -      set timeout=0 +      set timeout=2      fi    fi  fi diff --git a/package/grub/files/grub.cfg b/package/grub/files/grub-efi-serial.cfg index 3fdc48eda..3fdc48eda 100644 --- a/package/grub/files/grub.cfg +++ b/package/grub/files/grub-efi-serial.cfg diff --git a/package/grub/files/grub-pc-serial.cfg b/package/grub/files/grub-pc-serial.cfg new file mode 100644 index 000000000..d48b82c45 --- /dev/null +++ b/package/grub/files/grub-pc-serial.cfg @@ -0,0 +1,14 @@ +serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1 +terminal_input serial +terminal_output serial + +set default=0 +set timeout=3 + +menuentry "OpenADK" { +  insmod msdospart +  insmod ext2 +  set root='hd0,1' +  echo "Loading OpenADK" +  linux /boot/kernel rootfstype=ext4 rootwait panic=10 +} diff --git a/package/grub/files/grub-pc-vga.cfg b/package/grub/files/grub-pc-vga.cfg index b0259ddb3..8200624d6 100644 --- a/package/grub/files/grub-pc-vga.cfg +++ b/package/grub/files/grub-pc-vga.cfg @@ -6,5 +6,5 @@ menuentry "OpenADK" {    insmod ext2    set root='hd0,1'    echo "Loading OpenADK" -  linux /boot/kernel root=/dev/sda1 rootfstype=ext4 rootwait panic=10 +  linux /boot/kernel console=tty0 rootfstype=ext4 rootwait panic=10  } diff --git a/package/gst-plugins-base/Makefile b/package/gst-plugins-base/Makefile index c612cd63e..f7b0237aa 100644 --- a/package/gst-plugins-base/Makefile +++ b/package/gst-plugins-base/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		gst-plugins-base -PKG_VERSION:=		1.19.3 +PKG_VERSION:=		1.26.0  PKG_RELEASE:=		1 -PKG_HASH:=		e277f198623a26c1b0a1e19734656392e9368bebf3677cd94262a1316a960827 +PKG_HASH:=		e23189fbed2ec486690382d1055c19eeaf5aae3e95e2576fc4c884d96a90e69e  PKG_DESCR:=		gstreamer base plugins  PKG_SECTION:=		libs/video  PKG_DEPENDS:=		gstreamer diff --git a/package/gst-plugins-good/Makefile b/package/gst-plugins-good/Makefile index 8feb16c2f..5a609d51f 100644 --- a/package/gst-plugins-good/Makefile +++ b/package/gst-plugins-good/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		gst-plugins-good -PKG_VERSION:=		1.19.3 +PKG_VERSION:=		1.26.0  PKG_RELEASE:=		1 -PKG_HASH:=		79ea32a77fa47e6596530e38113bf97c113fd95658087d9a91ffb8af47d11d07 +PKG_HASH:=		9e18f139ef69ad0867c2dfbb8fe1d1736d76df11aac83f60e8d3adb1e2eaf03b  PKG_DESCR:=		gstreamer good plugins  PKG_SECTION:=		libs/video  PKG_DEPENDS:=		gstreamer diff --git a/package/gstreamer/Makefile b/package/gstreamer/Makefile index a59bbf7d1..8444d8fc2 100644 --- a/package/gstreamer/Makefile +++ b/package/gstreamer/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		gstreamer -PKG_VERSION:=		1.19.3 +PKG_VERSION:=		1.26.0  PKG_RELEASE:=		1 -PKG_HASH:=		906d7d4bf92f941586c0cbce717d9cad6aac36994e16fa6f2f153e07e3221bca +PKG_HASH:=		1b2ee4028010c25b776effa7c396c7e3e1861b60b9417e416f4914abcdff279f  PKG_DESCR:=		opensource multimedia framework  PKG_SECTION:=		libs/video  PKG_BUILDDEP:=		glib diff --git a/package/harfbuzz/Makefile b/package/harfbuzz/Makefile index 118648eab..c28c312a8 100644 --- a/package/harfbuzz/Makefile +++ b/package/harfbuzz/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		harfbuzz -PKG_VERSION:=		3.4.0 +PKG_VERSION:=		11.0.0  PKG_RELEASE:=		1 -PKG_HASH:=		810bcd3d22fae3c2c18c3688455abc1cd0d7fb2fae25404890b0d77e6443bd0a +PKG_HASH:=		85178b78f0e405269bbc0c17a55545708d86dae63a85f04cd29f71dd422879a8  PKG_DESCR:=		opentype text shaping engine  PKG_SECTION:=		libs/fonts  PKG_SITES:=		https://github.com/harfbuzz/harfbuzz/archive/refs/tags/ diff --git a/package/heimdal/Makefile b/package/heimdal/Makefile index 53390c29d..1c64e386d 100644 --- a/package/heimdal/Makefile +++ b/package/heimdal/Makefile @@ -26,11 +26,6 @@ $(eval $(call HOST_template,HEIMDAL,heimdal,$(PKG_VERSION)-${PKG_RELEASE}))  AUTOTOOL_STYLE:=	autoreconf  HOST_STYLE:=		manual - -ifeq ($(OS_FOR_BUILD),Darwin) -HOST_CFLAGS+=		-DHAVE_STRLCPY -DHAVE_STRLCAT -endif -  HOST_CONFIGURE_ARGS+=	--disable-pk-init \  			--without-openldap \  			--without-x \ diff --git a/package/hush/files/config b/package/hush/files/config index 7e81b468e..a9d58aac4 100644 --- a/package/hush/files/config +++ b/package/hush/files/config @@ -1,7 +1,7 @@  #  # Automatically generated make config: don't edit  # Busybox version: 1.36.1 -# Thu Aug 31 12:09:53 2023 +# Wed Apr  9 19:47:50 2025  #  CONFIG_HAVE_DOT_CONFIG=y @@ -107,13 +107,13 @@ CONFIG_FEATURE_EDITING=y  CONFIG_FEATURE_EDITING_MAX_LEN=1024  # CONFIG_FEATURE_EDITING_VI is not set  CONFIG_FEATURE_EDITING_HISTORY=255 -CONFIG_FEATURE_EDITING_SAVEHISTORY=y +# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set  # CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set -CONFIG_FEATURE_REVERSE_SEARCH=y -CONFIG_FEATURE_TAB_COMPLETION=y -CONFIG_FEATURE_USERNAME_COMPLETION=y -CONFIG_FEATURE_EDITING_FANCY_PROMPT=y -CONFIG_FEATURE_EDITING_WINCH=y +# CONFIG_FEATURE_REVERSE_SEARCH is not set +# CONFIG_FEATURE_TAB_COMPLETION is not set +# CONFIG_FEATURE_USERNAME_COMPLETION is not set +# CONFIG_FEATURE_EDITING_FANCY_PROMPT is not set +# CONFIG_FEATURE_EDITING_WINCH is not set  # CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set  # CONFIG_LOCALE_SUPPORT is not set  CONFIG_UNICODE_SUPPORT=y @@ -1130,21 +1130,21 @@ CONFIG_BASH_IS_HUSH=y  # CONFIG_CTTYHACK is not set  CONFIG_HUSH=y  CONFIG_SHELL_HUSH=y -CONFIG_HUSH_BASH_COMPAT=y -CONFIG_HUSH_BRACE_EXPANSION=y -CONFIG_HUSH_BASH_SOURCE_CURDIR=y -CONFIG_HUSH_LINENO_VAR=y +# CONFIG_HUSH_BASH_COMPAT is not set +# CONFIG_HUSH_BRACE_EXPANSION is not set +# CONFIG_HUSH_BASH_SOURCE_CURDIR is not set +# CONFIG_HUSH_LINENO_VAR is not set  CONFIG_HUSH_INTERACTIVE=y -CONFIG_HUSH_SAVEHISTORY=y +# CONFIG_HUSH_SAVEHISTORY is not set  CONFIG_HUSH_JOB=y -CONFIG_HUSH_TICK=y -CONFIG_HUSH_IF=y -CONFIG_HUSH_LOOPS=y -CONFIG_HUSH_CASE=y -CONFIG_HUSH_FUNCTIONS=y -CONFIG_HUSH_LOCAL=y -CONFIG_HUSH_RANDOM_SUPPORT=y -CONFIG_HUSH_MODE_X=y +# CONFIG_HUSH_TICK is not set +# CONFIG_HUSH_IF is not set +# CONFIG_HUSH_LOOPS is not set +# CONFIG_HUSH_CASE is not set +# CONFIG_HUSH_FUNCTIONS is not set +# CONFIG_HUSH_LOCAL is not set +# CONFIG_HUSH_RANDOM_SUPPORT is not set +# CONFIG_HUSH_MODE_X is not set  CONFIG_HUSH_ECHO=y  CONFIG_HUSH_PRINTF=y  CONFIG_HUSH_TEST=y @@ -1169,15 +1169,15 @@ CONFIG_HUSH_GETOPTS=y  #  # Options common to all shells  # -CONFIG_FEATURE_SH_MATH=y -CONFIG_FEATURE_SH_MATH_64=y -CONFIG_FEATURE_SH_MATH_BASE=y +# CONFIG_FEATURE_SH_MATH is not set +# CONFIG_FEATURE_SH_MATH_64 is not set +# CONFIG_FEATURE_SH_MATH_BASE is not set  CONFIG_FEATURE_SH_EXTRA_QUIET=y  # CONFIG_FEATURE_SH_STANDALONE is not set  # CONFIG_FEATURE_SH_NOFORK is not set -CONFIG_FEATURE_SH_READ_FRAC=y -CONFIG_FEATURE_SH_HISTFILESIZE=y -CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS=y +# CONFIG_FEATURE_SH_READ_FRAC is not set +# CONFIG_FEATURE_SH_HISTFILESIZE is not set +# CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS is not set  #  # System Logging Utilities diff --git a/package/hwdata/patches/patch-hwdata_pc_in b/package/hwdata/patches/patch-hwdata_pc_in deleted file mode 100644 index fe88b5244..000000000 --- a/package/hwdata/patches/patch-hwdata_pc_in +++ /dev/null @@ -1,10 +0,0 @@ ---- hwdata-0.378.orig/hwdata.pc.in	2024-01-05 12:35:26.000000000 +0100 -+++ hwdata-0.378/hwdata.pc.in	2024-01-30 09:39:29.731448151 +0100 -@@ -1,6 +1,6 @@ - prefix=@prefix@ - datadir=@datadir@ --pkgdatadir=${pc_sysrootdir}@pkgdatadir@ -+pkgdatadir=@pkgdatadir@ -  - Name: @NAME@ - Description: Hardware identification and configuration data diff --git a/package/iproute2/Makefile b/package/iproute2/Makefile index d1f583742..1c7b61d64 100644 --- a/package/iproute2/Makefile +++ b/package/iproute2/Makefile @@ -4,23 +4,20 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		iproute2 -PKG_VERSION:=		6.11.0 +PKG_VERSION:=		6.14.0  PKG_RELEASE:=		1 -PKG_HASH:=		1f795398a04aeaacd06a8f6ace2cfd913c33fa5953ca99daae83bb5c534611c3 +PKG_HASH:=		a6d23588150096591c3d00fc27a324a82ee71d7a1a9eea78df5df17ad9b8461f  PKG_DESCR:=		routing control utility  PKG_SECTION:=		net/route -PKG_BUILDDEP:=		iptables libnl linux-atm +PKG_BUILDDEP:=		iptables libnl  PKG_DEPENDS:=		libnl  PKG_URL:=		http://www.linuxfoundation.org/en/Net:Iproute2  PKG_SITES:=		http://www.kernel.org/pub/linux/utils/net/iproute2/ -PKG_SUBPKGS:=		IP TC TC_ATM TC_IPT IFSTAT LNSTAT ROUTEL RTMON SS +PKG_SUBPKGS:=		IP TC TC_IPT IFSTAT LNSTAT ROUTEL RTMON SS  PKGSS_IP:=		libmnl  PKGSD_TC:=		traffic control utility  PKGSB_TC:=		iptables -PKGSD_TC_ATM:=		traffic control atm support library -PKGSS_TC_ATM:=		tc libatm -PKGSB_TC_ATM:=		linux-atm  PKGSD_TC_IPT:=		traffic control iptables support library  PKGSS_TC_IPT:=		tc iptables  PKGSB_TC_IPT:=		iptables @@ -34,7 +31,6 @@ include ${ADK_TOPDIR}/mk/package.mk  $(eval $(call PKG_template,IP,ip,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))  $(eval $(call PKG_template,TC,tc,${PKG_VERSION}-${PKG_RELEASE},${PKGSS_TC},${PKGSD_TC},${PKG_SECTION})) -$(eval $(call PKG_template,TC_ATM,tc-atm,${PKG_VERSION}-${PKG_RELEASE},${PKGSS_TC_ATM},${PKGSD_TC_ATM},${PKG_SECTION}))  $(eval $(call PKG_template,TC_IPT,tc-iptables,${PKG_VERSION}-${PKG_RELEASE},${PKGSS_TC_IPT},${PKGSD_TC_IPT},${PKG_SECTION}))  $(eval $(call PKG_template,IFSTAT,ifstat,${PKG_VERSION}-${PKG_RELEASE},,${PKGSD_IFSTAT},${PKG_SECTION}))  $(eval $(call PKG_template,LNSTAT,lnstat,${PKG_VERSION}-${PKG_RELEASE},,${PKGSD_LNSTAT},${PKG_SECTION})) @@ -56,11 +52,6 @@ tc-install:  	${CP} ${WRKINST}/usr/lib/tc/*.dist ${IDIR_TC}/usr/lib/tc/  	${INSTALL_BIN} ${WRKINST}/sbin/tc ${IDIR_TC}/usr/sbin/ -tc-atm-install: -	${INSTALL_DIR} ${IDIR_TC_ATM}/usr/lib/tc -	${INSTALL_DATA} ${WRKINST}/usr/lib/tc/q_atm.so \ -		${IDIR_TC_ATM}/usr/lib/tc/ -  tc-iptables-install:  	${INSTALL_DIR} ${IDIR_TC_IPT}/usr/lib/tc  	# use ${CP} here, since m_ipt.so is a symlink to m_xt.so diff --git a/package/iproute2/patches/patch-bridge_mst_c b/package/iproute2/patches/patch-bridge_mst_c deleted file mode 100644 index ed62eb842..000000000 --- a/package/iproute2/patches/patch-bridge_mst_c +++ /dev/null @@ -1,10 +0,0 @@ ---- iproute2-6.11.0.orig/bridge/mst.c	2024-09-15 21:42:26.000000000 +0200 -+++ iproute2-6.11.0/bridge/mst.c	2024-09-24 09:58:39.165522637 +0200 -@@ -4,6 +4,7 @@ -  */ -  - #include <stdio.h> -+#include <netinet/in.h> - #include <linux/if_bridge.h> - #include <net/if.h> -  diff --git a/package/iproute2/patches/patch-tc_tc_core_h b/package/iproute2/patches/patch-tc_tc_core_h deleted file mode 100644 index 25c259cee..000000000 --- a/package/iproute2/patches/patch-tc_tc_core_h +++ /dev/null @@ -1,11 +0,0 @@ ---- iproute2-6.11.0.orig/tc/tc_core.h	2024-09-15 21:42:26.000000000 +0200 -+++ iproute2-6.11.0/tc/tc_core.h	2024-09-24 09:43:33.562449121 +0200 -@@ -2,7 +2,7 @@ - #ifndef _TC_CORE_H_ - #define _TC_CORE_H_ 1 -  --#include <asm/types.h> -+#include <sys/types.h> - #include <linux/pkt_sched.h> -  - enum link_layer { diff --git a/package/iptables/Makefile b/package/iptables/Makefile index f6e0ad777..b94edd0ef 100644 --- a/package/iptables/Makefile +++ b/package/iptables/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		iptables -PKG_VERSION:=		1.8.10 +PKG_VERSION:=		1.8.11  PKG_RELEASE:=		1 -PKG_HASH:=		5cc255c189356e317d070755ce9371eb63a1b783c34498fb8c30264f3cc59c9c +PKG_HASH:=		d87303d55ef8c92bcad4dd3f978b26d272013642b029425775f5bad1009fe7b2  PKG_DESCR:=		netfilter firewalling software  PKG_SECTION:=		net/firewall  PKG_DEPENDS:=		libnetfilter_conntrack libmnl libnfnetlink diff --git a/package/irssi/Makefile b/package/irssi/Makefile index 66bc9344e..9c8f42418 100644 --- a/package/irssi/Makefile +++ b/package/irssi/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		irssi -PKG_VERSION:=		1.4.4 +PKG_VERSION:=		1.4.5  PKG_RELEASE:=		1 -PKG_HASH:=		fefe9ec8c7b1475449945c934a2360ab12693454892be47a6d288c63eb107ead +PKG_HASH:=		72a951cb0ad622785a8962801f005a3a412736c7e7e3ce152f176287c52fe062  PKG_DESCR:=		irc text client  PKG_SECTION:=		app/chat  PKG_DEPENDS:=		glib libncurses @@ -14,10 +14,13 @@ PKG_BUILDDEP:=		glib ncurses  PKG_URL:=		http://www.irssi.org/  PKG_SITES:=		https://github.com/irssi/irssi/releases/download/$(PKG_VERSION)/ -PKG_CHOICES_IRSSI:=	WITH_LIBRESSL WITHOUT_SSL +PKG_CHOICES_IRSSI:=	WITH_OPENSSL WITH_LIBRESSL WITHOUT_SSL +PKGCD_WITH_OPENSSL:=	use openssl for crypto +PKGCB_WITH_OPENSSL:=	openssl +PKGCS_WITH_OPENSSL:=	libopenssl ca-certificates  PKGCD_WITH_LIBRESSL:=	use libressl for crypto  PKGCB_WITH_LIBRESSL:=	libressl -PKGCS_WITH_LIBRESSL:=	libressl +PKGCS_WITH_LIBRESSL:=	libressl ca-certificates  PKGCD_WITHOUT_SSL:=	use no ssl  PKG_FLAVOURS_IRSSI:=	WITH_IPV6 @@ -27,7 +30,7 @@ include ${ADK_TOPDIR}/mk/package.mk  $(eval $(call PKG_template,IRSSI,irssi,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) -TARGET_LDFLAGS+=	-ltinfo +TARGET_LDFLAGS+=	-ltinfo -latomic  CONFIGURE_ARGS+=	--with-perl=no \  			--with-textui \  			--with-terminfo \ diff --git a/package/jamvm/Makefile b/package/jamvm/Makefile deleted file mode 100644 index 4c5e86dd4..000000000 --- a/package/jamvm/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include ${ADK_TOPDIR}/rules.mk - -PKG_NAME:=		jamvm -PKG_VERSION:=		2.0.0 -PKG_RELEASE:=		1 -PKG_HASH:=		76428e96df0ae9dd964c7a7c74c1e9a837e2f312c39e9a357fa8178f7eff80da -PKG_DESCR:=		java virtual machine implementation -PKG_SECTION:=		dev/lang -PKG_DEPENDS:=		libffi zlib -PKG_BUILDDEP:=		libffi zlib -PKG_NEEDS:=		threads -PKG_URL:=		http://jamvm.sourceforge.net -PKG_SITES:=		${MASTER_SITE_SOURCEFORGE:=jamvm/} - -# use of deprecated swp{b} -PKG_SYSTEM_DEPENDS:=	!raspberry-pi3 !raspberry-pi3p - -DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz - -include ${ADK_TOPDIR}/mk/host.mk -include ${ADK_TOPDIR}/mk/package.mk - -$(eval $(call HOST_template,JAMVM,jamvm,${PKG_VERSION}-${PKG_RELEASE})) -$(eval $(call PKG_template,JAMVM,jamvm,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) - -HOST_CONFIGURE_ARGS+=	--libdir=$(STAGING_HOST_DIR)/usr/lib/jamvm \ -			--includedir=$(STAGING_HOST_DIR)/usr/include/jamvm \ -			--with-classpath-install-dir=$(STAGING_HOST_DIR)/usr - -CONFIGURE_ARGS+=	--enable-ffi - -jamvm-install: -	${INSTALL_DIR} ${IDIR_JAMVM}/usr/bin -	${INSTALL_DIR} ${IDIR_JAMVM}/usr/lib -	${INSTALL_DIR} ${IDIR_JAMVM}/usr/share/jamvm -	${INSTALL_BIN} ${WRKINST}/usr/bin/jamvm \ -		${IDIR_JAMVM}/usr/bin -	${CP} ${WRKINST}/usr/share/jamvm/classes.zip \ -		${IDIR_JAMVM}/usr/share/jamvm -	$(CP) ${WRKINST}/usr/lib/libjvm.so \ -		${IDIR_JAMVM}/usr/lib -	$(CP) ${WRKINST}/usr/lib/rt.jar \ -		${IDIR_JAMVM}/usr/lib - -include ${ADK_TOPDIR}/mk/host-bottom.mk -include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/jikes/Makefile b/package/jikes/Makefile deleted file mode 100644 index 5a4bd097d..000000000 --- a/package/jikes/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		jikes -PKG_VERSION:=		1.22 -PKG_RELEASE:=		1 -PKG_HASH:=		0cb02c763bc441349f6d38cacd52adf762302cce3a08e269f1f75f726e6e14e3 -PKG_DESCR:=		java compiler -PKG_BUILDDEP:=		jikes-host -PKG_SECTION:=		dev/lang -PKG_SITES:=		${MASTER_SITE_SOURCEFORGE:=jikes/Jikes/1.22/} - -PKG_CFLINE_JIKES:=	depends on ADK_HOST_ONLY - -DISTFILES:=             $(PKG_NAME)-$(PKG_VERSION).tar.bz2 - -include $(ADK_TOPDIR)/mk/host.mk -include $(ADK_TOPDIR)/mk/package.mk - -$(eval $(call HOST_template,JIKES,jikes,$(PKG_VERSION)-${PKG_RELEASE})) -$(eval $(call PKG_template,JIKES,jikes,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) - -include ${ADK_TOPDIR}/mk/host-bottom.mk -include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/json/Makefile b/package/json/Makefile new file mode 100644 index 000000000..5d63e90ef --- /dev/null +++ b/package/json/Makefile @@ -0,0 +1,30 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		json +PKG_VERSION:=		3.12.0 +PKG_RELEASE:=		1 +PKG_HASH:=		4b92eb0c06d10683f7447ce9406cb97cd4b453be18d7279320f7b2f025c10187 +PKG_DESCR:=		C++ json library +PKG_SECTION:=		libs/misc +PKG_URL:=		https://github.com/nlohmann/json/ +PKG_SITES:=		https://github.com/nlohmann/json/archive/refs/tags/ +PKG_OPTS:=		dev + +DISTFILES:=             v$(PKG_VERSION).tar.gz + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,JSON,json,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) + +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj + +CONFIG_STYLE:=		meson +BUILD_STYLE:=		meson +INSTALL_STYLE:=		meson + +json-install: + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/kbd/Makefile b/package/kbd/Makefile index 7c0b62efa..97b2b691f 100644 --- a/package/kbd/Makefile +++ b/package/kbd/Makefile @@ -43,6 +43,10 @@ kbd-install:  		$(IDIR_KBD)/usr/bin  	$(INSTALL_BIN) $(WRKINST)/usr/bin/loadkeys \  		$(IDIR_KBD)/usr/bin +ifeq ($(ADK_TARGET_SYSTEM_HP_JORNADA),y) +	$(INSTALL_DIR) $(IDIR_KBD)/etc +	$(CP) ./files/hpjornada.map $(IDIR_KBD)/etc +endif  ifeq ($(ADK_TARGET_SYSTEM_SHARP_ZAURUS),y)  	$(INSTALL_DIR) $(IDIR_KBD)/etc  	$(CP) ./files/zaurus.map $(IDIR_KBD)/etc diff --git a/package/kbd/files/hpjornada.map b/package/kbd/files/hpjornada.map new file mode 100644 index 000000000..c7fc2a670 --- /dev/null +++ b/package/kbd/files/hpjornada.map @@ -0,0 +1,279 @@ +# English keymap for Jornada 6xx devices. +# +# Created by Tibor Zenis ( zenis <at> fmph.uniba.sk ) +# (Lightly) Modified by Alex Palestras ( B_Linuz <at> yahoo.com ) +# plain, shift, altgr,  ctrl, shift + ctrl,  alt,  ctrl + alt + +keymaps 0-2,4-5,8,12 +keycode   1 = Escape           Escape           +	alt	keycode   1 = Meta_Escape      +keycode   2 = one              exclam		asciitilde +	alt	keycode   2 = Meta_one +keycode   3 = two              at		grave +	alt	keycode   3 = Meta_two +keycode   4 = three            numbersign       +	alt	keycode   4 = Meta_three       +	altgr	keycode   4 = pound +keycode   5 = four             dollar +	control	keycode   5 = Control_backslash +	alt	keycode   5 = Meta_four        +	altgr	keycode   5 = currency +keycode   6 = five             percent          +	control	keycode   6 = Control_bracketright +	alt	keycode   6 = Meta_five        +keycode   7 = six              asciicircum      +	control	keycode   7 = Control_asciicircum +	alt	keycode   7 = Meta_six         +keycode   8 = seven            ampersand        braceleft +	control	keycode   8 = Control_underscore +	altgr	keycode   8 = KP_7       +keycode   9 = eight            asterisk         bracketleft +	control	keycode   9 = Delete +	altgr	keycode   9 = KP_8       +keycode  10 = nine             parenleft        bracketright     +	altgr	keycode  10 = KP_9        +keycode  11 = zero             parenright       braceright       +	altgr	keycode  11 = KP_Divide        +keycode  12 = minus            underscore       backslash +	control	keycode  11 = Control_underscore +	shift control	keycode  11 = Control_underscore +	alt	keycode  11 = Meta_minus +keycode  13 = equal            plus             +	alt	keycode  13 = Meta_equal       +keycode  14 = Delete           Delete           +	control	keycode  14 = BackSpace        +	alt	keycode  14 = Meta_Delete      +keycode  15 = Tab              Tab              +	alt	keycode  15 = Meta_Tab         +keycode  16 = q                +keycode  17 = w                +keycode  18 = e +	Shift	keycode  18 = E +keycode  19 = r                +keycode  20 = t                +keycode  21 = y                +	altgr	keycode  21 = KP_4 +keycode  22 = u                +	altgr	keycode  22 = KP_5 +keycode  23 = i                +	altgr	keycode  23 = KP_6 +keycode  24 = o +	altgr	keycode  24 = KP_Multiply +keycode  25 = p              +		AltGr keycode 25 = braceleft   +keycode  26 = backslash	bar +		AltGr keycode 26 = braceright  +keycode  28 = Return           +	alt	keycode  28 = Meta_Control_m   +keycode  29 = Control          +	altgr	keycode  29 = Num_Lock +keycode  30 = a +keycode  31 = s                +keycode  32 = d +keycode  33 = f +keycode  34 = g                +keycode  35 = h                +	altgr	keycode  35 = KP_1 +keycode  36 = j                +	altgr	keycode  36 = KP_2 +keycode  37 = k                +	altgr	keycode  37 = KP_3 +keycode  38 = l                +	altgr	keycode  38 = KP_Subtract +keycode  39 = semicolon        colon           bracketleft +	alt	keycode  39 = Meta_semicolon +keycode  40 = apostrophe       quotedbl        bracketright +	control	keycode  40 = Control_g        +	alt	keycode  40 = Meta_apostrophe +keycode  41 = F11              +	shift	keycode  41 = F21 +	altgr	keycode  41 = Console_23       +	alt	keycode  41 = Console_11       +	control	alt	keycode  41 = Console_11       +keycode  42 = Shift            +	altgr	keycode  42 = Caps_Lock +keycode  44 = z                +keycode  45 = x                +keycode  46 = c +keycode  47 = v                +keycode  48 = b +keycode  49 = n                +	altgr	keycode  49 = KP_0 +keycode  50 = m                +	altgr	keycode  50 = KP_Comma +keycode  51 = comma            less             +	altgr	keycode  51 = KP_Period       +keycode  52 = period           greater          +	control	keycode  52 = Compose          +	altgr	keycode  52 = KP_Add      +keycode  54 = Shift  +keycode  56 = Alt              +keycode  57 = space            space            +	alt	keycode  57 = Meta_space       +keycode  58 = F9               +	shift	keycode  58 = F19              +	altgr	keycode  58 = Console_21       +	alt	keycode  58 = Console_9        +	control	alt	keycode  58 = Console_9        +keycode  59 = F1               +	altgr	keycode  59 = Console_13       +	alt	keycode  59 = Console_1        +	control	alt	keycode  59 = Console_1  +keycode  60 = F2               +	shift	keycode  60 = F12              +	altgr	keycode  60 = Console_14       +	alt	keycode  60 = Console_2        +	control	alt	keycode  60 = Console_2        +keycode  61 = F3               +	shift	keycode  61 = F13              +	altgr	keycode  61 = Console_15       +	alt	keycode  61 = Console_3        +	control	alt	keycode  61 = Console_3        +keycode  62 = F4               +	shift	keycode  62 = F14              +	altgr	keycode  62 = Console_16       +	alt	keycode  62 = Console_4        +	control	alt	keycode  62 = Console_4        +keycode  63 = F5               +	shift	keycode  63 = F15              +	altgr	keycode  63 = Console_17       +	alt	keycode  63 = Console_5        +	control	alt	keycode  63 = Console_5        +keycode  64 = F6               +	shift	keycode  64 = F16              +	altgr	keycode  64 = Console_18       +	alt	keycode  64 = Console_6        +	control	alt	keycode  64 = Console_6        +keycode  65 = F7               +	shift	keycode  65 = F17              +	altgr	keycode  65 = Console_19       +	alt	keycode  65 = Console_7        +	control	alt	keycode  65 = Console_7        +keycode  66 = F8               +	shift	keycode  66 = F18              +	altgr	keycode  66 = Console_20       +	alt	keycode  66 = Console_8        +	control	alt	keycode  66 = Console_8        +keycode  72 = Up +	shift	keycode  72 = Scroll_Backward            +	altgr	keycode  72 = Scroll_Backward            +	alt	keycode  72 = Prior  +keycode  74 = Control +keycode  75 = Left +	altgr	keycode  75 = Decr_Console +	alt	keycode  75 = Find       +keycode  77 = Right +	altgr	keycode  77 = Incr_Console +	alt	keycode  77 = Select          +keycode  80 = Down +	shift	keycode  80 = Scroll_Forward +	altgr	keycode  80 = Scroll_Forward +	alt	keycode  80 = Next          +keycode  83 = Remove	Remove		Meta_Delete +	alt	keycode  83 = Meta_Delete             +keycode 112 = F10              +	shift	keycode 112 = F20              +	altgr	keycode 112 = Console_22       +	alt	keycode 112 = Console_10       +	control	alt	keycode 112 = Console_10       +keycode 115 = slash	question         +	control	keycode  115 = Delete           +	alt	keycode  115 = Meta_slash       +keycode 123 = AltGr +keycode 0 = Insert +string F1 = "\033[[A" +string F2 = "\033[[B" +string F3 = "\033[[C" +string F4 = "\033[[D" +string F5 = "\033[[E" +string F6 = "\033[17~" +string F7 = "\033[18~" +string F8 = "\033[19~" +string F9 = "\033[20~" +string F10 = "\033[21~" +string F11 = "\033[23~" +string F12 = "\033[24~" +string F13 = "\033[25~" +string F14 = "\033[26~" +string F15 = "\033[28~" +string F16 = "\033[29~" +string F17 = "\033[31~" +string F18 = "\033[32~" +string F19 = "\033[33~" +string F20 = "\033[34~" +string Find = "\033[1~" +string Insert = "\033[2~" +string Remove = "\033[3~" +string Select = "\033[4~" +string Prior = "\033[5~" +string Next = "\033[6~" +string Macro = "\033[M" +string Pause = "\033[P" +compose '`' 'A' to 'À' +compose '`' 'a' to 'à' +compose '\'' 'A' to 'Á' +compose '\'' 'a' to 'á' +compose '^' 'A' to 'Â' +compose '^' 'a' to 'â' +compose '~' 'A' to 'Ã' +compose '~' 'a' to 'ã' +compose '"' 'A' to 'Ä' +compose '"' 'a' to 'ä' +compose 'O' 'A' to 'Å' +compose 'o' 'a' to 'å' +compose '0' 'A' to 'Å' +compose '0' 'a' to 'å' +compose 'A' 'A' to 'Å' +compose 'a' 'a' to 'å' +compose 'A' 'E' to 'Æ' +compose 'a' 'e' to 'æ' +compose ',' 'C' to 'Ç' +compose ',' 'c' to 'ç' +compose '`' 'E' to 'È' +compose '`' 'e' to 'è' +compose '\'' 'E' to 'É' +compose '\'' 'e' to 'é' +compose '^' 'E' to 'Ê' +compose '^' 'e' to 'ê' +compose '"' 'E' to 'Ë' +compose '"' 'e' to 'ë' +compose '`' 'I' to 'Ì' +compose '`' 'i' to 'ì' +compose '\'' 'I' to 'Í' +compose '\'' 'i' to 'í' +compose '^' 'I' to 'Î' +compose '^' 'i' to 'î' +compose '"' 'I' to 'Ï' +compose '"' 'i' to 'ï' +compose '-' 'D' to 'Ð' +compose '-' 'd' to 'ð' +compose '~' 'N' to 'Ñ' +compose '~' 'n' to 'ñ' +compose '`' 'O' to 'Ò' +compose '`' 'o' to 'ò' +compose '\'' 'O' to 'Ó' +compose '\'' 'o' to 'ó' +compose '^' 'O' to 'Ô' +compose '^' 'o' to 'ô' +compose '~' 'O' to 'Õ' +compose '~' 'o' to 'õ' +compose '"' 'O' to 'Ö' +compose '"' 'o' to 'ö' +compose '/' 'O' to 'Ø' +compose '/' 'o' to 'ø' +compose '`' 'U' to 'Ù' +compose '`' 'u' to 'ù' +compose '\'' 'U' to 'Ú' +compose '\'' 'u' to 'ú' +compose '^' 'U' to 'Û' +compose '^' 'u' to 'û' +compose '"' 'U' to 'Ü' +compose '"' 'u' to 'ü' +compose '\'' 'Y' to 'Ý' +compose '\'' 'y' to 'ý' +compose 'T' 'H' to 'Þ' +compose 't' 'h' to 'þ' +compose 's' 's' to 'ß' +compose '"' 'y' to 'ÿ' +compose 's' 'z' to 'ß' +compose 'i' 'j' to 'ÿ' diff --git a/package/kbd/files/kbd.postinst b/package/kbd/files/kbd.postinst index 2024d30cf..ec72bad23 100644 --- a/package/kbd/files/kbd.postinst +++ b/package/kbd/files/kbd.postinst @@ -1,4 +1,4 @@  #!/bin/sh  . $IPKG_INSTROOT/etc/functions.sh -add_rcconf kbd_map "de-latin1-nodeadkeys" +add_rcconf kbd_map "/etc/hpjornada.map"  add_rcconf kbd NO diff --git a/package/kexec-tools/Makefile b/package/kexec-tools/Makefile index 3e7d88f80..1d3e818d9 100644 --- a/package/kexec-tools/Makefile +++ b/package/kexec-tools/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		kexec-tools -PKG_VERSION:=		2.0.23 -PKG_RELEASE:=		2 -PKG_HASH:=		aa63cd6c7dd95b06ceba6240a7fdc6792789cada75a655e6714987175224241b +PKG_VERSION:=		2.0.31 +PKG_RELEASE:=		1 +PKG_HASH:=		8a8f350ddc66e1c905a3ab525a7e9ba96c81e04e70ef69397b0155b67b922c31  PKG_DESCR:=		kernel exec tools  PKG_SECTION:=		sys/misc  PKG_DEPENDS:=		zlib diff --git a/package/kmod/Makefile b/package/kmod/Makefile index c46410927..36f4ea57f 100644 --- a/package/kmod/Makefile +++ b/package/kmod/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		kmod -PKG_VERSION:=		31 +PKG_VERSION:=		34.2  PKG_RELEASE:=		1 -PKG_HASH:=		f5a6949043cc72c001b728d8c218609c5a15f3c33d75614b78c79418fcf00d80 +PKG_HASH:=		5a5d5073070cc7e0c7a7a3c6ec2a0e1780850c8b47b3e3892226b93ffcb9cb54  PKG_DESCR:=		kernel module utils  PKG_SECTION:=		sys/utils  PKG_DEPENDS:=		libkmod diff --git a/package/kodi/Makefile b/package/kodi/Makefile index 9fb6deccb..cd1aaa91e 100644 --- a/package/kodi/Makefile +++ b/package/kodi/Makefile @@ -4,39 +4,39 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		kodi -PKG_VERSION:=		21.0b2 +PKG_VERSION:=		22.0a1  PKG_RELEASE:=		1 -PKG_HASH:=		b9d6ecbb8769cdfe00cbbe5da5c330a7624eee50cffb87d87f6271033f1ee74b +PKG_HASH:=		da88f6aee01995caadfc6e194b8e3b51dfd193164a6c8d559d2443dd7f58f9f8  PKG_DESCR:=		software media player  PKG_SECTION:=		mm/video -PKG_DEPENDS:=		python3 libsquish libressl libxz libfmt rapidjson +PKG_DEPENDS:=		python3 libsquish libopenssl libfmt rapidjson libpcre  PKG_DEPENDS+=		libass libmpeg2 libmad libmodplug libcurl libxshmfence -PKG_DEPENDS+=		libflac libbz2 libtiff libnettle librtmp liblzo +PKG_DEPENDS+=		libflac libbz2 libtiff libnettle librtmp liblzo libXext  PKG_DEPENDS+=		yajl tinyxml libsqlite libpcrecpp libncurses libpng -PKG_DEPENDS+=		libpcre libcdio libfreetype libsamplerate libuuid -PKG_DEPENDS+=		taglib libjasper libmp3lame libgpg-error giflib -PKG_DEPENDS+=		glib libdcadec libffmpeg libxvidcore libiconv harfbuzz +PKG_DEPENDS+=		libpcre2 libcdio libfreetype libsamplerate libuuid +PKG_DEPENDS+=		taglib libjasper libmp3lame libgpg-error giflib nghttp2 +PKG_DEPENDS+=		glib libdcadec libffmpeg libxvidcore harfbuzz exiv2  PKG_DEPENDS+=		flatbuffers fstrcmp spdlog mesa libinput libxkbcommon -PKG_DEPENDS+=		xkeyboard-config tinyxml2 libdisplay-info libudfread -PKG_BUILDDEP:=		python3 libass ffmpeg rtmpdump libiconv libudfread +PKG_DEPENDS+=		xkeyboard-config tinyxml2 libdisplay-info libudfread json +PKG_BUILDDEP:=		python3 libass ffmpeg rtmpdump libudfread exiv2  PKG_BUILDDEP+=		libmpeg2 libmad libjpeg-turbo fmt rapidjson  PKG_BUILDDEP+=		curl flac bzip2 libtiff yajl cmake-host libdisplay-info -PKG_BUILDDEP+=		tinyxml tinyxml2 sqlite pcre libcdio freetype libpng +PKG_BUILDDEP+=		tinyxml tinyxml2 sqlite pcre2 libcdio freetype libpng  PKG_BUILDDEP+=		libsamplerate taglib libjasper giflib xkeyboard-config  PKG_BUILDDEP+=		glib libmodplug libgpg-error xvidcore libxshmfence  PKG_BUILDDEP+=		swig-host liblzo-host libpng-host libjpeg-turbo-host  PKG_BUILDDEP+=		zip-host unzip-host giflib-host libsquish libdcadec -PKG_BUILDDEP+=		libcrossguid libressl xz bzip2 liblzo harfbuzz +PKG_BUILDDEP+=		openssl bzip2 liblzo harfbuzz pcre json  PKG_BUILDDEP+=		flatbuffers fstrcmp spdlog mesa libinput libxkbcommon  PKG_NEEDS:=		threads c++ data iconv  PKG_URL:=		http://kodi.tv/  PKG_SITES:=		https://github.com/xbmc/xbmc/archive/ -DISTFILES:=		$(PKG_VERSION)-Omega.tar.gz -WRKDIST=		${WRKDIR}/xbmc-$(PKG_VERSION)-Omega +DISTFILES:=		$(PKG_VERSION)-Piers.tar.gz +WRKDIST=		${WRKDIR}/xbmc-$(PKG_VERSION)-Piers  WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj -PKG_SYSTEM_DEPENDS:=	raspberry-pi raspberry-pi2 raspberry-pi3 raspberry-pi4 raspberry-pi4-64 rockpi4-plus raspberry-pi5 +PKG_SYSTEM_DEPENDS:=	qemu-x86_64 raspberry-pi raspberry-pi2 raspberry-pi3 raspberry-pi4 raspberry-pi4-64 rockpi4-plus raspberry-pi5  PKG_FLAVOURS_KODI:=	WITH_ALSA WITH_CEC WITH_PULSEAUDIO WITH_SMB  PKG_FLAVOURS_KODI+=	WITH_MICROHTTPD WITH_SSH WITH_AVAHI @@ -69,17 +69,17 @@ $(eval $(call PKG_template,KODI,kodi,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS  HOST_CXXFLAGS:=		-DTARGET_POSIX -DTARGET_LINUX -D_LINUX -I$(WRKSRC)/xbmc/linux  CONFIG_STYLE:=		cmake  CMAKE_FLAGS+= 		-DENABLE_CCACHE=OFF \ +			-DENABLE_TESTING=OFF \  			-DCMAKE_BUILD_TYPE=Release \  			-DVERBOSE=ON \  			-DENABLE_DVDCSS=ON \ -			-DENABLE_INTERNAL_CROSSGUID=OFF \  			-DENABLE_INTERNAL_FFMPEG=OFF \  			-DENABLE_INTERNAL_RapidJSON=OFF \  			-DWITH_FFMPEG=$(STAGING_TARGET_DIR)/usr \  			-DPYTHON_EXECUTABLE=$(STAGING_HOST_DIR)/usr/bin/python3 \ -			-DPYTHON_INCLUDE_DIRS=$(STAGING_TARGET_DIR)/usr/include/python3.11 \ -			-DPYTHON_PATH=$(STAGING_TARGET_DIR)/usr/lib/python3.11 \ -			-DPYTHON_VER=3.11 \ +			-DPYTHON_INCLUDE_DIRS=$(STAGING_TARGET_DIR)/usr/include/python3.13 \ +			-DPYTHON_PATH=$(STAGING_TARGET_DIR)/usr/lib/python3.13 \ +			-DPYTHON_VER=3.13 \  			-DKODI_DEPENDSBUILD=OFF \  			-DENABLE_OPENSSL=ON \  			-DENABLE_MYSQLCLIENT=OFF \ @@ -99,9 +99,9 @@ CMAKE_FLAGS+= 		-DENABLE_CCACHE=OFF \  			-DENABLE_PLIST=OFF \  			-DNATIVEPREFIX=$(STAGING_HOST_DIR)/usr \  			-DDEPENDS_PATH=$(STAGING_TARGET_DIR)/usr \ -			-DWITH_TEXTUREPACKER=$(STAGING_HOST_DIR)/usr/bin/TexturePacker \  			-DWITH_JSONSCHEMABUILDER=$(STAGING_HOST_DIR)/usr/bin/JsonSchemaBuilder \ -			-DCMAKE_EXE_LINKER_FLAGS=-latomic \ +			-DWITH_TEXTUREPACKER=$(STAGING_HOST_DIR)/usr/bin/TexturePacker \ +			-DCMAKE_EXE_LINKER_FLAGS="-latomic" \  			-DLIBDVDCSS_URL=$(DL_DIR)/libdvdcss-1.4.3-Next-Nexus-Alpha2-2.tar.gz \  			-DLIBDVDNAV_URL=$(DL_DIR)/libdvdnav-6.1.1-Next-Nexus-Alpha2-2.tar.gz \  			-DLIBDVDREAD_URL=$(DL_DIR)/libdvdread-6.1.3-Next-Nexus-Alpha2-2.tar.gz @@ -112,10 +112,17 @@ CMAKE_FLAGS+=		-DWITH_ARCH=aarch64 \  			-DENABLE_NEON=OFF  endif  ifeq ($(ADK_TARGET_ARCH_ARM),y) -			-DWITH_ARCH=arm \ +CMAKE_FLAGS+=		-DWITH_ARCH=arm \  			-DWITH_CPU=arm \  			-DENABLE_NEON=ON  endif +ifeq ($(ADK_TARGET_ARCH_X86_64),y) +CMAKE_FLAGS+=		-DWITH_ARCH=x86_64 \ +			-DAPP_RENDER_SYSTEM=gl \ +			-DCORE_PLATFORM_NAME=x11 \ +			-DENABLE_OPENGL=ON \ +			-DENABLE_X11=ON +endif  ifeq ($(ADK_TARGET_BOARD_BCM28XX),y)  CMAKE_FLAGS+=		-DCORE_PLATFORM_NAME=gbm \ @@ -162,24 +169,23 @@ CMAKE_FLAGS+=		-DENABLE_SSH=OFF  endif  XAKE_FLAGS+=		VERBOSE=1 -TARGET_LDFLAGS+=	-latomic -liconv  KODI_LIBDVDCSS_VERSION 	= 1.4.3-Next-Nexus-Alpha2-2  KODI_LIBDVDNAV_VERSION 	= 6.1.1-Next-Nexus-Alpha2-2  KODI_LIBDVDREAD_VERSION = 6.1.3-Next-Nexus-Alpha2-2  pre-configure: -	#(cd $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src && PATH='$(HOST_PATH)' cmake .) -	#PATH='$(HOST_PATH)' make -C $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src -	#cp $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src/JsonSchemaBuilder \ -	#	$(STAGING_HOST_DIR)/usr/bin/JsonSchemaBuilder -	#(cd $(WRKSRC)/tools/depends/native/TexturePacker/src && PATH='$(HOST_PATH)' cmake \ -	#	-DKODI_SOURCE_DIR=$(WRKSRC) \ -	#	-DCMAKE_MODULE_PATH=$(WRKSRC)/cmake/modules \ -	#	-DCMAKE_CXX_FLAGS="$(HOST_CXXFLAGS)" .) -	#PATH='$(HOST_PATH)' make -C $(WRKSRC)/tools/depends/native/TexturePacker/src -	#cp $(WRKSRC)/tools/depends/native/TexturePacker/src/TexturePacker \ -	#	$(STAGING_HOST_DIR)/usr/bin +	(cd $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src && PATH='$(HOST_PATH)' cmake .) +	PATH='$(HOST_PATH)' make -C $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src +	cp $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src/JsonSchemaBuilder \ +		$(STAGING_HOST_DIR)/usr/bin/JsonSchemaBuilder +	(cd $(WRKSRC)/tools/depends/native/TexturePacker/src && PATH='$(HOST_PATH)' cmake \ +		-DKODI_SOURCE_DIR=$(WRKSRC) \ +		-DCMAKE_MODULE_PATH=$(WRKSRC)/cmake/modules \ +		-DCMAKE_CXX_FLAGS="$(HOST_CXXFLAGS)" .) +	PATH='$(HOST_PATH)' make -C $(WRKSRC)/tools/depends/native/TexturePacker/src +	cp $(WRKSRC)/tools/depends/native/TexturePacker/src/TexturePacker \ +		$(STAGING_HOST_DIR)/usr/bin  	(cd $(DL_DIR) && wget -O libdvdcss-$(KODI_LIBDVDCSS_VERSION).tar.gz https://github.com/xbmc/libdvdcss/archive/refs/tags/$(KODI_LIBDVDCSS_VERSION).tar.gz)  	(cd $(DL_DIR) && wget -O libdvdnav-$(KODI_LIBDVDNAV_VERSION).tar.gz https://github.com/xbmc/libdvdnav/archive/refs/tags/$(KODI_LIBDVDNAV_VERSION).tar.gz)  	(cd $(DL_DIR) && wget -O libdvdread-$(KODI_LIBDVDREAD_VERSION).tar.gz https://github.com/xbmc/libdvdread/archive/refs/tags/$(KODI_LIBDVDREAD_VERSION).tar.gz) diff --git a/package/kodi/files/kodi.init b/package/kodi/files/kodi.init index c3dfdf893..fc53d4486 100644 --- a/package/kodi/files/kodi.init +++ b/package/kodi/files/kodi.init @@ -13,7 +13,7 @@ autostart)  	;;  start)  	if [ ! -d /data/kodi ]; then -		mkdir /data/kodi +		mkdir -p /data/kodi  	fi  	cd / && /usr/lib/kodi/kodi-gbm &  	;; diff --git a/package/kodi/patches/patch-CMakeLists_txt b/package/kodi/patches/patch-CMakeLists_txt deleted file mode 100644 index 7fa65595b..000000000 --- a/package/kodi/patches/patch-CMakeLists_txt +++ /dev/null @@ -1,27 +0,0 @@ ---- xbmc-21.0b2-Omega.orig/CMakeLists.txt	2023-12-09 22:24:46.000000000 +0100 -+++ xbmc-21.0b2-Omega/CMakeLists.txt	2024-01-31 10:45:45.831435209 +0100 -@@ -178,7 +178,6 @@ endforeach() - # Required tools. Keep in alphabetical order please - set(required_buildtools FlatC -                         JsonSchemaBuilder --                        TexturePacker - ) -  - # Optional build tools -@@ -468,7 +467,6 @@ endif() - add_custom_command( -   OUTPUT ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/${CONFIG_VAR}/gen_skin.timestamp -   COMMAND ${CMAKE_COMMAND} -DBUNDLEDIR=${_bundle_dir} --                           -DTEXTUREPACKER_EXECUTABLE=$<TARGET_FILE:TexturePacker::TexturePacker::Executable> -                            -P ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/GeneratedPackSkins.cmake -   COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/${CONFIG_VAR} -   COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/${CONFIG_VAR}/gen_skin.timestamp -@@ -481,7 +479,7 @@ add_custom_target(gen_skin_pack DEPENDS -  - # Packaging target. This generates system addon, xbt creation, copy files to build tree - add_custom_target(generate-packaging ALL --                  DEPENDS TexturePacker::TexturePacker::Executable export-files gen_skin_pack gen_system_addons) -+                  DEPENDS export-files gen_skin_pack gen_system_addons) - # Make sure we build any libs before we look to export-files. - # We may need to export some shared libs/data (eg Python) - add_dependencies(export-files ${GLOBAL_TARGET_DEPS}) diff --git a/package/kodi/patches/patch-tools_depends_native_TexturePacker_src_decoder_GifHelper_cpp b/package/kodi/patches/patch-tools_depends_native_TexturePacker_src_decoder_GifHelper_cpp index 67e51c6e9..193f5987b 100644 --- a/package/kodi/patches/patch-tools_depends_native_TexturePacker_src_decoder_GifHelper_cpp +++ b/package/kodi/patches/patch-tools_depends_native_TexturePacker_src_decoder_GifHelper_cpp @@ -1,5 +1,5 @@ ---- xbmc-19.3-Matrix.orig/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp	2021-10-24 12:09:58.000000000 +0200 -+++ xbmc-19.3-Matrix/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp	2022-02-26 00:09:15.499548854 +0100 +--- xbmc-22.0a1-Piers.orig/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp	2025-08-18 23:49:12.000000000 +0200 ++++ xbmc-22.0a1-Piers/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp	2025-10-06 14:07:24.604055678 +0200  @@ -18,11 +18,11 @@    *    */ diff --git a/package/kodi/patches/patch-xbmc_dbwrappers_dataset_h b/package/kodi/patches/patch-xbmc_dbwrappers_dataset_h new file mode 100644 index 000000000..f27f92975 --- /dev/null +++ b/package/kodi/patches/patch-xbmc_dbwrappers_dataset_h @@ -0,0 +1,10 @@ +--- xbmc-22.0a1-Piers.orig/xbmc/dbwrappers/dataset.h	2025-08-18 23:49:12.000000000 +0200 ++++ xbmc-22.0a1-Piers/xbmc/dbwrappers/dataset.h	2025-10-07 06:25:46.959580300 +0200 +@@ -14,6 +14,7 @@ +  + #include "qry_dat.h" +  ++#include <cstdarg> + #include <list> + #include <map> + #include <memory> diff --git a/package/kodi/patches/patch-xbmc_platform_linux_CPUInfoLinux_cpp b/package/kodi/patches/patch-xbmc_platform_linux_CPUInfoLinux_cpp deleted file mode 100644 index 27c420df8..000000000 --- a/package/kodi/patches/patch-xbmc_platform_linux_CPUInfoLinux_cpp +++ /dev/null @@ -1,31 +0,0 @@ ---- xbmc-21.0b2-Omega.orig/xbmc/platform/linux/CPUInfoLinux.cpp	2023-12-09 22:24:46.000000000 +0100 -+++ xbmc-21.0b2-Omega/xbmc/platform/linux/CPUInfoLinux.cpp	2024-01-30 15:52:43.704683194 +0100 -@@ -19,10 +19,7 @@ - #include <sstream> - #include <vector> -  --#if (defined(__arm__) && defined(HAS_NEON)) || defined(__aarch64__) --#include <asm/hwcap.h> --#include <sys/auxv.h> --#elif defined(__i386__) || defined(__x86_64__) -+#if defined(__i386__) || defined(__x86_64__) - #include <cpuid.h> - #endif -  -@@ -279,16 +276,6 @@ CCPUInfoLinux::CCPUInfoLinux() -  -   m_cpuModel = m_cpuModel.substr(0, m_cpuModel.find(char(0))); // remove extra null terminations -  --#if defined(HAS_NEON) && defined(__arm__) --  if (getauxval(AT_HWCAP) & HWCAP_NEON) --    m_cpuFeatures |= CPU_FEATURE_NEON; --#endif -- --#if defined(HAS_NEON) && defined(__aarch64__) --  if (getauxval(AT_HWCAP) & HWCAP_ASIMD) --    m_cpuFeatures |= CPU_FEATURE_NEON; --#endif -- -   // Set MMX2 when SSE is present as SSE is a superset of MMX2 and Intel doesn't set the MMX2 cap -   if (m_cpuFeatures & CPU_FEATURE_SSE) -     m_cpuFeatures |= CPU_FEATURE_MMX2; diff --git a/package/lftp/Makefile b/package/lftp/Makefile index 993df08b3..a3706227e 100644 --- a/package/lftp/Makefile +++ b/package/lftp/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		lftp -PKG_VERSION:=		4.9.2 +PKG_VERSION:=		4.9.3  PKG_RELEASE:=		1 -PKG_HASH:=		c517c4f4f9c39bd415d7313088a2b1e313b2d386867fe40b7692b83a20f0670d +PKG_HASH:=		96e7199d7935be33cf6b1161e955b2aab40ab77ecdf2a19cea4fc1193f457edc  PKG_DESCR:=		ftp and http client  PKG_SECTION:=		net/http  PKG_DEPENDS:=		libncurses libexpat @@ -16,7 +16,10 @@ PKG_NEEDS:=		c++  PKG_URL:=		http://lftp.yar.ru/  PKG_SITES:=		http://lftp.yar.ru/ftp/ -PKG_CHOICES_LFTP:=	WITH_LIBRESSL WITH_GNUTLS WITHOUT_SSL +PKG_CHOICES_LFTP:=	WITH_OPENSSL WITH_LIBRESSL WITH_GNUTLS WITHOUT_SSL +PKGCD_WITH_OPENSSL:=	use openssl for crypto +PKGCS_WITH_OPENSSL:=	libopenssl ca-certificates +PKGCB_WITH_OPENSSL:=	openssl  PKGCD_WITH_LIBRESSL:=	use libressl for crypto  PKGCS_WITH_LIBRESSL:=	libressl ca-certificates  PKGCB_WITH_LIBRESSL:=	libressl @@ -41,6 +44,10 @@ ifeq (${ADK_PACKAGE_LFTP_WITH_GNUTLS},y)  CONFIGURE_ARGS+=	--without-openssl \  			--with-gnutls  endif +ifeq (${ADK_PACKAGE_LFTP_WITH_OPENSSL},y) +CONFIGURE_ARGS+=	--with-openssl="$(STAGING_TARGET_DIR)/usr" \ +			--without-gnutls +endif  ifeq (${ADK_PACKAGE_LFTP_WITH_LIBRESSL},y)  CONFIGURE_ARGS+=	--with-openssl="$(STAGING_TARGET_DIR)/usr" \  			--without-gnutls diff --git a/package/lftp/patches/patch-src_lftp_ssl_cc b/package/lftp/patches/patch-src_lftp_ssl_cc deleted file mode 100644 index d8569322e..000000000 --- a/package/lftp/patches/patch-src_lftp_ssl_cc +++ /dev/null @@ -1,38 +0,0 @@ ---- lftp-4.9.2.orig/src/lftp_ssl.cc	2020-01-29 21:36:37.000000000 +0100 -+++ lftp-4.9.2/src/lftp_ssl.cc	2024-02-22 14:42:11.060809468 +0100 -@@ -34,7 +34,7 @@ - #include "misc.h" - #include "network.h" - #include "buffer.h" --#if OPENSSL_VERSION_NUMBER < 0x10100000L -+#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER - #define X509_STORE_CTX_get_by_subject X509_STORE_get_by_subject - #endif - extern "C" { -@@ -775,7 +775,7 @@ error: - #elif USE_OPENSSL - //static int lftp_ssl_passwd_callback(char *buf,int size,int rwflag,void *userdata); -  --#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER -+#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined (LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000L) - // for compatibility with older versions - X509_OBJECT *X509_OBJECT_new() - { -@@ -840,7 +840,7 @@ lftp_ssl_openssl_instance::lftp_ssl_open -    ssl_ctx=SSL_CTX_new(); -    X509_set_default_verify_paths(ssl_ctx->cert); - #else --#if OPENSSL_VERSION_NUMBER < 0x10100000L -+#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER -    SSLeay_add_ssl_algorithms(); - #endif -    ssl_ctx=SSL_CTX_new(SSLv23_client_method()); -@@ -1080,7 +1080,7 @@ void lftp_ssl_openssl::copy_sid(const lf -  - const char *lftp_ssl_openssl::strerror() - { --#if OPENSSL_VERSION_NUMBER < 0x10100000L -+#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER -    SSL_load_error_strings(); - #endif -    int error=ERR_get_error(); diff --git a/package/libIDL/Makefile b/package/libIDL/Makefile index e8cb57341..d4405ed87 100644 --- a/package/libIDL/Makefile +++ b/package/libIDL/Makefile @@ -26,9 +26,6 @@ $(eval $(call HOST_template,LIBIDL,libidl,$(PKG_VERSION)-${PKG_RELEASE}))  $(eval $(call PKG_template,LIBIDL,libidl,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))  CONFIGURE_ENV+=		libIDL_cv_long_long_format=ll -ifeq ($(OS_FOR_BUILD),Darwin) -HOST_LDFLAGS+=		-liconv -endif  libidl-install:  	$(INSTALL_DIR) $(IDIR_LIBIDL)/usr/lib diff --git a/package/libXt/Makefile b/package/libXt/Makefile index e0c6e9199..3c876be2c 100644 --- a/package/libXt/Makefile +++ b/package/libXt/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libXt -PKG_VERSION:=		1.1.5 +PKG_VERSION:=		1.3.1  PKG_RELEASE:=		1 -PKG_HASH:=		b59bee38a9935565fa49dc1bfe84cb30173e2e07e1dcdf801430d4b54eb0caa3 +PKG_HASH:=		cf2212189869adb94ffd58c7d9a545a369b83d2274930bfbe148da354030b355  PKG_DESCR:=		x toolkit intrinsics libraries  PKG_SECTION:=		x11/libs  PKG_DEPENDS:=		libsm libice libuuid libx11 libxau libxdmcp libxcb @@ -24,7 +24,6 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call HOST_template,LIBXT,libxt,$(PKG_VERSION)-${PKG_RELEASE}))  $(eval $(call PKG_template,LIBXT,libxt,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) -AUTOTOOL_STYLE:=	autoreconf  HOST_STYLE:=		auto  CONFIGURE_ENV+=		CFLAGS_FOR_BUILD="$(HOST_CPPFLAGS) $(HOST_CFLAGS)"  CONFIGURE_ARGS+=	--disable-malloc0returnsnull diff --git a/package/libXt/patches/patch-util_Makefile_am b/package/libXt/patches/patch-util_Makefile_am deleted file mode 100644 index a97bc50dd..000000000 --- a/package/libXt/patches/patch-util_Makefile_am +++ /dev/null @@ -1,10 +0,0 @@ ---- libXt-1.1.3.orig/util/Makefile.am	2012-03-16 06:52:08.000000000 +0100 -+++ libXt-1.1.3/util/Makefile.am	2014-01-07 13:22:11.833722316 +0100 -@@ -10,7 +10,6 @@ EXTRA_DIST = \ - 	StrDefs.ht \ - 	string.list -  --AM_CFLAGS = $(XT_CFLAGS) - makestrs_SOURCES = makestrs.c -  -  diff --git a/package/libassuan/Makefile b/package/libassuan/Makefile index 373947719..103939dd6 100644 --- a/package/libassuan/Makefile +++ b/package/libassuan/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libassuan -PKG_VERSION:=		2.5.6 +PKG_VERSION:=		3.0.2  PKG_RELEASE:=		1 -PKG_HASH:=		e9fd27218d5394904e4e39788f9b1742711c3e6b41689a31aa3380bd5aa4f426 +PKG_HASH:=		d2931cdad266e633510f9970e1a2f346055e351bb19f9b78912475b8074c36f6  PKG_DESCR:=		implementation of assuan protocol  PKG_SECTION:=		libs/crypto  PKG_DEPENDS:=		libgpg-error diff --git a/package/libcap/Makefile b/package/libcap/Makefile index 29c417237..dcf979717 100644 --- a/package/libcap/Makefile +++ b/package/libcap/Makefile @@ -19,10 +19,6 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call HOST_template,LIBCAP,libcap,$(PKG_VERSION)-$(PKG_RELEASE)))  $(eval $(call PKG_template,LIBCAP,libcap,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) -ifeq ($(OS_FOR_BUILD),Darwin) -HOST_CFLAGS+=		-I$(STAGING_TARGET_DIR)/usr/include -endif -  HOST_STYLE:=		manual  CONFIG_STYLE:=		manual  MAKE_ENV+=		BUILD_CC="${HOST_CC}" diff --git a/package/libdisplay-info/Makefile b/package/libdisplay-info/Makefile index 9edc11c4f..c90de5b58 100644 --- a/package/libdisplay-info/Makefile +++ b/package/libdisplay-info/Makefile @@ -6,13 +6,15 @@ include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libdisplay-info  PKG_VERSION:=		0.2.0  PKG_RELEASE:=		1 -PKG_HASH:=		5a2f002a16f42dd3540c8846f80a90b8f4bdcd067a94b9d2087bc2feae974176 +PKG_HASH:=		f7331fcaf5527251b84c8fb84238d06cd2f458422ce950c80e86c72927aa8c2b  PKG_DESCR:=		edid and displayid library  PKG_SECTION:=		libs/misc -PKG_BUILDDEP:=		hwdata -PKG_SITES:=		https://gitlab.freedesktop.org/emersion/libdisplay-info/-/releases/$(PKG_VERSION)/downloads/ +PKG_BUILDDEP:=		hwdata meson-host +PKG_SITES:=		https://gitlab.freedesktop.org/emersion/libdisplay-info/-/archive/$(PKG_VERSION)/  PKG_OPTS:=		dev +DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tar.gz +  include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,LIBDISPLAY_INFO,libdisplay-info,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) diff --git a/package/libdrm/Makefile b/package/libdrm/Makefile index e5999416b..608ca2850 100644 --- a/package/libdrm/Makefile +++ b/package/libdrm/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libdrm -PKG_VERSION:=		2.4.120 +PKG_VERSION:=		2.4.124  PKG_RELEASE:=		1 -PKG_HASH:=		3bf55363f76c7250946441ab51d3a6cc0ae518055c0ff017324ab76cdefb327a +PKG_HASH:=		ac36293f61ca4aafaf4b16a2a7afff312aa4f5c37c9fbd797de9e3c0863ca379  PKG_DESCR:=		direct rendering manager library  PKG_SECTION:=		libs/video  PKG_BUILDDEP:=		meson-host libpthread-stubs cairo libpciaccess diff --git a/package/libepoxy/Makefile b/package/libepoxy/Makefile index fa224ad12..b659682bb 100644 --- a/package/libepoxy/Makefile +++ b/package/libepoxy/Makefile @@ -20,6 +20,8 @@ $(eval $(call PKG_template,LIBEPOXY,libepoxy,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG  WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj +MESON_FLAGS+=		-Dtests=false +  CONFIG_STYLE:=		meson  BUILD_STYLE:=		meson  INSTALL_STYLE:=		meson diff --git a/package/libffi/Makefile b/package/libffi/Makefile index b6dd3c851..d944700bb 100644 --- a/package/libffi/Makefile +++ b/package/libffi/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		libffi -PKG_VERSION:=		3.4.6 +PKG_VERSION:=		3.5.2  PKG_RELEASE:=		1 -PKG_HASH:=		b0dea9df23c863a7a50e825440f3ebffabd65df1497108e5d437747843895a4e +PKG_HASH:=		f3a3082a23b37c293a4fcd1053147b371f2ff91fa7ea1b2a52e335676bac82dc  PKG_DESCR:=		foreign function interface library  PKG_SECTION:=		libs/misc  HOST_BUILDDEP:=		libtool-host @@ -25,10 +25,6 @@ $(eval $(call PKG_template,LIBFFI,libffi,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEP  HOST_CONFIGURE_ARGS+=	--disable-builddir --with-pic --disable-symvers  CONFIGURE_ARGS+=	--disable-builddir --with-pic --disable-symvers -ifeq ($(ADK_PACKAGE_OPENJDK7),y) -CONFIGURE_ARGS+=	--enable-static -endif -  libffi-install:  	${INSTALL_DIR} ${IDIR_LIBFFI}/usr/lib  	${CP} ${WRKINST}/usr/lib*/libffi.so* ${IDIR_LIBFFI}/usr/lib diff --git a/package/libgcrypt/Makefile b/package/libgcrypt/Makefile index 9ed07ce9c..16275b93a 100644 --- a/package/libgcrypt/Makefile +++ b/package/libgcrypt/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libgcrypt -PKG_VERSION:=		1.10.3 +PKG_VERSION:=		1.11.2  PKG_RELEASE:=		1 -PKG_HASH:=		8b0870897ac5ac67ded568dcfadf45969cfa8a6beb0fd60af2a9eadc2a3272aa +PKG_HASH:=		6ba59dd192270e8c1d22ddb41a07d95dcdbc1f0fb02d03c4b54b235814330aac  PKG_DESCR:=		crypto library  PKG_SECTION:=		libs/crypto  PKG_DEPENDS:=		libgpg-error diff --git a/package/libgpg-error/Makefile b/package/libgpg-error/Makefile index aa139d40e..b70992ef5 100644 --- a/package/libgpg-error/Makefile +++ b/package/libgpg-error/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		libgpg-error -PKG_VERSION:=		1.47 +PKG_VERSION:=		1.55  PKG_RELEASE:=		1 -PKG_HASH:=		9e3c670966b96ecc746c28c2c419541e3bcb787d1a73930f5e5f5e1bcbbb9bdb +PKG_HASH:=		95b178148863f07d45df0cea67e880a79b9ef71f5d230baddc0071128516ef78  PKG_DESCR:=		helper library for common error codes and descriptions  PKG_SECTION:=		libs/misc  PKG_URL:=		http://www.gnupg.org/ diff --git a/package/libgtk2/Makefile b/package/libgtk2/Makefile index 073108cc9..5a85efe3e 100644 --- a/package/libgtk2/Makefile +++ b/package/libgtk2/Makefile @@ -4,14 +4,14 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		libgtk2 -PKG_VERSION:=		2.24.30 +PKG_VERSION:=		2.24.33  PKG_EXTRAVER:=		2.24  PKG_RELEASE:=		1 -PKG_HASH:=		0d15cec3b6d55c60eac205b1f3ba81a1ed4eadd9d0f8e7c508bc7065d0c4ca50 +PKG_HASH:=		ac2ac757f5942d318a311a54b0c80b5ef295f299c2a73c632f6bfb1ff49cc6da  PKG_DESCR:=		multi-platform toolkit for creating graphical user interfaces  PKG_SECTION:=		libs/misc  PKG_DEPENDS:=		glib cairo -PKG_BUILDDEP:=		glib cairo atk pango libXext renderproto libXrender +PKG_BUILDDEP:=		glib cairo pango libXext renderproto libXrender  PKG_BUILDDEP+=		gdk-pixbuf libXcomposite libXdamage libX11  PKG_NEEDS:=		c++  PKG_URL:=		http://www.gtk.org/ diff --git a/package/libgtk3/Makefile b/package/libgtk3/Makefile index e0e087dd7..62af6e0b0 100644 --- a/package/libgtk3/Makefile +++ b/package/libgtk3/Makefile @@ -4,19 +4,19 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libgtk3 -PKG_VERSION:=		3.24.31 +PKG_VERSION:=		3.24.43  PKG_EXTRAVER:=		3.24  PKG_RELEASE:=		1 -PKG_HASH:=		423c3e7fdb4c459ee889e35fd4d71fd2623562541c1041b11c07e5ad1ff10bf9 +PKG_HASH:=		7e04f0648515034b806b74ae5d774d87cffb1a2a96c468cb5be476d51bf2f3c7  PKG_DESCR:=		multi-platform toolkit for creating graphical user interfaces  PKG_SECTION:=		libs/misc  PKG_DEPENDS:=		glib cairo libxi libepoxy pango at-spi2-core  PKG_DEPENDS+=		at-spi2-atk libxext libxrender libx11 -PKG_DEPENDS+=		libxcomposite libxdamage fribidi -PKG_BUILDDEP:=		cairo atk pango libXext renderproto libXrender +PKG_DEPENDS+=		libxcomposite libxdamage fribidi libxkbcommon +PKG_BUILDDEP:=		cairo pango libXext renderproto libXrender  PKG_BUILDDEP+=		gdk-pixbuf libXcomposite libXdamage libX11 libXi  PKG_BUILDDEP+=		at-spi2-core at-spi2-atk gdk-pixbuf-host libepoxy -PKG_BUILDDEP+=		fribidi +PKG_BUILDDEP+=		fribidi libxkbcommon  PKG_NEEDS:=		c++  PKG_URL:=		http://www.gtk.org/  PKG_SITES:=		$(MASTER_SITE_GNOME:=gtk+/$(PKG_EXTRAVER)/) @@ -34,16 +34,14 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,LIBGTK3,libgtk3,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) -HOST_CFLAGS+=           -I$(STAGING_HOST_DIR)/usr/include/glib-2.0 -I$(STAGING_HOST_DIR)/usr/include/gdk-pixbuf-2.0 -HOST_LDFLAGS+=		-lgobject-2.0 -lgmodule-2.0 -pthread -lrt -lglib-2.0 -lgdk_pixbuf-2.0 -CONFIGURE_ENV+=		GLIB_COMPILE_RESOURCES=$(STAGING_HOST_DIR)/usr/bin/glib-compile-resources -CONFIGURE_ARGS+=	--disable-gtk-doc-html \ -			--disable-gtk-doc \ -			--disable-modules \ -			--disable-xinerama \ -			--disable-cups \ -			--disable-papi \ -			--enable-introspection=no +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj + +CONFIG_STYLE:=		meson +BUILD_STYLE:=		meson +INSTALL_STYLE:=		meson + +MESON_FLAGS+=		-Dwayland_backend=false \ +			-Dintrospection=false  libgtk3-install:  	$(INSTALL_DIR) $(IDIR_LIBGTK3)/usr/lib diff --git a/package/libiconv/Makefile b/package/libiconv/Makefile index 941d6a8d0..d978dbba8 100644 --- a/package/libiconv/Makefile +++ b/package/libiconv/Makefile @@ -21,8 +21,6 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call HOST_template,LIBICONV,libiconv,$(PKG_VERSION)-$(PKG_RELEASE)))  $(eval $(call PKG_template,LIBICONV,libiconv,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) -HOST_CONFIGURE_ARGS+=	--enable-static -  libiconv-install:  	$(INSTALL_DIR) $(IDIR_LIBICONV)/usr/lib  	$(CP) $(WRKINST)/usr/lib/libiconv.so* $(IDIR_LIBICONV)/usr/lib/ diff --git a/package/libinih/Makefile b/package/libinih/Makefile index d546f244a..c54a62331 100644 --- a/package/libinih/Makefile +++ b/package/libinih/Makefile @@ -32,5 +32,7 @@ libinih-install:  	$(INSTALL_DIR) $(IDIR_LIBINIH)/usr/lib  	$(CP) $(WRKINST)/usr/lib/libinih*.so* \  		$(IDIR_LIBINIH)/usr/lib +	$(CP) $(WRKINST)/usr/lib/libINIReader*.so* \ +		$(IDIR_LIBINIH)/usr/lib  include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/libinput/Makefile b/package/libinput/Makefile index 8c0c6a759..dddc4831f 100644 --- a/package/libinput/Makefile +++ b/package/libinput/Makefile @@ -4,16 +4,18 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libinput -PKG_VERSION:=		1.19.2 +PKG_VERSION:=		1.28.1  PKG_RELEASE:=		1 -PKG_HASH:=		0fc39f0af3ee1a77c60c34bc45391a4d0879169f7c0f7bbbeb5eef590b98b883 +PKG_HASH:=		a13f8c9a7d93df3c85c66afd135f0296701d8d32f911991b7aa4273fdd6a42a3  PKG_DESCR:=		input library  PKG_DEPENDS:=		mtdev libevdev libudev  PKG_BUILDDEP:=		mtdev libevdev eudev  PKG_SECTION:=		libs/misc -PKG_SITES:=		https://www.freedesktop.org/software/libinput/ +PKG_SITES:=		https://gitlab.freedesktop.org/libinput/libinput/-/archive/$(PKG_VERSION)/  PKG_OPTS:=		dev +DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tar.gz +  include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,LIBINPUT,libinput,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) diff --git a/package/libjpeg-turbo/Makefile b/package/libjpeg-turbo/Makefile index 26ddffb1e..0a74335ca 100644 --- a/package/libjpeg-turbo/Makefile +++ b/package/libjpeg-turbo/Makefile @@ -4,13 +4,13 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libjpeg-turbo -PKG_VERSION:=		3.0.3 +PKG_VERSION:=		3.1.2  PKG_RELEASE:=		1 -PKG_HASH:=		a649205a90e39a548863a3614a9576a3fb4465f8e8e66d54999f127957c25b21 +PKG_HASH:=		560f6338b547544c4f9721b18d8b87685d433ec78b3c644c70d77adad22c55e6  PKG_DESCR:=		jpeg image library  PKG_SECTION:=		libs/image -PKG_BUILDDEP:=		yasm-host -HOST_BUILDDEP:=		yasm-host +PKG_BUILDDEP:=		cmake-host yasm-host +HOST_BUILDDEP:=		cmake-host yasm-host  PKG_URL:=		http://libjpeg-turbo.org/  PKG_SITES:=		https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/  PKG_OPTS:=		dev @@ -23,6 +23,7 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call HOST_template,LIBJPEG_TURBO,libjpeg-turbo,$(PKG_VERSION)-${PKG_RELEASE}))  $(eval $(call PKG_template,LIBJPEG_TURBO,libjpeg-turbo,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) +HOST_CONFIG_STYLE:=	cmake  CONFIG_STYLE:=		cmake  libjpeg-turbo-install: diff --git a/package/libnettle/Makefile b/package/libnettle/Makefile index c9d3f38e1..75cd70ea1 100644 --- a/package/libnettle/Makefile +++ b/package/libnettle/Makefile @@ -4,13 +4,14 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libnettle -PKG_VERSION:=		3.9.1 +PKG_VERSION:=		3.10.1  PKG_RELEASE:=		1 -PKG_HASH:=		ccfeff981b0ca71bbd6fbcb054f407c60ffb644389a5be80d6716d5b550c6ce3 +PKG_HASH:=		b0fcdd7fc0cdea6e80dcf1dd85ba794af0d5b4a57e26397eee3bc193272d9132  PKG_DESCR:=		crypto library  PKG_SECTION:=		libs/crypto  PKG_DEPENDS:=		libgmp  PKG_BUILDDEP:=		gmp +HOST_BUILDDEP:=		gmp-host  PKG_URL:=		http://www.lysator.liu.se/~nisse/  PKG_SITES:=		http://www.lysator.liu.se/~nisse/archive/  PKG_OPTS:=		dev @@ -18,8 +19,10 @@ PKG_OPTS:=		dev  DISTFILES:=             nettle-${PKG_VERSION}.tar.gz  WRKDIST=		${WRKDIR}/nettle-${PKG_VERSION} +include $(ADK_TOPDIR)/mk/host.mk  include $(ADK_TOPDIR)/mk/package.mk +$(eval $(call HOST_template,LIBNETTLE,libnettle,${PKG_VERSION}-${PKG_RELEASE}))  $(eval $(call PKG_template,LIBNETTLE,libnettle,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))  CONFIGURE_ARGS+=	--disable-documentation @@ -31,4 +34,5 @@ libnettle-install:  	$(CP) $(WRKINST)/usr/lib/libhogweed.so* \  		$(IDIR_LIBNETTLE)/usr/lib +include ${ADK_TOPDIR}/mk/host-bottom.mk  include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/libnotify/Makefile b/package/libnotify/Makefile index 61581e4e5..466d6ddf3 100644 --- a/package/libnotify/Makefile +++ b/package/libnotify/Makefile @@ -4,23 +4,32 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libnotify -PKG_VERSION:=		0.4.5 -PKG_RELEASE:=		3 -PKG_HASH:=		0799db8ea1500b65a477421a8c930cc8c8b0bbc0596e55ea1601e2542f3fb0d9 +PKG_VERSION:=		0.8.6 +PKG_RELEASE:=		1 +PKG_HASH:=		c5540aaefb60e1d63b1c587c05f2284ebe72ece7d0c0e5e4a778cfd5844b6b58  PKG_DESCR:=		notify library  PKG_SECTION:=		libs/misc -PKG_BUILDDEP:=		libgtk2 dbus-glib +PKG_BUILDDEP:=		libgtk3 dbus-glib  PKG_NEEDS:=		c++ -PKG_URL:=		http://www.galago-project.org/ -PKG_SITES:=		http://www.galago-project.org/files/releases/source/libnotify/ +PKG_SITES:=		https://download.gnome.org/sources/libnotify/0.8/  PKG_OPTS:=		dev -DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz -  include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,LIBNOTIFY,libnotify,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj + +MESON_FLAGS+=		-Dtests=false \ +			-Dman=false \ +			-Dgtk_doc=false \ +			-Ddocbook_docs=disabled \ +			-Dintrospection=disabled + +CONFIG_STYLE:=		meson +BUILD_STYLE:=		meson +INSTALL_STYLE:=		meson +  libnotify-install:  	$(INSTALL_DIR) $(IDIR_LIBNOTIFY)/usr/lib  	$(CP) $(WRKINST)/usr/lib/libnotify*.so* \ diff --git a/package/libogg/Makefile b/package/libogg/Makefile index e750fb7d3..d98bb61a1 100644 --- a/package/libogg/Makefile +++ b/package/libogg/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		libogg -PKG_VERSION:=		1.3.1 +PKG_VERSION:=		1.3.6  PKG_RELEASE:=		1 -PKG_HASH:=		3a5bad78d81afb78908326d11761c0fb1a0662ee7150b6ad587cc586838cdcfa +PKG_HASH:=		5c8253428e181840cd20d41f3ca16557a9cc04bad4a3d04cce84808677fa1061  PKG_DESCR:=		ogg bitstream handling library  PKG_SECTION:=		libs/audio  PKG_URL:=		http://www.xiph.org/ogg diff --git a/package/libpciaccess/Makefile b/package/libpciaccess/Makefile index 89e388cd4..db5378c53 100644 --- a/package/libpciaccess/Makefile +++ b/package/libpciaccess/Makefile @@ -4,20 +4,24 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libpciaccess -PKG_VERSION:=		0.16 +PKG_VERSION:=		0.18.1  PKG_RELEASE:=		1 -PKG_HASH:=		84413553994aef0070cf420050aa5c0a51b1956b404920e21b81e96db6a61a27 +PKG_HASH:=		4af43444b38adb5545d0ed1c2ce46d9608cc47b31c2387fc5181656765a6fa76  PKG_DESCR:=		pci access library  PKG_SECTION:=		x11/libs -PKG_SITES:=		http://www.x.org/releases/individual/lib/ +PKG_SITES:=		http://xorg.freedesktop.org/releases/individual/lib/  PKG_OPTS:=		dev -DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz -  include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,LIBPCIACCESS,libpciaccess,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj + +CONFIG_STYLE:=		meson +BUILD_STYLE:=		meson +INSTALL_STYLE:=		meson +  libpciaccess-install:  	${INSTALL_DIR} ${IDIR_LIBPCIACCESS}/usr/lib  	${CP} ${WRKINST}/usr/lib/libpciaccess.so* \ diff --git a/package/libpsl/Makefile b/package/libpsl/Makefile new file mode 100644 index 000000000..b71f7cc29 --- /dev/null +++ b/package/libpsl/Makefile @@ -0,0 +1,32 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		libpsl +PKG_VERSION:=		0.21.5 +PKG_RELEASE:=		1 +PKG_HASH:=		1dcc9ceae8b128f3c0b3f654decd0e1e891afc6ff81098f227ef260449dae208 +PKG_DESCR:=		C library for the Public Suffix List +PKG_SECTION:=		libs/misc +PKG_SITES:=		https://github.com/rockdaboot/libpsl/releases/download/$(PKG_VERSION)/ +PKG_OPTS:=		dev + +DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tar.gz + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,LIBPSL,libpsl,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) + +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj + +CONFIG_STYLE:=		meson +BUILD_STYLE:=		meson +INSTALL_STYLE:=		meson + +libpsl-install: +	$(INSTALL_DIR) $(IDIR_LIBPSL)/usr/lib +	$(CP) $(WRKINST)/usr/lib/libpsl*.so* \ +		$(IDIR_LIBPSL)/usr/lib + +include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/libptytty/Makefile b/package/libptytty/Makefile index cb1126ce1..396e496e1 100644 --- a/package/libptytty/Makefile +++ b/package/libptytty/Makefile @@ -21,7 +21,8 @@ $(eval $(call PKG_template,LIBPTYTTY,libptytty,$(PKG_VERSION)-$(PKG_RELEASE),$(P  TARGET_CFLAGS+=		-lstdc++  CONFIG_STYLE:=		cmake  CMAKE_FLAGS+=		-DTTY_GID_SUPPORT_EXITCODE=0 \ -			-DTTY_GID_SUPPORT_EXITCODE__TRYRUN_OUTPUT=0 +			-DUTMP_SUPPORT=0 \ +			-DWTMP_SUPPORT=0 \  XAKE_FLAGS+=		VERBOSE=1  libptytty-install: diff --git a/package/libsamplerate/Makefile b/package/libsamplerate/Makefile index 0b63904b6..a6a8bbb90 100644 --- a/package/libsamplerate/Makefile +++ b/package/libsamplerate/Makefile @@ -4,17 +4,14 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libsamplerate -PKG_VERSION:=		0.1.9 +PKG_VERSION:=		0.2.2  PKG_RELEASE:=		1 -PKG_HASH:=		0a7eb168e2f21353fb6d84da152e4512126f7dc48ccb0be80578c565413444c1 +PKG_HASH:=		3258da280511d24b49d6b08615bbe824d0cacc9842b0e4caf11c52cf2b043893  PKG_DESCR:=		sample rate converter for audio  PKG_SECTION:=		libs/audio -PKG_URL:=		http://www.mega-nerd.com/SRC/ -PKG_SITES:=		http://www.mega-nerd.com/SRC/ +PKG_SITES:=		https://github.com/libsndfile/libsamplerate/releases/download/$(PKG_VERSION)/  PKG_OPTS:=		dev -DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz -  include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,LIBSAMPLERATE,libsamplerate,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) diff --git a/package/libsoup/Makefile b/package/libsoup/Makefile index e48dab11f..fc94c47f4 100644 --- a/package/libsoup/Makefile +++ b/package/libsoup/Makefile @@ -4,22 +4,28 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libsoup -PKG_VERSION:=		2.60.1 +PKG_VERSION:=		2.74.3  PKG_RELEASE:=		1 -PKG_HASH:=		023930032b20e6b14764feb847ea80d9e170622dee7370215d6feb9967b6aa9d +PKG_HASH:=		e4b77c41cfc4c8c5a035fcdc320c7bc6cfb75ef7c5a034153df1413fa1d92f13  PKG_DESCR:=		http client/server library  PKG_SECTION:=		libs/net -PKG_DEPENDS:=		libsqlite glib -PKG_BUILDDEP:=		sqlite glib -PKG_URL:=		https://wiki.gnome.org/LibSoup -PKG_SITES:=		http://ftp.gnome.org/pub/GNOME/sources/libsoup/2.60/ +PKG_DEPENDS:=		libsqlite glib libpsl +PKG_BUILDDEP:=		sqlite glib libpsl +PKG_SITES:=		http://ftp.gnome.org/pub/GNOME/sources/libsoup/2.74/  PKG_OPTS:=		dev  include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,LIBSOUP,libsoup,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) -AUTOTOOL_STYLE:=	autoreconf +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj + +MESON_FLAGS:=		-Dtests=false \ +			-Dtls_check=false \ +			-Dsysprof=disabled +CONFIG_STYLE:=		meson +BUILD_STYLE:=		meson +INSTALL_STYLE:=		meson  libsoup-install:  	$(INSTALL_DIR) $(IDIR_LIBSOUP)/usr/lib diff --git a/package/libsoup3/Makefile b/package/libsoup3/Makefile new file mode 100644 index 000000000..f7aa3fb9b --- /dev/null +++ b/package/libsoup3/Makefile @@ -0,0 +1,38 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		libsoup3 +PKG_VERSION:=		3.6.5 +PKG_RELEASE:=		1 +PKG_HASH:=		6891765aac3e949017945c3eaebd8cc8216df772456dc9f460976fbdb7ada234 +PKG_DESCR:=		http client/server library +PKG_SECTION:=		libs/net +PKG_DEPENDS:=		libsqlite glib libpsl nghttp2 +PKG_BUILDDEP:=		sqlite glib libpsl nghttp2 +PKG_SITES:=		http://ftp.gnome.org/pub/GNOME/sources/libsoup/3.6/ +PKG_OPTS:=		dev + +DISTFILES:=		libsoup-$(PKG_VERSION).tar.xz +WRKDIST=		$(WRKDIR)/libsoup-$(PKG_VERSION) + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,LIBSOUP3,libsoup3,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) + +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj + +MESON_FLAGS:=		-Dtests=false \ +			-Dtls_check=false \ +			-Dsysprof=disabled +CONFIG_STYLE:=		meson +BUILD_STYLE:=		meson +INSTALL_STYLE:=		meson + +libsoup3-install: +	$(INSTALL_DIR) $(IDIR_LIBSOUP3)/usr/lib +	$(CP) $(WRKINST)/usr/lib/libsoup*.so* \ +		$(IDIR_LIBSOUP3)/usr/lib + +include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/libsquish/Makefile b/package/libsquish/Makefile index 5ce5e6fcd..4b84d909f 100644 --- a/package/libsquish/Makefile +++ b/package/libsquish/Makefile @@ -4,16 +4,16 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libsquish -PKG_VERSION:=		1.10 +PKG_VERSION:=		1.15  PKG_RELEASE:=		1 -PKG_HASH:=		a0118a79d927058b656e94dc4ffce5da37839962e4952be1fedbbdd901b42848 +PKG_HASH:=		628796eeba608866183a61d080d46967c9dda6723bc0a3ec52324c85d2147269  PKG_DESCR:=		c++ compression library  PKG_SECTION:=		libs/misc -PKG_SITES:=		http://sources.openelec.tv/devel/ +PKG_SITES:=		http://downloads.sourceforge.net/project/libsquish/  PKG_OPTS:=		dev -DISTFILES:=             $(PKG_NAME)-$(PKG_VERSION)-openelec.tar.gz -WRKDIST=		${WRKDIR}/${PKG_NAME}-$(PKG_VERSION)-openelec +WRKDIST=		${WRKDIR}/ +DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tgz  include $(ADK_TOPDIR)/mk/package.mk diff --git a/package/libsquish/patches/patch-Makefile b/package/libsquish/patches/patch-Makefile deleted file mode 100644 index 702db40f5..000000000 --- a/package/libsquish/patches/patch-Makefile +++ /dev/null @@ -1,10 +0,0 @@ ---- libsquish-1.10-openelec.orig/Makefile	2015-01-09 09:52:04.000000000 -0600 -+++ libsquish-1.10-openelec/Makefile	2015-05-22 16:32:55.398921290 -0500 -@@ -10,6 +10,7 @@ LIB = libsquish.a - all : $(LIB) squish.pc -  - install : $(LIB) squish.pc -+	mkdir -p $(INSTALL_DIR)/include $(INSTALL_DIR)/lib/pkgconfig - 	install squish.h $(INSTALL_DIR)/include  - 	install libsquish.a $(INSTALL_DIR)/lib - 	install squish.pc $(INSTALL_DIR)/lib/pkgconfig diff --git a/package/libtasn1/Makefile b/package/libtasn1/Makefile index e91f75001..468ba9145 100644 --- a/package/libtasn1/Makefile +++ b/package/libtasn1/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libtasn1 -PKG_VERSION:=		4.19.0 +PKG_VERSION:=		4.20.0  PKG_RELEASE:=		1 -PKG_HASH:=		1613f0ac1cf484d6ec0ce3b8c06d56263cc7242f1c23b30d82d23de345a63f7a +PKG_HASH:=		92e0e3bd4c02d4aeee76036b2ddd83f0c732ba4cda5cb71d583272b23587a76c  PKG_DESCR:=		asn.1 and der structures manipulation library  PKG_SECTION:=		libs/crypto  PKG_URL:=		http://www.gnupg.org/ @@ -15,8 +15,10 @@ PKG_OPTS:=		dev  DISTFILES:=             $(PKG_NAME)-$(PKG_VERSION).tar.gz +include $(ADK_TOPDIR)/mk/host.mk  include $(ADK_TOPDIR)/mk/package.mk +$(eval $(call HOST_template,LIBTASN1,libtasn1,${PKG_VERSION}-${PKG_RELEASE}))  $(eval $(call PKG_template,LIBTASN1,libtasn1,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))  CONFIGURE_ARGS+=	--disable-gtk-doc-html \ @@ -26,4 +28,5 @@ libtasn1-install:  	$(INSTALL_DIR) $(IDIR_LIBTASN1)/usr/lib  	$(CP) $(WRKINST)/usr/lib/libtasn1.so* $(IDIR_LIBTASN1)/usr/lib +include ${ADK_TOPDIR}/mk/host-bottom.mk  include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/libtheora/Makefile b/package/libtheora/Makefile index a49ce0c81..c74f07dca 100644 --- a/package/libtheora/Makefile +++ b/package/libtheora/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libtheora -PKG_VERSION:=		1.1.1 -PKG_RELEASE:=		2 -PKG_HASH:=		b6ae1ee2fa3d42ac489287d3ec34c5885730b1296f0801ae577a35193d3affbc +PKG_VERSION:=		1.2.0 +PKG_RELEASE:=		1 +PKG_HASH:=		279327339903b544c28a92aeada7d0dcfd0397b59c2f368cc698ac56f515906e  PKG_DESCR:=		open source video codec library  PKG_SECTION:=		libs/video  PKG_DEPENDS:=		libogg libvorbis @@ -15,7 +15,7 @@ PKG_URL:=		http://www.theora.org/  PKG_SITES:=		http://downloads.xiph.org/releases/theora/  PKG_OPTS:=		dev -DISTFILES:=             ${PKG_NAME}-${PKG_VERSION}.tar.bz2 +DISTFILES:=             ${PKG_NAME}-${PKG_VERSION}.tar.gz  include $(ADK_TOPDIR)/mk/package.mk diff --git a/package/libtheora/patches/patch-Makefile_in b/package/libtheora/patches/patch-Makefile_in deleted file mode 100644 index 41162985c..000000000 --- a/package/libtheora/patches/patch-Makefile_in +++ /dev/null @@ -1,20 +0,0 @@ ---- libtheora-1.1.1.orig/Makefile.in	2009-10-01 20:04:07.000000000 +0200 -+++ libtheora-1.1.1/Makefile.in	2011-09-18 18:38:53.551740404 +0200 -@@ -164,7 +164,7 @@ AUTOMAKE_OPTIONS = foreign 1.6 dist-zip  - @THEORA_ENABLE_EXAMPLES_TRUE@EXAMPLES_DIR = examples - @THEORA_ENABLE_EXAMPLES_FALSE@EXAMPLES_DIR =  -  --SUBDIRS = lib include doc tests m4 $(EXAMPLES_DIR) -+SUBDIRS = lib include m4 $(EXAMPLES_DIR) -  - # we include the whole debian/ dir in EXTRA_DIST because there's a problem - # with autotools and HFS+ MacOSX file systems that caused debian/Makefile.am -@@ -200,7 +200,7 @@ DIST_COMMON = README AUTHORS COPYING Mak - 	missing mkinstalldirs theora-uninstalled.pc.in theora.pc.in \ - 	theoradec-uninstalled.pc.in theoradec.pc.in \ - 	theoraenc-uninstalled.pc.in theoraenc.pc.in --DIST_SUBDIRS = lib include doc tests m4 examples -+DIST_SUBDIRS = lib include m4 examples - all: config.h - 	$(MAKE) $(AM_MAKEFLAGS) all-recursive -  diff --git a/package/libtiff/Makefile b/package/libtiff/Makefile index 282f1befc..8f9ae30b2 100644 --- a/package/libtiff/Makefile +++ b/package/libtiff/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		tiff -PKG_VERSION:=		4.3.0 +PKG_VERSION:=		4.7.1  PKG_RELEASE:=		1 -PKG_HASH:=		0e46e5acb087ce7d1ac53cf4f56a09b221537fc86dfc5daaad1c2e89e1b37ac8 +PKG_HASH:=		f698d94f3103da8ca7438d84e0344e453fe0ba3b7486e04c5bf7a9a3fabe9b69  PKG_DESCR:=		library for reading/writing tiff images  PKG_SECTION:=		libs/image  PKG_NEEDS:=		c++ @@ -18,12 +18,15 @@ PKG_OPTS:=		dev  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz +include ${ADK_TOPDIR}/mk/host.mk  include ${ADK_TOPDIR}/mk/package.mk +$(eval $(call HOST_template,LIBTIFF,libtiff,${PKG_VERSION}-${PKG_RELEASE}))  $(eval $(call PKG_template,LIBTIFF,libtiff,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))  libtiff-install:  	${INSTALL_DIR} ${IDIR_LIBTIFF}/usr/lib  	${CP} ${WRKINST}/usr/lib/libtiff.so* ${IDIR_LIBTIFF}/usr/lib/ +include ${ADK_TOPDIR}/mk/host-bottom.mk  include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/libtirpc/Makefile b/package/libtirpc/Makefile index 9e5997350..1d808d66a 100644 --- a/package/libtirpc/Makefile +++ b/package/libtirpc/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		libtirpc -PKG_VERSION:=		1.3.5 +PKG_VERSION:=		1.3.6  PKG_RELEASE:=		1 -PKG_HASH:=		9b31370e5a38d3391bf37edfa22498e28fe2142467ae6be7a17c9068ec0bf12f +PKG_HASH:=		bbd26a8f0df5690a62a47f6aa30f797f3ef8d02560d1bc449a83066b5a1d3508  PKG_DESCR:=		transport independent rpc library  PKG_SECTION:=		libs/net  PKG_URL:=		http://sourceforge.net/projects/libtirpc/ diff --git a/package/libtirpc/patches/patch-src_auth_none_c b/package/libtirpc/patches/patch-src_auth_none_c new file mode 100644 index 000000000..765711342 --- /dev/null +++ b/package/libtirpc/patches/patch-src_auth_none_c @@ -0,0 +1,11 @@ +--- libtirpc-1.3.6.orig/src/auth_none.c	2024-10-17 09:50:55.000000000 +0200 ++++ libtirpc-1.3.6/src/auth_none.c	2025-04-30 13:30:55.736451017 +0200 +@@ -62,7 +62,7 @@ static bool_t authnone_validate (AUTH *, + static bool_t authnone_refresh (AUTH *, void *); + static void authnone_destroy (AUTH *); +  +-extern bool_t xdr_opaque_auth(); ++extern bool_t xdr_opaque_auth(XDR *, struct opaque_auth *); +  + static struct auth_ops *authnone_ops(); +  diff --git a/package/libtirpc/patches/patch-src_auth_time_c b/package/libtirpc/patches/patch-src_auth_time_c new file mode 100644 index 000000000..67bfd0e80 --- /dev/null +++ b/package/libtirpc/patches/patch-src_auth_time_c @@ -0,0 +1,20 @@ +--- libtirpc-1.3.6.orig/src/auth_time.c	2024-10-17 09:50:55.000000000 +0200 ++++ libtirpc-1.3.6/src/auth_time.c	2025-04-30 13:33:25.507704020 +0200 +@@ -248,7 +248,7 @@ __rpc_get_time_offset(td, srv, thost, ua + 	char			ut[64], ipuaddr[64]; + 	endpoint		teps[32]; + 	nis_server		tsrv; +-	void			(*oldsig)() = NULL; /* old alarm handler */ ++	void			(*oldsig)(int) = NULL; /* old alarm handler */ + 	struct sockaddr_in	sin; + 	int			s = RPC_ANYSOCK; + 	socklen_t len; +@@ -417,7 +417,7 @@ __rpc_get_time_offset(td, srv, thost, ua + 		} else { + 			int res; +  +-			oldsig = (void (*)())signal(SIGALRM, alarm_hndler); ++			oldsig = (void (*)(int))signal(SIGALRM, alarm_hndler); + 			saw_alarm = 0; /* global tracking the alarm */ + 			alarm(20); /* only wait 20 seconds */ + 			res = connect(s, (struct sockaddr *)&sin, sizeof(sin)); diff --git a/package/libtirpc/patches/patch-src_getpublickey_c b/package/libtirpc/patches/patch-src_getpublickey_c new file mode 100644 index 000000000..637d6be22 --- /dev/null +++ b/package/libtirpc/patches/patch-src_getpublickey_c @@ -0,0 +1,11 @@ +--- libtirpc-1.3.6.orig/src/getpublickey.c	2024-10-17 09:50:55.000000000 +0200 ++++ libtirpc-1.3.6/src/getpublickey.c	2025-04-30 13:30:55.736451017 +0200 +@@ -52,7 +52,7 @@ + /* +  * Hack to let ypserv/rpc.nisd use AUTH_DES. +  */ +-int (*__getpublickey_LOCAL)() = 0; ++int (*__getpublickey_LOCAL)(const char *, char *) = 0; +  + /* +  * Get somebody's public key diff --git a/package/libtirpc/patches/patch-src_key_call_c b/package/libtirpc/patches/patch-src_key_call_c new file mode 100644 index 000000000..8a1c12921 --- /dev/null +++ b/package/libtirpc/patches/patch-src_key_call_c @@ -0,0 +1,15 @@ +--- libtirpc-1.3.6.orig/src/key_call.c	2024-10-17 09:50:55.000000000 +0200 ++++ libtirpc-1.3.6/src/key_call.c	2025-04-30 13:33:25.507704020 +0200 +@@ -72,9 +72,9 @@ +  * implementations of these functions, and to call those in key_call(). +  */ +  +-cryptkeyres *(*__key_encryptsession_pk_LOCAL)() = 0; +-cryptkeyres *(*__key_decryptsession_pk_LOCAL)() = 0; +-des_block *(*__key_gendes_LOCAL)() = 0; ++cryptkeyres *(*__key_encryptsession_pk_LOCAL)(uid_t, char *) = 0; ++cryptkeyres *(*__key_decryptsession_pk_LOCAL)(uid_t, char *) = 0; ++des_block *(*__key_gendes_LOCAL)(uid_t, char *) = 0; +  + static int key_call( u_long, xdrproc_t, void *, xdrproc_t, void *); +  diff --git a/package/libtirpc/patches/patch-src_svc_auth_none_c b/package/libtirpc/patches/patch-src_svc_auth_none_c new file mode 100644 index 000000000..c21c67692 --- /dev/null +++ b/package/libtirpc/patches/patch-src_svc_auth_none_c @@ -0,0 +1,13 @@ +--- libtirpc-1.3.6.orig/src/svc_auth_none.c	2024-10-17 09:50:55.000000000 +0200 ++++ libtirpc-1.3.6/src/svc_auth_none.c	2025-04-30 13:30:55.736451017 +0200 +@@ -37,8 +37,8 @@ +  + #include <rpc/rpc.h> +  +-static bool_t	svcauth_none_destroy(); +-static bool_t   svcauth_none_wrap(); ++static bool_t	svcauth_none_destroy(SVCAUTH *); ++static bool_t   svcauth_none_wrap(SVCAUTH *, XDR *, bool_t (*)(XDR *, ...), char *); +  + struct svc_auth_ops svc_auth_none_ops = { + 	svcauth_none_wrap, diff --git a/package/libunistring/Makefile b/package/libunistring/Makefile index 46b83438a..a6ea2f4b2 100755 --- a/package/libunistring/Makefile +++ b/package/libunistring/Makefile @@ -13,12 +13,15 @@ PKG_URL:=		http://www.gnu.org/software/libunistring/  PKG_SITES:=		${MASTER_SITE_GNU:=libunistring/}  PKG_OPTS:=		dev +include $(ADK_TOPDIR)/mk/host.mk  include ${ADK_TOPDIR}/mk/package.mk +$(eval $(call HOST_template,LIBUNISTRING,libunistring,${PKG_VERSION}-${PKG_RELEASE}))  $(eval $(call PKG_template,LIBUNISTRING,libunistring,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))  libunistring-install:  	${INSTALL_DIR} ${IDIR_LIBUNISTRING}/usr/lib  	${CP} ${WRKINST}/usr/lib/libunistring.so* ${IDIR_LIBUNISTRING}/usr/lib +include ${ADK_TOPDIR}/mk/host-bottom.mk  include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/libvorbis/Makefile b/package/libvorbis/Makefile index 163a030a3..4ef067c3a 100644 --- a/package/libvorbis/Makefile +++ b/package/libvorbis/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		libvorbis -PKG_VERSION:=		1.3.5 +PKG_VERSION:=		1.3.7  PKG_RELEASE:=		1 -PKG_HASH:=		54f94a9527ff0a88477be0a71c0bab09a4c3febe0ed878b24824906cd4b0e1d1 +PKG_HASH:=		b33cc4934322bcbf6efcbacf49e3ca01aadbea4114ec9589d1b1e9d20f72954b  PKG_DESCR:=		vorbis general audio compression codec library  PKG_SECTION:=		libs/audio  PKG_BUILDDEP:=		libogg diff --git a/package/libvpx/Makefile b/package/libvpx/Makefile index 7f31d719c..a4dd44e9d 100644 --- a/package/libvpx/Makefile +++ b/package/libvpx/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libvpx -PKG_VERSION:=		1.14.0 +PKG_VERSION:=		1.15.2  PKG_RELEASE:=		1 -PKG_HASH:=		5f21d2db27071c8a46f1725928a10227ae45c5cd1cad3727e4aafbe476e321fa +PKG_HASH:=		26fcd3db88045dee380e581862a6ef106f49b74b6396ee95c2993a260b4636aa  PKG_DESCR:=		vp8/vp9 codec library  PKG_SECTION:=		libs/video  PKG_BUILDDEP:=		yasm-host @@ -20,7 +20,7 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,LIBVPX,libvpx,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) -CONFIGURE_ENV+=		LD=$(TARGET_CC) +CONFIGURE_ENV+=		LD="$(TARGET_CC)"  CONFIG_STYLE:=		minimal  ifeq ($(ADK_TARGET_ARCH_AARCH64),y) diff --git a/package/libwebp/Makefile b/package/libwebp/Makefile index d894f3831..4f848ee5f 100644 --- a/package/libwebp/Makefile +++ b/package/libwebp/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libwebp -PKG_VERSION:=		1.2.2 +PKG_VERSION:=		1.6.0  PKG_RELEASE:=		1 -PKG_HASH:=		51e9297aadb7d9eb99129fe0050f53a11fcce38a0848fb2b0389e385ad93695e +PKG_HASH:=		93a852c2b3efafee3723efd4636de855b46f9fe1efddd607e1f42f60fc8f2136  PKG_DESCR:=		new image format for the web  PKG_SECTION:=		libs/image  PKG_BUILDDEP:=		cmake-host @@ -19,9 +19,15 @@ DISTFILES:=		v${PKG_VERSION}.tar.gz  include $(ADK_TOPDIR)/mk/package.mk  CONFIG_STYLE:=		cmake +CMAKE_FLAGS+=		-DBUILD_SHARED_LIBS=ON  $(eval $(call PKG_template,LIBWEBP,libwebp,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))  libwebp-install: +	$(INSTALL_DIR) $(IDIR_LIBWEBP)/usr/lib +	$(CP) $(WRKINST)/usr/lib/libwebp*so* \ +		$(IDIR_LIBWEBP)/usr/lib +	$(CP) $(WRKINST)/usr/lib/libsharpyuv*so* \ +		$(IDIR_LIBWEBP)/usr/lib  include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/libwpe/Makefile b/package/libwpe/Makefile new file mode 100644 index 000000000..b876264c0 --- /dev/null +++ b/package/libwpe/Makefile @@ -0,0 +1,30 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		libwpe +PKG_VERSION:=		1.16.3 +PKG_RELEASE:=		1 +PKG_HASH:=		c880fa8d607b2aa6eadde7d6d6302b1396ebc38368fe2332fa20e193c7ee1420 +PKG_DESCR:=		general purpose library for wpe +PKG_SECTION:=		libs/misc +PKG_DEPENDS:=		libxkbcommon +PKG_BUILDDEP:=		libxkbcommon +PKG_URL:=		https://wpewebkit.org +PKG_SITES:=		https://wpewebkit.org/releases/ +PKG_OPTS:=		dev + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,LIBWPE,libwpe,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) + +CONFIG_STYLE:=		cmake +CMAKE_FLAGS+=		-DCMAKE_POLICY_VERSION_MINIMUM=3.5 + +libwpe-install: +	$(INSTALL_DIR) $(IDIR_LIBWPE)/usr/lib +	$(CP) $(WRKINST)/usr/lib/libwpe*.so* \ +		$(IDIR_LIBWPE)/usr/lib + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/libx264/Makefile b/package/libx264/Makefile index 394cbcd82..83fdb14e0 100644 --- a/package/libx264/Makefile +++ b/package/libx264/Makefile @@ -4,7 +4,7 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libx264 -PKG_VERSION:=		7d0ff22e8c96de126be9d3de4952edd6d1b75a8c +PKG_VERSION:=		0480cb05fa188d37ae87e8f4fd8f1aea3711f7ee  PKG_RELEASE:=		1  PKG_GIT:=		hash  PKG_DESCR:=		h264 encoding library @@ -13,16 +13,16 @@ PKG_URL:=		http://www.videolan.org/developers/x264.html  PKG_SITES:=		http://git.videolan.org/git/x264.git  PKG_OPTS:=		dev +DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tar.gz +  include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,LIBX264,libx264,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))  CONFIG_STYLE:=		minimal -ifeq ($(ADK_TARGET_SYSTEM_SHARP_ZAURUS),y) -CONFIGURE_ARGS+=	--disable-asm -endif -CONFIGURE_ARGS+=	--disable-cli \ +CONFIGURE_ARGS+=	--disable-asm \ +			--disable-cli \  			--disable-opencl \  			--enable-shared \  			--prefix=/usr \ diff --git a/package/libx265/Makefile b/package/libx265/Makefile index bde8655cd..d7834d365 100644 --- a/package/libx265/Makefile +++ b/package/libx265/Makefile @@ -4,8 +4,8 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libx265 -PKG_VERSION:=		3.2 -PKG_HASH:=		364d79bcd56116a9e070fdeb1d9d2aaef1a786b4970163fb56ff0991a183133b +PKG_VERSION:=		4.1 +PKG_HASH:=		a31699c6a89806b74b0151e5e6a7df65de4b49050482fe5ebf8a4379d7af8f29  PKG_RELEASE:=		1  PKG_DESCR:=		h265 encoding library  PKG_SECTION:=		libs/video diff --git a/package/libx265/patches/patch-source_CMakeLists_txt b/package/libx265/patches/patch-source_CMakeLists_txt new file mode 100644 index 000000000..239456945 --- /dev/null +++ b/package/libx265/patches/patch-source_CMakeLists_txt @@ -0,0 +1,18 @@ +--- x265_4.1.orig/source/CMakeLists.txt	2024-11-22 13:07:34.000000000 +0100 ++++ x265_4.1/source/CMakeLists.txt	2025-10-05 03:09:19.216070894 +0200 +@@ -6,15 +6,9 @@ if(NOT CMAKE_BUILD_TYPE) +         FORCE) + endif() + message(STATUS "cmake version ${CMAKE_VERSION}") +-if(POLICY CMP0025) +-    cmake_policy(SET CMP0025 OLD) # report Apple's Clang as just Clang +-endif() + if(POLICY CMP0042) +     cmake_policy(SET CMP0042 NEW) # MACOSX_RPATH + endif() +-if(POLICY CMP0054) +-    cmake_policy(SET CMP0054 OLD) # Only interpret if() arguments as variables or keywords when unquoted +-endif() +  + project (x265) + cmake_minimum_required (VERSION 2.8.8) # OBJECT libraries require 2.8.8 diff --git a/package/libxcb/Makefile b/package/libxcb/Makefile index 5dbd1b4b5..cc42bbc74 100644 --- a/package/libxcb/Makefile +++ b/package/libxcb/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libxcb -PKG_VERSION:=		1.16 +PKG_VERSION:=		1.17.0  PKG_RELEASE:=		1 -PKG_HASH:=		bc0f75f84b28e6496a19a1d094d7e47def861a50cb7cce5b23b62eecdc2a4479 +PKG_HASH:=		2c69287424c9e2128cb47ffe92171e10417041ec2963bceafb65cb3fcf8f0b85  PKG_DESCR:=		interface to the x window system protocol  PKG_SECTION:=		x11/libs  PKG_BUILDDEP:=		python3 libpthread-stubs libxslt libXau xcb-proto diff --git a/package/libxkbcommon/Makefile b/package/libxkbcommon/Makefile index 1650043a9..f1ffa28dd 100644 --- a/package/libxkbcommon/Makefile +++ b/package/libxkbcommon/Makefile @@ -4,12 +4,13 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libxkbcommon -PKG_VERSION:=		1.5.0 +PKG_VERSION:=		1.7.0  PKG_RELEASE:=		1 -PKG_HASH:=		560f11c4bbbca10f495f3ef7d3a6aa4ca62b4f8fb0b52e7d459d18a26e46e017 +PKG_HASH:=		65782f0a10a4b455af9c6baab7040e2f537520caa2ec2092805cdfd36863b247  PKG_DESCR:=		library for handling of keyboard descriptions  PKG_SECTION:=		libs/misc -PKG_BUILDDEP:=		meson-host +PKG_DEPENDS:=		wayland +PKG_BUILDDEP:=		meson-host wayland wayland-protocols libxcb  PKG_SITES:=		https://xkbcommon.org/download/  PKG_OPTS:=		dev @@ -18,7 +19,7 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,LIBXKBCOMMON,libxkbcommon,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))  MESON_FLAGS+=		-Denable-docs=false \ -			-Denable-wayland=false \ +			-Denable-wayland=true \  			-Dxkb-config-root=/usr/share/X11/xkb  WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj diff --git a/package/libxkbfile/Makefile b/package/libxkbfile/Makefile index 42812796d..e4391eddd 100644 --- a/package/libxkbfile/Makefile +++ b/package/libxkbfile/Makefile @@ -15,12 +15,15 @@ PKG_OPTS:=		dev  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz +include $(ADK_TOPDIR)/mk/host.mk  include $(ADK_TOPDIR)/mk/package.mk +$(eval $(call HOST_template,LIBXKBFILE,libxkbfile,${PKG_VERSION}-${PKG_RELEASE}))  $(eval $(call PKG_template,LIBXKBFILE,libxkbfile,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))  libxkbfile-install:  	${INSTALL_DIR} ${IDIR_LIBXKBFILE}/usr/lib  	${CP} ${WRKINST}/usr/lib/libxkbfile.so* ${IDIR_LIBXKBFILE}/usr/lib +include ${ADK_TOPDIR}/mk/host-bottom.mk  include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/libxml2/Makefile b/package/libxml2/Makefile index 078788d7e..5a7c744cb 100644 --- a/package/libxml2/Makefile +++ b/package/libxml2/Makefile @@ -4,16 +4,16 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		libxml2 -PKG_VERSION:=		2.10.3 +PKG_VERSION:=		2.15.1  PKG_RELEASE:=		1 -PKG_HASH:=		5d2cc3d78bec3dbe212a9d7fa629ada25a7da928af432c93060ff5c17ee28a9c +PKG_HASH:=		c008bac08fd5c7b4a87f7b8a71f283fa581d80d80ff8d2efd3b26224c39bc54c  PKG_DESCR:=		xml parser and toolkit  PKG_SECTION:=		libs/data  PKG_DEPENDS:=		zlib  PKG_BUILDDEP:=		libxml2-host python3 zlib  HOST_BUILDDEP:=		python3-host  PKG_URL:=		http://www.xmlsoft.org/ -PKG_SITES:=		https://download.gnome.org/sources/libxml2/2.10/ +PKG_SITES:=		https://download.gnome.org/sources/libxml2/2.15/  PKG_OPTS:=		dev  include $(ADK_TOPDIR)/mk/host.mk diff --git a/package/libxslt/Makefile b/package/libxslt/Makefile index 3c2522122..0f698eba8 100644 --- a/package/libxslt/Makefile +++ b/package/libxslt/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		libxslt -PKG_VERSION:=		1.1.38 +PKG_VERSION:=		1.1.43  PKG_RELEASE:=		1 -PKG_HASH:=		1f32450425819a09acaff2ab7a5a7f8a2ec7956e505d7beeb45e843d0e1ecab1 +PKG_HASH:=		5a3d6b383ca5afc235b171118e90f5ff6aa27e9fea3303065231a6d403f0183a  PKG_DESCR:=		xslt library  PKG_SECTION:=		libs/data  PKG_DEPENDS:=		libxml2 @@ -28,7 +28,6 @@ $(eval $(call HOST_template,LIBXSLT,libxslt,${PKG_VERSION}-${PKG_RELEASE}))  $(eval $(call PKG_template,LIBXSLT,libxslt,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))  $(eval $(call PKG_template,XSLTPROC,xsltproc,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_XSLTPROC},${PKGSC_XSLTPROC})) -#AUTOTOOL_STYLE:=	autoreconf  HOST_LDFLAGS+=		-lxml2  HOST_CONFIGURE_ARGS+=	--without-python \  			--without-crypto \ diff --git a/package/linux-atm/Makefile b/package/linux-atm/Makefile deleted file mode 100644 index 276b63eaa..000000000 --- a/package/linux-atm/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include ${ADK_TOPDIR}/rules.mk - -PKG_NAME:=		linux-atm -PKG_VERSION:=		2.5.2 -PKG_RELEASE:=		1 -PKG_HASH:=		9645481a2b16476b59220aa2d6bc5bc41043f291326c9b37581018fbd16dd53a -PKG_DESCR:=		atm library -PKG_SECTION:=		libs/net -PKG_BUILDDEP:=		flex-host bison-host -PKG_URL:=		http://linux-atm.sourceforge.net/ -PKG_SITES:=		${MASTER_SITE_SOURCEFORGE:=linux-atm/} -PKG_NOPARALLEL:=	1 -PKG_LIBNAME:=		libatm -PKG_OPTS:=		dev - -DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tar.gz - -PKG_SUBPKGS:=		LIBATM BR2684CTL -PKGSD_BR2684CTL:=	br2684ctl ATM utility -PKGSS_BR2684CTL:=	libatm -PKGSC_BR2684CTL:=	net/route - -include ${ADK_TOPDIR}/mk/package.mk - -$(eval $(call PKG_template,LIBATM,libatm,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) -$(eval $(call PKG_template,BR2684CTL,br2684ctl,${PKG_VERSION}-${PKG_RELEASE},${PKGSS_BR2684CTL},${PKGSD_BR2684CTL},${PKGSC_BR2684CTL})) - -libatm-install: -	${INSTALL_DIR} ${IDIR_LIBATM}/usr/lib -	${CP} ${WRKINST}/usr/lib/libatm.so* ${IDIR_LIBATM}/usr/lib - -br2684ctl-install: -	${INSTALL_DIR} ${IDIR_BR2684CTL}/usr/sbin -	${CP} ${WRKINST}/usr/sbin/br2684ctl ${IDIR_BR2684CTL}/usr/sbin - -include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/linux-atm/files/br2684.hotplug b/package/linux-atm/files/br2684.hotplug deleted file mode 100644 index 242e7e515..000000000 --- a/package/linux-atm/files/br2684.hotplug +++ /dev/null @@ -1,19 +0,0 @@ -[ "${INTERFACE%%[0-9]*}" = "atm" ] && { -	case "$ACTION" in -		register) -			[ "$pppoe_atm" = 1 ] && { -				case "$atm_encaps" in -					0|vc) ENCAPS=0 ;; -					1|llc) ENCAPS=1 ;; -					*) ENCAPS=0 ;; -				esac -				insmod br2684 2>&- >&- -				br2684ctl -c0 -e${ENCAPS} -a${atm_vpi:-8}.${atm_vci:-35} & -			} -		;; -		unregister) -			killall br2684ctl 2>&- >&- -			rmmod br2684 -		;; -	esac -} diff --git a/package/linux-atm/patches/patch-src_Makefile_am b/package/linux-atm/patches/patch-src_Makefile_am deleted file mode 100644 index 378b4ca16..000000000 --- a/package/linux-atm/patches/patch-src_Makefile_am +++ /dev/null @@ -1,7 +0,0 @@ ---- linux-atm-2.5.1.orig/src/Makefile.am	2009-08-03 22:36:56.000000000 +0200 -+++ linux-atm-2.5.1/src/Makefile.am	2020-09-14 15:09:51.650818873 +0200 -@@ -1,3 +1 @@ --SUBDIRS = include lib test debug qgen q2931 saal sigd maint arpd ilmid man led lane \ --		mpoad oamd switch config extra br2684 -- -+SUBDIRS = include lib br2684ctl diff --git a/package/linux-atm/patches/patch-src_Makefile_in b/package/linux-atm/patches/patch-src_Makefile_in deleted file mode 100644 index 17a162daa..000000000 --- a/package/linux-atm/patches/patch-src_Makefile_in +++ /dev/null @@ -1,11 +0,0 @@ ---- linux-atm-2.5.2.orig/src/Makefile.in	2010-12-28 17:06:09.000000000 +0100 -+++ linux-atm-2.5.2/src/Makefile.in	2020-09-14 15:27:36.454621754 +0200 -@@ -215,7 +215,7 @@ target_vendor = @target_vendor@ - top_build_prefix = @top_build_prefix@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ --SUBDIRS = include lib test debug qgen q2931 saal sigd maint arpd ilmid man led lane \ -+SUBDIRS = include lib debug qgen q2931 saal sigd ilmid led lane \ - 		mpoad oamd switch config extra br2684 -  - all: all-recursive diff --git a/package/linux-atm/patches/patch-src_sigd_Makefile_in b/package/linux-atm/patches/patch-src_sigd_Makefile_in deleted file mode 100644 index 62f0e5424..000000000 --- a/package/linux-atm/patches/patch-src_sigd_Makefile_in +++ /dev/null @@ -1,11 +0,0 @@ ---- linux-atm-2.5.2.orig/src/sigd/Makefile.in	2010-12-28 17:06:11.000000000 +0100 -+++ linux-atm-2.5.2/src/sigd/Makefile.in	2020-09-14 15:22:00.557233015 +0200 -@@ -245,7 +245,7 @@ atmsigd_XTRAS = mess.o $(top_builddir)/s - 			$(top_builddir)/src/lib/libatm.la \ - 			$(top_builddir)/src/saal/libsaal.a -  --atmsigd_LDADD = $(atmsigd_XTRAS) -lfl -+atmsigd_LDADD = $(atmsigd_XTRAS) - atmsigd_DEPENDENCIES = mess.c $(atmsigd_XTRAS) - CLEANFILES = mess.c - sysconf_DATA = atmsigd.conf diff --git a/package/linux-atm/patches/patch-src_sigd_cfg_l_l b/package/linux-atm/patches/patch-src_sigd_cfg_l_l deleted file mode 100644 index 38bde1e58..000000000 --- a/package/linux-atm/patches/patch-src_sigd_cfg_l_l +++ /dev/null @@ -1,10 +0,0 @@ ---- linux-atm-2.5.1.orig/src/sigd/cfg_l.l	2004-09-25 13:25:48.000000000 +0200 -+++ linux-atm-2.5.1/src/sigd/cfg_l.l	2009-12-17 16:26:08.528422011 +0100 -@@ -16,6 +16,7 @@ -  - #include "cfg_y.h" -  -+int yywrap(void) { return 1; } -  - static int lineno = 1; - static int token; /* f@#%ing flex doesn't grok return after BEGIN */ diff --git a/package/linux-atm/patches/patch-src_switch_Makefile_in b/package/linux-atm/patches/patch-src_switch_Makefile_in deleted file mode 100644 index 0aabc8b69..000000000 --- a/package/linux-atm/patches/patch-src_switch_Makefile_in +++ /dev/null @@ -1,11 +0,0 @@ ---- linux-atm-2.5.2.orig/src/switch/Makefile.in	2010-12-28 17:06:11.000000000 +0100 -+++ linux-atm-2.5.2/src/switch/Makefile.in	2020-09-14 15:22:00.585234798 +0200 -@@ -250,7 +250,7 @@ target_vendor = @target_vendor@ - top_build_prefix = @top_build_prefix@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ --SUBDIRS = . debug tcp -+SUBDIRS = . tcp - noinst_LIBRARIES = libsw.a - swc_SOURCES = swc.c swc.h - swc_LDADD = $(top_builddir)/src/lib/libatm.la diff --git a/package/linux-atm/patches/patch-src_switch_cfg_l_l b/package/linux-atm/patches/patch-src_switch_cfg_l_l deleted file mode 100644 index ec00bc66b..000000000 --- a/package/linux-atm/patches/patch-src_switch_cfg_l_l +++ /dev/null @@ -1,10 +0,0 @@ ---- linux-atm-2.5.1.orig/src/switch/cfg_l.l	2001-10-10 00:33:08.000000000 +0200 -+++ linux-atm-2.5.1/src/switch/cfg_l.l	2009-12-17 16:37:59.408538574 +0100 -@@ -15,6 +15,7 @@ -  - #include "cfg_y.h" -  -+int yywrap(void) { return 1; } -  - static int lineno = 1; - static int token; /* f@#%ing flex doesn't grok return after BEGIN */ diff --git a/package/linux-atm/patches/patch-src_switch_debug_Makefile_in b/package/linux-atm/patches/patch-src_switch_debug_Makefile_in deleted file mode 100644 index b7e08da25..000000000 --- a/package/linux-atm/patches/patch-src_switch_debug_Makefile_in +++ /dev/null @@ -1,11 +0,0 @@ ---- linux-atm-2.5.2.orig/src/switch/debug/Makefile.in	2010-12-28 17:06:11.000000000 +0100 -+++ linux-atm-2.5.2/src/switch/debug/Makefile.in	2020-09-14 15:22:00.573234034 +0200 -@@ -200,7 +200,7 @@ sw_debug_SOURCES = debug.c - sw_debug_XTRAS = $(top_builddir)/src/switch/libsw.a \ - 			$(top_builddir)/src/lib/libatm.la -  --sw_debug_LDADD = $(sw_debug_XTRAS) -lfl -+sw_debug_LDADD = $(sw_debug_XTRAS) - sw_debug_DEPENDENCIES = $(sw_debug_XTRAS) - EXTRA_DIST = demo README - all: all-am diff --git a/package/linux-atm/patches/patch-src_switch_tcp_Makefile_in b/package/linux-atm/patches/patch-src_switch_tcp_Makefile_in deleted file mode 100644 index 04113eee1..000000000 --- a/package/linux-atm/patches/patch-src_switch_tcp_Makefile_in +++ /dev/null @@ -1,11 +0,0 @@ ---- linux-atm-2.5.2.orig/src/switch/tcp/Makefile.in	2010-12-28 17:06:11.000000000 +0100 -+++ linux-atm-2.5.2/src/switch/tcp/Makefile.in	2020-09-14 15:22:00.593235307 +0200 -@@ -200,7 +200,7 @@ sw_tcp_SOURCES = tcpsw.c - sw_tcp_XTRAS = $(top_builddir)/src/switch/libsw.a \ - 		$(top_builddir)/src/lib/libatm.la -  --sw_tcp_LDADD = $(sw_tcp_XTRAS) -lfl -+sw_tcp_LDADD = $(sw_tcp_XTRAS)  - sw_tcp_DEPENDENCIES = $(sw_tcp_XTRAS) - EXTRA_DIST = mkfiles README - all: all-am diff --git a/package/lynx/Makefile b/package/lynx/Makefile index 945096303..ab68c1dc0 100644 --- a/package/lynx/Makefile +++ b/package/lynx/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		lynx -PKG_VERSION:=		2.9.1 +PKG_VERSION:=		2.9.2  PKG_RELEASE:=		1 -PKG_HASH:=		085fb3924b8684485c6be1b1ca745417da6ace768f94428ead95caf9dd8b56b7 +PKG_HASH:=		99f8f28f860094c533100d1cedf058c27fb242ce25e991e2d5f30ece4457a3bf  PKG_DESCR:=		text browser  PKG_SECTION:=		app/browser  PKG_DEPENDS:=		libncurses zlib @@ -18,7 +18,7 @@ PKG_NOPARALLEL:=	1  DISTFILES:=		${PKG_NAME}${PKG_VERSION}.tar.gz  WRKDIST=		${WRKDIR}/$(PKG_NAME)$(PKG_VERSION) -PKG_CHOICES_LYNX:=	WITH_LIBRESSL WITH_OPENSSL WITH_GNUTLS WITHOUT_SSL +PKG_CHOICES_LYNX:=	WITH_OPENSSL WITH_LIBRESSL WITH_GNUTLS WITHOUT_SSL  PKGCD_WITH_LIBRESSL:=	use libressl for crypto  PKGCS_WITH_LIBRESSL:=	libressl ca-certificates  PKGCB_WITH_LIBRESSL:=	libressl @@ -34,9 +34,10 @@ include ${ADK_TOPDIR}/mk/package.mk  $(eval $(call PKG_template,LYNX,lynx,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) -#TARGET_CPPFLAGS+=	-I${STAGING_TARGET_DIR}/include/openssl -#TARGET_CPPFLAGS+=	-DUSE_OPENSSL_INCL -DUSE_X509_SUPPORT -#HOST_CFLAGS+=		-DUSE_OPENSSL_INCL -DUSE_X509_SUPPORT +TARGET_LDFLAGS+=	-latomic +TARGET_CPPFLAGS+=	-I${STAGING_TARGET_DIR}/include/openssl +TARGET_CPPFLAGS+=	-DUSE_OPENSSL_INCL -DUSE_X509_SUPPORT +HOST_CFLAGS+=		-DUSE_OPENSSL_INCL -DUSE_X509_SUPPORT  ifeq (${ADK_PACKAGE_LYNX_WITH_LIBRESSL},y)  CONFIGURE_ARGS+=	--with-ssl="${STAGING_TARGET_DIR}/usr" \ diff --git a/package/m4/Makefile b/package/m4/Makefile index 6973ed164..b9f57f5f4 100644 --- a/package/m4/Makefile +++ b/package/m4/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		m4 -PKG_VERSION:=		1.4.19 +PKG_VERSION:=		1.4.20  PKG_RELEASE:=		1 -PKG_HASH:=		63aede5c6d33b6d9b13511cd0be2cac046f2e70fd0a07aa9573a04a82783af96 +PKG_HASH:=		e236ea3a1ccf5f6c270b1c4bb60726f371fa49459a8eaaebc90b216b328daf2b  PKG_DESCR:=		macro processor  PKG_SECTION:=		dev/tools  PKG_BUILDDEP:=		m4-host @@ -22,7 +22,6 @@ $(eval $(call PKG_template,M4,m4,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${  CONFIGURE_ENV+=		ac_cv_func_posix_spawn=yes \  			ac_cv_func_posix_spawn_works=yes -TARGET_LDFLAGS+=	-lrt  m4-install:  	${INSTALL_DIR} ${IDIR_M4}/usr/bin diff --git a/package/mailutils/Makefile b/package/mailutils/Makefile index a445aab6f..a17bdb2e5 100644 --- a/package/mailutils/Makefile +++ b/package/mailutils/Makefile @@ -14,8 +14,6 @@ PKG_DEPENDS:=		libreadline  PKG_URL:=		http://mailutils.org/  PKG_SITES:=		ftp://ftp.gnu.org/gnu/mailutils/ -PKG_HOST_DEPENDS:=	x86 x86_64 -  include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,MAILUTILS,mailutils,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) diff --git a/package/mbedtls/Makefile b/package/mbedtls/Makefile deleted file mode 100644 index 9ce0d5468..000000000 --- a/package/mbedtls/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		mbedtls -PKG_VERSION:=		2.28.7 -PKG_RELEASE:=		1 -PKG_HASH:=		1df6073f0cf6a4e1953890bf5e0de2a8c7e6be50d6d6c69fa9fefcb1d14e981a -PKG_DESCR:=		embedded ssl/tls library -PKG_SECTION:=		libs/crypto -PKG_URL:=		https://tls.mbed.org -PKG_SITES:=		https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/ -PKG_LIBNAME:=		libmbedtls -PKG_OPTS:=		dev - -DISTFILES:=             v$(PKG_VERSION).tar.gz - -include $(ADK_TOPDIR)/mk/package.mk - -$(eval $(call PKG_template,LIBMBEDTLS,libmbedtls,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) - -CONFIG_STYLE:=		manual -ALL_TARGET:=		lib -TARGET_CFLAGS+=		-DSHARED - -libmbedtls-install: -	$(INSTALL_DIR) $(IDIR_LIBMBEDTLS)/usr/lib - -include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/mbedtls/patches/patch-Makefile b/package/mbedtls/patches/patch-Makefile deleted file mode 100644 index 95c3340e1..000000000 --- a/package/mbedtls/patches/patch-Makefile +++ /dev/null @@ -1,35 +0,0 @@ ---- mbedtls-3.5.2.orig/Makefile	2024-01-24 10:49:11.000000000 +0100 -+++ mbedtls-3.5.2/Makefile	2024-02-22 19:10:23.460591189 +0100 -@@ -79,22 +79,22 @@ $(VISUALC_FILES): -  - ifndef WINDOWS - install: no_test --	mkdir -p $(DESTDIR)/include/mbedtls --	cp -rp include/mbedtls $(DESTDIR)/include --	mkdir -p $(DESTDIR)/include/psa --	cp -rp include/psa $(DESTDIR)/include -+	mkdir -p $(DESTDIR)/usr/include/mbedtls -+	cp -rp include/mbedtls $(DESTDIR)/usr/include -+	mkdir -p $(DESTDIR)/usr/include/psa -+	cp -rp include/psa $(DESTDIR)/usr/include -  --	mkdir -p $(DESTDIR)/lib --	cp -RP library/libmbedtls.*    $(DESTDIR)/lib --	cp -RP library/libmbedx509.*   $(DESTDIR)/lib --	cp -RP library/libmbedcrypto.* $(DESTDIR)/lib -+	mkdir -p $(DESTDIR)/usr/lib -+	cp -RP library/libmbedtls.*    $(DESTDIR)/usr/lib -+	cp -RP library/libmbedx509.*   $(DESTDIR)/usr/lib -+	cp -RP library/libmbedcrypto.* $(DESTDIR)/usr/lib -  --	mkdir -p $(DESTDIR)/bin -+	mkdir -p $(DESTDIR)/usr/bin - 	for p in programs/*/* ; do              \ - 	    if [ -x $$p ] && [ ! -d $$p ] ;     \ - 	    then                                \ - 	        f=$(PREFIX)`basename $$p` ;     \ --	        cp $$p $(DESTDIR)/bin/$$f ;     \ -+	        cp $$p $(DESTDIR)/usr/bin/$$f ;     \ - 	    fi                                  \ - 	done -  diff --git a/package/mesa/Makefile b/package/mesa/Makefile index 75a10c003..0bd924989 100644 --- a/package/mesa/Makefile +++ b/package/mesa/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		mesa -PKG_VERSION:=		23.3.3 +PKG_VERSION:=		25.0.2  PKG_RELEASE:=		1 -PKG_HASH:=		518307c0057fa3cee8b58df78be431d4df5aafa7edc60d09278b2d7a0a80f3b4 +PKG_HASH:=		adf904d083b308df95898600ffed435f4b5c600d95fb6ec6d4c45638627fdc97  PKG_DESCR:=		3d graphics library  PKG_SECTION:=		libs/video  PKG_DEPENDS:=		libxdamage libxfixes libdrm libxxf86vm libexpat @@ -14,13 +14,18 @@ PKG_DEPENDS+=		libxml2  PKG_BUILDDEP:=		python3 libxml2 libXdamage libXfixes libXrandr  PKG_BUILDDEP+=		libXxf86vm libdrm dri2proto glproto expat libXext  PKG_BUILDDEP+=		eudev dri3proto presentproto xcb-proto libxcb -PKG_BUILDDEP+=		libxshmfence python-mako-host +PKG_BUILDDEP+=		libxshmfence python-mako-host python3-yaml-host  PKG_NEEDS:=		c++  PKG_URL:=		http://www.mesa3d.org/ -PKG_SITES:=		ftp://ftp.freedesktop.org/pub/mesa/ +PKG_SITES:=		https://archive.mesa3d.org/  PKG_LIBNAME:=		mesa  PKG_OPTS:=		dev +PKG_CHOICES_MESA:=	WITH_X11 WITH_WAYLAND +PKGCD_WITH_X11:=	with X11 support +PKGCD_WITH_WAYLAND:=	with wayland support +PKGCB_WITH_WAYLAND:=	wayland wayland-protocols +  PKG_ARCH_DEPENDS:=	x86 x86_64 mips mipsel mips64 mips64el arm aarch64  include $(ADK_TOPDIR)/mk/package.mk @@ -33,22 +38,33 @@ BUILD_STYLE:=		meson  INSTALL_STYLE:=		meson  MESON_FLAGS+=		-Dllvm=disabled \ -			-Dgallium-drivers=swrast,panfrost,vc4,v3d \ +			-Dgallium-drivers=panfrost,vc4,v3d,virgl \  			-Dvulkan-drivers= \  			-Dgbm=enabled \ -			-Dplatforms=x11 +			-Dglx=dri + +ifeq ($(ADK_PACKAGE_MESA_WITH_WAYLAND),y) +MESON_FLAGS+=		-Dplatforms="wayland" +endif + +ifeq ($(ADK_PACKAGE_MESA_WITH_X11),y) +MESON_FLAGS+=		-Dplatforms="x11" +endif  mesa-install:  	$(INSTALL_DIR) $(IDIR_MESA)/usr/lib/dri +	$(INSTALL_DIR) $(IDIR_MESA)/usr/lib/gbm  	$(CP) $(WRKINST)/usr/lib/libEGL*.so* \  		$(IDIR_MESA)/usr/lib  	$(CP) $(WRKINST)/usr/lib/libGL*.so* \  		$(IDIR_MESA)/usr/lib -	$(CP) $(WRKINST)/usr/lib/libglapi.so* \ -		$(IDIR_MESA)/usr/lib  	$(CP) $(WRKINST)/usr/lib/libgbm.so* \  		$(IDIR_MESA)/usr/lib +	$(CP) $(WRKINST)/usr/lib/libgallium*.so* \ +		$(IDIR_MESA)/usr/lib  	${CP} $(WRKINST)/usr/lib/dri/*.so \  		${IDIR_MESA}/usr/lib/dri/ +	${CP} $(WRKINST)/usr/lib/gbm/*.so \ +		${IDIR_MESA}/usr/lib/gbm/  include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/mesa/patches/patch-meson_build b/package/mesa/patches/patch-meson_build new file mode 100644 index 000000000..6b7aaf7be --- /dev/null +++ b/package/mesa/patches/patch-meson_build @@ -0,0 +1,23 @@ +--- mesa-25.0.2.orig/meson.build	2025-03-20 14:32:27.000000000 +0100 ++++ mesa-25.0.2/meson.build	2025-04-02 20:40:53.964094916 +0200 +@@ -940,20 +940,6 @@ endif + # On Windows, a venv has no versioned aliased to 'python'. + prog_python = find_program('python3', 'python', version : '>= 3.8') +  +-has_mako = run_command( +-  prog_python, '-c', +-  ''' +-try: +-  from packaging.version import Version +-except: +-  from distutils.version import StrictVersion as Version +-import mako +-assert Version(mako.__version__) >= Version("0.8.0") +-  ''', check: false) +-if has_mako.returncode() != 0 +-  error('Python (3.x) mako module >= 0.8.0 required to build mesa.') +-endif +- + has_yaml = run_command( +   prog_python, '-c', +   ''' diff --git a/package/meson/Makefile b/package/meson/Makefile index 314fac6dc..510b75b1c 100644 --- a/package/meson/Makefile +++ b/package/meson/Makefile @@ -4,12 +4,12 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		meson -PKG_VERSION:=		1.3.2 +PKG_VERSION:=		1.7.0  PKG_RELEASE:=		1 -PKG_HASH:=		683082fb3c5cddf203b21d29bdf4c227e2f7964da5324a15e1a5f7db94322b4b +PKG_HASH:=		a6ca46e2a11a0278bb6492ecd4e0520ff441b164ebfdef1e012b11beb848d26e  PKG_DESCR:=		build utility  PKG_SECTION:=		dev/tools -HOST_BUILDDEP:=		python3-host ninja-host +HOST_BUILDDEP:=		python3-host python3-setuptools-host ninja-host  PKG_URL:=		http://www.mesonbuild.com/  PKG_SITES:=		https://github.com/mesonbuild/meson/archive/ diff --git a/package/meson/src/cross-compilation.conf.in b/package/meson/src/cross-compilation.conf.in index 24ef6ef53..b24c71cd8 100644 --- a/package/meson/src/cross-compilation.conf.in +++ b/package/meson/src/cross-compilation.conf.in @@ -9,6 +9,9 @@ cpp = '@TARGET_CROSS@g++'  ar = '@TARGET_CROSS@ar'                                                        strip = '@TARGET_CROSS@strip'                                                  pkg-config = '@STAGING_HOST_DIR@/usr/bin/pkg-config' +glib-compile-resources = '@STAGING_HOST_DIR@/usr/bin/glib-compile-resources' +glib-compile-schemas = '@STAGING_HOST_DIR@/usr/bin/glib-compile-schemas' +gdbus-codegen = '@STAGING_HOST_DIR@/usr/bin/gdbus-codegen'  [built-in options]  c_args = [@TARGET_CFLAGS@]                                                    diff --git a/package/miniinit/Makefile b/package/miniinit/Makefile new file mode 100644 index 000000000..bef48e965 --- /dev/null +++ b/package/miniinit/Makefile @@ -0,0 +1,31 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		miniinit +PKG_VERSION:=		1.0 +PKG_RELEASE:=		1 +PKG_DESCR:=		minimal init +PKG_SECTION:=		base/init + +NO_DISTFILES:=		1 + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,MINIINIT,miniinit,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +CONFIG_STYLE:=		manual +BUILD_STYLE:=		manual +INSTALL_STYLE:=		manual + +do-build: +	PATH='$(HOST_PATH)' \ +	$(TARGET_CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \ +		-o $(WRKBUILD)/miniinit $(WRKBUILD)/miniinit.c + +do-install: +	$(INSTALL_DIR) $(IDIR_MINIINIT)/sbin +	$(INSTALL_BIN) $(WRKBUILD)/miniinit $(IDIR_MINIINIT)/sbin/init + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/miniinit/src/miniinit.c b/package/miniinit/src/miniinit.c new file mode 100644 index 000000000..69ad095c6 --- /dev/null +++ b/package/miniinit/src/miniinit.c @@ -0,0 +1,44 @@ +#include <fcntl.h> +#include <stdio.h> +#include <stdlib.h> +#include <sys/wait.h> +#include <unistd.h> + +int main()  +{ +  pid_t pid; + +  printf("Started OpenADK miniinit\n"); +  putenv("TERM=vt102"); + +  // Redirect stdio to /dev/console +  close(0); +  close(1); +  close(2); +  open("/dev/console", O_RDWR); // stdin +  dup(0); // stdout +  dup(0); // stderr + +  pid = vfork(); +  if (pid == 0) { +    setsid(); //new session +    putenv("HOME=/"); +    putenv("PATH=/sbin:/usr/sbin:/bin:/usr/bin"); +    putenv("SHELL=/bin/sh"); +    putenv("USER=root"); +    // Child: start a shell (e.g., /bin/sh) +    execl("/bin/sh", "/bin/sh", "-l", NULL); +    perror("execl"); +    exit(1); +  } else if (pid > 0) { +    // Parent: wait for child to exit +    int status; +    waitpid(pid, &status, 0); +    printf("Shell exited, shutting down\n");	   +  } else if (pid < 0) { +    printf("vfork failed"); +    sleep(1); +    return 0; +  } +  _exit(0); +} diff --git a/package/mkfontscale/Makefile b/package/mkfontscale/Makefile index 431fba9cd..0d687b735 100644 --- a/package/mkfontscale/Makefile +++ b/package/mkfontscale/Makefile @@ -4,11 +4,12 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		mkfontscale -PKG_VERSION:=		1.1.0 +PKG_VERSION:=		1.2.3  PKG_RELEASE:=		1 -PKG_HASH:=		53515d688c8d0ed24f74374d9c33e36a20b024d59b8127d9f23b481ab5e98150 +PKG_HASH:=		3a026b468874eb672a1d0a57dbd3ddeda4f0df09886caf97d30097b70c2df3f8  PKG_DESCR:=		font utility  PKG_SECTION:=		x11/fonts +PKG_DEPENDS:=		freetype libfontenc  PKG_BUILDDEP:=		freetype libfontenc  PKG_SITES:=		http://www.x.org/releases/individual/app/ diff --git a/package/mongrel2/Makefile b/package/mongrel2/Makefile deleted file mode 100644 index 9ae849160..000000000 --- a/package/mongrel2/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		mongrel2 -PKG_VERSION:=		1.13.0 -PKG_RELEASE:=		1 -PKG_HASH:=		b6f1f50c9f65b605342d8792b1cc8a1c151105339030313b9825b6a68d400c10 -PKG_DESCR:=		application, language, and network architecture agnostic web server -PKG_SECTION:=		net/http -PKG_BUILDDEP:=		zeromq sqlite-host sqlite mbedtls -PKG_DEPENDS:=		zeromq libsqlite mbedtls -PKG_NEEDS:=		threads c++ -PKG_URL:=		http://mongrel2.org -PKG_SITES:=		https://github.com/mongrel2/mongrel2/releases/download/v$(PKG_VERSION)/ - -DISTFILES:=             $(PKG_NAME)-v$(PKG_VERSION).tar.bz2 -WRKDIST=		${WRKDIR}/$(PKG_NAME)-v$(PKG_VERSION) - -include $(ADK_TOPDIR)/mk/package.mk - -$(eval $(call PKG_template,MONGREL2,mongrel2,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) - -CONFIG_STYLE:=		manual - -mongrel2-install: -	$(INSTALL_DIR) $(IDIR_MONGREL2)/etc/mongrel2 -	$(CP) $(WRKBUILD)/examples/configs/sample.conf \ -		$(IDIR_MONGREL2)/etc/mongrel2/site.conf -	$(INSTALL_DIR) $(IDIR_MONGREL2)/usr/bin -	$(INSTALL_BIN) $(WRKINST)/usr/bin/m2sh \ -		$(IDIR_MONGREL2)/usr/bin -	$(INSTALL_BIN) $(WRKINST)/usr/bin/mongrel2 \ -		$(IDIR_MONGREL2)/usr/bin - -include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/mongrel2/patches/patch-Makefile b/package/mongrel2/patches/patch-Makefile deleted file mode 100644 index 14ede92ab..000000000 --- a/package/mongrel2/patches/patch-Makefile +++ /dev/null @@ -1,20 +0,0 @@ ---- mongrel2-v1.13.0.orig/Makefile	2021-12-25 01:03:28.000000000 +0100 -+++ mongrel2-v1.13.0/Makefile	2024-02-22 19:19:16.724583955 +0100 -@@ -2,7 +2,7 @@ CFLAGS?=-g -O2 - CFLAGS += -Wall -Wextra -Wno-implicit-fallthrough -Wno-unused-const-variable -I./src -DNDEBUG -D_FILE_OFFSET_BITS=64 -pthread - CFLAGS += ${OPTFLAGS} - LIBS+=-lzmq -ldl -lsqlite3 -lmbedtls -lmbedx509 -lmbedcrypto --PREFIX?=/usr/local -+PREFIX?=/usr -  - get_objs = $(addsuffix .o,$(basename $(wildcard $(1)))) -  -@@ -18,7 +18,7 @@ TEST_SRC=$(wildcard tests/*_tests.c) - TESTS=$(patsubst %.c,%,${TEST_SRC}) - MAKEOPTS=OPTFLAGS="${CFLAGS} ${NOEXTCFLAGS} ${OPTFLAGS}" LDFLAGS="${LDFLAGS}" LIBS="${LIBS}" DESTDIR="${DESTDIR}" PREFIX="${PREFIX}" -  --all: bin/mongrel2 tests m2sh procer -+all: bin/mongrel2 m2sh procer -  - ${OBJECTS_NOEXT}: CFLAGS += ${NOEXTCFLAGS} - ${OBJECTS}: | builddirs diff --git a/package/mongrel2/patches/patch-tools_m2sh_Makefile b/package/mongrel2/patches/patch-tools_m2sh_Makefile deleted file mode 100644 index abec82a1f..000000000 --- a/package/mongrel2/patches/patch-tools_m2sh_Makefile +++ /dev/null @@ -1,31 +0,0 @@ ---- mongrel2-v1.13.0.orig/tools/m2sh/Makefile	2021-12-25 01:03:28.000000000 +0100 -+++ mongrel2-v1.13.0/tools/m2sh/Makefile	2024-02-22 19:03:20.332596928 +0100 -@@ -1,7 +1,8 @@ --CFLAGS=-DNDEBUG -DNO_LINENOS -pthread -g -I../../src -Isrc -Wall $(OPTFLAGS) -+CFLAGS?= -+CFLAGS+=-DNDEBUG -DNO_LINENOS -pthread -g -I../../src -Isrc -Wall $(OPTFLAGS) - LIBS=-lzmq -lsqlite3 ../../build/libm2.a $(OPTLIBS) -  --PREFIX?=/usr/local -+PREFIX?=/usr - SOURCES=$(wildcard src/*.c src/**/*.c) - OBJECTS=$(patsubst %.c,%.o,${SOURCES}) - TEST_SRC=$(wildcard tests/*.c) -@@ -12,7 +13,7 @@ RAGEL_OBJECTS=src/lexer.o src/cli.o -  - $(RAGEL_OBJECTS): CFLAGS += -Wno-unused-const-variable -Wimplicit-fallthrough=0 -Wno-unused-parameter -  --all: ../lemon/lemon tests build/m2sh -+all: ../lemon/lemon build/m2sh -  - dev: CFLAGS=-g -Wall -Wextra -Isrc -I../../src $(OPTFLAGS) - dev: all -@@ -32,7 +33,7 @@ build/m2sh: ../lemon/lemon ../../build/l - 	$(CC) $(CFLAGS) -o build/m2sh ${OBJECTS} ../../build/libm2.a $(LDFLAGS) $(LIBS) -  - ../lemon/lemon: ../lemon/lemon.c --	$(CC) -O2 ../lemon/lemon.c -o ../lemon/lemon -+	$(CC) $(CFLAGS) ../lemon/lemon.c -o ../lemon/lemon -  - tests: build/libm2sh.a ${TESTS} - 	sh ./tests/runtests.sh diff --git a/package/mongrel2/patches/patch-tools_procer_Makefile b/package/mongrel2/patches/patch-tools_procer_Makefile deleted file mode 100644 index 82b0e85e0..000000000 --- a/package/mongrel2/patches/patch-tools_procer_Makefile +++ /dev/null @@ -1,11 +0,0 @@ ---- mongrel2-v1.11.0.orig/tools/procer/Makefile	2015-12-31 10:25:18.000000000 +0100 -+++ mongrel2-v1.11.0/tools/procer/Makefile	2016-04-25 20:05:39.765826160 +0200 -@@ -1,5 +1,6 @@ --CFLAGS=-DNDEBUG -pthread -g -I../../src -Wall $(OPTFLAGS) --PREFIX?=/usr/local -+CFLAGS?= -+CFLAGS+=-DNDEBUG -pthread -g -I../../src -Wall $(OPTFLAGS) -+PREFIX?=/usr - LIBS?=-lzmq  - SOURCES=$(wildcard *.c) - OBJECTS=$(patsubst %.c,%.o,${SOURCES}) diff --git a/package/mtd-utils/Makefile b/package/mtd-utils/Makefile index 9922e7310..483f30532 100644 --- a/package/mtd-utils/Makefile +++ b/package/mtd-utils/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		mtd-utils -PKG_VERSION:=		2.0.0 -PKG_RELEASE:=		2 -PKG_HASH:=		20a377aa86af4c102e930b0d0bb9859e3a10aeb16445f6a1273989b206a717c8 +PKG_VERSION:=		2.2.1 +PKG_RELEASE:=		1 +PKG_HASH:=		f7ae20b2eb79ee83441468f0b99d897024cd96ff853eea59106fb1952065c803  PKG_DESCR:=		flash filesystem utilities  PKG_SECTION:=		sys/fs  PKG_DEPENDS:=		libuuid liblzo @@ -47,9 +47,6 @@ HOST_STYLE:=		auto  HOST_CONFIGURE_ARGS+=	--disable-tests  HOST_CPPFLAGS+=		-DWITHOUT_XATTR=1 -I./include  HOST_MAKE_FLAGS+=	WITHOUT_LZO=1 -ifeq ($(OS_FOR_BUILD),Darwin) -HOST_CPPFLAGS+=		-D_DARWIN_C_SOURCE -endif  host-build:  	(cd ${WRKBUILD} && env ${HOST_MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \ diff --git a/package/mtd-utils/patches/patch-Makefile_in b/package/mtd-utils/patches/patch-Makefile_in deleted file mode 100644 index ddcbcf9e3..000000000 --- a/package/mtd-utils/patches/patch-Makefile_in +++ /dev/null @@ -1,11 +0,0 @@ ---- mtd-utils-2.0.0.orig/Makefile.in	2016-12-22 11:21:54.000000000 +0100 -+++ mtd-utils-2.0.0/Makefile.in	2017-04-26 09:13:34.000000000 +0200 -@@ -232,7 +232,7 @@ am__EXEEXT_11 = ftl_format$(EXEEXT) doc_ - 	flash_lock$(EXEEXT) flash_unlock$(EXEEXT) \ - 	flash_otp_info$(EXEEXT) flash_otp_dump$(EXEEXT) \ - 	flash_otp_lock$(EXEEXT) flash_otp_write$(EXEEXT) \ --	flashcp$(EXEEXT) mtdpart$(EXEEXT) -+	flashcp$(EXEEXT) - am__EXEEXT_12 = nanddump$(EXEEXT) nandwrite$(EXEEXT) nandtest$(EXEEXT) \ - 	nftldump$(EXEEXT) nftl_format$(EXEEXT) - am__EXEEXT_13 = rfddump$(EXEEXT) rfdformat$(EXEEXT) diff --git a/package/mtd-utils/patches/patch-include_common_h b/package/mtd-utils/patches/patch-include_common_h deleted file mode 100644 index 1109ab485..000000000 --- a/package/mtd-utils/patches/patch-include_common_h +++ /dev/null @@ -1,19 +0,0 @@ ---- mtd-utils-2.0.0.orig/include/common.h	2016-12-14 10:06:35.000000000 +0100 -+++ mtd-utils-2.0.0/include/common.h	2017-04-26 01:52:28.000000000 +0200 -@@ -26,10 +26,15 @@ - #include <string.h> - #include <fcntl.h> - #include <errno.h> -+#ifndef __APPLE__ - #include <features.h> -+#include <sys/sysmacros.h> -+#endif - #include <inttypes.h> - #include <unistd.h> --#include <sys/sysmacros.h> -+ -+#include <time.h> -+#include "os-compat.h" -  - #include "config.h" -  diff --git a/package/mtd-utils/patches/patch-include_mtd_ubi-media_h b/package/mtd-utils/patches/patch-include_mtd_ubi-media_h deleted file mode 100644 index c53899bfd..000000000 --- a/package/mtd-utils/patches/patch-include_mtd_ubi-media_h +++ /dev/null @@ -1,11 +0,0 @@ ---- mtd-utils-2.0.0.orig/include/mtd/ubi-media.h	2016-07-12 14:16:45.000000000 +0200 -+++ mtd-utils-2.0.0/include/mtd/ubi-media.h	2017-04-25 21:14:34.000000000 +0200 -@@ -30,7 +30,7 @@ - #ifndef __UBI_MEDIA_H__ - #define __UBI_MEDIA_H__ -  --#include <asm/byteorder.h> -+#include <linux/types.h> -  - /* The version of UBI images supported by this implementation */ - #define UBI_VERSION 1 diff --git a/package/mtd-utils/patches/patch-include_mtd_ubifs-media_h b/package/mtd-utils/patches/patch-include_mtd_ubifs-media_h deleted file mode 100644 index 471454799..000000000 --- a/package/mtd-utils/patches/patch-include_mtd_ubifs-media_h +++ /dev/null @@ -1,11 +0,0 @@ ---- mtd-utils-2.0.0.orig/include/mtd/ubifs-media.h	2016-07-12 14:16:45.000000000 +0200 -+++ mtd-utils-2.0.0/include/mtd/ubifs-media.h	2017-04-25 21:47:14.000000000 +0200 -@@ -33,7 +33,7 @@ - #ifndef __UBIFS_MEDIA_H__ - #define __UBIFS_MEDIA_H__ -  --#include <asm/byteorder.h> -+#include <linux/types.h> -  - /* UBIFS node magic number (must not have the padding byte first or last) */ - #define UBIFS_NODE_MAGIC  0x06101831 diff --git a/package/mtd-utils/patches/patch-jffsX-utils_rbtree_h b/package/mtd-utils/patches/patch-jffsX-utils_rbtree_h deleted file mode 100644 index 7df21dc96..000000000 --- a/package/mtd-utils/patches/patch-jffsX-utils_rbtree_h +++ /dev/null @@ -1,11 +0,0 @@ ---- mtd-utils-2.0.0.orig/jffsX-utils/rbtree.h	2016-07-12 14:16:45.000000000 +0200 -+++ mtd-utils-2.0.0/jffsX-utils/rbtree.h	2017-04-26 02:27:35.000000000 +0200 -@@ -94,7 +94,7 @@ static inline struct page * rb_insert_pa - #ifndef	_LINUX_RBTREE_H - #define	_LINUX_RBTREE_H -  --#include <linux/kernel.h> -+#include <endian.h> - #include <linux/stddef.h> -  - struct rb_node diff --git a/package/mtd-utils/patches/patch-misc-utils_docfdisk_c b/package/mtd-utils/patches/patch-misc-utils_docfdisk_c deleted file mode 100644 index f3378c525..000000000 --- a/package/mtd-utils/patches/patch-misc-utils_docfdisk_c +++ /dev/null @@ -1,10 +0,0 @@ ---- mtd-utils-2.0.0.orig/misc-utils/docfdisk.c	2016-12-14 10:06:35.000000000 +0100 -+++ mtd-utils-2.0.0/misc-utils/docfdisk.c	2017-04-26 08:56:40.000000000 +0200 -@@ -19,6 +19,7 @@ - #define PROGRAM_NAME "docfdisk" -  - #define _XOPEN_SOURCE 500 /* for pread/pwrite */ -+#include <sys/types.h> - #include <unistd.h> - #include <stdlib.h> - #include <stdio.h> diff --git a/package/mtd-utils/patches/patch-misc-utils_recv_image_c b/package/mtd-utils/patches/patch-misc-utils_recv_image_c deleted file mode 100644 index ab07ab59a..000000000 --- a/package/mtd-utils/patches/patch-misc-utils_recv_image_c +++ /dev/null @@ -1,13 +0,0 @@ ---- mtd-utils-2.0.0.orig/misc-utils/recv_image.c	2016-07-12 14:16:45.000000000 +0200 -+++ mtd-utils-2.0.0/misc-utils/recv_image.c	2017-04-26 09:06:48.000000000 +0200 -@@ -4,6 +4,10 @@ - #define _BSD_SOURCE	/* struct ip_mreq */ - #define _DEFAULT_SOURCE -  -+#ifndef IPV6_ADD_MEMBERSHIP -+#define IPV6_ADD_MEMBERSHIP	20 -+#endif -+ - #include <errno.h> - #include <stdio.h> - #include <netdb.h> diff --git a/package/mtd-utils/patches/patch-nand-utils_nftl_format_c b/package/mtd-utils/patches/patch-nand-utils_nftl_format_c deleted file mode 100644 index ff25489ef..000000000 --- a/package/mtd-utils/patches/patch-nand-utils_nftl_format_c +++ /dev/null @@ -1,10 +0,0 @@ ---- mtd-utils-2.0.0.orig/nand-utils/nftl_format.c	2016-12-14 10:06:35.000000000 +0100 -+++ mtd-utils-2.0.0/nand-utils/nftl_format.c	2017-04-26 08:57:07.000000000 +0200 -@@ -23,6 +23,7 @@ - #define PROGRAM_NAME "nftl_format" -  - #define _XOPEN_SOURCE 500 /* for pread/pwrite */ -+#include <sys/types.h> - #include <unistd.h> - #include <stdlib.h> - #include <stdio.h> diff --git a/package/mtd-utils/patches/patch-ubifs-utils_mkfs_ubifs_defs_h b/package/mtd-utils/patches/patch-ubifs-utils_mkfs_ubifs_defs_h deleted file mode 100644 index e3f61b1e7..000000000 --- a/package/mtd-utils/patches/patch-ubifs-utils_mkfs_ubifs_defs_h +++ /dev/null @@ -1,18 +0,0 @@ ---- mtd-utils-2.0.0.orig/ubifs-utils/mkfs.ubifs/defs.h	2016-07-12 14:16:45.000000000 +0200 -+++ mtd-utils-2.0.0/ubifs-utils/mkfs.ubifs/defs.h	2017-04-26 01:55:07.000000000 +0200 -@@ -39,6 +39,7 @@ struct qstr - 	size_t len; - }; -  -+#ifndef __APPLE__ - /** -  * fls - find last (most-significant) bit set -  * @x: the word to search -@@ -74,6 +75,7 @@ static inline int fls(int x) - 	} - 	return r; - } -+#endif -  - #define do_div(n,base) ({ \ - int __res; \ diff --git a/package/mtd-utils/src/include/asm/types.h b/package/mtd-utils/src/include/asm/types.h deleted file mode 100644 index 5726d9ef9..000000000 --- a/package/mtd-utils/src/include/asm/types.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) Bernhard Walle <bernhard@bwalle.de>, 2012 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - * the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * Comatibility with BSD-like userland. - */ -#ifndef ASM_TYPES_H_ -#define ASM_TYPES_H_ - -#ifdef __linux__ -#include_next <asm/types.h> -#endif - -#endif /* ASM_TYPES_H_ */ - diff --git a/package/mtd-utils/src/include/byteswap.h b/package/mtd-utils/src/include/byteswap.h deleted file mode 100644 index 6f9839f7a..000000000 --- a/package/mtd-utils/src/include/byteswap.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) Bernhard Walle <bernhard@bwalle.de>, 2012 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - * the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * Comatibility with BSD-like userland. - */ -#ifndef BYTESWAP_H_ -#define BYTESWAP_H_ - -#ifdef __linux__ -#include_next <byteswap.h> -#else - -#include <stdint.h> - -static inline uint16_t bswap_16(uint16_t value) -{ -    return ((value & 0xff00) >> 8) | ((value & 0xff) << 8); -} - -static inline uint32_t bswap_32(uint32_t value) -{ -    return ((value & 0xff000000) >> 24) | -           ((value & 0x00ff0000) >>  8) | -           ((value & 0x0000ff00) <<  8) | -           ((value & 0x000000ff) << 24); -} - -static inline uint64_t bswap_64(uint64_t value) -{ -    return ((value & 0xff00000000000000ull) >> 56) | -           ((value & 0x00ff000000000000ull) >> 40) | -           ((value & 0x0000ff0000000000ull) >> 24) | -           ((value & 0x000000ff00000000ull) >>  8) | -           ((value & 0x00000000ff000000ull) <<  8) | -           ((value & 0x0000000000ff0000ull) << 24) | -           ((value & 0x000000000000ff00ull) << 40) | -           ((value & 0x00000000000000ffull) << 56); -} - -#endif - -#endif /* BYTESWAP_H_ */ diff --git a/package/mtd-utils/src/include/endian.h b/package/mtd-utils/src/include/endian.h deleted file mode 100644 index 0d72bb888..000000000 --- a/package/mtd-utils/src/include/endian.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) Bernhard Walle <bernhard@bwalle.de>, 2012 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - * the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * Comatibility with BSD-like userland. - */ -#ifndef ENDIAN_H_ -#define ENDIAN_H_ - -#ifdef __linux__ -#include_next <endian.h> -#elif __APPLE__ - -#include <machine/endian.h> - -#ifndef __DARWIN_BYTE_ORDER -#error "No __DARWIN_BYTE_ORDER defined" -#endif - -#define __BYTE_ORDER		__DARWIN_BYTE_ORDER -#define __LITTLE_ENDIAN		__DARWIN_LITTLE_ENDIAN -#define __BIG_ENDIAN		__DARWIN_BIG_ENDIAN - -#else -#error "No byteswap.h found" -#endif - -#endif /* ENDIAN_H_ */ diff --git a/package/mtd-utils/src/include/linux/fs.h b/package/mtd-utils/src/include/linux/fs.h deleted file mode 100644 index b28168d37..000000000 --- a/package/mtd-utils/src/include/linux/fs.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) Bernhard Walle <bernhard@bwalle.de>, 2012 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - * the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * Comatibility with BSD-like userland. - */ -#ifndef LINUX_FS_H_ -#define LINUX_FS_H_ - -#ifdef __linux__ -#include_next <linux/fs.h> -#else - -#define FS_IOC_GETFLAGS                 _IOR('f', 1, long) -#define FS_IOC_SETFLAGS                 _IOW('f', 2, long) -#define FS_IOC_GETVERSION               _IOR('v', 1, long) -#define FS_IOC_SETVERSION               _IOW('v', 2, long) -#define FS_IOC_FIEMAP                   _IOWR('f', 11, struct fiemap) -#define FS_IOC32_GETFLAGS               _IOR('f', 1, int) -#define FS_IOC32_SETFLAGS               _IOW('f', 2, int) -#define FS_IOC32_GETVERSION             _IOR('v', 1, int) -#define FS_IOC32_SETVERSION             _IOW('v', 2, int) - -/* - * Inode flags (FS_IOC_GETFLAGS / FS_IOC_SETFLAGS) - */ -#define FS_SECRM_FL                     0x00000001 /* Secure deletion */ -#define FS_UNRM_FL                      0x00000002 /* Undelete */ -#define FS_COMPR_FL                     0x00000004 /* Compress file */ -#define FS_SYNC_FL                      0x00000008 /* Synchronous updates */ -#define FS_IMMUTABLE_FL                 0x00000010 /* Immutable file */ -#define FS_APPEND_FL                    0x00000020 /* writes to file may only append */ -#define FS_NODUMP_FL                    0x00000040 /* do not dump file */ -#define FS_NOATIME_FL                   0x00000080 /* do not update atime */ -/* Reserved for compression usage... */ -#define FS_DIRTY_FL                     0x00000100 -#define FS_COMPRBLK_FL                  0x00000200 /* One or more compressed clusters */ -#define FS_NOCOMP_FL                    0x00000400 /* Don't compress */ -#define FS_ECOMPR_FL                    0x00000800 /* Compression error */ -/* End compression flags --- maybe not all used */ -#define FS_BTREE_FL                     0x00001000 /* btree format dir */ -#define FS_INDEX_FL                     0x00001000 /* hash-indexed directory */ -#define FS_IMAGIC_FL                    0x00002000 /* AFS directory */ -#define FS_JOURNAL_DATA_FL              0x00004000 /* Reserved for ext3 */ -#define FS_NOTAIL_FL                    0x00008000 /* file tail should not be merged */ -#define FS_DIRSYNC_FL                   0x00010000 /* dirsync behaviour (directories only) */ -#define FS_TOPDIR_FL                    0x00020000 /* Top of directory hierarchies*/ -#define FS_EXTENT_FL                    0x00080000 /* Extents */ -#define FS_DIRECTIO_FL                  0x00100000 /* Use direct i/o */ -#define FS_NOCOW_FL                     0x00800000 /* Do not cow file */ -#define FS_RESERVED_FL                  0x80000000 /* reserved for ext2 lib */ - -#define FS_FL_USER_VISIBLE              0x0003DFFF /* User visible flags */ -#define FS_FL_USER_MODIFIABLE           0x000380FF /* User modifiable flags */ - -#endif - -#endif /* LINUX_FS_H_ */ diff --git a/package/mtd-utils/src/include/linux/stddef.h b/package/mtd-utils/src/include/linux/stddef.h deleted file mode 100644 index 492cf6173..000000000 --- a/package/mtd-utils/src/include/linux/stddef.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) Bernhard Walle <bernhard@bwalle.de>, 2012 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - * the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * Comatibility with BSD-like userland. - */ -#ifndef LINUX_STDDEF_H_ -#define LINUX_STDDEF_H_ - -#ifdef __linux__ -#include_next <linux/stddef.h> -#endif - -#endif /* LINUX_STDDEF_H_ */ diff --git a/package/mtd-utils/src/include/linux/types.h b/package/mtd-utils/src/include/linux/types.h deleted file mode 100644 index 8de4c8a58..000000000 --- a/package/mtd-utils/src/include/linux/types.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) Bernhard Walle <bernhard@bwalle.de>, 2012 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - * the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * Comatibility with BSD-like userland. - */ -#ifndef LINUX_TYPES_H_ -#define LINUX_TYPES_H_ - -#ifdef __linux__ -#include_next <linux/types.h> -#else - -#include <stdint.h>     /* get uint8_t etc. */ -#include <sys/types.h>  /* get u_long etc. */ - -/* This types are provided to Linux userland */ - -typedef uint8_t		__u8; -typedef uint16_t	__u16; -typedef uint32_t	__u32; -typedef uint64_t	__u64; - -typedef int8_t		__s8; -typedef int16_t		__s16; -typedef int32_t		__s32; -typedef int64_t		__s64; - -/* - * The type itself has no endianess. It's only used for code checkers - * but we don't need to run that checkers on non-Linux OSes - */ -typedef __u16       __le16; -typedef __u16       __be16; -typedef __u32       __le32; -typedef __u32       __be32; -typedef __u64       __le64; -typedef __u64       __be64; - -/* from /usr/include/asm-generic/posix_types.h on Linux */ -typedef long        __kernel_off_t; -typedef long long   __kernel_loff_t; - -typedef long long   loff_t; -typedef long long   off64_t; - -#endif - -#endif /* LINUX_TYPES_H_ */ diff --git a/package/mtd-utils/src/include/os-compat.h b/package/mtd-utils/src/include/os-compat.h deleted file mode 100644 index 0982bfad7..000000000 --- a/package/mtd-utils/src/include/os-compat.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) Bernhard Walle <bernhard@bwalle.de>, 2012 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - * the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * Comatibility with BSD-like userland. - */ -#ifndef OS_COMPAT_H_ -#define OS_COMPAT_H_ - -#ifdef __APPLE__ - -/* off_t is already 64 bits wide, even on i386 */ -#define O_LARGEFILE 0 -#define lseek64(fd, offset, whence) lseek((fd), (offset), (whence)) - -#endif /* __APPLE__ */ - -#endif /* OS_COMPAT_H_ */ diff --git a/package/mtools/Makefile b/package/mtools/Makefile index 2072e88d7..cbf4acb97 100644 --- a/package/mtools/Makefile +++ b/package/mtools/Makefile @@ -20,10 +20,6 @@ include ${ADK_TOPDIR}/mk/package.mk  $(eval $(call HOST_template,MTOOLS,mtools,${PKG_VERSION}-${PKG_RELEASE}))  $(eval $(call PKG_template,MTOOLS,mtools,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) -ifeq ($(OS_FOR_BUILD),Darwin) -HOST_LDFLAGS+=		-liconv -endif -  CONFIGURE_ENV+=		ac_cv_func_setpgrp_void=yes  mtools-install: diff --git a/package/mutt/Makefile b/package/mutt/Makefile index a8578b6ad..25fb74dd7 100644 --- a/package/mutt/Makefile +++ b/package/mutt/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		mutt -PKG_VERSION:=		2.2.12 +PKG_VERSION:=		2.2.15  PKG_RELEASE:=		1 -PKG_HASH:=		043af312f64b8e56f7fd0bf77f84a205d4c498030bd9586457665c47bb18ce38 +PKG_HASH:=		a51686104e4203f4c2a3b176527be3b95d08e808e94fd2dcadb7c30566bf894d  PKG_DESCR:=		mail client for console  PKG_SECTION:=		net/mail  PKG_DEPENDS:=		libncurses @@ -14,7 +14,10 @@ PKG_BUILDDEP:=		ncurses  PKG_URL:=		http://www.mutt.org/  PKG_SITES:=		ftp://ftp.mutt.org/pub/mutt/ -PKG_CHOICES_MUTT:=	WITH_LIBRESSL WITHOUT_SSL +PKG_CHOICES_MUTT:=	WITH_OPENSSL WITH_LIBRESSL WITHOUT_SSL +PKGCD_WITH_OPENSSL:=	use openssl for crypto +PKGCB_WITH_OPENSSL:=	openssl +PKGCS_WITH_OPENSSL:=	libopenssl ca-certificates  PKGCD_WITH_LIBRESSL:=	use libressl for crypto  PKGCB_WITH_LIBRESSL:=	libressl  PKGCS_WITH_LIBRESSL:=	libressl ca-certificates @@ -31,6 +34,7 @@ CONFIGURE_ARGS+=	--with-homespool="~/Maildir" \  			--with-curses="$(STAGING_TARGET_DIR)/usr" \  			--enable-pop \  			--enable-imap \ +			--enable-smtp \  			--disable-doc  ifeq ($(ADK_PACKAGE_MUTT_WITHOUT_SSL),y) diff --git a/package/nfs-utils/Makefile b/package/nfs-utils/Makefile index a8da2b92b..18e0ecb29 100644 --- a/package/nfs-utils/Makefile +++ b/package/nfs-utils/Makefile @@ -4,14 +4,15 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		nfs-utils -PKG_VERSION:=		2.7.1 +PKG_VERSION:=		2.8.3  PKG_RELEASE:=		1 -PKG_HASH:=		d23bab70a7570d8140de8195c16aa3f46e01b61ef3be51ae14fcbf6363017f14 +PKG_HASH:=		de433cb673180ab4276430e036f785a3f401b66d2c5d7caad4b867c3cdbc1311  PKG_DESCR:=		network filesystem utilities  PKG_SECTION:=		net/fs  PKG_DEPENDS:=		keyutils libtirpc rpcbind libmount libuuid libevent sqlite -PKG_DEPENDS+=		libncurses libblkid libxml2 +PKG_DEPENDS+=		libncurses libblkid libxml2 libnl libreadline  PKG_BUILDDEP:=		keyutils libtirpc util-linux libevent sqlite ncurses libxml2 +PKG_BUILDDEP:=		libnl readline  PKG_KDEPENDS:=		nfs-fs  PKG_NEEDS:=		threads  PKG_URL:=		http://sourceforge.net/projects/nfs @@ -40,6 +41,8 @@ $(eval $(call PKG_template,NFS_UTILS,nfs-utils,${PKG_VERSION}-${PKG_RELEASE},${P  $(eval $(call PKG_template,NFS_UTILS_CLIENT,nfs-utils-client,${PKG_VERSION}-${PKG_RELEASE},${PKGSS_NFS_UTILS_CLIENT},${PKGSD_NFS_UTILS_CLIENT},${PKG_SECTION}))  $(eval $(call PKG_template,NFS_UTILS_SERVER,nfs-utils-server,${PKG_VERSION}-${PKG_RELEASE},${PKGSS_NFS_UTILS_SERVER},${PKGSD_NFS_UTILS_SERVER},${PKG_SECTION})) +TARGET_LDFLAGS+=	-ltinfo +  AUTOTOOL_STYLE:=	autoreconf  ifeq ($(ADK_PACKAGE_NFS_UTILS_V4),y)  CONFIGURE_ARGS+=	--enable-nfsv4 \ diff --git a/package/nghttp2/Makefile b/package/nghttp2/Makefile new file mode 100644 index 000000000..88e9256e4 --- /dev/null +++ b/package/nghttp2/Makefile @@ -0,0 +1,24 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		nghttp2 +PKG_VERSION:=		1.67.1 +PKG_RELEASE:=		1 +PKG_HASH:=		153972aad57e7bf9d911666df7613f2390acf37ea7e1a97a0c5567e90f98e830 +PKG_DESCR:=		http2 library +PKG_SECTION:=		libs/misc +PKG_SITES:=		https://github.com/nghttp2/nghttp2/releases/download/v$(PKG_VERSION)/ +PKG_OPTS:=		dev + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,NGHTTP2,nghttp2,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) + +nghttp2-install: +	$(INSTALL_DIR) $(IDIR_NGHTTP2)/usr/lib +	$(CP) $(WRKINST)/usr/lib/libnghttp2*.so* \ +		$(IDIR_NGHTTP2)/usr/lib + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/ngrep/Makefile b/package/ngrep/Makefile deleted file mode 100644 index 606b9a0b6..000000000 --- a/package/ngrep/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		ngrep -PKG_VERSION:=		1.45 -PKG_RELEASE:=		1 -PKG_HASH:=		aea6dd337da8781847c75b3b5b876e4de9c58520e0d77310679a979fc6402fa7 -PKG_DESCR:=		network grep -PKG_SECTION:=		net/debug -PKG_DEPENDS:=		libpcap libpcre -PKG_BUILDDEP:=		libpcap pcre -PKG_URL:=		http://ngrep.sourceforge.net/ -PKG_SITES:=		${MASTER_SITE_SOURCEFORGE:=ngrep/} - -DISTFILES:=             $(PKG_NAME)-$(PKG_VERSION).tar.bz2 - -include $(ADK_TOPDIR)/mk/package.mk - -$(eval $(call PKG_template,NGREP,ngrep,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) - -CONFIGURE_ARGS+=	--disable-pcap-restart \ -			--with-pcap-includes=$(STAGING_TARGET_DIR)/usr/include - -ngrep-install: -	$(INSTALL_DIR) $(IDIR_NGREP)/usr/bin -	$(INSTALL_BIN) $(WRKINST)/usr/bin/ngrep \ -		$(IDIR_NGREP)/usr/bin - -include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/ngrep/patches/patch-Makefile_in b/package/ngrep/patches/patch-Makefile_in deleted file mode 100644 index 40659bb8d..000000000 --- a/package/ngrep/patches/patch-Makefile_in +++ /dev/null @@ -1,11 +0,0 @@ ---- ngrep-1.45.orig/Makefile.in	2006-11-28 14:35:37.000000000 +0100 -+++ ngrep-1.45/Makefile.in	2016-02-08 06:24:48.000000000 +0100 -@@ -63,7 +63,7 @@ distclean: clean - 	rm -f config.status config.cache config.log config.h Makefile  -  - $(REGEX_OBJS): $(REGEX_OBJS:.o=.c) $(REGEX_DIR)/*.h --	$(MAKE) $(MAKEFLAGS) -C $(REGEX_DIR) $(notdir $(REGEX_OBJS)) -+	$(MAKE) -C $(REGEX_DIR) $(notdir $(REGEX_OBJS)) -  - $(OBJS): Makefile ngrep.c ngrep.h -  diff --git a/package/ngrep/patches/patch-regex-0_12_Makefile_in b/package/ngrep/patches/patch-regex-0_12_Makefile_in deleted file mode 100644 index c0873516f..000000000 --- a/package/ngrep/patches/patch-regex-0_12_Makefile_in +++ /dev/null @@ -1,19 +0,0 @@ ---- ngrep-1.45.orig/regex-0.12/Makefile.in	2006-11-15 02:34:43.000000000 +0100 -+++ ngrep-1.45/regex-0.12/Makefile.in	2016-02-08 06:28:44.000000000 +0100 -@@ -26,13 +26,13 @@ version = 0.12 - #   -DEXTRACT_MACROS to use the macros EXTRACT_* (as opposed to - #           the corresponding C procedures).  If not -DDEBUG, the macros - #           are used. --CPPFLAGS =  -+CPPFLAGS ?=  -  - # Likewise, you can override CFLAGS to optimize, use -Wall, etc. --CFLAGS = -g -+CFLAGS ?= -g -  - # Ditto for LDFLAGS and LOADLIBES. --LDFLAGS = -+LDFLAGS ?= - LOADLIBES = -  - srcdir = @srcdir@ diff --git a/package/ngrep/patches/patch-regex-0_12_regex_c b/package/ngrep/patches/patch-regex-0_12_regex_c deleted file mode 100644 index 417504e0a..000000000 --- a/package/ngrep/patches/patch-regex-0_12_regex_c +++ /dev/null @@ -1,13 +0,0 @@ ---- ngrep-1.45.orig/regex-0.12/regex.c	2006-11-15 04:36:48.000000000 +0100 -+++ ngrep-1.45/regex-0.12/regex.c	2016-02-08 06:29:15.000000000 +0100 -@@ -39,10 +39,6 @@ - /* We need this for `regex.h', and perhaps for the Emacs include files.  */ - #include <sys/types.h> -  --#ifdef HAVE_CONFIG_H --#include "config.h" --#endif -- - /* The `emacs' switch turns on certain matching commands -    that make sense only in Emacs. */ - #ifdef emacs diff --git a/package/ninja/Makefile b/package/ninja/Makefile index 2ab4e6df1..2eab0b4dc 100644 --- a/package/ninja/Makefile +++ b/package/ninja/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		ninja -PKG_VERSION:=		1.8.2 -PKG_RELEASE:=		2 -PKG_HASH:=		86b8700c3d0880c2b44c2ff67ce42774aaf8c28cbf57725cb881569288c1c6f4 +PKG_VERSION:=		1.13.1 +PKG_RELEASE:=		1 +PKG_HASH:=		f0055ad0369bf2e372955ba55128d000cfcc21777057806015b45e4accbebf23  PKG_DESCR:=		build utility  PKG_SECTION:=		dev/tools  HOST_BUILDDEP:=		python3-host diff --git a/package/ninja/patches/patch-configure_py b/package/ninja/patches/patch-configure_py deleted file mode 100644 index cb743c891..000000000 --- a/package/ninja/patches/patch-configure_py +++ /dev/null @@ -1,8 +0,0 @@ ---- ninja-1.8.2.orig/configure.py	2017-09-11 03:20:10.000000000 +0200 -+++ ninja-1.8.2/configure.py	2021-09-21 11:39:51.729841404 +0200 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python3 - # - # Copyright 2001 Google Inc. All Rights Reserved. - # diff --git a/package/nmap/Makefile b/package/nmap/Makefile index d8164a379..fde000967 100644 --- a/package/nmap/Makefile +++ b/package/nmap/Makefile @@ -4,13 +4,13 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		nmap -PKG_VERSION:=		7.92 +PKG_VERSION:=		7.95  PKG_RELEASE:=		1 -PKG_HASH:=		a5479f2f8a6b0b2516767d2f7189c386c1dc858d997167d7ec5cfc798c7571a1 +PKG_HASH:=		e14ab530e47b5afd88f1c8a2bac7f89cd8fe6b478e22d255c5b9bddb7a1c5778  PKG_DESCR:=		utility for network exploration or security auditing  PKG_SECTION:=		net/security -PKG_DEPENDS:=		libdnet libpcap libpcre zlib -PKG_BUILDDEP:=		libdnet libpcap pcre zlib +PKG_DEPENDS:=		libdnet libpcap libpcre2 zlib +PKG_BUILDDEP:=		libdnet libpcap pcre2 zlib  PKG_NEEDS:=		c++  PKG_URL:=		http://nmap.org/  PKG_SITES:=		http://download.insecure.org/nmap/dist/ diff --git a/package/nmap/patches/patch-liblinear_Makefile b/package/nmap/patches/patch-liblinear_Makefile deleted file mode 100644 index fdb24470d..000000000 --- a/package/nmap/patches/patch-liblinear_Makefile +++ /dev/null @@ -1,16 +0,0 @@ ---- nmap-6.40.orig/liblinear/Makefile	2011-09-23 23:15:09.000000000 +0200 -+++ nmap-6.40/liblinear/Makefile	2014-02-11 19:38:23.000000000 +0100 -@@ -1,10 +1,10 @@ - CXX ?= g++ - CC ?= gcc --CFLAGS = -Wall -Wconversion -O3 -fPIC -+CFLAGS ?= -Wall -Wconversion -O3 -fPIC - LIBS = blas/blas.a - SHVER = 1 --AR = ar --RANLIB = ranlib -+AR ?= ar -+RANLIB ?= ranlib - #LIBS = -lblas -  - all: train predict diff --git a/package/nss/Makefile b/package/nss/Makefile index 1fe6b2b31..a340e0cc8 100644 --- a/package/nss/Makefile +++ b/package/nss/Makefile @@ -17,8 +17,6 @@ PKG_URL:=		http://www.mozilla.org/projects/security/pki/nss/  PKG_SITES:=		https://ftp.mozilla.org/pub/security/nss/releases/NSS_${PKG_MAJ_VERSION}_${PKG_MIN_VERSION}_RTM/src/  PKG_NOPARALLEL:=	1 -PKG_HOST_DEPENDS:=	!cygwin -  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  WRKSRC=			${WRKDIST}/nss diff --git a/package/openjdk7/Makefile b/package/openjdk7/Makefile deleted file mode 100644 index d757ba965..000000000 --- a/package/openjdk7/Makefile +++ /dev/null @@ -1,163 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		openjdk7 -PKG_VERSION:=		2.6.9 -PKG_RELEASE:=		1 -PKG_HASH:=		8e4f3eb8d41ef66f1797825343141046973c124b18bf7d4698fae0a9a25495ea -PKG_DESCR:=		java virtual machine -PKG_SECTION:=		dev/lang -PKG_BUILDDEP:=		openjdk7-host alsa-lib xproto libjpeg-turbo zlib giflib libpng freetype cups -PKG_BUILDDEP+=		libX11 libXt libXp libXinerama libXrender libXtst -PKG_BUILDDEP+=		libpng giflib libgtk2 glib fontconfig nss gconf ncurses -HOST_BUILDDEP:=		fastjar-host gcj-host ecj-host unzip-host ant-host libXcomposite-host -HOST_BUILDDEP+=		libXtst-host libXt-host libXinerama-host libXrender-host -HOST_BUILDDEP+=		cups-host qemu-host alsa-lib-host freetype-host	libxslt-host -PKG_DEPENDS:=		zlib libffi libxtst libxi cups gconf -PKG_DEPENDS+=		libfreetype libxrender libx11 libxext nss libjpeg-turbo -PKG_DEPENDS+=		libpng giflib libgtk2 glib fontconfig libncurses -PKG_NEEDS:=		threads c++ -PKG_URL:=		http://openjdk.org/ -PKG_SITES:=		http://icedtea.classpath.org/download/source/ - -DISTFILES:=		icedtea-$(PKG_VERSION).tar.xz -WRKDIST=		${WRKDIR}/icedtea-${PKG_VERSION} - -GCJ_VER:=		5.4.0 - -PKG_HOST_DEPENDS:=	linux -PKG_ARCH_DEPENDS:=	arm mips ppc x86 x86_64 - -include $(ADK_TOPDIR)/mk/host.mk -include $(ADK_TOPDIR)/mk/package.mk -include $(ADK_TOPDIR)/mk/qemu.mk - -$(eval $(call HOST_template,OPENJDK7,openjdk7,$(PKG_VERSION)-${PKG_RELEASE})) -$(eval $(call PKG_template,OPENJDK7,openjdk7,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) - -CONFIG_STYLE:=		basic - -# uclibc with iconv-tiny/libiconv needs -liconv -ifeq ($(ADK_TARGET_LIBC_ICONV),) -ifeq ($(ADK_TARGET_LIB_UCLIBC_NG),y) -TARGET_LIBS:=		-liconv -lm -endif -endif - -# for UINTPTR_MAX in stdint.h -TARGET_CFLAGS+=		-D__STDC_LIMIT_MACROS -# segfaults with march=pentium-m/atom -TARGET_CFLAGS:=		$(subst march=pentium-m,march=i686,$(TARGET_CFLAGS)) -TARGET_CFLAGS:=		$(subst march=atom,march=i686,$(TARGET_CFLAGS)) - -BOOTSTRAPJDK:=		${STAGING_HOST_DIR}/bootstrap-jdk - -JDKARCH:=		$(ADK_TARGET_CPU_ARCH) -ifeq ($(ADK_TARGET_ARCH),x86) -JDKARCH:=		i386 -endif -ifeq ($(ADK_TARGET_CPU_ARCH),x86_64) -JDKARCH:=		amd64 -endif - -CONFIGURE_ARGS:=	--enable-zero \ -			--disable-docs \ -			--with-jdk-home=$(BOOTSTRAPJDK) \ -			--with-java=$(BOOTSTRAPJDK)/bin/java \ -			--with-javac=$(BOOTSTRAPJDK)/bin/javac \ -			--with-javah=$(BOOTSTRAPJDK)/bin/javah \ -			--with-jar=$(BOOTSTRAPJDK)/bin/jar \ -			--with-rmic=$(BOOTSTRAPJDK)/bin/rmic \ -			--with-native2ascii=$(BOOTSTRAPJDK)/bin/native2ascii \ -			--without-gcj \ -			--without-hotspot-build \ -			--enable-nss \ -			--enable-system-zlib \ -			--enable-system-jpeg \ -			--enable-system-png \ -			--enable-system-gif \ -			--enable-system-gtk \ -			--enable-system-gio \ -			--enable-system-fontconfig \ -			--enable-system-gconf \ -			--disable-system-sctp \ -			--disable-system-pcsc \ -			--disable-system-lcms \ -			--disable-system-kerberos \ -			--disable-compile-against-syscalls \ -			--without-rhino \ -			--disable-bootstrap - -CONFIGURE_ENV+=		LD_LIBRARY_PATH=$(STAGING_HOST_DIR)/usr/lib -MAKE_ENV+=		ALT_COMPILER_PATH=$(TOOLCHAIN_DIR)/usr/$(GNU_TARGET_NAME)/bin \ -			ALT_OPENWIN_HOME=$(STAGING_TARGET_DIR)/usr/ \ -			ALT_CUPS_HEADERS_PATH=$(STAGING_TARGET_DIR)/usr/include/ \ -			ALT_FREETYPE_HEADERS_PATH=$(STAGING_TARGET_DIR)/usr/include/ \ -			OTHER_CFLAGS='$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(TARGET_LDFLAGS)' \ -			OTHER_CXXFLAGS='$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(TARGET_LDFLAGS)' \ -			OTHER_LDFLAGS='$(TARGET_LDFLAGS)' \ -			OTHER_LDLIBS='$(TARGET_LIBS)' \ -			NO_DOCS=true \ -			CROSS_COMPILE_ARCH=$(JDKARCH) QEMU=$(QEMU) \ -			LD_LIBRARY_PATH=$(STAGING_HOST_DIR)/usr/lib - -ALL_TARGET:=		icedtea - -# host stuff -OPENJDK_NATIVE_ENV:=	JAVACFLAGS="-cp ${STAGING_HOST_DIR}/usr/share/java/libgcj-$(GCJ_VER).jar" \ -			NO_DOCS=true \ -			LD_LIBRARY_PATH=$(STAGING_HOST_DIR)/usr/lib:$(STAGING_HOST_DIR)/usr/lib64 \ -			BOOTCLASSPATH="$(STAGING_HOST_DIR)/usr/share/jamvm/classes.zip:$(STAGING_HOST_DIR)/usr/share/classpath/glibj.zip" \ -			OTHER_CPPFLAGS='$(HOST_CPPFLAGS)' \ -			OTHER_LDFLAGS='$(HOST_LDFLAGS)' \ -			ALSA_CPPFLAGS='$(HOST_CPPFLAGS)' \ -			LIBFFI_CFLAGS='-I$(STAGING_HOST_DIR)/usr/include -L$(STAGING_HOST_DIR)/usr/lib' \ -			ALT_OPENWIN_HOME='$(STAGING_HOST_DIR)/usr' \ -			ALT_CUPS_HEADERS_PATH="$(STAGING_HOST_DIR)/usr/include" \ -			ALT_FREETYPE_HEADERS_PATH="$(STAGING_HOST_DIR)/usr/include" \ -			ALT_FREETYPE_LIB_PATH="$(STAGING_HOST_DIR)/usr/lib" -			 -HOST_CONFIGURE_ENV+=	$(OPENJDK_NATIVE_ENV) -HOST_MAKE_ENV+=		$(OPENJDK_NATIVE_ENV) -HOST_ALL_TARGET:=	icedtea-boot -HOST_CONFIGURE_ARGS+=	--enable-bootstrap \ -			--enable-zero \ -			--with-jdk-home=$(STAGING_HOST_DIR)/usr/lib/jvm \ -			--with-java=$(STAGING_HOST_DIR)/usr/bin/hostjava \ -			--with-javac=$(STAGING_HOST_DIR)/usr/bin/ecj \ -			--with-ecj-jar=${DL_DIR}/ecj-4.9.jar \ -			--without-hotspot-build \ -                	--disable-system-zlib \ -                	--disable-system-jpeg \ -                	--disable-system-lcms \ -                	--disable-system-png \ -                	--disable-system-gif \ -                	--disable-system-gtk \ -                	--disable-system-gio \ -                	--disable-system-kerberos \ -                	--disable-system-fontconfig \ -			--disable-system-gconf \ -			--disable-system-pcsc \ -			--disable-system-sctp \ -                	--disable-compile-against-syscalls \ -			--without-rhino \ -			--enable-systemtap=no \ -			--disable-docs - -hostpost-install: -	-rm -rf $(STAGING_HOST_DIR)/bootstrap-jdk -	$(CP) $(WRKBUILD)/openjdk.build-boot/j2sdk-image $(STAGING_HOST_DIR)/bootstrap-jdk - -openjdk7-install: -	$(INSTALL_DIR) $(IDIR_OPENJDK7)/usr/lib/jvm/jre -	$(INSTALL_DIR) $(IDIR_OPENJDK7)/usr/bin -	$(CP) $(WRKBUILD)/openjdk.build/j2re-image/bin $(IDIR_OPENJDK7)/usr/lib/jvm/jre -	$(CP) $(WRKBUILD)/openjdk.build/j2re-image/lib $(IDIR_OPENJDK7)/usr/lib/jvm/jre -	(cd $(IDIR_OPENJDK7)/usr/bin && ln -sf ../lib/jvm/jre/bin/java .) -	(cd $(IDIR_OPENJDK7)/usr/lib/jvm/jre/lib/$(JDKARCH) && ln -sf server/libjvm.so .) -	$(CP) ./files/nss.cfg $(IDIR_OPENJDK7)/usr/lib/jvm/jre/lib/security - -include ${ADK_TOPDIR}/mk/host-bottom.mk -include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/openjdk7/files/nss.cfg b/package/openjdk7/files/nss.cfg deleted file mode 100644 index e0685918b..000000000 --- a/package/openjdk7/files/nss.cfg +++ /dev/null @@ -1,5 +0,0 @@ -name = NSS -nssLibraryDirectory = /usr/lib -nssDbMode = noDb -attributes = compatibility -handleStartupErrors = ignoreMultipleInitialisation diff --git a/package/openjdk7/patches/openadk.patch b/package/openjdk7/patches/openadk.patch deleted file mode 100644 index 276f1fc79..000000000 --- a/package/openjdk7/patches/openadk.patch +++ /dev/null @@ -1,896 +0,0 @@ -diff -Nur icedtea-2.6.9.orig/Makefile.in icedtea-2.6.9/Makefile.in ---- icedtea-2.6.9.orig/Makefile.in	2017-02-14 01:37:03.478827012 +0100 -+++ icedtea-2.6.9/Makefile.in	2017-04-02 07:50:37.977789464 +0200 -@@ -647,7 +647,6 @@ - STAGE1_BOOT_DIR = $(abs_top_builddir)/bootstrap/boot - STAGE2_BOOT_DIR = $(abs_top_builddir)/bootstrap/icedtea - JAMVM_IMPORT_PATH = $(abs_top_builddir)/jamvm/install/hotspot --CRYPTO_CHECK_BUILD_DIR = $(abs_top_builddir)/test/cryptocheck.build - ECC_CHECK_BUILD_DIR = $(abs_top_builddir)/ecccheck.build - MIME_TYPE_CHECK_BUILD_DIR = $(abs_top_builddir)/test/mimetypecheck.build - STAGE1_BOOT_RUNTIME = $(STAGE1_BOOT_DIR)/jre/lib/rt.jar -@@ -791,7 +790,7 @@ - 	$(am__append_14) $(DISTRIBUTION_PATCHES) -  - # Bootstrapping patches --ICEDTEA_BOOT_PATCHES = patches/boot/javafiles.patch \ -+ICEDTEA_BOOT_PATCHES = patches/openadk.patch patches/boot/javafiles.patch \ - 	patches/boot/corba-idlj.patch patches/boot/corba-no-gen.patch \ - 	patches/boot/corba-orb.patch patches/boot/demos.patch \ - 	patches/boot/fphexconstants.patch \ -@@ -1512,7 +1511,7 @@ -  clean-icedtea-debug-stage2 clean-icedtea-stage1 clean-add-zero clean-add-zero-debug \ -  clean-add-cacao clean-add-cacao-debug clean-rt clean-rewrite-rhino clean-rewriter \ -  clean-add-systemtap clean-add-systemtap-debug clean-add-nss clean-add-tzdata-support \ -- clean-add-tzdata-support-debug clean-cryptocheck clean-policytool-@JAVA_VER@.desktop \ -+ clean-add-tzdata-support-debug clean-policytool-@JAVA_VER@.desktop \ -  clean-jconsole-@JAVA_VER@.desktop clean-ecccheck clean-mimetypecheck - 	if [ -e bootstrap ]; then \ - 	  rmdir bootstrap ; \ -@@ -1545,8 +1544,7 @@ - 	clean-add-systemtap-debug clean-add-systemtap-boot \ - 	clean-add-nss clean-add-tzdata-support clean-add-tzdata-support-debug \ - 	clean-add-tzdata-support-boot clean-check-mimetype clean-mimetypecheck \ --	clean-check-crypto clean-check-crypto-debug clean-check-crypto-boot \ --	clean-add-archive clean-add-archive-debug clean-add-archive-boot clean-cryptocheck \ -+	clean-add-archive clean-add-archive-debug clean-add-archive-boot \ - 	clean-download-hotspot clean-download-corba clean-download-jaxp \ - 	clean-download-jaxws clean-download-langtools clean-download-jdk clean-download-openjdk \ - 	clean-extract-corba clean-extract-jaxp clean-extract-jaxws clean-extract-jdk \ -@@ -2533,16 +2531,6 @@ - 	fi - 	rm -f stamps/add-tzdata-support.stamp -  --stamps/check-crypto.stamp: stamps/cryptocheck.stamp stamps/icedtea.stamp --	if [ -e $(BUILD_SDK_DIR)/bin/java ] ; then \ --	  $(BUILD_SDK_DIR)/bin/java -cp $(CRYPTO_CHECK_BUILD_DIR) TestCryptoLevel ; \ --	fi --	mkdir -p stamps --	touch $@ -- --clean-check-crypto: --	rm -f stamps/check-crypto.stamp -- - stamps/add-archive.stamp: stamps/icedtea.stamp - @ENABLE_CACAO_FALSE@@ENABLE_JAMVM_FALSE@@ZERO_BUILD_FALSE@	if [ -e $(BUILD_SDK_DIR)/bin/java ] ; then \ - @ENABLE_CACAO_FALSE@@ENABLE_JAMVM_FALSE@@ZERO_BUILD_FALSE@	  if test "x$(INSTALL_ARCH_DIR)" != "xppc64" -a "x$(INSTALL_ARCH_DIR)" != "xppc64le" ; then \ -@@ -2657,16 +2645,6 @@ - 	fi - 	rm -f stamps/add-tzdata-support-debug.stamp -  --stamps/check-crypto-debug.stamp: stamps/cryptocheck.stamp stamps/icedtea-debug.stamp --	if [ -e $(BUILD_DEBUG_SDK_DIR)/bin/java ] ; then \ --	  $(BUILD_DEBUG_SDK_DIR)/bin/java -cp $(CRYPTO_CHECK_BUILD_DIR) TestCryptoLevel ; \ --	fi --	mkdir -p stamps --	touch $@ -- --clean-check-crypto-debug: --	rm -f stamps/check-crypto-debug.stamp -- - stamps/add-archive-debug.stamp: stamps/icedtea-debug.stamp - @ENABLE_CACAO_FALSE@@ENABLE_JAMVM_FALSE@@ZERO_BUILD_FALSE@	if [ -e $(BUILD_DEBUG_SDK_DIR)/bin/java ] ; then \ - @ENABLE_CACAO_FALSE@@ENABLE_JAMVM_FALSE@@ZERO_BUILD_FALSE@	  if test "x$(INSTALL_ARCH_DIR)" != "xppc64" -a "x$(INSTALL_ARCH_DIR)" != "xppc64le" ; then \ -@@ -2711,24 +2689,24 @@ -  - stamps/icedtea-stage2.stamp: stamps/icedtea.stamp stamps/add-cacao.stamp \ -  stamps/add-zero.stamp stamps/add-jamvm.stamp stamps/add-systemtap.stamp \ -- stamps/add-tzdata-support.stamp stamps/check-crypto.stamp stamps/add-archive.stamp \ -+ stamps/add-tzdata-support.stamp stamps/add-archive.stamp \ -  stamps/split-debuginfo.stamp stamps/add-mime-types-file.stamp - 	mkdir -p stamps - 	touch $@ -  --clean-icedtea-stage2: clean-add-jamvm clean-check-crypto clean-add-archive clean-split-debuginfo \ -+clean-icedtea-stage2: clean-add-jamvm clean-add-archive clean-split-debuginfo \ -  clean-add-mime-types-file - 	rm -f stamps/icedtea-stage2.stamp -  - stamps/icedtea-debug-stage2.stamp: stamps/icedtea-debug.stamp \ -  stamps/add-cacao-debug.stamp stamps/add-zero-debug.stamp stamps/add-jamvm-debug.stamp \ -  stamps/add-systemtap-debug.stamp stamps/add-tzdata-support-debug.stamp \ -- stamps/check-crypto-debug.stamp stamps/add-archive-debug.stamp stamps/split-debuginfo-debug.stamp \ -+ stamps/add-archive-debug.stamp stamps/split-debuginfo-debug.stamp \ -  stamps/add-mime-types-file-debug.stamp - 	mkdir -p stamps - 	touch $@ -  --clean-icedtea-debug-stage2: clean-add-jamvm-debug clean-check-crypto-debug \ -+clean-icedtea-debug-stage2: clean-add-jamvm-debug \ -  clean-add-archive-debug clean-split-debuginfo-debug clean-add-mime-types-file-debug - 	rm -f stamps/icedtea-debug-stage2.stamp -  -@@ -2799,16 +2777,6 @@ - 	fi - 	rm -f stamps/add-tzdata-support-boot.stamp -  --stamps/check-crypto-boot.stamp: stamps/cryptocheck.stamp stamps/icedtea-boot.stamp --	if [ -e $(BUILD_BOOT_SDK_DIR)/bin/java ] ; then \ --	  $(BUILD_BOOT_SDK_DIR)/bin/java -cp $(CRYPTO_CHECK_BUILD_DIR) TestCryptoLevel ; \ --	fi --	mkdir -p stamps --	touch $@ -- --clean-check-crypto-boot: --	rm -f stamps/check-crypto-boot.stamp -- - stamps/add-archive-boot.stamp: stamps/icedtea-boot.stamp - @ENABLE_CACAO_FALSE@@ENABLE_JAMVM_FALSE@@ZERO_BUILD_FALSE@	if [ -e $(BUILD_BOOT_SDK_DIR)/bin/java ] ; then \ - @ENABLE_CACAO_FALSE@@ENABLE_JAMVM_FALSE@@ZERO_BUILD_FALSE@	  if test "x$(INSTALL_ARCH_DIR)" != "xppc64" -a "x$(INSTALL_ARCH_DIR)" != "xppc64le" ; then \ -@@ -2853,13 +2821,13 @@ -  - stamps/icedtea-stage1.stamp: stamps/icedtea-boot.stamp \ -  stamps/add-systemtap-boot.stamp stamps/add-tzdata-support-boot.stamp \ -- stamps/check-crypto-boot.stamp stamps/add-archive-boot.stamp \ -+ stamps/add-archive-boot.stamp \ -  stamps/split-debuginfo-boot.stamp stamps/add-mime-types-file-boot.stamp - 	mkdir -p stamps - 	touch $@ -  - clean-icedtea-stage1: clean-add-systemtap-boot clean-add-tzdata-support-boot \ -- clean-check-crypto-boot clean-add-archive-boot clean-split-debuginfo-boot \ -+ clean-add-archive-boot clean-split-debuginfo-boot \ -  clean-add-mime-types-file-boot - 	rm -f stamps/icedtea-stage1.stamp -  -@@ -2940,7 +2908,7 @@ - stamps/jamvm.stamp: $(OPENJDK_TREE) stamps/rt.stamp - @BUILD_JAMVM_TRUE@	cd jamvm/jamvm && \ - @BUILD_JAMVM_TRUE@	./autogen.sh --with-java-runtime-library=openjdk7 \ --@BUILD_JAMVM_TRUE@	  --prefix=$(abs_top_builddir)/jamvm/install ; \ -+@BUILD_JAMVM_TRUE@	  --prefix=$(abs_top_builddir)/jamvm/install $(CONFIGURE_ARGS); \ - @BUILD_JAMVM_TRUE@	$(MAKE) ; \ - @BUILD_JAMVM_TRUE@	$(MAKE) install - @BUILD_JAMVM_TRUE@	mkdir -p $(abs_top_builddir)/jamvm/install/hotspot/jre/lib/$(INSTALL_ARCH_DIR)/server -@@ -3323,19 +3291,6 @@ - 	  chmod u+w $(STAGE1_BOOT_RUNTIME) ; \ - 	fi -  --# Crypto Level Check -- --stamps/cryptocheck.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) --	mkdir -p $(CRYPTO_CHECK_BUILD_DIR) --	$(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ --	  -d $(CRYPTO_CHECK_BUILD_DIR) $(CRYPTO_CHECK_SRCS) --	mkdir -p stamps --	touch $@ -- --clean-cryptocheck: --	rm -rf $(CRYPTO_CHECK_BUILD_DIR) --	rm -f stamps/cryptocheck.stamp -- - # Mime Type Check -  - stamps/mimetypecheck.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) -@@ -3422,7 +3377,6 @@ - 	${mkinstalldirs} $(DESTDIR)${prefix}/jre/bin $(DESTDIR)${prefix}/jre/lib - 	${mkinstalldirs} $(DESTDIR)${prefix}/jre/lib/$(INSTALL_ARCH_DIR)/{.,headless,jli,xawt} - 	${mkinstalldirs} $(DESTDIR)${prefix}/jre/lib/ext --	${mkinstalldirs} $(DESTDIR)${prefix}/tapset - @SPLIT_DEBUGINFO_TRUE@	${mkinstalldirs} $(DESTDIR)$(DEBUG_PREFIX)/$(bindir) $(DESTDIR)$(DEBUG_PREFIX)/${exec_prefix}/lib - @SPLIT_DEBUGINFO_TRUE@	${mkinstalldirs} $(DESTDIR)$(DEBUG_PREFIX)/${exec_prefix}/lib/$(INSTALL_ARCH_DIR) - @SPLIT_DEBUGINFO_TRUE@	${mkinstalldirs} $(DESTDIR)$(DEBUG_PREFIX)/${exec_prefix}/lib/$(INSTALL_ARCH_DIR)/jli -@@ -3520,9 +3474,6 @@ - 	for files in $(BUILD_SDK_DIR)/jre/lib/ext/*.jar; do \ - 	  $(call install_file,$${files},$(DESTDIR)${prefix}/jre/lib/ext,$(INSTALL_DATA));\ - 	done --	for files in $(BUILD_SDK_DIR)/tapset/*.stp; do \ --	  $(call install_file,$${files},$(DESTDIR)${prefix}/tapset,$(INSTALL_DATA));\ --	done - 	$(abs_top_builddir)/pax-mark-vm $(DESTDIR)${prefix} false -  - install-data-local: -@@ -3687,12 +3638,6 @@ -  - cacao: stamps/cacao.stamp -  --check-crypto: stamps/check-crypto.stamp -- --check-crypto-boot: stamps/check-crypto-boot.stamp -- --check-crypto-debug: stamps/check-crypto-debug.stamp -- - check-mimetype: stamps/check-mimetype.stamp -  - check-ecc: stamps/check-ecc.stamp -@@ -3703,8 +3648,6 @@ -  - clone-boot: stamps/clone-boot.stamp -  --cryptocheck: stamps/cryptocheck.stamp -- - download: stamps/download.stamp -  - download-cacao: stamps/download-cacao.stamp -diff -Nur icedtea-2.6.9.orig/patches/openadk.patch icedtea-2.6.9/patches/openadk.patch ---- icedtea-2.6.9.orig/patches/openadk.patch	1970-01-01 01:00:00.000000000 +0100 -+++ icedtea-2.6.9/patches/openadk.patch	2017-04-01 21:44:15.574904720 +0200 -@@ -0,0 +1,688 @@ -+diff -Nur openjdk.orig/corba/make/common/shared/Defs-utils.gmk openjdk/corba/make/common/shared/Defs-utils.gmk -+--- openjdk.orig/corba/make/common/shared/Defs-utils.gmk	2017-02-07 05:06:20.000000000 +0100 -++++ openjdk/corba/make/common/shared/Defs-utils.gmk	2017-04-01 21:43:13.128492754 +0200 -+@@ -136,12 +136,12 @@ -+ TRUE           = $(UTILS_COMMAND_PATH)true -+ UNAME          = $(UTILS_COMMAND_PATH)uname -+ UNIQ           = $(UTILS_USR_BIN_PATH)uniq -+-UNZIP          = $(UTILS_USR_BIN_PATH)unzip -+-UNZIPSFX       = $(UTILS_DEVTOOL_PATH)unzipsfx -++UNZIP          = unzip -++UNZIPSFX       = unzipsfx -+ WC             = $(UTILS_USR_BIN_PATH)wc -+ WHICH          = $(UTILS_USR_BIN_PATH)which -+ YACC           = $(UTILS_CCS_BIN_PATH)yacc -+-ZIPEXE         = $(UTILS_DEVTOOL_PATH)zip -++ZIPEXE         = zip -+  -+ # Special cases -+ #RM   is defined by GNU Make as 'rm -f' -+diff -Nur openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make -+--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make	2017-02-07 05:06:40.000000000 +0100 -++++ openjdk/hotspot/make/linux/makefiles/gcc.make	2017-04-01 21:43:13.128492754 +0200 -+@@ -77,7 +77,7 @@ -+ VM_PICFLAG        = $(VM_PICFLAG/$(LINK_INTO)) -+  -+ ifeq ($(TYPE),ZERO) -+-CFLAGS += $(LIBFFI_CFLAGS) -++CFLAGS += $(LIBFFI_CFLAGS) -Wl,-Bstatic $(LIBFFI_LIBS) -Wl,-Bdynamic -+ endif -+ ifeq ($(TYPE),SHARK) -+ CFLAGS += $(LIBFFI_CFLAGS) -+diff -Nur openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make -+--- openjdk.orig/hotspot/make/linux/makefiles/vm.make	2017-02-07 05:06:40.000000000 +0100 -++++ openjdk/hotspot/make/linux/makefiles/vm.make	2017-04-01 21:43:13.128492754 +0200 -+@@ -301,27 +301,9 @@ -+   LIBJVM_MAPFILE$(LDNOMAP) = mapfile_reorder -+   LFLAGS_VM$(LDNOMAP)      += $(MAPFLAG:FILENAME=$(LIBJVM_MAPFILE)) -+   LFLAGS_VM                += $(SONAMEFLAG:SONAME=$(LIBJVM)) -+- -+-  # JVM is statically linked with libgcc[_s] and libstdc++; this is needed to -+-  # get around library dependency and compatibility issues. Must use gcc not -+-  # g++ to link. -+-  ifeq ($(STATIC_CXX), true) -+-    LFLAGS_VM              += $(STATIC_LIBGCC) -+-    LIBS_VM                += $(STATIC_STDCXX) -+-  else -+-    LIBS_VM                += -lstdc++ -+-  endif -+- -+-  LIBS_VM                  += $(LIBS) -+-endif -+-ifeq ($(TYPE),ZERO) -+-  LIBS_VM += $(LIBFFI_LIBS) -+-endif -+-ifeq ($(TYPE),SHARK) -+-  LIBS_VM   += $(LIBFFI_LIBS) $(LLVM_LIBS) -+-  LFLAGS_VM += $(LLVM_LDFLAGS) -+ endif -+  -++LIBS_VM = $(LIBS) -lstdc++ $(LIBFFI_CFLAGS) -Wl,-Bstatic $(LIBFFI_LIBS) -Wl,-Bdynamic -+ LINK_VM = $(LINK_LIB.CC) -+  -+ # rule for building precompiled header -+@@ -358,6 +340,7 @@ -+ $(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE) $(LD_SCRIPT) -+ 	$(QUIETLY) {                                                    \ -+ 	    echo Linking vm...;                                         \ -++	    echo DEBUG: $(LIBS_VM);					\ -+ 	    $(LINK_LIB.CXX/PRE_HOOK)                                     \ -+ 	    $(LINK_VM) $(LD_SCRIPT_FLAG)                                \ -+ 		       $(LFLAGS_VM) -o $@ $(LIBJVM.o) $(LIBS_VM);       \ -+diff -Nur openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make openjdk/hotspot/make/linux/makefiles/zeroshark.make -+--- openjdk.orig/hotspot/make/linux/makefiles/zeroshark.make	2017-02-07 05:06:40.000000000 +0100 -++++ openjdk/hotspot/make/linux/makefiles/zeroshark.make	2017-04-01 21:43:13.128492754 +0200 -+@@ -39,20 +39,20 @@ -+  -+ offsets_arm.s:	mkoffsets -+ 	@echo Generating assembler offsets -+-	./mkoffsets > $@ -++	$(QEMU) ./mkoffsets > $@ -+  -+ bytecodes_arm.s: bytecodes_arm.def mkbc -+ 	@echo Generating ARM assembler bytecode sequences -+-	$(CXX_COMPILE) -E -x c++ - < $< | ./mkbc - $@ $(COMPILE_DONE) -++	$(CXX_COMPILE) -E -x c++ - < $< | $(QEMU) ./mkbc - $@ $(COMPILE_DONE) -+  -+ mkbc:	$(GAMMADIR)/tools/mkbc.c -+ 	@echo Compiling mkbc tool -+-	$(CC_COMPILE) -o $@ $< $(COMPILE_DONE) -++	$(CC_COMPILE) -static -o $@ $< $(COMPILE_DONE) -+  -+ mkoffsets:	asm_helper.cpp -+ 	@echo Compiling offset generator -+ 	$(QUIETLY) $(REMOVE_TARGET) -+-	$(CXX_COMPILE) -DSTATIC_OFFSETS -o $@ $< $(COMPILE_DONE) -++	$(CXX_COMPILE) -Wl,-static -static -static-libstdc++ -DSTATIC_OFFSETS -o $@ $< $(COMPILE_DONE) -+  -+ endif -+ endif -+diff -Nur openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp openjdk/hotspot/src/os/linux/vm/os_linux.cpp -+--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp	2017-02-07 05:06:40.000000000 +0100 -++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp	2017-04-01 21:43:13.132492910 +0200 -+@@ -116,7 +116,6 @@ -+ # include <string.h> -+ # include <syscall.h> -+ # include <sys/sysinfo.h> -+-# include <gnu/libc-version.h> -+ # include <sys/ipc.h> -+ # include <sys/shm.h> -+ # include <link.h> -+@@ -674,9 +673,7 @@ -+      os::Linux::set_glibc_version(str); -+   } else { -+      // _CS_GNU_LIBC_VERSION is not supported, try gnu_get_libc_version() -+-     static char _gnu_libc_version[32]; -+-     jio_snprintf(_gnu_libc_version, sizeof(_gnu_libc_version), -+-              "glibc %s %s", gnu_get_libc_version(), gnu_get_libc_release()); -++     static char _gnu_libc_version[32] = "2.9"; -+      os::Linux::set_glibc_version(_gnu_libc_version); -+   } -+  -+@@ -2977,10 +2974,7 @@ -+ // If we are running with earlier version, which did not have symbol versions, -+ // we should use the base version. -+ void* os::Linux::libnuma_dlsym(void* handle, const char *name) { -+-  void *f = dlvsym(handle, name, "libnuma_1.1"); -+-  if (f == NULL) { -+-    f = dlsym(handle, name); -+-  } -++  void *f = dlsym(handle, name); -+   return f; -+ } -+  -+@@ -5665,7 +5659,21 @@ -+ // Linux doesn't yet have a (official) notion of processor sets, -+ // so just return the system wide load average. -+ int os::loadavg(double loadavg[], int nelem) { -+-  return ::getloadavg(loadavg, nelem); -++ FILE *LOADAVG; -++ double avg[3] = { 0.0, 0.0, 0.0 }; -++ int i, res = -1;; -++ -++ if ((LOADAVG = fopen("/proc/loadavg", "r"))) { -++ fscanf(LOADAVG, "%lf %lf %lf", &avg[0], &avg[1], &avg[2]); -++ res = 0; -++ fclose(LOADAVG); -++ } -++ -++ for (i = 0; (i < nelem) && (i < 3); i++) { -++ loadavg[i] = avg[i]; -++ } -++ -++ return res; -+ } -+  -+ void os::pause() { -+diff -Nur openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp -+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp	2017-02-07 05:06:40.000000000 +0100 -++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp	2017-04-01 21:43:13.132492910 +0200 -+@@ -36,7 +36,7 @@ -+  -+   // Atomically copy 64 bits of data -+   static void atomic_copy64(volatile void *src, volatile void *dst) { -+-#if defined(PPC32) -++#if defined(PPC32) && !defined(__NO_FPRS__) -+     double tmp; -+     asm volatile ("lfd  %0, 0(%1)\n" -+                   "stfd %0, 0(%2)\n" -+diff -Nur openjdk.orig/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp -+--- openjdk.orig/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp	2017-02-07 05:06:40.000000000 +0100 -++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp	2017-04-01 21:43:13.132492910 +0200 -+@@ -245,7 +245,7 @@ -+ #elif defined(__APPLE__) -+ inline int g_isnan(double f) { return isnan(f); } -+ #elif defined(LINUX) || defined(_ALLBSD_SOURCE) -+-inline int g_isnan(float  f) { return isnanf(f); } -++inline int g_isnan(float  f) { return __isnanf(f); } -+ inline int g_isnan(double f) { return isnan(f); } -+ #else -+ #error "missing platform-specific definition here" -+@@ -259,8 +259,8 @@ -+  -+ // Checking for finiteness -+  -+-inline int g_isfinite(jfloat  f)                 { return finite(f); } -+-inline int g_isfinite(jdouble f)                 { return finite(f); } -++inline int g_isfinite(jfloat  f)                 { return isfinite(f); } -++inline int g_isfinite(jdouble f)                 { return isfinite(f); } -+  -+  -+ // Wide characters -+diff -Nur openjdk.orig/jdk/make/com/sun/java/pack/Makefile openjdk/jdk/make/com/sun/java/pack/Makefile -+--- openjdk.orig/jdk/make/com/sun/java/pack/Makefile	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/make/com/sun/java/pack/Makefile	2017-04-01 21:43:13.132492910 +0200 -+@@ -80,7 +80,7 @@ -+   OTHER_CXXFLAGS += $(ZLIB_CFLAGS) -DSYSTEM_ZLIB -+  endif -+ else -+-  OTHER_CXXFLAGS += -DNO_ZLIB -DUNPACK_JNI -++  CXXFLAGS_COMMON += -DNO_ZLIB -DUNPACK_JNI -+   OTHER_LDLIBS += $(JVMLIB) -+ endif -+  -+diff -Nur openjdk.orig/jdk/make/com/sun/nio/sctp/Makefile openjdk/jdk/make/com/sun/nio/sctp/Makefile -+--- openjdk.orig/jdk/make/com/sun/nio/sctp/Makefile	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/make/com/sun/nio/sctp/Makefile	2017-04-01 21:43:13.132492910 +0200 -+@@ -75,8 +75,8 @@ -+ ifneq ($(COMPILER_WARNINGS_FATAL),false) -+ COMPILER_WARNINGS_FATAL=true -+ endif -+-#OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -ljava -lnet -lpthread -ldl -+-OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -lnio -lnet -lpthread -++#OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -ljava -ljavanet -lpthread -ldl -++OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -lnio -ljavanet -lpthread -+ endif -+ ifeq ($(PLATFORM), solaris) -+ #LIBSCTP = -lsctp -+diff -Nur openjdk.orig/jdk/make/common/Defs.gmk openjdk/jdk/make/common/Defs.gmk -+--- openjdk.orig/jdk/make/common/Defs.gmk	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/make/common/Defs.gmk	2017-04-01 21:43:13.132492910 +0200 -+@@ -207,7 +207,7 @@ -+       ifeq ($(PLATFORM), macosx) -+         FREETYPE_HEADERS_PATH = /usr/X11R6/include -+       else -+-        FREETYPE_HEADERS_PATH = /usr/include -++        FREETYPE_HEADERS_PATH = /usr/include/disabled -+       endif -+     endif -+   endif -+diff -Nur openjdk.orig/jdk/make/common/Sanity.gmk openjdk/jdk/make/common/Sanity.gmk -+--- openjdk.orig/jdk/make/common/Sanity.gmk	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/make/common/Sanity.gmk	2017-04-01 21:43:13.132492910 +0200 -+@@ -91,8 +91,7 @@ -+     sane-ld_run_path \ -+     sane-alt_bootdir \ -+     sane-bootdir \ -+-    sane-local-bootdir \ -+-    sane-alsa-headers -++    sane-local-bootdir -+  -+ ifdef OPENJDK -+ sanity-all:: sane-freetype  -+diff -Nur openjdk.orig/jdk/make/common/shared/Defs-utils.gmk openjdk/jdk/make/common/shared/Defs-utils.gmk -+--- openjdk.orig/jdk/make/common/shared/Defs-utils.gmk	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/make/common/shared/Defs-utils.gmk	2017-04-01 21:43:13.132492910 +0200 -+@@ -157,13 +157,13 @@ -+ TRUE           = $(UTILS_COMMAND_PATH)true -+ UNAME          = $(UTILS_COMMAND_PATH)uname -+ UNIQ           = $(UTILS_USR_BIN_PATH)uniq -+-UNZIP          = $(UTILS_USR_BIN_PATH)unzip -+-UNZIPSFX       = $(UTILS_DEVTOOL_PATH)unzipsfx -++UNZIP          = unzip -++UNZIPSFX       = unzipsfx -+ XARGS          = $(UTILS_USR_BIN_PATH)xargs -+ WC             = $(UTILS_USR_BIN_PATH)wc -+ WHICH          = $(UTILS_USR_BIN_PATH)which -+ YACC           = $(UTILS_CCS_BIN_PATH)yacc -+-ZIPEXE         = $(UTILS_DEVTOOL_PATH)zip -++ZIPEXE         = zip -+  -+ # Special cases -+ #RM   is defined by GNU Make as 'rm -f' -+diff -Nur openjdk.orig/jdk/make/common/shared/Platform.gmk openjdk/jdk/make/common/shared/Platform.gmk -+--- openjdk.orig/jdk/make/common/shared/Platform.gmk	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/make/common/shared/Platform.gmk	2017-04-01 21:43:13.132492910 +0200 -+@@ -170,9 +170,6 @@ -+   else -+     mach := $(shell uname -m) -+   endif -+-  ifneq (,$(wildcard /usr/bin/dpkg-architecture)) -+-    mach := $(shell (dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null || echo $(mach)) | sed 's/arm64/aarch64/;s/powerpc$$/ppc/;s/hppa/parisc/;s/ppc64el/ppc64le/') -+-  endif -+   archExpr = case "$(mach)" in \ -+                 i[3-9]86) \ -+                     echo i586 \ -+diff -Nur openjdk.orig/jdk/make/common/shared/Sanity.gmk openjdk/jdk/make/common/shared/Sanity.gmk -+--- openjdk.orig/jdk/make/common/shared/Sanity.gmk	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/make/common/shared/Sanity.gmk	2017-04-01 21:43:13.132492910 +0200 -+@@ -114,11 +114,6 @@ -+     elif [ -f /etc/lsb-release ] ; then \ -+       $(EGREP) DISTRIB_RELEASE /etc/lsb-release | $(SED) -e 's@.*DISTRIB_RELEASE=\(.*\)@\1@'; \ -+     fi) -+-  ALSA_INCLUDE=/usr/include/alsa/version.h -+-  ALSA_LIBRARY=/usr/lib/libasound.so -+-  _ALSA_VERSION := $(shell $(EGREP) SND_LIB_VERSION_STR $(ALSA_INCLUDE) | \ -+-           $(SED) -e 's@.*"\(.*\)".*@\1@' ) -+-  ALSA_VERSION := $(call GetVersion,$(_ALSA_VERSION)) -+ endif -+  -+ ifeq ($(PLATFORM), macosx) -+@@ -225,7 +220,6 @@ -+ 	sane-compiler \ -+ 	sane-link \ -+ 	sane-cacerts \ -+-	sane-alsa-headers \ -+ 	sane-ant_version \ -+ 	sane-zip_version \ -+ 	sane-unzip_version \ -+@@ -1381,34 +1375,6 @@ -+   endif -+ endif -+  -+-###################################################### -+-# Check that ALSA headers and libs are installed and  -+-# that the header has the right version. We only -+-# need /usr/include/alsa/version.h and /usr/lib/libasound.so -+-###################################################### -+- -+-ifdef REQUIRED_ALSA_VERSION -+-  ALSA_CHECK := $(call CheckVersions,$(ALSA_VERSION),$(REQUIRED_ALSA_VERSION)) -+-endif -+-sane-alsa-headers: -+-ifdef REQUIRED_ALSA_VERSION -+-	@if [ "$(ALSA_CHECK)" != "missing" ] ; then \ -+-	    if [ "$(ALSA_CHECK)" != "same" -a "$(ALSA_CHECK)" != "newer"  ] ; then \ -+-		$(ECHO) "ERROR: The ALSA version must be $(REQUIRED_ALSA_VERSION) or higher. \n" \ -+-		"      You have the following ALSA version installed: $${alsa_version} \n" \ -+-		"      Please reinstall ALSA (drivers and lib). You can download \n" \ -+-		"      the source distribution from http://www.alsa-project.org \n" \ -+-		"      or go to http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages. \n" \ -+-		"" >> $(ERROR_FILE) ; \ -+-	    fi ; \ -+-	else \ -+-	    $(ECHO) "ERROR: You seem to not have installed ALSA $(REQUIRED_ALSA_VERSION) or higher. \n" \ -+-	    "      Please install ALSA (drivers and lib). You can download the \n" \ -+-	    "      source distribution from http://www.alsa-project.org or go to \n" \ -+-	    "      http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages. \n" \ -+-	    "" >> $(ERROR_FILE) ; \ -+-	fi -+-endif -+  -+ # If a sanity file doesn't exist, just make sure it's dir exists -+ $(SANITY_FILES): -+diff -Nur openjdk.orig/jdk/make/java/fdlibm/Makefile openjdk/jdk/make/java/fdlibm/Makefile -+--- openjdk.orig/jdk/make/java/fdlibm/Makefile	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/make/java/fdlibm/Makefile	2017-04-01 21:43:13.132492910 +0200 -+@@ -81,7 +81,7 @@ -+ # -+ # Things that must be linked in. -+ # -+-OTHER_LDLIBS = -++OTHER_LDLIBS = -lm -+  -+ # -+ # Files to compile. -+diff -Nur openjdk.orig/jdk/make/java/net/Makefile openjdk/jdk/make/java/net/Makefile -+--- openjdk.orig/jdk/make/java/net/Makefile	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/make/java/net/Makefile	2017-04-01 21:43:13.132492910 +0200 -+@@ -25,7 +25,7 @@ -+  -+ BUILDDIR = ../.. -+ PACKAGE = java.net -+-LIBRARY = net -++LIBRARY = javanet -+ PRODUCT = sun -+ JAVAC_MAX_WARNINGS = true -+ JAVAC_LINT_OPTIONS = -Xlint:all,-deprecation -+diff -Nur openjdk.orig/jdk/make/java/nio/Makefile openjdk/jdk/make/java/nio/Makefile -+--- openjdk.orig/jdk/make/java/nio/Makefile	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/make/java/nio/Makefile	2017-04-01 21:43:13.132492910 +0200 -+@@ -409,7 +409,7 @@ -+ endif -+  -+ ifeq ($(PLATFORM), linux) -+-  OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -ljava -lnet -lpthread $(LIBDL) -++  OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -ljava -ljavanet -lpthread $(LIBDL) -+   ifeq ($(SYSTEM_GIO), true) -+     OTHER_LDLIBS += $(GIO_LIBS) -+     OTHER_INCLUDES += $(GIO_CFLAGS) -DUSE_SYSTEM_GIO -+@@ -966,7 +966,7 @@ -+  -+ $(GENSOR_EXE) : $(TEMPDIR)/$(GENSOR_SRC) -+ 	$(prep-target) -+-	($(CD) $(TEMPDIR); $(NIO_CC) $(CPPFLAGS) $(LDDFLAGS) \ -++	($(CD) $(TEMPDIR); $(HOST_CC) $(CPPFLAGS_FOR_BUILD) $(LDDFLAGS) \ -+ 	   -o genSocketOptionRegistry$(EXE_SUFFIX) $(GENSOR_SRC)) -+  -+ ifdef NIO_PLATFORM_CLASSES_ROOT_DIR -+@@ -1002,7 +1002,7 @@ -+  -+ $(GENUC_EXE) : $(GENUC_SRC) -+ 	$(prep-target) -+-	$(NIO_CC) $(CPPFLAGS) -o $@ $(GENUC_SRC) -++	$(HOST_CC) $(CPPFLAGS_FOR_BUILD) -o $@ $(GENUC_SRC) -+  -+ ifdef NIO_PLATFORM_CLASSES_ROOT_DIR -+ $(SFS_GEN)/UnixConstants.java: $(NIO_PLATFORM_CLASSES_ROOT_DIR)/sun/nio/fs/UnixConstants-$(PLATFORM)-$(ARCH).java -+diff -Nur openjdk.orig/jdk/make/javax/sound/jsoundalsa/Makefile openjdk/jdk/make/javax/sound/jsoundalsa/Makefile -+--- openjdk.orig/jdk/make/javax/sound/jsoundalsa/Makefile	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/make/javax/sound/jsoundalsa/Makefile	2017-04-01 21:43:13.132492910 +0200 -+@@ -72,6 +72,7 @@ -+ 	-DUSE_PORTS=TRUE  \ -+ 	-DUSE_PLATFORM_MIDI_OUT=TRUE \ -+ 	-DUSE_PLATFORM_MIDI_IN=TRUE \ -++	$(ALSA_CPPFLAGS) \ -+ 	-I$(SHARE_SRC)/native/com/sun/media/sound -+  -+ # -+diff -Nur openjdk.orig/jdk/make/sun/awt/mawt.gmk openjdk/jdk/make/sun/awt/mawt.gmk -+--- openjdk.orig/jdk/make/sun/awt/mawt.gmk	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/make/sun/awt/mawt.gmk	2017-04-01 21:43:13.136493064 +0200 -+@@ -151,22 +151,6 @@ -+ #endif -+  -+ LIBXTST = -lXtst -+-ifeq ($(PLATFORM), linux) -+-   ifeq ($(ARCH_DATA_MODEL), 64) -+-   # XXX what about the rest of them? -+-        LIBXT = -lXt -+-    else -+-    # Allows for builds on Debian GNU Linux, X11 is in a different place  -+-       LIBXT = $(firstword $(wildcard $(OPENWIN_LIB)/libXt.a) \ -+-                        $(wildcard /usr/lib/libXt.a)) -+-       LIBSM = $(firstword $(wildcard $(OPENWIN_LIB)/libSM.a) \ -+-                        $(wildcard /usr/lib/libSM.a)) -+-       LIBICE = $(firstword $(wildcard $(OPENWIN_LIB)/libICE.a) \ -+-                         $(wildcard /usr/lib/libICE.a)) -+-       LIBXTST = $(firstword $(wildcard $(OPENWIN_LIB)/libXtst.a) \ -+-                         $(wildcard /usr/lib/libXtst.a)) -+-   endif -+-endif -+  -+ # Use -lXmu for EditRes support -+ LIBXMU_DBG	= -lXmu -+@@ -181,7 +165,7 @@ -+ OTHER_CFLAGS += -DMLIB_NO_LIBSUNMATH -+ # XXX what is this define below? Isn't it motif-related? -+ OTHER_CFLAGS += -DXMSTRINGDEFINES=1 -+-OTHER_LDLIBS =  $(LIBXMU) $(LIBXTST) -lXext $(LIBXT) $(LIBSM) $(LIBICE) -lX11 -lXi -++OTHER_LDLIBS =  $(LIBXMU) $(LIBXTST) -lXext -lXt -lSM -lICE -lX11 -lXi -+ endif -+  -+ endif -+@@ -231,11 +215,6 @@ -+   CPPFLAGS += -I$(PLATFORM_SRC)/native/common/deps/fontconfig2 -+ endif -+  -+-ifndef HEADLESS -+-CPPFLAGS += -I$(OPENWIN_HOME)/include  -+-LDFLAGS  += -L$(OPENWIN_LIB) -+- -+-endif # !HEADLESS -+  -+ CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/debug \ -+             -I$(SHARE_SRC)/native/$(PKGDIR)/../font \ -+@@ -270,11 +249,6 @@ -+ endif # !HEADLESS -+ endif # PLATFORM -+  -+-ifeq ($(PLATFORM), linux) -+-  # Checking for the X11/extensions headers at the additional location -+-  CPPFLAGS += -I$(firstword $(wildcard $(OPENWIN_HOME)/include/X11/extensions) \ -+-                        $(wildcard /usr/include/X11/extensions)) -+-endif -+  -+ ifeq ($(PLATFORM), macosx) -+   CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions \ -+diff -Nur openjdk.orig/jdk/make/sun/xawt/Makefile openjdk/jdk/make/sun/xawt/Makefile -+--- openjdk.orig/jdk/make/sun/xawt/Makefile	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/make/sun/xawt/Makefile	2017-04-01 21:43:13.136493064 +0200 -+@@ -299,16 +299,10 @@ -+ SIZERS = $(SIZER).32 -+ SIZERS_C = $(SIZER_32_C) -+ SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32 -+-ifdef CROSS_COMPILE_ARCH -+-CFLAGS_32 = -m32 -+-endif -+ else # !32 -+ SIZERS = $(SIZER).64 -+ SIZERS_C = $(SIZER_64_C) -+ SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.64 -+-ifdef CROSS_COMPILE_ARCH -+-CFLAGS_64 = -m64 -+-endif -+ endif # 32 -+ endif # !macosx -+ endif # solaris -+@@ -344,11 +338,7 @@ -+ WRAPPER_GENERATOR_CLASS=$(WRAPPER_GENERATOR_TEMPDIR)/WrapperGenerator.class  -+ XLIBTYPES=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/xlibtypes.txt -+  -+-ifndef CROSS_COMPILE_ARCH -+-SIZERS_CC = $(CC) -+-else -+-SIZERS_CC = $(HOST_CC) -+-endif -++SIZERS_CC = $(CC) -static -+  -+ $(SIZERS): $(SIZERS_C)  -+ 	$(prep-target) -+@@ -371,7 +361,7 @@ -+ 	    $(CHMOD) +w $@;\ -+ 	else	\ -+ 	    $(ECHO) GENERATING $@; \ -+-	    $(WRAPPER_GENERATOR_DIR)/sizer$(suffix $@) > $@; \ -++	    $(QEMU) $(WRAPPER_GENERATOR_DIR)/sizer$(suffix $@) > $@; \ -+ 	fi -+ 	@if [ "$(DOCOMPARE)$(suffix $@)" = "true.64" ]; then \ -+ 	    $(ECHO) COMPARING $@ and $(STORED_SIZES_TMPL_$(PLATFORM)_$(LIBARCH)); \ -+diff -Nur openjdk.orig/jdk/src/share/classes/java/net/AbstractPlainSocketImpl.java openjdk/jdk/src/share/classes/java/net/AbstractPlainSocketImpl.java -+--- openjdk.orig/jdk/src/share/classes/java/net/AbstractPlainSocketImpl.java	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/src/share/classes/java/net/AbstractPlainSocketImpl.java	2017-04-01 21:43:13.136493064 +0200 -+@@ -78,7 +78,7 @@ -+      */ -+     static { -+         java.security.AccessController.doPrivileged( -+-                  new sun.security.action.LoadLibraryAction("net")); -++                  new sun.security.action.LoadLibraryAction("javanet")); -+     } -+  -+     /** -+diff -Nur openjdk.orig/jdk/src/share/classes/java/net/DatagramPacket.java openjdk/jdk/src/share/classes/java/net/DatagramPacket.java -+--- openjdk.orig/jdk/src/share/classes/java/net/DatagramPacket.java	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/src/share/classes/java/net/DatagramPacket.java	2017-04-01 21:43:13.136493064 +0200 -+@@ -47,7 +47,7 @@ -+      */ -+     static { -+         java.security.AccessController.doPrivileged( -+-                  new sun.security.action.LoadLibraryAction("net")); -++                  new sun.security.action.LoadLibraryAction("javanet")); -+         init(); -+     } -+  -+diff -Nur openjdk.orig/jdk/src/share/classes/java/net/InetAddress.java openjdk/jdk/src/share/classes/java/net/InetAddress.java -+--- openjdk.orig/jdk/src/share/classes/java/net/InetAddress.java	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/src/share/classes/java/net/InetAddress.java	2017-04-01 21:43:13.136493064 +0200 -+@@ -288,7 +288,7 @@ -+     static { -+         preferIPv6Address = java.security.AccessController.doPrivileged( -+             new GetBooleanAction("java.net.preferIPv6Addresses")).booleanValue(); -+-        AccessController.doPrivileged(new LoadLibraryAction("net")); -++        AccessController.doPrivileged(new LoadLibraryAction("javanet")); -+         init(); -+     } -+  -+diff -Nur openjdk.orig/jdk/src/share/classes/java/net/NetworkInterface.java openjdk/jdk/src/share/classes/java/net/NetworkInterface.java -+--- openjdk.orig/jdk/src/share/classes/java/net/NetworkInterface.java	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/src/share/classes/java/net/NetworkInterface.java	2017-04-01 21:43:13.136493064 +0200 -+@@ -53,7 +53,7 @@ -+     private static final int defaultIndex; /* index of defaultInterface */ -+  -+     static { -+-        AccessController.doPrivileged(new LoadLibraryAction("net")); -++        AccessController.doPrivileged(new LoadLibraryAction("javanet")); -+         init(); -+         defaultInterface = DefaultInterface.getDefault(); -+         if (defaultInterface != null) { -+diff -Nur openjdk.orig/jdk/src/share/classes/sun/net/sdp/SdpSupport.java openjdk/jdk/src/share/classes/sun/net/sdp/SdpSupport.java -+--- openjdk.orig/jdk/src/share/classes/sun/net/sdp/SdpSupport.java	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/src/share/classes/sun/net/sdp/SdpSupport.java	2017-04-01 21:43:13.136493064 +0200 -+@@ -76,6 +76,6 @@ -+  -+     static { -+         AccessController.doPrivileged( -+-            new sun.security.action.LoadLibraryAction("net")); -++            new sun.security.action.LoadLibraryAction("javanet")); -+     } -+ } -+diff -Nur openjdk.orig/jdk/src/share/classes/sun/net/spi/DefaultProxySelector.java openjdk/jdk/src/share/classes/sun/net/spi/DefaultProxySelector.java -+--- openjdk.orig/jdk/src/share/classes/sun/net/spi/DefaultProxySelector.java	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/src/share/classes/sun/net/spi/DefaultProxySelector.java	2017-04-01 21:43:13.136493064 +0200 -+@@ -95,7 +95,7 @@ -+                 }}); -+         if (b != null && b.booleanValue()) { -+             java.security.AccessController.doPrivileged( -+-                      new sun.security.action.LoadLibraryAction("net")); -++                      new sun.security.action.LoadLibraryAction("javanet")); -+             hasSystemProxies = init(); -+         } -+     } -+diff -Nur openjdk.orig/jdk/src/solaris/bin/mipsel/jvm.cfg openjdk/jdk/src/solaris/bin/mipsel/jvm.cfg -+--- openjdk.orig/jdk/src/solaris/bin/mipsel/jvm.cfg	1970-01-01 01:00:00.000000000 +0100 -++++ openjdk/jdk/src/solaris/bin/mipsel/jvm.cfg	2017-04-01 21:43:13.136493064 +0200 -+@@ -0,0 +1,38 @@ -++# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. -++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -++# -++# This code is free software; you can redistribute it and/or modify it -++# under the terms of the GNU General Public License version 2 only, as -++# published by the Free Software Foundation.  Oracle designates this -++# particular file as subject to the "Classpath" exception as provided -++# by Oracle in the LICENSE file that accompanied this code. -++# -++# This code is distributed in the hope that it will be useful, but WITHOUT -++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -++# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License -++# version 2 for more details (a copy is included in the LICENSE file that -++# accompanied this code). -++# -++# You should have received a copy of the GNU General Public License version -++# 2 along with this work; if not, write to the Free Software Foundation, -++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -++# -++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -++# or visit www.oracle.com if you need additional information or have any -++# questions. -++# -++# List of JVMs that can be used as an option to java, javac, etc. -++# Order is important -- first in this list is the default JVM. -++# NOTE that this both this file and its format are UNSUPPORTED and -++# WILL GO AWAY in a future release. -++# -++# You may also select a JVM in an arbitrary location with the -++# "-XXaltjvm=<jvm_dir>" option, but that too is unsupported -++# and may not be available in a future release. -++# -++-client KNOWN -++-server KNOWN -++-hotspot ERROR -++-classic WARN -++-native ERROR -++-green ERROR -+diff -Nur openjdk.orig/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java openjdk/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java -+--- openjdk.orig/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java	2017-04-01 21:43:13.136493064 +0200 -+@@ -260,7 +260,7 @@ -+  -+     static { -+         java.security.AccessController.doPrivileged( -+-            new sun.security.action.LoadLibraryAction("net")); -++            new sun.security.action.LoadLibraryAction("javanet")); -+     } -+  -+ } -+diff -Nur openjdk.orig/jdk/src/solaris/native/sun/awt/awt_InputMethod.c openjdk/jdk/src/solaris/native/sun/awt/awt_InputMethod.c -+--- openjdk.orig/jdk/src/solaris/native/sun/awt/awt_InputMethod.c	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/src/solaris/native/sun/awt/awt_InputMethod.c	2017-04-01 21:43:13.136493064 +0200 -+@@ -246,7 +246,8 @@ -+     if (wcs == NULL) -+         return NULL; -+  -+-    n = len*MB_CUR_MAX + 1; -++    //evil hack for uclibc -++    n = len*1 + 1; -+  -+     mbs = (char *) malloc(n * sizeof(char)); -+     if (mbs == NULL) { -+diff -Nur openjdk.orig/jdk/src/solaris/native/sun/xawt/XToolkit.c openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c -+--- openjdk.orig/jdk/src/solaris/native/sun/xawt/XToolkit.c	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c	2017-04-01 21:43:13.136493064 +0200 -+@@ -27,9 +27,6 @@ -+ #include <X11/Xutil.h> -+ #include <X11/Xos.h> -+ #include <X11/Xatom.h> -+-#ifdef __linux__ -+-#include <execinfo.h> -+-#endif -+  -+ #include <jvm.h> -+ #include <jni.h> -+@@ -785,25 +782,6 @@ -+     return ret; -+ } -+  -+-#ifdef __linux__ -+-void print_stack(void) -+-{ -+-  void *array[10]; -+-  size_t size; -+-  char **strings; -+-  size_t i; -+- -+-  size = backtrace (array, 10); -+-  strings = backtrace_symbols (array, size); -+- -+-  fprintf (stderr, "Obtained %zd stack frames.\n", size); -+- -+-  for (i = 0; i < size; i++) -+-     fprintf (stderr, "%s\n", strings[i]); -+- -+-  free (strings); -+-} -+-#endif -+  -+ Window get_xawt_root_shell(JNIEnv *env) { -+   static jclass classXRootWindow = NULL; -+diff -Nur openjdk.orig/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java openjdk/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java -+--- openjdk.orig/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java	2017-02-13 04:45:45.000000000 +0100 -++++ openjdk/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java	2017-04-01 21:43:13.136493064 +0200 -+@@ -161,7 +161,7 @@ -+  -+     static { -+         java.security.AccessController.doPrivileged( -+-            new sun.security.action.LoadLibraryAction("net")); -++            new sun.security.action.LoadLibraryAction("javanet")); -+         init0(); -+  -+         // start the address listener thread diff --git a/package/openjdk8/Makefile b/package/openjdk8/Makefile deleted file mode 100644 index 2b0d2b6c7..000000000 --- a/package/openjdk8/Makefile +++ /dev/null @@ -1,120 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		openjdk8 -PKG_VERSION:=		8u131-b11 -PKG_RELEASE:=		1 -PKG_HASH:=		d57a81345acd26d8d2681201bcf00671ad54d5d6e4b61ad1fe621994ba1fb1ec -PKG_DESCR:=		java virtual machine -PKG_SECTION:=		dev/lang -PKG_DEPENDS:=		alsa-lib freetype libx11 libxext libxrender libxtst -PKG_DEPENDS+=		libxt libffi zlib -PKG_BUILDDEP:=		openjdk7-host libX11 libXext libXrender libXtst libXt -PKG_BUILDDEP+=		freetype alsa-lib cups libffi zlib -PKG_NEEDS:=             threads c++ iconv -PKG_URL:=		http://openjdk.org/ -PKG_HG:=		http://hg.openjdk.java.net/jdk8u/jdk8u -PKG_SITES:=		${PKG_HG}/archive/ -PKG_NOPARALLEL:=	1 -ICEDTEA_VERSION:=	3.4.0 - -PKG_HOST_DEPENDS:=	linux -PKG_ARCH_DEPENDS:=	arm mips ppc x86 x86_64 - -DISTFILES:=		jdk$(PKG_VERSION).tar.bz2 -WRKSRC=			${WRKDIST}/openjdk - -include $(ADK_TOPDIR)/mk/package.mk - -$(eval $(call PKG_template,OPENJDK8,openjdk8,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) - -JDKARCH:=		$(ADK_TARGET_CPU_ARCH) -ifeq ($(ADK_TARGET_ARCH),x86) -JDKARCH:=		i386 -endif -ifeq ($(ADK_TARGET_CPU_ARCH),x86_64) -JDKARCH:=		amd64 -endif - -# https://bugzilla.redhat.com/show_bug.cgi?id=1306558 -TARGET_CFLAGS+=		-fno-lifetime-dse -fno-delete-null-pointer-checks -TARGET_CXXFLAGS+=	-fno-lifetime-dse -fno-delete-null-pointer-checks -std=gnu++98 - -CONFIG_STYLE:=		basic -CONFIGURE_ARGS+=	--prefix=$(WRKINST)/usr \ -			--with-jvm-variants=zero \ -			--with-stdc++lib=dynamic \ -			--enable-unlimited-crypto \ -			--disable-debug-symbols \ -			--with-debug-level=release \ -			--with-zlib=system \ -			--enable-freetype-bundling \ -			--with-freetype=$(STAGING_TARGET_DIR)/usr \ -			--with-freetype-include=$(STAGING_TARGET_DIR)/usr/include/freetype2 \ -			--with-boot-jdk=$(STAGING_HOST_DIR)/bootstrap-jdk \ -			--with-extra-cflags="$(TARGET_CFLAGS)" \ -			--with-extra-cxxflags="$(TARGET_CXXFLAGS)" \ -			--with-extra-ldflags="$(TARGET_LDFLAGS)" \ -			--with-cups=$(STAGING_TARGET_DIR)/usr \ -			--with-alsa=$(STAGING_TARGET_DIR) \ -			--with-x=$(STAGING_TARGET_DIR)/usr \ -			--x-includes=$(STAGING_TARGET_DIR)/usr/include \ -			--x-libraries=$(STAGING_TARGET_DIR)/usr/lib -CONFIGURE_ENV:=		BUILD_CC=/usr/bin/gcc \ -			BUILD_CXX=/usr/bin/g++ \ -			BUILD_LD=/usr/bin/ld \ -			ac_cv_path_POTENTIAL_CC=$(TARGET_CC) \ -			ac_cv_path_POTENTIAL_CXX=$(TARGET_CXX) \ -			LD=$(TARGET_CC) \ -			OBJCOPY='$(TARGET_CROSS)objcopy' \ -			STRIP='$(TARGET_CROSS)strip' \ -			LIBFFI_CFLAGS="$(TARGET_CPPFLAGS)" \ -			LIBFFI_LIBS="$(TARGET_LDFLAGS) -lffi" - -XAKE_FLAGS+=		LD='$(TARGET_CC)' \ -			STRIP='$(TARGET_CROSS)strip' \ -			BUILD_CC='$(HOST_CC)' \ -			BUILD_LD='$(HOST_CC)' \ -			LOG=debug \ -			JOBS="4" - -post-extract: -	(cd $(DL_DIR); \ -	for file in jdk corba hotspot jaxp jaxws langtools nashorn; do \ -		if [ ! -f openjdk8-$${file}$(PKG_VERSION).tar.bz2 ]; then \ -			wget -c -O openjdk8-$${file}$(PKG_VERSION).tar.bz2 $(PKG_HG)/$${file}/archive/jdk$(PKG_VERSION).tar.bz2 ; \ -		fi; \ -	done; \ -	if [ ! -f icedtea-$(ICEDTEA_VERSION).tar.xz ]; then \ -		wget -O icedtea-$(ICEDTEA_VERSION).tar.xz http://icedtea.classpath.org/download/source/icedtea-$(ICEDTEA_VERSION).tar.xz; \ -	fi; \ -	) -	mkdir -p $(WRKDIST)/openjdk -	(cd $(WRKDIST); \ -		tar --strip-components=1 -xvf $(DL_DIR)/icedtea-$(ICEDTEA_VERSION).tar.xz; \ -		tar --strip-components=1 -C $(WRKDIST)/openjdk -xvf $(DL_DIR)/jdk$(PKG_VERSION).tar.bz2; \ -		for file in jdk corba hotspot jaxp jaxws langtools nashorn; do \ -			mkdir -p $(WRKDIST)/openjdk/$${file}; \ -			tar --strip-components=1 -C $(WRKDIST)/openjdk/$${file} -xvf $(DL_DIR)/openjdk8-$${file}$(PKG_VERSION).tar.bz2 ; \ -		done; \ -	) -	(cd $(WRKDIST)/openjdk; patch -p1 < $(ADK_TOPDIR)/package/openjdk8/files/openadk.patch)  -	(cd $(WRKDIST); \ -		PATH=$(HOST_PATH) sed -e 's|@abs_top_srcdir@|$(WRKDIST)|g' -e '/^patch.*/d' fsg.sh.in > fsg.sh; \ -		${BASH} fsg.sh; \ -	) -	cat $(WRKDIST)/openjdk/common/autoconf/configure.ac | PATH=$(HOST_PATH) sed -e "s|@DATE_WHEN_GENERATED@|`LC_ALL=C date +%s`|" | $(STAGING_HOST_DIR)/usr/bin/autoconf \ -		-W all -I$(WRKDIST)/openjdk/common/autoconf - > $(WRKDIST)/openjdk/common/autoconf/generated-configure.sh -	$(SED) "s#^WARNINGS_ARE_ERRORS.*#WARNINGS_ARE_ERRORS=#" $(WRKDIST)/openjdk/hotspot/make/linux/makefiles/gcc.make - -openjdk8-install: -	$(INSTALL_DIR) $(IDIR_OPENJDK8)/usr/bin -	$(INSTALL_DIR) $(IDIR_OPENJDK8)/usr/lib/jvm -	$(CP) $(WRKINST)//usr/jvm/openjdk-1.8.0-internal/* \ -		$(IDIR_OPENJDK8)/usr/lib/jvm -	(cd $(IDIR_OPENJDK8)/usr/bin && ln -sf ../lib/jvm/jre/bin/java .) -	(cd $(IDIR_OPENJDK8)/usr/lib/jvm/jre/lib/$(JDKARCH) && ln -sf server/libjvm.so .) - -include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/openjdk8/files/openadk.patch b/package/openjdk8/files/openadk.patch deleted file mode 100644 index c7e93ca0e..000000000 --- a/package/openjdk8/files/openadk.patch +++ /dev/null @@ -1,295 +0,0 @@ -diff -Nur openjdk.orig/common/autoconf/platform.m4 openjdk/common/autoconf/platform.m4 ---- openjdk.orig/common/autoconf/platform.m4	2015-12-23 01:50:32.000000000 +0100 -+++ openjdk/common/autoconf/platform.m4	2016-01-08 17:54:55.814451099 +0100 -@@ -36,25 +36,85 @@ -       VAR_CPU_BITS=64 -       VAR_CPU_ENDIAN=little -       ;; --    i?86) -+    x86|i?86) -       VAR_CPU=x86 -       VAR_CPU_ARCH=x86 -       VAR_CPU_BITS=32 -       VAR_CPU_ENDIAN=little -       ;; -+    alpha*) -+      VAR_CPU=alpha -+      VAR_CPU_ARCH=alpha -+      VAR_CPU_BITS=64 -+      VAR_CPU_ENDIAN=little -+      ;; -+    arm*eb) -+      VAR_CPU=armeb -+      VAR_CPU_ARCH=arm -+      VAR_CPU_BITS=32 -+      VAR_CPU_ENDIAN=big -+      ;; -     arm*) -       VAR_CPU=arm -       VAR_CPU_ARCH=arm -       VAR_CPU_BITS=32 -       VAR_CPU_ENDIAN=little -       ;; -+    aarch64eb) -+      VAR_CPU=aarch64eb -+      VAR_CPU_ARCH=aarch64 -+      VAR_CPU_BITS=64 -+      VAR_CPU_ENDIAN=big -+      ;; -     aarch64) -       VAR_CPU=aarch64 -       VAR_CPU_ARCH=aarch64 -       VAR_CPU_BITS=64 -       VAR_CPU_ENDIAN=little -       ;; --    powerpc) -+    m68k) -+      VAR_CPU=m68k -+      VAR_CPU_ARCH=m68k -+      VAR_CPU_BITS=32 -+      VAR_CPU_ENDIAN=big -+      ;; -+    mips) -+      VAR_CPU=mips -+      VAR_CPU_ARCH=mips -+      VAR_CPU_BITS=32 -+      VAR_CPU_ENDIAN=big -+      ;; -+    mipsel) -+      VAR_CPU=mipsel -+      VAR_CPU_ARCH=mipsel -+      VAR_CPU_BITS=32 -+      VAR_CPU_ENDIAN=little -+      ;; -+    mipsn32) -+      VAR_CPU=mipsn32 -+      VAR_CPU_ARCH=mipsn32 -+      VAR_CPU_BITS=32 -+      VAR_CPU_ENDIAN=big -+      ;; -+    mipsn32el) -+      VAR_CPU=mipsn32el -+      VAR_CPU_ARCH=mipsn32el -+      VAR_CPU_BITS=32 -+      VAR_CPU_ENDIAN=little -+      ;; -+    mips64) -+      VAR_CPU=mips64 -+      VAR_CPU_ARCH=mips64 -+      VAR_CPU_BITS=64 -+      VAR_CPU_ENDIAN=big -+      ;; -+    mips64el) -+      VAR_CPU=mips64el -+      VAR_CPU_ARCH=mips64el -+      VAR_CPU_BITS=64 -+      VAR_CPU_ENDIAN=little -+      ;; -+    powerpc|ppc) -       VAR_CPU=ppc -       VAR_CPU_ARCH=ppc -       VAR_CPU_BITS=32 -@@ -66,12 +126,18 @@ -       VAR_CPU_BITS=64 -       VAR_CPU_ENDIAN=big -       ;; --    powerpc64le) -+    powerpc64le|ppc64le) -       VAR_CPU=ppc64 -       VAR_CPU_ARCH=ppc -       VAR_CPU_BITS=64 -       VAR_CPU_ENDIAN=little -       ;; -+    sh*) -+      VAR_CPU=sh -+      VAR_CPU_ARCH=sh -+      VAR_CPU_BITS=32 -+      VAR_CPU_ENDIAN=little -+      ;; -     s390) -       VAR_CPU=s390 -       VAR_CPU_ARCH=s390 -@@ -371,6 +437,11 @@ -  -   # ZERO_ARCHDEF is used to enable architecture-specific code -   case "${OPENJDK_TARGET_CPU}" in -+    alpha*)  ZERO_ARCHDEF=ALPHA ;; -+    m68k)  ZERO_ARCHDEF=M68K ;; -+    mips|mipsn32|mips64)  ZERO_ARCHDEF=MIPS ;; -+    mipsel|mipsn32el|mips64el)  ZERO_ARCHDEF=MIPSEL ;; -+    sh*)   ZERO_ARCHDEF=sh  ;; -     ppc)     ZERO_ARCHDEF=PPC32 ;; -     ppc64)   ZERO_ARCHDEF=PPC64 ;; -     s390*)   ZERO_ARCHDEF=S390  ;; -diff -Nur openjdk.orig/hotspot/src/cpu/zero/vm/entry_zero.hpp openjdk/hotspot/src/cpu/zero/vm/entry_zero.hpp ---- openjdk.orig/hotspot/src/cpu/zero/vm/entry_zero.hpp	2015-12-23 01:50:46.000000000 +0100 -+++ openjdk/hotspot/src/cpu/zero/vm/entry_zero.hpp	2016-01-06 11:43:50.108091228 +0100 -@@ -26,6 +26,8 @@ - #ifndef CPU_ZERO_VM_ENTRY_ZERO_HPP - #define CPU_ZERO_VM_ENTRY_ZERO_HPP -  -+#include "interpreter/cppInterpreter.hpp" -+ - class ZeroEntry { -  public: -   ZeroEntry() { -diff -Nur openjdk.orig/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp openjdk/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp ---- openjdk.orig/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp	2015-12-23 01:50:46.000000000 +0100 -+++ openjdk/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp	2016-01-06 11:43:50.108091228 +0100 -@@ -25,6 +25,7 @@ -  - #include "precompiled.hpp" - #include "assembler_zero.inline.hpp" -+#include "entry_zero.hpp" - #include "memory/resourceArea.hpp" - #include "nativeInst_zero.hpp" - #include "oops/oop.inline.hpp" -diff -Nur openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp openjdk/hotspot/src/os/linux/vm/os_linux.cpp ---- openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp	2015-12-23 01:50:46.000000000 +0100 -+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp	2016-01-06 11:43:50.112090962 +0100 -@@ -94,7 +94,9 @@ - # include <string.h> - # include <syscall.h> - # include <sys/sysinfo.h> -+# ifndef __UCLIBC__ - # include <gnu/libc-version.h> -+# endif - # include <sys/ipc.h> - # include <sys/shm.h> - # include <link.h> -@@ -533,6 +535,7 @@ - # define _CS_GNU_LIBPTHREAD_VERSION 3 - # endif -  -+# ifndef __UCLIBC__ -   size_t n = confstr(_CS_GNU_LIBC_VERSION, NULL, 0); -   if (n > 0) { -      char *str = (char *)malloc(n, mtInternal); -@@ -545,6 +548,10 @@ -               "glibc %s %s", gnu_get_libc_version(), gnu_get_libc_release()); -      os::Linux::set_glibc_version(_gnu_libc_version); -   } -+# else -+  size_t n = 1; -+  os::Linux::set_glibc_version("2"); -+# endif -  -   n = confstr(_CS_GNU_LIBPTHREAD_VERSION, NULL, 0); -   if (n > 0) { -@@ -2789,10 +2796,14 @@ - // If we are running with earlier version, which did not have symbol versions, - // we should use the base version. - void* os::Linux::libnuma_dlsym(void* handle, const char *name) { -+#ifndef __UCLIBC__ -   void *f = dlvsym(handle, name, "libnuma_1.1"); -   if (f == NULL) { -     f = dlsym(handle, name); -   } -+#else -+  void *f = dlsym(handle, name); -+#endif -   return f; - } -  -@@ -4805,7 +4816,7 @@ -  -   Linux::capture_initial_stack(JavaThread::stack_size_at_create()); -  --#if defined(IA32) -+#if defined(IA32) && !defined(ZERO) -   workaround_expand_exec_shield_cs_limit(); - #endif -  -@@ -5437,6 +5448,43 @@ - // System loadavg support.  Returns -1 if load average cannot be obtained. - // Linux doesn't yet have a (official) notion of processor sets, - // so just return the system wide load average. -+#ifdef __UCLIBC__ -+static int getloadavg (double loadavg[], int nelem) -+{ -+  int fd; -+ -+  fd = open ("/proc/loadavg", O_RDONLY); -+  if (fd < 0) -+    return -1; -+  else -+    { -+      char buf[65], *p; -+      ssize_t nread; -+      int i; -+ -+      nread = read (fd, buf, sizeof buf - 1); -+      close (fd); -+      if (nread <= 0) -+	return -1; -+      buf[nread - 1] = '\0'; -+ -+      if (nelem > 3) -+	nelem = 3; -+      p = buf; -+      for (i = 0; i < nelem; ++i) -+	{ -+	  char *endp; -+	  loadavg[i] = strtod (p, &endp); -+	  if (endp == p) -+	    return -1; -+	  p = endp; -+	} -+ -+      return i; -+    } -+} -+#endif -+ - int os::loadavg(double loadavg[], int nelem) { -   return ::getloadavg(loadavg, nelem); - } -diff -Nur openjdk.orig/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp ---- openjdk.orig/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp	2015-12-23 01:50:46.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp	2016-01-06 11:43:50.220083765 +0100 -@@ -223,6 +223,10 @@ - #define BREAKPOINT ::breakpoint() - #endif -  -+#ifdef __UCLIBC__ -+#define isnanf __isnanf -+#endif -+ - // checking for nanness - #ifdef SOLARIS - #ifdef SPARC -@@ -249,8 +253,13 @@ -  - // Checking for finiteness -  -+#ifdef __UCLIBC__ -+inline int g_isfinite(jfloat  f)                 { return isfinite(f); } -+inline int g_isfinite(jdouble f)                 { return isfinite(f); } -+#else - inline int g_isfinite(jfloat  f)                 { return finite(f); } - inline int g_isfinite(jdouble f)                 { return finite(f); } -+#endif -  -  - // Wide characters -diff -Nur openjdk.orig/jdk/src/solaris/native/sun/xawt/XToolkit.c openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c ---- openjdk.orig/jdk/src/solaris/native/sun/xawt/XToolkit.c	2015-12-23 01:50:56.000000000 +0100 -+++ openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c	2016-01-06 12:56:51.970983142 +0100 -@@ -27,7 +27,7 @@ - #include <X11/Xutil.h> - #include <X11/Xos.h> - #include <X11/Xatom.h> --#ifdef __linux__ -+#if defined(__GLIBC__) && !defined(__UCLIBC__) - #include <execinfo.h> - #endif -  -@@ -799,7 +799,7 @@ -     return ret; - } -  --#ifdef __linux__ -+#if defined(__GLIBC__) && !defined(__UCLIBC__) - void print_stack(void) - { -   void *array[10]; diff --git a/package/openssh/Makefile b/package/openssh/Makefile index c987edf36..63c0682a0 100644 --- a/package/openssh/Makefile +++ b/package/openssh/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		openssh -PKG_VERSION:=		9.9p1 +PKG_VERSION:=		10.0p1  PKG_RELEASE:=		1 -PKG_HASH:=		b343fbcdbff87f15b1986e6e15d6d4fc9a7d36066be6b7fb507087ba8f966c02 +PKG_HASH:=		021a2e709a0edf4250b1256bd5a9e500411a90dddabea830ed59cef90eb9d85c  PKG_DESCR:=		secure shell implementation  PKG_SECTION:=		net/security  PKG_BUILDDEP:=		zlib @@ -110,6 +110,8 @@ openssh-server-install:  	 	${IDIR_OPENSSH_SERVER}/usr/sbin  	${INSTALL_BIN} ${WRKINST}/usr/libexec/sshd-session \  		${IDIR_OPENSSH_SERVER}/usr/libexec +	${INSTALL_BIN} ${WRKINST}/usr/libexec/sshd-auth \ +		${IDIR_OPENSSH_SERVER}/usr/libexec  	# ssh pubkey  	test -z $(ADK_RUNTIME_SSH_PUBKEY) || ( \  		mkdir -p $(IDIR_OPENSSH_SERVER)/etc/ssh; \ diff --git a/package/openssl/Makefile b/package/openssl/Makefile index 9a2c8a7f2..c397e6dce 100644 --- a/package/openssl/Makefile +++ b/package/openssl/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		openssl -PKG_VERSION:=		3.4.1 +PKG_VERSION:=		3.5.4  PKG_RELEASE:=		1 -PKG_HASH:=		002a2d6b30b58bf4bea46c43bdd96365aaf8daa6c428782aa4feee06da197df3 +PKG_HASH:=		967311f84955316969bdb1d8d4b983718ef42338639c621ec4c34fddef355e99  PKG_DESCR:=		ssl/tls library  PKG_SECTION:=		libs/crypto  PKG_URL:=		https://openssl-library.org/ @@ -65,25 +65,14 @@ CONFIG:=		linux-aarch64  OPENSSL_OPTIONS+=	no-asm  endif -ifneq (,$(filter CYGWIN%,${OS_FOR_BUILD})) -HOSTCONFIG:=		Cygwin-x86_64 -endif -ifeq ($(OS_FOR_BUILD),Darwin) -HOSTCONFIG:=		darwin64-x86_64-cc -endif -  host-configure: -ifeq ($(HOSTCONFIG),) -	(cd $(WRKBUILD); ./config --prefix='$(STAGING_HOST_DIR)/usr' -fPIC -ldl) -else -	(cd $(WRKBUILD); ./Configure $(HOSTCONFIG) --prefix='$(STAGING_HOST_DIR)/usr') -endif +	(cd $(WRKBUILD); ./config --prefix='$(STAGING_HOST_DIR)/usr' -fPIC -ldl no-docs no-tests)  host-build: -	(cd $(WRKBUILD); make) +	(cd $(WRKBUILD); $(MAKE))  openssl-hostinstall: -	(cd $(WRKBUILD); make install) +	(cd $(WRKBUILD); $(MAKE) install)  do-configure:  	(cd $(WRKBUILD); \ @@ -100,7 +89,6 @@ do-configure:  			-DOPENSSL_NO_ASYNC \  			$(OPENSSL_OPTIONS) \  		); -	#$(SED) "s:-O[0-9]:$(TARGET_CFLAGS) -fPIC:" $(WRKBUILD)/Makefile  libopenssl-install:  	${INSTALL_DIR} ${IDIR_LIBOPENSSL}/usr/lib diff --git a/package/openvpn/Makefile b/package/openvpn/Makefile index 8001a51ca..bdc8c9b96 100644 --- a/package/openvpn/Makefile +++ b/package/openvpn/Makefile @@ -4,12 +4,12 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		openvpn -PKG_VERSION:=		2.6.10 +PKG_VERSION:=		2.6.15  PKG_RELEASE:=		1 -PKG_HASH:=		1993bbb7b9edb430626eaa24573f881fd3df642f427fcb824b1aed1fca1bcc9b +PKG_HASH:=		e35513ee15995e3c71adfd8891b9f33522896c70b3baa2ed9a23c7a42c4d7bde  PKG_DESCR:=		vpn solution using ssl/tls -PKG_DEPENDS:=		libressl libcap-ng -PKG_BUILDDEP:=		libressl libcap-ng +PKG_DEPENDS:=		libopenssl libcap-ng +PKG_BUILDDEP:=		openssl libcap-ng  PKG_KDEPENDS:=		tun  PKG_SECTION:=		net/security  PKG_URL:=		http://openvpn.net/ @@ -31,6 +31,7 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,OPENVPN,openvpn,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) +TARGET_LDFLAGS+=	-latomic  CONFIGURE_ENV+=		ac_cv_lib_nsl_inet_ntoa=no  ifneq ($(ADK_PACKAGE_OPENVPN_WITH_LZ4),) diff --git a/package/orbit2/Makefile b/package/orbit2/Makefile index 459fd537f..43e05c05f 100644 --- a/package/orbit2/Makefile +++ b/package/orbit2/Makefile @@ -27,10 +27,8 @@ $(eval $(call PKG_template,ORBIT2,orbit2,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEP  HOST_CFLAGS+=		$(shell env $(HOST_CONFIGURE_ENV) libIDL-config-2 --cflags 2>/dev/null)  HOST_LIBS:=		$(shell env $(HOST_CONFIGURE_ENV) libIDL-config-2 --libs 2>/dev/null) -ifneq ($(OS_FOR_BUILD),Darwin)  HOST_LDFLAGS+=		-static  HOST_LIBS+=		-lrt -endif  HOST_LIBS+=		-lgmodule-2.0 -ldl -lpthread -lglib-2.0  CONFIGURE_ENV+=		ac_cv_alignof_CORBA_octet=1 \  			ac_cv_alignof_CORBA_boolean=1 \ diff --git a/package/pam/Makefile b/package/pam/Makefile index 1030dd69a..8a40b8157 100644 --- a/package/pam/Makefile +++ b/package/pam/Makefile @@ -4,37 +4,41 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		pam -PKG_VERSION:=		1.1.8 -PKG_RELEASE:=		3 -PKG_HASH:=		4183409a450708a976eca5af561dbf4f0490141a08e86e4a1e649c7c1b094876 +PKG_VERSION:=		1.7.0 +PKG_RELEASE:=		1 +PKG_HASH:=		1dad9cb50b4a19accd7d7b9716777caf5a0f33d26f018f27d63e9e095998f12b  PKG_DESCR:=		pluggable authentication modules -PKG_BUILDDEP:=		flex +PKG_DEPENDS_GLIBC:=	libxcrypt +PKG_BUILDDEP:=		meson-host +PKG_BUILDDEP_GLIBC:=	libxcrypt  PKG_SECTION:=		sys/misc  PKG_URL:=		http://www.linux-pam.org/ -PKG_SITES:=		http://www.linux-pam.org/library/ +PKG_SITES:=		https://github.com/linux-pam/linux-pam/archive/refs/tags/  PKG_OPTS:=		dev -DISTFILES:=		Linux-PAM-$(PKG_VERSION).tar.gz -WRKDIST=                ${WRKDIR}/Linux-PAM-${PKG_VERSION} +DISTFILES:=		v$(PKG_VERSION).tar.gz +WRKDIST=                ${WRKDIR}/linux-pam-${PKG_VERSION}  include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,PAM,pam,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) -AUTOTOOL_STYLE:=	autoreconf -CONFIGURE_ARGS+=	--disable-nis \ -			--disable-regenerate-docu \ -			--enable-db=no +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj + +MESON_FLAGS+=		-Ddocs=disabled +CONFIG_STYLE:=		meson +BUILD_STYLE:=		meson +INSTALL_STYLE:=		meson  pam-install:  	$(INSTALL_DIR) $(STAGING_TARGET_DIR)/usr/lib -	$(CP) $(WRKINST)/lib/libpam*.so* \ +	$(CP) $(WRKINST)/usr/lib/libpam*.so* \  			$(STAGING_TARGET_DIR)/usr/lib  	$(INSTALL_DIR) $(IDIR_PAM)/etc/security  	$(CP) $(WRKINST)/etc/security/* $(IDIR_PAM)/etc/security -	$(INSTALL_DIR) $(IDIR_PAM)/lib/security -	$(CP) $(WRKINST)/lib/libpam*.so* $(IDIR_PAM)/lib -	$(CP) $(WRKINST)/lib/security/*.so* $(IDIR_PAM)/lib/security +	$(INSTALL_DIR) $(IDIR_PAM)/usr/lib/security +	$(CP) $(WRKINST)/usr/lib/libpam*.so* $(IDIR_PAM)/usr/lib +	$(CP) $(WRKINST)/usr/lib/security/*.so* $(IDIR_PAM)/usr/lib/security  	$(CP) ./files/pam.conf $(IDIR_PAM)/etc  include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/pam/patches/patch-Makefile_am b/package/pam/patches/patch-Makefile_am deleted file mode 100644 index d43150124..000000000 --- a/package/pam/patches/patch-Makefile_am +++ /dev/null @@ -1,11 +0,0 @@ ---- Linux-PAM-1.1.8.orig/Makefile.am	2013-06-18 16:11:21.000000000 +0200 -+++ Linux-PAM-1.1.8/Makefile.am	2014-05-27 07:49:28.180418627 +0200 -@@ -4,7 +4,7 @@ -  - AUTOMAKE_OPTIONS = 1.9 gnu dist-bzip2 check-news -  --SUBDIRS = libpam tests libpamc libpam_misc modules po conf doc examples xtests -+SUBDIRS = libpam libpamc libpam_misc modules conf -  - CLEANFILES = *~ -  diff --git a/package/pam/patches/patch-configure_in b/package/pam/patches/patch-configure_in deleted file mode 100644 index 9f3b68ca2..000000000 --- a/package/pam/patches/patch-configure_in +++ /dev/null @@ -1,34 +0,0 @@ ---- Linux-PAM-1.1.8.orig/configure.in	2013-09-18 14:30:13.000000000 +0200 -+++ Linux-PAM-1.1.8/configure.in	2014-05-27 07:50:43.868499284 +0200 -@@ -28,12 +28,7 @@ dnl If we use /usr as prefix, use /etc f -         fi - 	if test ${libdir} = '${exec_prefix}/lib' - 	then --		case "`uname -m`" in --		    x86_64|ppc64|s390x|sparc64) --			libdir="/lib64" ;; --		    *) --			libdir="/lib" ;; --		esac -+		libdir="/lib" - 	fi - 	if test ${sbindir} = '${exec_prefix}/sbin' -         then -@@ -404,7 +399,7 @@ AS_IF([test "x$ac_cv_header_xcrypt_h" = -   [crypt_libs="crypt"]) -  - BACKUP_LIBS=$LIBS --AC_SEARCH_LIBS([crypt],[$crypt_libs], LIBCRYPT="-l$ac_lib", LIBCRYPT="") -+AC_SEARCH_LIBS([crypt],[$crypt_libs], LIBCRYPT="-lcrypt", LIBCRYPT="") - AC_CHECK_FUNCS(crypt_r crypt_gensalt_r) - LIBS=$BACKUP_LIBS - AC_SUBST(LIBCRYPT) -@@ -565,8 +560,6 @@ AM_CONDITIONAL(ENABLE_REGENERATE_MAN, te - AM_CONDITIONAL(ENABLE_GENERATE_PDF, test ! -z "$FO2PDF") -  -  --AM_GNU_GETTEXT_VERSION([0.15]) --AM_GNU_GETTEXT([external]) - AC_CHECK_FUNCS(dngettext) -  - AH_BOTTOM([#ifdef ENABLE_NLS diff --git a/package/pam/patches/patch-meson_build b/package/pam/patches/patch-meson_build new file mode 100644 index 000000000..dd47c8e64 --- /dev/null +++ b/package/pam/patches/patch-meson_build @@ -0,0 +1,11 @@ +--- linux-pam-1.7.0.orig/meson.build	2024-10-24 10:00:00.000000000 +0200 ++++ linux-pam-1.7.0/meson.build	2025-04-11 18:17:54.666763491 +0200 +@@ -2,7 +2,7 @@ project('Linux-PAM', 'c', +         version: '1.7.0', +         license: 'BSD-3-Clause OR GPL-2.0-or-later', +         default_options: [ +-          'b_pie=true', ++          'b_pie=false', +           'prefix=/usr', +           'warning_level=2', +         ], diff --git a/package/pam/patches/patch-modules_Makefile_am b/package/pam/patches/patch-modules_Makefile_am deleted file mode 100644 index b70eaef1b..000000000 --- a/package/pam/patches/patch-modules_Makefile_am +++ /dev/null @@ -1,11 +0,0 @@ ---- Linux-PAM-1.1.8.orig/modules/Makefile.am	2013-06-18 16:11:21.000000000 +0200 -+++ Linux-PAM-1.1.8/modules/Makefile.am	2014-05-25 20:13:15.415984289 +0200 -@@ -7,7 +7,7 @@ SUBDIRS = pam_access pam_cracklib pam_de - 	pam_group pam_issue pam_keyinit pam_lastlog pam_limits \ - 	pam_listfile pam_localuser pam_loginuid pam_mail \ - 	pam_mkhomedir pam_motd pam_namespace pam_nologin \ --	pam_permit pam_pwhistory pam_rhosts pam_rootok pam_securetty \ -+	pam_permit pam_pwhistory pam_rootok pam_securetty \ - 	pam_selinux pam_sepermit pam_shells pam_stress \ - 	pam_succeed_if pam_tally pam_tally2 pam_time pam_timestamp \ - 	pam_tty_audit pam_umask \ diff --git a/package/pam/patches/patch-modules_pam_group_pam_group_c b/package/pam/patches/patch-modules_pam_group_pam_group_c deleted file mode 100644 index bbf25bcfd..000000000 --- a/package/pam/patches/patch-modules_pam_group_pam_group_c +++ /dev/null @@ -1,17 +0,0 @@ ---- Linux-PAM-1.1.8.orig/modules/pam_group/pam_group.c	2013-06-18 16:11:21.000000000 +0200 -+++ Linux-PAM-1.1.8/modules/pam_group/pam_group.c	2013-12-21 18:30:19.000000000 +0100 -@@ -655,10 +655,13 @@ static int check_account(pam_handle_t *p - 	    continue; - 	} - 	/* If buffer starts with @, we are using netgroups */ -+#ifdef HAVE_INNETGR - 	if (buffer[0] == '@') - 	  good &= innetgr (&buffer[1], NULL, user, NULL); - 	/* otherwise, if the buffer starts with %, it's a UNIX group */ --	else if (buffer[0] == '%') -+	else -+#endif -+	if (buffer[0] == '%') -           good &= pam_modutil_user_in_group_nam_nam(pamh, user, &buffer[1]); - 	else - 	  good &= logic_field(pamh,user, buffer, count, is_same); diff --git a/package/pam/patches/patch-modules_pam_lastlog_pam_lastlog_c b/package/pam/patches/patch-modules_pam_lastlog_pam_lastlog_c deleted file mode 100644 index b20bd413d..000000000 --- a/package/pam/patches/patch-modules_pam_lastlog_pam_lastlog_c +++ /dev/null @@ -1,21 +0,0 @@ ---- Linux-PAM-1.1.8.orig/modules/pam_lastlog/pam_lastlog.c	2013-06-18 16:11:21.000000000 +0200 -+++ Linux-PAM-1.1.8/modules/pam_lastlog/pam_lastlog.c	2013-12-21 18:34:07.000000000 +0100 -@@ -10,6 +10,7 @@ -  - #include "config.h" -  -+#include <paths.h> - #include <fcntl.h> - #include <time.h> - #include <errno.h> -@@ -50,6 +51,10 @@ struct lastlog { - # define _PATH_BTMP "/var/log/btmp" - #endif -  -+#ifndef __GLIBC__ -+#define logwtmp(args...) -+#endif -+ - /* XXX - time before ignoring lock. Is 1 sec enough? */ - #define LASTLOG_IGNORE_LOCK_TIME     1 -  diff --git a/package/pam/patches/patch-modules_pam_succeed_if_pam_succeed_if_c b/package/pam/patches/patch-modules_pam_succeed_if_pam_succeed_if_c deleted file mode 100644 index 2d51fab3f..000000000 --- a/package/pam/patches/patch-modules_pam_succeed_if_pam_succeed_if_c +++ /dev/null @@ -1,23 +0,0 @@ ---- Linux-PAM-1.1.8.orig/modules/pam_succeed_if/pam_succeed_if.c	2013-06-18 16:11:21.000000000 +0200 -+++ Linux-PAM-1.1.8/modules/pam_succeed_if/pam_succeed_if.c	2014-05-24 10:49:28.000000000 +0200 -@@ -233,16 +233,20 @@ evaluate_notingroup(pam_handle_t *pamh, - static int - evaluate_innetgr(const char *host, const char *user, const char *group) - { -+#ifdef HAVE_INNETGR - 	if (innetgr(group, host, user, NULL) == 1) - 		return PAM_SUCCESS; -+#endif - 	return PAM_AUTH_ERR; - } - /* Return PAM_SUCCESS if the (host,user) is NOT in the netgroup. */ - static int - evaluate_notinnetgr(const char *host, const char *user, const char *group) - { -+#ifdef HAVE_INNETGR - 	if (innetgr(group, host, user, NULL) == 0) - 		return PAM_SUCCESS; -+#endif - 	return PAM_AUTH_ERR; - } -  diff --git a/package/pam/patches/patch-modules_pam_time_pam_time_c b/package/pam/patches/patch-modules_pam_time_pam_time_c deleted file mode 100644 index e122cece5..000000000 --- a/package/pam/patches/patch-modules_pam_time_pam_time_c +++ /dev/null @@ -1,14 +0,0 @@ ---- Linux-PAM-1.1.8.orig/modules/pam_time/pam_time.c	2013-06-18 16:11:21.000000000 +0200 -+++ Linux-PAM-1.1.8/modules/pam_time/pam_time.c	2014-05-24 10:49:28.000000000 +0200 -@@ -554,9 +554,11 @@ check_account(pam_handle_t *pamh, const - 	       continue; - 	  } - 	  /* If buffer starts with @, we are using netgroups */ -+#ifdef HAVE_INNETGR - 	  if (buffer[0] == '@') - 	    good &= innetgr (&buffer[1], NULL, user, NULL); - 	  else -+#endif - 	    good &= logic_field(pamh, user, buffer, count, is_same); - 	  D(("with user: %s", good ? "passes":"fails" )); -  diff --git a/package/pcre/Makefile b/package/pcre/Makefile index c9814fbae..8964db4aa 100644 --- a/package/pcre/Makefile +++ b/package/pcre/Makefile @@ -46,3 +46,4 @@ libpcrecpp-install:  include ${ADK_TOPDIR}/mk/host-bottom.mk  include ${ADK_TOPDIR}/mk/pkg-bottom.mk + diff --git a/package/pcre2/Makefile b/package/pcre2/Makefile index 5062daea4..fb2444c06 100644 --- a/package/pcre2/Makefile +++ b/package/pcre2/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		pcre2 -PKG_VERSION:=		10.42 +PKG_VERSION:=		10.45  PKG_RELEASE:=		1 -PKG_HASH:=		a8e52a9bd1bca8f51c5c24823adc2a99acb12288e289a6507090c1a4a4815010 +PKG_HASH:=		35ce7d21f511c4a81d7079164077d25fbc41af00f19e1b547801df905c5f0fab  PKG_DESCR:=		perl compatible regular expression library  PKG_SECTION:=		libs/misc  PKG_BUILDDEP:=		cmake-host @@ -26,7 +26,8 @@ $(eval $(call PKG_template,PCRE2,pcre2,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPEN  HOST_CONFIG_STYLE:=	cmake  HOST_CMAKE_FLAGS+=	-DBUILD_SHARED_LIBS=ON  CONFIG_STYLE:=		cmake -CMAKE_FLAGS+=		-DBUILD_SHARED_LIBS=ON +CMAKE_FLAGS+=		-DBUILD_SHARED_LIBS=ON \ +			-DPCRE2_BUILD_TESTS=OFF  pcre2-install:  	$(INSTALL_DIR) $(IDIR_PCRE2)/usr/lib diff --git a/package/perl/Makefile b/package/perl/Makefile index 55c1ca65f..4da8aaabd 100644 --- a/package/perl/Makefile +++ b/package/perl/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		perl -PKG_VERSION:=		5.40.0 +PKG_VERSION:=		5.40.2  PKG_RELEASE:=		1 -PKG_HASH:=		d5325300ad267624cb0b7d512cfdfcd74fa7fe00c455c5b51a6bd53e5e199ef9 +PKG_HASH:=		0551c717458e703ef7972307ab19385edfa231198d88998df74e12226abf563b  PKG_DESCR:=		perl interpreter  PKG_SECTION:=		dev/lang  PKG_NEEDS:=		threads @@ -14,7 +14,7 @@ PKG_URL:=		http://www.perl.org/  PKG_SITES:=		http://www.cpan.org/src/  PKG_NOPARALLEL:=	1 -PC_VERSION:=		1.5.3 +PC_VERSION:=		1.6.2  PC_SITE:=		https://github.com/arsv/perl-cross/releases/download/$(PC_VERSION)  include ${ADK_TOPDIR}/mk/host.mk diff --git a/package/pinentry/Makefile b/package/pinentry/Makefile index 93fd39c59..d0fae2eb6 100644 --- a/package/pinentry/Makefile +++ b/package/pinentry/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		pinentry -PKG_VERSION:=		1.2.0 +PKG_VERSION:=		1.3.2  PKG_RELEASE:=		1 -PKG_HASH:=		10072045a3e043d0581f91cd5676fcac7ffee957a16636adedaa4f583a616470 +PKG_HASH:=		8e986ed88561b4da6e9efe0c54fa4ca8923035c99264df0b0464497c5fb94e9e  PKG_DESCR:=		pinentry application  PKG_SECTION:=		app/crypto  PKG_URL:=		https://www.gnupg.org diff --git a/package/pixman/Makefile b/package/pixman/Makefile index 71cca40fb..1841acab2 100644 --- a/package/pixman/Makefile +++ b/package/pixman/Makefile @@ -4,13 +4,13 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		pixman -PKG_VERSION:=		0.34.0 +PKG_VERSION:=		0.44.2  PKG_RELEASE:=		1 -PKG_HASH:=		21b6b249b51c6800dc9553b65106e1e37d0e25df942c90531d4c3997aa20a88e +PKG_HASH:=		6349061ce1a338ab6952b92194d1b0377472244208d47ff25bef86fc71973466  PKG_DESCR:=		pixel manipulation library  PKG_SECTION:=		x11/libs -PKG_BUILDDEP:=		libpng -HOST_BUILDDEP:=		libpng-host +PKG_BUILDDEP:=		libpng meson-host +HOST_BUILDDEP:=		libpng-host meson-host   PKG_SITES:=		http://www.cairographics.org/releases/  PKG_OPTS:=		dev @@ -22,9 +22,15 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call HOST_template,PIXMAN,pixman,$(PKG_VERSION)-${PKG_RELEASE}))  $(eval $(call PKG_template,PIXMAN,pixman,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) -HOST_STYLE:=		auto -CONFIGURE_ARGS+=	--disable-gtk \ -			--disable-arm-iwmmxt +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj + +MESON_FLAGS+=		-Dtests=disabled \ +			-Ddemos=disabled + +HOST_STYLE:=		meson +CONFIG_STYLE:=		meson +BUILD_STYLE:=		meson +INSTALL_STYLE:=		meson  pixman-install:  	${INSTALL_DIR} ${IDIR_PIXMAN}/usr/lib diff --git a/package/pixman/patches/patch-Makefile_in b/package/pixman/patches/patch-Makefile_in deleted file mode 100644 index cebc19113..000000000 --- a/package/pixman/patches/patch-Makefile_in +++ /dev/null @@ -1,11 +0,0 @@ ---- pixman-0.32.4.orig/Makefile.in	2013-11-18 03:11:20.000000000 +0100 -+++ pixman-0.32.4/Makefile.in	2014-03-30 21:54:18.000000000 +0200 -@@ -369,7 +369,7 @@ target_alias = @target_alias@ - top_build_prefix = @top_build_prefix@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ --SUBDIRS = pixman demos test -+SUBDIRS = pixman - pkgconfigdir = $(libdir)/pkgconfig - pkgconfig_DATA = pixman-1.pc - GPGKEY = 3892336E diff --git a/package/pkgconf/Makefile b/package/pkgconf/Makefile index 77dbba517..38f9b4c4a 100644 --- a/package/pkgconf/Makefile +++ b/package/pkgconf/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		pkgconf -PKG_VERSION:=		1.1.0 -PKG_RELEASE:=		2 -PKG_HASH:=		5f1ef65d73a880fa5e7012102a17f7b32010e5e46139aed85851a541ba828a63 +PKG_VERSION:=		2.3.0 +PKG_RELEASE:=		1 +PKG_HASH:=		3a9080ac51d03615e7c1910a0a2a8df08424892b5f13b0628a204d3fcce0ea8b  PKG_DESCR:=		smart pkg-config replacement  PKG_SECTION:=		dev/tools  HOST_BUILDDEP:=		sed-host diff --git a/package/pkgconf/patches/0001-Only-prefix-with-the-sysroot-a-subset-of-variables.patch b/package/pkgconf/patches/0001-Only-prefix-with-the-sysroot-a-subset-of-variables.patch new file mode 100644 index 000000000..986058d40 --- /dev/null +++ b/package/pkgconf/patches/0001-Only-prefix-with-the-sysroot-a-subset-of-variables.patch @@ -0,0 +1,150 @@ +From c912e9bb8d5be414fda74b2019deb2a6d2d041a0 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni <thomas.petazzoni@bootlin.com> +Date: Sun, 16 Dec 2018 11:52:18 +0100 +Subject: [PATCH] Only prefix with the sysroot a subset of variables + +The standard logic of pkg-config is to prefix all absolute paths by +the sysroot defined in PKG_CONFIG_SYSROOT_DIR. However, while some +paths (like includedir, libdir, and paths used in -L and -I options) +indeed need to be prefixed by the sysroot, it is not necessarily the +case for paths that are used on the target. If they get prefixed by +the sysroot, the runtime path on the target is incorrect. + +Unfortunately, pkg-config doesn't have a sense of which path needs to +be prefixed by the sysroot, and which path should not be prefixed by +the sysroot. + +So, let's simply have a whitelist of paths that should be prefixed: +g_ir_scanner, g_ir_compiler, g_ir_generate, includedir, libdir, mapdir, +pkgdatadir and sdkdir. This list of variables was collected over years of +Buildroot development. All other paths are not prefixed by the sysroot. + +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> +[Updated to include gobject-introspection paths] +Signed-off-by: Adam Duskett <aduskett@gmail.com> +[Dropped the pkgdatadir path] +Signed-off-by: Thomas Devoogdt <thomas@devoogdt.com> +--- + libpkgconf/tuple.c | 64 ++++++++++++++++++++++++++++++++-------------- + 1 file changed, 45 insertions(+), 19 deletions(-) + +diff --git a/libpkgconf/tuple.c b/libpkgconf/tuple.c +index 83f6a47..d56fcec 100644 +--- a/libpkgconf/tuple.c ++++ b/libpkgconf/tuple.c +@@ -178,6 +178,20 @@ dequote(const char *value) + 	return buf; + } +  ++static char * ++pkgconf_tuple_parse_sysroot(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value, unsigned int flags, bool add_sysroot); ++ ++const char *sysrooted_keys[] = { ++	"g_ir_scanner", ++	"g_ir_compiler", ++	"g_ir_generate", ++	"includedir", ++	"libdir", ++	"mapdir", ++	"sdkdir", ++	NULL, ++}; ++ + static const char * + find_sysroot(const pkgconf_client_t *client, pkgconf_list_t *vars) + { +@@ -237,14 +251,20 @@ pkgconf_tuple_add(const pkgconf_client_t *client, pkgconf_list_t *list, const ch + { + 	char *dequote_value; + 	pkgconf_tuple_t *tuple = calloc(1, sizeof(pkgconf_tuple_t)); ++	bool add_sysroot = false; ++	int i; +  + 	pkgconf_tuple_find_delete(list, key); +  + 	dequote_value = dequote(value); +  ++	for (i = 0; sysrooted_keys[i] != NULL; i++) ++		if (!strcmp(key, sysrooted_keys[i])) ++			add_sysroot = true; ++ + 	tuple->key = strdup(key); + 	if (parse) +-		tuple->value = pkgconf_tuple_parse(client, list, dequote_value, flags); ++		tuple->value = pkgconf_tuple_parse_sysroot(client, list, dequote_value, flags, add_sysroot); + 	else + 		tuple->value = strdup(dequote_value); +  +@@ -294,22 +314,8 @@ pkgconf_tuple_find(const pkgconf_client_t *client, pkgconf_list_t *list, const c + 	return NULL; + } +  +-/* +- * !doc +- * +- * .. c:function:: char *pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value, unsigned int flags) +- * +- *    Parse an expression for variable substitution. +- * +- *    :param pkgconf_client_t* client: The pkgconf client object to access. +- *    :param pkgconf_list_t* list: The variable list to search for variables (along side the global variable list). +- *    :param char* value: The ``key=value`` string to parse. +- *    :param uint flags: Any flags to consider while parsing. +- *    :return: the variable data with any variables substituted +- *    :rtype: char * +- */ +-char * +-pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value, unsigned int flags) ++static char * ++pkgconf_tuple_parse_sysroot(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value, unsigned int flags, bool add_sysroot) + { + 	char buf[PKGCONF_BUFSIZE]; + 	const char *ptr; +@@ -318,7 +324,7 @@ pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const + 	if (!(client->flags & PKGCONF_PKG_PKGF_FDO_SYSROOT_RULES) && + 		(!(flags & PKGCONF_PKG_PROPF_UNINSTALLED) || (client->flags & PKGCONF_PKG_PKGF_PKGCONF1_SYSROOT_RULES))) + 	{ +-		if (*value == '/' && client->sysroot_dir != NULL && strncmp(value, client->sysroot_dir, strlen(client->sysroot_dir))) ++		if (add_sysroot && *value == '/' && client->sysroot_dir != NULL && strncmp(value, client->sysroot_dir, strlen(client->sysroot_dir))) + 			bptr += pkgconf_strlcpy(buf, client->sysroot_dir, sizeof buf); + 	} +  +@@ -381,7 +387,7 @@ pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const + 				{ + 					size_t nlen; +  +-					parsekv = pkgconf_tuple_parse(client, vars, kv, flags); ++					parsekv = pkgconf_tuple_parse_sysroot(client, vars, kv, flags, add_sysroot); + 					nlen = pkgconf_strlcpy(bptr, parsekv, remain); + 					free(parsekv); +  +@@ -432,6 +438,26 @@ pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const + 	return strdup(buf); + } +  ++/* ++ * !doc ++ * ++ * .. c:function:: char *pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value, unsigned int flags) ++ * ++ *    Parse an expression for variable substitution. ++ * ++ *    :param pkgconf_client_t* client: The pkgconf client object to access. ++ *    :param pkgconf_list_t* list: The variable list to search for variables (along side the global variable list). ++ *    :param char* value: The ``key=value`` string to parse. ++ *    :param uint flags: Any flags to consider while parsing. ++ *    :return: the variable data with any variables substituted ++ *    :rtype: char * ++ */ ++char * ++pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value, unsigned int flags) ++{ ++	return pkgconf_tuple_parse_sysroot(client, vars, value, flags, true); ++} ++ + /* +  * !doc +  * +--  +2.43.0 + diff --git a/package/poco/Makefile b/package/poco/Makefile index dfaab9299..70e373a75 100644 --- a/package/poco/Makefile +++ b/package/poco/Makefile @@ -4,18 +4,18 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		poco -PKG_VERSION:=		1.9.4 +PKG_VERSION:=		1.14.1  PKG_RELEASE:=		1 -PKG_HASH:=		1bcaff7b1f7dfcbe573ddf0bf7e251e93072355ecc468c075339920c97e39c8f +PKG_HASH:=		58e386e48bf82ca84005eb7f5fbf543e1d55ebf2e86c5914185c643cd3951632  PKG_DESCR:=		c++ network libraries  PKG_SECTION:=		libs/misc -PKG_BUILDDEP:=		zlib pcre -PKG_DEPENDS:=		zlib libpcre +PKG_BUILDDEP:=		zlib pcre2 +PKG_DEPENDS:=		zlib libpcre2  PKG_URL:=		http://pocoproject.org -PKG_SITES:=		http://pocoproject.org/releases/poco-1.9.4/ +PKG_SITES:=		http://pocoproject.org/releases/poco-1.14.1/  PKG_OPTS:=		dev -PKG_LIBC_DEPENDS:=	glibc +#PKG_LIBC_DEPENDS:=	glibc  DISTFILES:=             $(PKG_NAME)-$(PKG_VERSION).tar.gz @@ -23,8 +23,11 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,POCO,poco,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) +TARGET_LDFLAGS+=	-latomic +XAKE_FLAGS+=		POCO_TARGET_OSARCH=$(ADK_TARGET_CPU_ARCH)  CONFIG_STYLE:=		minimal  CONFIGURE_ARGS+=	--prefix=/usr \ +			--ldflags='$(TARGET_LDFLAGS)' \  			--no-tests \  			--no-samples diff --git a/package/postfix/Makefile b/package/postfix/Makefile index d0944711a..d85399afd 100644 --- a/package/postfix/Makefile +++ b/package/postfix/Makefile @@ -15,7 +15,6 @@ PKG_SITES:=		http://de.postfix.org/ftpmirror/official/  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz -PKG_HOST_DEPENDS:=	!darwin  # missing res_send support in resolver  PKG_LIBC_DEPENDS:=	glibc musl diff --git a/package/presentproto/Makefile b/package/presentproto/Makefile index b2e8ccd71..b3221f20b 100644 --- a/package/presentproto/Makefile +++ b/package/presentproto/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		presentproto -PKG_VERSION:=		1.0 +PKG_VERSION:=		1.1  PKG_RELEASE:=		1 -PKG_HASH:=		02f8042cb351dd5c3699a0dbdb2ab25f86532efe3e1e3e97897e7f44b5c67040 +PKG_HASH:=		114252e97afb4dfae8b31e6b0d5e24e4babda26b364e2be57abc2f3c30248b87  PKG_DESCR:=		present protocol headers  PKG_SECTION:=		dev/header  PKG_SITES:=		http://www.x.org/releases/individual/proto/ diff --git a/package/privoxy/Makefile b/package/privoxy/Makefile index 1482463a1..10df39d3c 100644 --- a/package/privoxy/Makefile +++ b/package/privoxy/Makefile @@ -4,14 +4,14 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		privoxy -PKG_VERSION:=		3.0.26 +PKG_VERSION:=		4.0.0  PKG_RELEASE:=		1  PKG_VARIANT:=		stable -PKG_HASH:=		57e415b43ee5dfdca74685cc034053eaae962952fdabd086171551a86abf9cd8 +PKG_HASH:=		c08e2ba0049307017bf9d8a63dd2a0dfb96aa0cdeb34ae007776e63eba62a26f  PKG_DESCR:=		web proxy with advanced filtering capabilities  PKG_SECTION:=		net/proxy -PKG_DEPENDS:=		libpcre -PKG_BUILDDEP:=		pcre +PKG_DEPENDS:=		libpcre2 +PKG_BUILDDEP:=		pcre2  PKG_NEEDS:=		threads  PKG_URL:=		http://www.privoxy.org/  PKG_SITES:=		${MASTER_SITE_SOURCEFORGE:=ijbswa/} @@ -25,7 +25,6 @@ $(eval $(call PKG_template,PRIVOXY,privoxy,${PKG_VERSION}-${PKG_RELEASE},${PKG_D  AUTOTOOL_STYLE:=	autoreconf  CONFIGURE_ARGS+=	--disable-editor \ -			--disable-jar-files \  			--sysconfdir=/etc/privoxy  # uClibc setpgrp does not take arguments  CONFIGURE_ENV+=		ac_cv_func_setpgrp_void=yes \ diff --git a/package/python-markupsafe/Makefile b/package/python-markupsafe/Makefile index e35e13602..16e385c54 100644 --- a/package/python-markupsafe/Makefile +++ b/package/python-markupsafe/Makefile @@ -4,17 +4,17 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		python-markupsafe -PKG_VERSION:=		2.1.5 +PKG_VERSION:=		3.0.2  PKG_RELEASE:=		1 -PKG_HASH:=		d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b +PKG_HASH:=		ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0  PKG_DESCR:=		implements a XML/HTML/XHTML markup safe string  PKG_SECTION:=		dev/tools  HOST_BUILDDEP:=		python3-host -PKG_SITES:=		https://files.pythonhosted.org/packages/87/5b/aae44c6655f3801e81aa3eef09dbbf012431987ba564d7231722f68df02d/ +PKG_SITES:=		https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/ -DISTFILES:=             MarkupSafe-$(PKG_VERSION).tar.gz +DISTFILES:=             markupsafe-$(PKG_VERSION).tar.gz -WRKDIST=		$(WRKDIR)/MarkupSafe-$(PKG_VERSION) +WRKDIST=		$(WRKDIR)/markupsafe-$(PKG_VERSION)  include ${ADK_TOPDIR}/mk/host.mk  include $(ADK_TOPDIR)/mk/package.mk diff --git a/package/python-setuptools/Makefile b/package/python3-setuptools/Makefile index 4a05cb202..31c9e85a4 100644 --- a/package/python-setuptools/Makefile +++ b/package/python3-setuptools/Makefile @@ -3,14 +3,14 @@  include $(ADK_TOPDIR)/rules.mk -PKG_NAME:=		python-setuptools -PKG_VERSION:=		69.0.3 +PKG_NAME:=		python3-setuptools +PKG_VERSION:=		78.1.0  PKG_RELEASE:=		1 -PKG_HASH:=		be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 -PKG_DESCR:=		python setuptools +PKG_HASH:=		18fd474d4a82a5f83dac888df697af65afa82dec7323d09c3e37d1f14288da54 +PKG_DESCR:=		python installer  PKG_SECTION:=		dev/tools  PKG_BUILDDEP:=		python3-host -PKG_SITES:=		https://files.pythonhosted.org/packages/fc/c9/b146ca195403e0182a374e0ea4dbc69136bad3cd55bc293df496d625d0f7/ +PKG_SITES:=		https://files.pythonhosted.org/packages/a9/5a/0db4da3bc908df06e5efae42b44e75c81dd52716e10192ff36d0c1c8e379/  DISTFILES:=             setuptools-$(PKG_VERSION).tar.gz @@ -19,13 +19,13 @@ WRKDIST=		$(WRKDIR)/setuptools-$(PKG_VERSION)  include ${ADK_TOPDIR}/mk/host.mk  include $(ADK_TOPDIR)/mk/package.mk -$(eval $(call HOST_template,PYTHON_SETUPTOOLS,python-setuptools,${PKG_VERSION}-${PKG_RELEASE})) +$(eval $(call HOST_template,PYTHON3_SETUPTOOLS,python3-setuptools,${PKG_VERSION}-${PKG_RELEASE}))  include $(ADK_TOPDIR)/mk/python3.mk  HOST_STYLE:=		manual -python-setuptools-hostinstall: +python3-setuptools-hostinstall:  	(cd $(WRKBUILD); PATH='$(HOST_PATH)' python3 ./setup.py install \  		--prefix=$(STAGING_HOST_DIR)/usr) diff --git a/package/python3-yaml/Makefile b/package/python3-yaml/Makefile new file mode 100644 index 000000000..ea4abc415 --- /dev/null +++ b/package/python3-yaml/Makefile @@ -0,0 +1,33 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		python3-yaml +PKG_VERSION:=		6.0.2 +PKG_RELEASE:=		1 +PKG_HASH:=		d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e +PKG_DESCR:=		fast, expressive, extensible templating engine +PKG_SECTION:=		dev/tools +PKG_BUILDDEP:=		python3-host +PKG_SITES:=		https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/ + +DISTFILES:=             pyyaml-$(PKG_VERSION).tar.gz + +WRKDIST=		$(WRKDIR)/pyyaml-$(PKG_VERSION) + +include ${ADK_TOPDIR}/mk/host.mk +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call HOST_template,PYTHON3_YAML,python3-yaml,${PKG_VERSION}-${PKG_RELEASE})) + +include $(ADK_TOPDIR)/mk/python3.mk + +HOST_STYLE:=		manual + +python3-yaml-hostinstall: +	(cd $(WRKBUILD); PATH='$(HOST_PATH)' python3 ./setup.py install \ +		--prefix=$(STAGING_HOST_DIR)/usr) + +include ${ADK_TOPDIR}/mk/host-bottom.mk +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/python3/Makefile b/package/python3/Makefile index dd2374ccf..bbe408591 100644 --- a/package/python3/Makefile +++ b/package/python3/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		python3 -PKG_VERSION:=		3.11.10 +PKG_VERSION:=		3.13.8  PKG_RELEASE:=		1 -PKG_HASH:=		07a4356e912900e61a15cb0949a06c4a05012e213ecd6b4e84d0f67aabbee372 +PKG_HASH:=		b9910730526b298299b46b35595ced9055722df60c06ad6301f6a4e2c728a252  PKG_DESCR:=		python scripting language  PKG_SECTION:=		dev/lang  PKG_DEPENDS:=		libffi zlib libexpat @@ -52,9 +52,9 @@ define PKG_mod_template  INSTALL_MODS_$${ADK_PACKAGE_${1}}+=    ${2}-install  ${2}-install: -	${INSTALL_DIR} $$(IDIR_$(1))/usr/lib/python3.11/lib-dynload +	${INSTALL_DIR} $$(IDIR_$(1))/usr/lib/python3.13/lib-dynload  	for m in ${2}; do \ -		${INSTALL_DATA} $(WRKINST)/usr/lib/python3.11/lib-dynload/$$$${m}*.so $$(IDIR_$(1))/usr/lib/python3.11/lib-dynload ;\ +		${INSTALL_DATA} $(WRKINST)/usr/lib/python3.13/lib-dynload/$$$${m}*.so $$(IDIR_$(1))/usr/lib/python3.13/lib-dynload ;\  	done  endef @@ -81,10 +81,11 @@ $(eval $(call PKG_mod_template,PYTHON3_MOD_READLINE,readline))  MAKE_ENV+=		HOSTPGEN=$(STAGING_HOST_DIR)/usr/bin/pgen3  FAKE_FLAGS+=		ENSUREPIP=no  CONFIGURE_ARGS:=	--with-system-expat \ -			--disable-ipv6 \ -			--with-build-python +			--disable-test-modules \ +			--with-build-python=$(STAGING_HOST_DIR)/usr/bin/python3  CONFIGURE_ENV+=		ac_cv_have_long_long_format=yes \ +			ac_cv_buggy_getaddrinfo=no \  			ac_cv_file__dev_ptmx=yes \  			ac_cv_file__dev_ptc=no \  			ac_cv_header_libintl_h=no @@ -97,15 +98,15 @@ endif  python3-install: ${INSTALL_MODS_y} ${INSTALL_MODS_m}  	${INSTALL_DIR} ${IDIR_PYTHON3}/usr/bin ${IDIR_PYTHON3}/usr/lib -	${INSTALL_DIR} ${IDIR_PYTHON3}/usr/lib/python3.11 -	${INSTALL_DIR} ${IDIR_PYTHON3}/usr/include/python3.11 +	${INSTALL_DIR} ${IDIR_PYTHON3}/usr/lib/python3.13 +	${INSTALL_DIR} ${IDIR_PYTHON3}/usr/include/python3.13  	${INSTALL_BIN} ${WRKINST}/usr/bin/python3 ${IDIR_PYTHON3}/usr/bin  	${CP} ${WRKINST}/usr/lib/libpython*.so* ${IDIR_PYTHON3}/usr/lib -	${CP} ${WRKINST}/usr/lib/python3.11/* ${IDIR_PYTHON3}/usr/lib/python3.11 -	${CP} ${WRKINST}/usr/include/python3.11/pyconfig.h \ -		 ${IDIR_PYTHON3}/usr/include/python3.11 +	${CP} ${WRKINST}/usr/lib/python3.13/* ${IDIR_PYTHON3}/usr/lib/python3.13 +	${CP} ${WRKINST}/usr/include/python3.13/pyconfig.h \ +		 ${IDIR_PYTHON3}/usr/include/python3.13  	@-for i in zlib _bz2 _curses _ssl _gdbm _sqlite pyexpat readline; do \ -		rm ${IDIR_PYTHON3}/usr/lib/python3.11/lib-dynload/$${i}*so; \ +		rm ${IDIR_PYTHON3}/usr/lib/python3.13/lib-dynload/$${i}*so; \  	done  include ${ADK_TOPDIR}/mk/host-bottom.mk diff --git a/package/quickjs/Makefile b/package/quickjs/Makefile new file mode 100644 index 000000000..68ed4982e --- /dev/null +++ b/package/quickjs/Makefile @@ -0,0 +1,29 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		quickjs +PKG_VERSION:=		2024-01-13 +PKG_RELEASE:=		1 +PKG_HASH:=		3c4bf8f895bfa54beb486c8d1218112771ecfc5ac3be1036851ef41568212e03 +PKG_DESCR:=		javascript engine +PKG_SECTION:=		dev/lang +PKG_URL:=		https://bellard.org/quickjs/ +PKG_SITES:=		https://bellard.org/quickjs/ + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,QUICKJS,quickjs,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +XAKE_FLAGS+=		CROSS_PREFIX=$(TARGET_CROSS) +TARGET_CFLAGS:= +TARGET_LDFLAGS+=	-latomic +CONFIG_STYLE:=		manual + +quickjs-install: +	$(INSTALL_DIR) $(IDIR_QUICKJS)/usr/bin +	$(INSTALL_BIN) $(WRKINST)/usr/bin/qjs \ +		$(IDIR_QUICKJS)/usr/bin + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/quickjs/patches/patch-Makefile b/package/quickjs/patches/patch-Makefile new file mode 100644 index 000000000..cbe266da6 --- /dev/null +++ b/package/quickjs/patches/patch-Makefile @@ -0,0 +1,29 @@ +--- quickjs-2024-01-13.orig/Makefile	2024-01-13 11:20:39.000000000 +0100 ++++ quickjs-2024-01-13/Makefile	2025-03-31 22:09:50.810771963 +0200 +@@ -28,7 +28,7 @@ endif + # Windows cross compilation from Linux + #CONFIG_WIN32=y + # use link time optimization (smaller and faster executables but slower build) +-CONFIG_LTO=y ++#CONFIG_LTO=y + # consider warnings as errors (for development) + #CONFIG_WERROR=y + # force 32 bit build for some utilities +@@ -37,7 +37,7 @@ CONFIG_LTO=y + #CONFIG_COSMO=y +  + # installation directory +-PREFIX?=/usr/local ++PREFIX?=/usr +  + # use the gprof profiler + #CONFIG_PROFILE=y +@@ -217,7 +217,7 @@ ifneq ($(CROSS_PREFIX),) +  + $(QJSC): $(OBJDIR)/qjsc.host.o \ +     $(patsubst %.o, %.host.o, $(QJS_LIB_OBJS)) +-	$(HOST_CC) $(LDFLAGS) -o $@ $^ $(HOST_LIBS) ++	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ $^ $(HOST_LIBS) +  + endif #CROSS_PREFIX +  diff --git a/package/readline/Makefile b/package/readline/Makefile index 8ac34cceb..3db889ad9 100644 --- a/package/readline/Makefile +++ b/package/readline/Makefile @@ -4,13 +4,11 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		readline -PKG_VERSION:=		8.1 +PKG_VERSION:=		8.2  PKG_RELEASE:=		1 -PKG_HASH:=		f8ceb4ee131e3232226a17f51b164afc46cd0b9e6cef344be87c65962cb82b02 +PKG_HASH:=		3feb7171f16a84ee82ca18a36d7b9be109a52c04f492a053331d7d1095007c35  PKG_DESCR:=		command line editing library  PKG_SECTION:=		libs/misc -PKG_DEPENDS:=		libncurses -PKG_BUILDDEP:=		ncurses  PKG_SITES:=		${MASTER_SITE_GNU:=readline/}  PKG_LIBNAME:=		libreadline  PKG_OPTS:=		dev @@ -23,9 +21,6 @@ include ${ADK_TOPDIR}/mk/package.mk  $(eval $(call HOST_template,READLINE,readline,${PKG_VERSION}-${PKG_RELEASE}))  $(eval $(call PKG_template,LIBREADLINE,libreadline,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) -CONFIGURE_ARGS+= 	--with-curses -TARGET_LDFLAGS+=	-ltinfo -  libreadline-install:  	${INSTALL_DIR} ${IDIR_LIBREADLINE}/usr/lib  	${CP} ${WRKINST}/usr/lib/libhistory.so* ${IDIR_LIBREADLINE}/usr/lib diff --git a/package/ruby/Makefile b/package/ruby/Makefile index f0a55595b..8553eb5c5 100644 --- a/package/ruby/Makefile +++ b/package/ruby/Makefile @@ -4,17 +4,17 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		ruby -PKG_VERSION:=		3.3.0 +PKG_VERSION:=		3.4.6  PKG_RELEASE:=		1 -PKG_HASH:=		676b65a36e637e90f982b57b059189b3276b9045034dcd186a7e9078847b975b +PKG_HASH:=		804995bc22938aa475127000d3103cb133409ad3955edfc0e7412be66a4859b8  PKG_DESCR:=		scripting language  PKG_SECTION:=		dev/lang -PKG_DEPENDS:=		libressl zlib -PKG_BUILDDEP:=		ruby-host libressl zlib -HOST_BUILDDEP:=		libressl-host +PKG_DEPENDS:=		libopenssl zlib +PKG_BUILDDEP:=		ruby-host openssl zlib +HOST_BUILDDEP:=		openssl-host yaml-host  PKG_NEEDS:=		threads  PKG_URL:=		http://www.ruby-lang.org/ -PKG_SITES:=		http://ftp.ruby-lang.org/pub/ruby/3.3/ +PKG_SITES:=		http://ftp.ruby-lang.org/pub/ruby/3.4/  include ${ADK_TOPDIR}/mk/host.mk  include ${ADK_TOPDIR}/mk/package.mk diff --git a/package/rxvt-unicode/Makefile b/package/rxvt-unicode/Makefile index 8b977427d..3e6e625d9 100644 --- a/package/rxvt-unicode/Makefile +++ b/package/rxvt-unicode/Makefile @@ -10,7 +10,7 @@ PKG_HASH:=		fe1c93d12f385876457a989fc3ae05c0915d2692efc59289d0f70fabe5b44d2d  PKG_DESCR:=		terminal emulator with unicode support  PKG_SECTION:=		x11/apps  PKG_DEPENDS:=		libx11 fontconfig libxft libxml2 gdk-pixbuf libptytty -PKG_DEPENDS+=		libffi libmount +PKG_DEPENDS+=		libffi libmount glib  PKG_BUILDDEP:=		libX11 fontconfig libXft libxml2 gdk-pixbuf libptytty  PKG_BUILDDEP+=		libffi util-linux  PKG_NEEDS:=		c++ diff --git a/package/sash/Makefile b/package/sash/Makefile index 03c12a965..370a0bd7a 100644 --- a/package/sash/Makefile +++ b/package/sash/Makefile @@ -16,6 +16,7 @@ include ${ADK_TOPDIR}/mk/package.mk  $(eval $(call PKG_template,SASH,sash,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) +#TARGET_CFLAGS:=		-Wno-incompatible-pointer-types  CONFIG_STYLE:=		manual  INSTALL_STYLE:=		manual diff --git a/package/screen/Makefile b/package/screen/Makefile index a5dbf8043..9aa49a79f 100644 --- a/package/screen/Makefile +++ b/package/screen/Makefile @@ -4,13 +4,13 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		screen -PKG_VERSION:=		5.0.0 +PKG_VERSION:=		5.0.1  PKG_RELEASE:=		1 -PKG_HASH:=		f04a39d00a0e5c7c86a55338808903082ad5df4d73df1a2fd3425976aed94971 +PKG_HASH:=		2dae36f4db379ffcd14b691596ba6ec18ac3a9e22bc47ac239789ab58409869d  PKG_DESCR:=		window manager for the terminal session  PKG_SECTION:=		sys/utils -PKG_DEPENDS:=		libncurses elfutils -PKG_BUILDDEP:=		ncurses elfutils +PKG_DEPENDS:=		libncurses +PKG_BUILDDEP:=		ncurses  PKG_NEEDS:=		mmu  PKG_URL:=		http://www.gnu.org/software/screen/  PKG_SITES:=		${MASTER_SITE_GNU:=screen/} diff --git a/package/sed/Makefile b/package/sed/Makefile index c265dfe1b..d0eababa6 100644 --- a/package/sed/Makefile +++ b/package/sed/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		sed -PKG_VERSION:=		4.4 +PKG_VERSION:=		4.9  PKG_RELEASE:=		1 -PKG_HASH:=		cbd6ebc5aaf080ed60d0162d7f6aeae58211a1ee9ba9bb25623daa6cd942683b +PKG_HASH:=		6e226b732e1cd739464ad6862bd1a1aba42d7982922da7a53519631d24975181  PKG_DESCR:=		stream editor  PKG_SECTION:=		base/tools  PKG_URL:=		http://www.gnu.org/software/sed/ diff --git a/package/simpleinit/Makefile b/package/simpleinit/Makefile index 4de28ba48..91fe5141f 100644 --- a/package/simpleinit/Makefile +++ b/package/simpleinit/Makefile @@ -20,6 +20,7 @@ BUILD_STYLE:=		manual  INSTALL_STYLE:=		manual  TARGET_CPPFLAGS+=	-DCONFIG_USER_INIT_CONSOLE_SH +TARGET_CFLAGS+=		-Wno-incompatible-pointer-types  do-build:  	PATH='$(HOST_PATH)' \ diff --git a/package/snort/Makefile b/package/snort/Makefile deleted file mode 100644 index 1c044e190..000000000 --- a/package/snort/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include ${ADK_TOPDIR}/rules.mk - -PKG_NAME:=		snort -PKG_VERSION:=		2.9.20 -PKG_RELEASE:=		1 -PKG_HASH:=		29400e13f53b1831e0b8b10ec1224a1cbaa6dc1533a5322a20dd80bb84b4981c -PKG_DESCR:=		flexible network intrusion detection system -PKG_SECTION:=		net/security -PKG_DEPENDS:=		libnet libpcap libpcre libtirpc daq -PKG_BUILDDEP:=		libnet libpcap pcre libtirpc daq -PKG_URL:=		http://www.snort.org/ -PKG_SITES:=		https://www.snort.org/downloads/snort/ -PKG_NOPARALLEL:=	1 - -DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz - -PKG_LIBC_DEPENDS:=	uclibc-ng glibc - -include ${ADK_TOPDIR}/mk/package.mk - -$(eval $(call PKG_template,SNORT,snort,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) - -AUTOTOOL_STYLE:=	autoreconf -TARGET_CPPFLAGS+=	-I$(STAGING_TARGET_DIR)/usr/include/tirpc -TARGET_LDFLAGS+=	-ltirpc -CONFIGURE_ENV+=		have_inaddr_none=yes -CONFIGURE_ARGS+=	--disable-static-daq \ -			--disable-open-appid \ -			--with-libpcap-includes="${STAGING_TARGET_DIR}/usr/include" \ -			--with-libpcap-libraries="${STAGING_TARGET_DIR}/usr/lib" \ -			--with-libpcre-includes="${STAGING_TARGET_DIR}/usr/include" \ -			--with-libpcre-libraries="${STAGING_TARGET_DIR}/usr/lib" \ -			--with-dnet-includes="${STAGING_TARGET_DIR}/usr/include" \  -			--with-dnet-libraries="${STAGING_TARGET_DIR}/usr/lib"  - -snort-install: -	${INSTALL_DIR} ${IDIR_SNORT}/usr/bin -	${INSTALL_DIR} ${IDIR_SNORT}/etc/snort -	${INSTALL_DATA} ${WRKBUILD}/etc/snort.conf ${IDIR_SNORT}/etc/snort -	${INSTALL_DATA} ${WRKBUILD}/etc/classification.config \ -		${IDIR_SNORT}/etc/snort -	${INSTALL_DATA} ${WRKBUILD}/etc/gen-msg.map \ -		${IDIR_SNORT}/etc/snort -	${INSTALL_DATA} ${WRKBUILD}/etc/reference.config \ -		${IDIR_SNORT}/etc/snort -	${INSTALL_DATA} ${WRKBUILD}/etc/threshold.conf \ -		${IDIR_SNORT}/etc/snort -	${INSTALL_DATA} ${WRKBUILD}/etc/unicode.map \ -		${IDIR_SNORT}/etc/snort -	${INSTALL_BIN} ${WRKINST}/usr/bin/snort ${IDIR_SNORT}/usr/bin - -include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/snort/files/snort.conffiles b/package/snort/files/snort.conffiles deleted file mode 100644 index a224c4c1d..000000000 --- a/package/snort/files/snort.conffiles +++ /dev/null @@ -1,2 +0,0 @@ -/etc/snort/snort.conf -/etc/snort/threshold.conf diff --git a/package/snort/files/snort.init b/package/snort/files/snort.init deleted file mode 100644 index 13a5e302c..000000000 --- a/package/snort/files/snort.init +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -#PKG snort -#INIT 60 -. /etc/rc.conf - -case $1 in -autostop) ;; -autostart) -	test x"${snort:-NO}" = x"NO" && exit 0 -	test x"$snort" = x"DAEMON" && test -x /bin/mksh && exec mksh -T- $0 start -	exec sh $0 start -	;; -start) -	/usr/sbin/snort $snort_flags -	;; -stop) -	kill $(pgrep -f /usr/sbin/snort) -	;; -*) -	echo "usage: $0 {start | stop | restart}" -	exit 1 -esac -exit $? diff --git a/package/snort/files/snort.postinst b/package/snort/files/snort.postinst deleted file mode 100644 index 764927b00..000000000 --- a/package/snort/files/snort.postinst +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -. $IPKG_INSTROOT/etc/functions.sh -add_rcconf snort NO -add_rcconf snort_flags "-i eth0.0 -c /etc/snort/snort.conf -D -N -q -s" diff --git a/package/snort/patches/patch-configure b/package/snort/patches/patch-configure deleted file mode 100644 index 915650ed6..000000000 --- a/package/snort/patches/patch-configure +++ /dev/null @@ -1,139 +0,0 @@ ---- snort-2.9.14.1.orig/configure	2019-08-02 08:33:43.000000000 +0200 -+++ snort-2.9.14.1/configure	2019-10-08 14:35:23.506350397 +0200 -@@ -14408,50 +14408,6 @@ _ACEOF - fi -  -  --# In case INADDR_NONE is not defined (like on Solaris) --have_inaddr_none="no" --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for INADDR_NONE" >&5 --$as_echo_n "checking for INADDR_NONE... " >&6; } --if test "$cross_compiling" = yes; then : --  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 --$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --as_fn_error $? "cannot run test program while cross compiling --See \`config.log' for more details" "$LINENO" 5; } --else --  cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h.  */ -- --#include <sys/types.h> --#include <netinet/in.h> --#include <arpa/inet.h> -- --int --main () --{ -- --	if (inet_addr("10,5,2") == INADDR_NONE); --    return 0; -- --  ; --  return 0; --} --_ACEOF --if ac_fn_c_try_run "$LINENO"; then : --  have_inaddr_none="yes" --else --  have_inaddr_none="no" --fi --rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ --  conftest.$ac_objext conftest.beam conftest.$ac_ext --fi -- --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_inaddr_none" >&5 --$as_echo "$have_inaddr_none" >&6; } --if test "x$have_inaddr_none" = "xno"; then -- --$as_echo "#define INADDR_NONE -1" >>confdefs.h -- --fi -  - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h.  */ -@@ -14861,45 +14817,6 @@ if test "x$LPCAP" = "xno"; then -   fi - fi -  --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pcap_lex_destroy" >&5 --$as_echo_n "checking for pcap_lex_destroy... " >&6; } --if test "$cross_compiling" = yes; then : --  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 --$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --as_fn_error $? "cannot run test program while cross compiling --See \`config.log' for more details" "$LINENO" 5; } --else --  cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h.  */ -- --#include <pcap.h> -- --int --main () --{ -- --   pcap_lex_destroy(); -- --  ; --  return 0; --} --_ACEOF --if ac_fn_c_try_run "$LINENO"; then : --  have_pcap_lex_destroy="yes" --else --  have_pcap_lex_destroy="no" --fi --rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ --  conftest.$ac_objext conftest.beam conftest.$ac_ext --fi -- --{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_pcap_lex_destroy" >&5 --$as_echo "$have_pcap_lex_destroy" >&6; } --if test "x$have_pcap_lex_destroy" = "xyes"; then -- --$as_echo "#define HAVE_PCAP_LEX_DESTROY 1" >>confdefs.h -- --fi -  - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pcap_lib_version" >&5 - $as_echo_n "checking for pcap_lib_version... " >&6; } -@@ -15830,38 +15747,7 @@ fi -  - fi -  --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for daq address space ID" >&5 --$as_echo_n "checking for daq address space ID... " >&6; } --if test "$cross_compiling" = yes; then : --  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 --$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} --as_fn_error $? "cannot run test program while cross compiling --See \`config.log' for more details" "$LINENO" 5; } --else --  cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h.  */ -- --#include <daq.h> -- --int --main () --{ -- --   DAQ_PktHdr_t hdr; --   hdr.address_space_id = 0; -- --  ; --  return 0; --} --_ACEOF --if ac_fn_c_try_run "$LINENO"; then : --  have_daq_address_space_id="yes" --else --  have_daq_address_space_id="no" --fi --rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ --  conftest.$ac_objext conftest.beam conftest.$ac_ext --fi -+have_daq_address_space_id="yes" -  - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_daq_address_space_id" >&5 - $as_echo "$have_daq_address_space_id" >&6; } diff --git a/package/snort/patches/patch-configure_in b/package/snort/patches/patch-configure_in deleted file mode 100644 index 5ed8dc9f1..000000000 --- a/package/snort/patches/patch-configure_in +++ /dev/null @@ -1,279 +0,0 @@ ---- snort-2.9.14.1.orig/configure.in	2019-08-02 08:16:45.000000000 +0200 -+++ snort-2.9.14.1/configure.in	2019-10-08 14:40:16.073097068 +0200 -@@ -70,8 +70,10 @@ case "$host" in -   *-linux*) -     linux="yes" -     AC_DEFINE([LINUX],[1],[Define if Linux]) --    AC_SUBST(extra_incl) --    extra_incl="-I/usr/include/pcap" -+    if test -z "x$with_libpcap_includes"; then -+        AC_SUBST(extra_incl) -+        extra_incl="-I/usr/include/pcap" -+    fi -     ;; -   *-hpux10*|*-hpux11*) -     AC_DEFINE([HPUX],[1],[Define if HP-UX 10 or 11]) -@@ -282,8 +284,8 @@ AC_CHECK_TYPES([int8_t,int16_t,int32_t,i - AC_CHECK_TYPES([boolean]) -  - # In case INADDR_NONE is not defined (like on Solaris) -+AC_CACHE_CHECK([for INADDR_NONE], [have_inaddr_none], [ - have_inaddr_none="no" --AC_MSG_CHECKING([for INADDR_NONE]) - AC_RUN_IFELSE( - [AC_LANG_PROGRAM( - [[ -@@ -296,7 +298,7 @@ AC_RUN_IFELSE( -     return 0; - ]])], - [have_inaddr_none="yes"], --[have_inaddr_none="no"]) -+[have_inaddr_none="no"])]) - AC_MSG_RESULT($have_inaddr_none) - if test "x$have_inaddr_none" = "xno"; then - 	AC_DEFINE([INADDR_NONE],[-1],[For INADDR_NONE definition]) -@@ -429,7 +431,7 @@ if test "x$LPCAP" = "xno"; then - fi -  - AC_MSG_CHECKING([for pcap_lex_destroy]) --AC_RUN_IFELSE( -+AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[ - #include <pcap.h> -@@ -717,17 +719,11 @@ fi - AC_CHECK_FUNCS([daq_hup_apply] [daq_acquire_with_meta] [daq_dp_add_dc]) -  - AC_MSG_CHECKING([for daq real addresses]) --AC_RUN_IFELSE( --[AC_LANG_PROGRAM( --[[ --#include <daq.h> --]], --[[ --   DAQ_PktHdr_t hdr; --   hdr.n_real_dPort = 0; --]])], --[have_daq_real_addresses="yes"], --[have_daq_real_addresses="no"]) -+ -+AC_CHECK_MEMBERS([DAQ_PktHdr_t hdr.n_real_dPort], -+    [have_daq_real_addresses="yes"], -+    [have_daq_real_addresses="no"], -+    [[#include <daq.h>]]) - AC_MSG_RESULT($have_daq_real_addresses) - if test "x$have_daq_real_addresses" = "xyes"; then -     AC_DEFINE([HAVE_DAQ_REAL_ADDRESSES],[1], -@@ -771,17 +767,11 @@ if test "x$ac_cv_func_daq_dp_add_dc" = " - fi -  - AC_MSG_CHECKING([for daq address space ID]) --AC_RUN_IFELSE( --[AC_LANG_PROGRAM( --[[ --#include <daq.h> --]], --[[ --   DAQ_PktHdr_t hdr; --   hdr.address_space_id = 0; --]])], --[have_daq_address_space_id="yes"], --[have_daq_address_space_id="no"]) -+ -+AC_CHECK_MEMBERS([DAQ_PktHdr_t hdr.address_space_id], -+    [have_daq_address_space_id="yes"], -+    [have_daq_address_space_id="no"], -+    [[#include <daq.h>]]) - AC_MSG_RESULT($have_daq_address_space_id) - if test "x$have_daq_address_space_id" = "xyes"; then -     AC_DEFINE([HAVE_DAQ_ADDRESS_SPACE_ID],[1], -@@ -789,17 +779,10 @@ if test "x$have_daq_address_space_id" = - fi -  - AC_MSG_CHECKING([for daq flow ID]) --AC_RUN_IFELSE( --[AC_LANG_PROGRAM( --[[ --#include <daq.h> --]], --[[ --   DAQ_PktHdr_t hdr; --   hdr.flow_id = 0; --]])], --[have_daq_flow_id="yes"], --[have_daq_flow_id="no"]) -+AC_CHECK_MEMBERS([DAQ_PktHdr_t hdr.flow_id], -+    [have_daq_flow_id="yes"], -+    [have_daq_flow_id="no"], -+    [[#include <daq.h>]]) - AC_MSG_RESULT($have_daq_flow_id) - if test "x$have_daq_flow_id" = "xyes"; then -     AC_DEFINE([HAVE_DAQ_FLOW_ID],[1], -@@ -807,19 +790,10 @@ if test "x$have_daq_flow_id" = "xyes"; t - fi -  - AC_MSG_CHECKING([for daq extended flow modifiers]) --AC_RUN_IFELSE( --[AC_LANG_PROGRAM( --[[ --#include <daq.h> --]], --[[ --   DAQ_ModFlow_t mod; --   mod.type = 0; --   mod.length = 0; --   mod.value = NULL; --]])], --[have_daq_ext_modflow="yes"], --[have_daq_ext_modflow="no"]) -+AC_CHECK_MEMBERS([DAQ_ModFlow_t mod.type, DAQ_ModFlow_t mod.length, DAQ_ModFlow_t mod.value], -+    [have_daq_ext_modflow="yes"], -+    [have_daq_ext_modflow="no"], -+    [[#include <daq.h>]]) - AC_MSG_RESULT($have_daq_ext_modflow) - if test "x$have_daq_ext_modflow" = "xyes"; then -     CCONFIGFLAGS="${CCONFIGFLAGS} -DHAVE_DAQ_EXT_MODFLOW" -@@ -828,19 +802,11 @@ if test "x$have_daq_ext_modflow" = "xyes - fi -  - AC_MSG_CHECKING([for daq query flow]) --AC_RUN_IFELSE( --[AC_LANG_PROGRAM( --[[ --#include <daq.h> --]], --[[ --   DAQ_QueryFlow_t mod; --   mod.type = 0; --   mod.length = 0; --   mod.value = NULL; --]])], --[have_daq_queryflow="yes"], --[have_daq_queryflow="no"]) -+ -+AC_CHECK_MEMBERS([DAQ_QueryFlow_t mod.type, DAQ_QueryFlow_t mod.length, DAQ_QueryFlow_t mod.value], -+    [have_daq_queryflow="yes"], -+    [have_daq_queryflow="no"], -+    [[#include <daq.h>]]) - AC_MSG_RESULT($have_daq_queryflow) - if test "x$have_daq_queryflow" = "xyes"; then -     CCONFIGFLAGS="${CCONFIGFLAGS} -DHAVE_DAQ_QUERYFLOW" -@@ -849,16 +815,11 @@ if test "x$have_daq_queryflow" = "xyes"; - fi -  - AC_MSG_CHECKING([for daq data channel flags]) --AC_RUN_IFELSE( --[AC_LANG_PROGRAM( --[[ --#include <daq.h> --]], --[[ --   DAQ_Data_Channel_Params_t params; --]])], --[have_daq_data_channel_flags="yes"], --[have_daq_data_channel_flags="no"]) -+ -+AC_CHECK_MEMBERS([DAQ_Data_Channel_Params_t params.flags], -+    [have_daq_data_channel_flags="yes"], -+    [have_daq_data_channel_flags="no"], -+    [[#include <daq.h>]]) - AC_MSG_RESULT($have_daq_data_channel_flags) - if test "x$have_daq_data_channel_flags" = "xyes"; then -     CCONFIGFLAGS="${CCONFIGFLAGS} -DHAVE_DAQ_DATA_CHANNEL_PARAMS" -@@ -867,17 +828,10 @@ if test "x$have_daq_data_channel_flags" - fi -  - AC_MSG_CHECKING([for separate IP versions on pinhole endpoints]) --AC_RUN_IFELSE( --[AC_LANG_PROGRAM( --[[ --#include <daq.h> --]], --[[ --   DAQ_DP_key_t dpKey; --   dpKey.src_af = 0; --]])], --[have_daq_data_channel_separate_ip_versions="yes"], --[have_daq_data_channel_separate_ip_versions="no"]) -+AC_CHECK_MEMBERS([DAQ_DP_key_t dpKey.src_af], -+    [have_daq_data_channel_separate_ip_versions="yes"], -+    [have_daq_data_channel_separate_ip_versions="no"], -+    [[#include <daq.h>]]) - AC_MSG_RESULT($have_daq_data_channel_separate_ip_versions) - if test "x$have_daq_data_channel_separate_ip_versions" = "xyes"; then -     CCONFIGFLAGS="${CCONFIGFLAGS} -DHAVE_DAQ_DATA_CHANNEL_SEPARATE_IP_VERSIONS" -@@ -886,7 +840,7 @@ if test "x$have_daq_data_channel_separat - fi -  - AC_MSG_CHECKING([for DAQ_VERDICT_RETRY]) --AC_RUN_IFELSE( -+AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[ - #include <daq.h> -@@ -904,17 +858,10 @@ if test "x$have_daq_verdict_retry" = "xy - fi -  - AC_MSG_CHECKING([for daq packet trace]) --AC_RUN_IFELSE( --[AC_LANG_PROGRAM( --[[ --#include <daq.h> --]], --[[ --   DAQ_PktHdr_t hdr; --   hdr.flags = DAQ_PKT_FLAG_TRACE_ENABLED; --]])], --[have_daq_packet_trace="yes"], --[have_daq_packet_trace="no"]) -+AC_CHECK_MEMBERS([DAQ_PktHdr_t hdr.flags], -+    [have_daq_packet_trace="yes"], -+    [have_daq_packet_trace="no"], -+    [[#include <daq.h>]]) - AC_MSG_RESULT($have_daq_packet_trace) - if test "x$have_daq_packet_trace" = "xyes"; then -     AC_DEFINE([HAVE_DAQ_PKT_TRACE],[1], -@@ -924,17 +871,11 @@ else - fi -  - AC_MSG_CHECKING([for daq verdict reason]) --AC_RUN_IFELSE( --[AC_LANG_PROGRAM( --[[ --#include <daq.h> --]], --[[ --   DAQ_ModFlow_t fl; --   fl.type = DAQ_MODFLOW_TYPE_VER_REASON; --]])], --[have_daq_verdict_reason="yes"], --[have_daq_verdict_reason="no"]) -+ -+AC_CHECK_MEMBERS([DAQ_ModFlow_t fl.type], -+    [have_daq_verdict_reason="yes"], -+    [have_daq_verdict_reason="no"], -+    [[#include <daq.h>]]) - AC_MSG_RESULT($have_daq_verdict_reason) - if test "x$have_daq_verdict_reason" = "xyes"; then -     AC_DEFINE([HAVE_DAQ_VERDICT_REASON],[1], -@@ -959,10 +900,8 @@ fi -  - # check for sparc %time register - if eval "echo $host_cpu|grep -i sparc >/dev/null"; then --    OLD_CFLAGS="$CFLAGS" --    CFLAGS="$CFLAGS -mcpu=v9 " -     AC_MSG_CHECKING([for sparc %time register]) --    AC_RUN_IFELSE( -+    AC_COMPILE_IFELSE( -     [AC_LANG_PROGRAM( -     [[]], -     [[ -@@ -974,8 +913,6 @@ if eval "echo $host_cpu|grep -i sparc >/ -     AC_MSG_RESULT($sparcv9) -     if test "x$sparcv9" = "xyes"; then -         AC_DEFINE([SPARCV9],[1],[For sparc v9 with %time register]) --    else --        CFLAGS="$OLD_CFLAGS" -     fi - fi -  diff --git a/package/snort/patches/patch-src_dynamic-preprocessors_appid_service_plugins_service_rpc_c b/package/snort/patches/patch-src_dynamic-preprocessors_appid_service_plugins_service_rpc_c deleted file mode 100644 index fee10a196..000000000 --- a/package/snort/patches/patch-src_dynamic-preprocessors_appid_service_plugins_service_rpc_c +++ /dev/null @@ -1,11 +0,0 @@ ---- snort-2.9.14.1.orig/src/dynamic-preprocessors/appid/service_plugins/service_rpc.c	2019-08-02 08:16:46.000000000 +0200 -+++ snort-2.9.14.1/src/dynamic-preprocessors/appid/service_plugins/service_rpc.c	2019-10-08 14:40:22.925536140 +0200 -@@ -32,7 +32,7 @@ - #include "flow.h" - #include "service_api.h" -  --#if defined(FREEBSD) || defined(OPENBSD) -+#if defined(FREEBSD) || defined(OPENBSD) || (defined(LINUX) && defined(__UCLIBC__) && !defined(__UCLIBC_HAS_RPC__) || !defined(__GLIBC__)) - #include "rpc/rpc.h" - #endif -  diff --git a/package/snort/patches/patch-tools_u2boat_Makefile_in b/package/snort/patches/patch-tools_u2boat_Makefile_in deleted file mode 100644 index 24fec7746..000000000 --- a/package/snort/patches/patch-tools_u2boat_Makefile_in +++ /dev/null @@ -1,11 +0,0 @@ ---- snort-2.9.14.1.orig/tools/u2boat/Makefile.in	2019-08-02 08:33:42.000000000 +0200 -+++ snort-2.9.14.1/tools/u2boat/Makefile.in	2019-10-08 14:35:23.514350918 +0200 -@@ -327,7 +327,7 @@ top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ - AUTOMAKE_OPTIONS = foreign - u2boat_SOURCES = u2boat.c u2boat.h --u2boat_CFLAGS = @CFLAGS@ $(AM_CFLAGS) -+#u2boat_CFLAGS = @CFLAGS@ $(AM_CFLAGS) - u2boat_LDADD = -lpcap - dist_doc_DATA = README.u2boat - all: all-am diff --git a/package/snort/patches/patch-tools_u2spewfoo_Makefile_in b/package/snort/patches/patch-tools_u2spewfoo_Makefile_in deleted file mode 100644 index 8583bebb6..000000000 --- a/package/snort/patches/patch-tools_u2spewfoo_Makefile_in +++ /dev/null @@ -1,11 +0,0 @@ ---- snort-2.9.14.1.orig/tools/u2spewfoo/Makefile.in	2019-08-02 08:33:42.000000000 +0200 -+++ snort-2.9.14.1/tools/u2spewfoo/Makefile.in	2019-10-08 14:35:23.526351677 +0200 -@@ -298,7 +298,7 @@ top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ - AUTOMAKE_OPTIONS = foreign - u2spewfoo_SOURCES = u2spewfoo.c --u2spewfoo_CFLAGS = @CFLAGS@ $(AM_CFLAGS) -+#u2spewfoo_CFLAGS = @CFLAGS@ $(AM_CFLAGS) - EXTRA_DIST = \ - u2spewfoo.dsp -  diff --git a/package/spandsp/Makefile b/package/spandsp/Makefile deleted file mode 100644 index a54a2fb9e..000000000 --- a/package/spandsp/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include $(ADK_TOPDIR)/rules.mk - -PKG_NAME:=		spandsp -PKG_VERSION:=		7b0b8cf3d42b725405bcc63145de5e280265ce4e -PKG_GIT:=		hash -PKG_RELEASE:=		1 -PKG_DESCR:=		dsp library -PKG_SECTION:=		libs/misc -PKG_BUILDDEP:=		libtiff -PKG_DEPENDS:=		libtiff -PKG_SITES:=		https://github.com/freeswitch/spandsp.git -PKG_OPTS:=		dev - -include $(ADK_TOPDIR)/mk/package.mk - -$(eval $(call PKG_template,SPANDSP,spandsp,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) - -AUTOTOOL_STYLE:=	autogen -CONFIGURE_ENV+=		ac_cv_func_realloc_0_nonnull=yes -CONFIGURE_ENV+=		ac_cv_func_malloc_0_nonnull=yes - -spandsp-install: -	$(INSTALL_DIR) $(IDIR_SPANDSP)/usr/lib -	$(CP) $(WRKINST)/usr/lib/libspandsp*.so* \ -		$(IDIR_SPANDSP)/usr/lib - -include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/spdlog/Makefile b/package/spdlog/Makefile index 3d96eecb9..ba38c8468 100644 --- a/package/spdlog/Makefile +++ b/package/spdlog/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		spdlog -PKG_VERSION:=		1.9.2 +PKG_VERSION:=		1.15.3  PKG_RELEASE:=		1 -PKG_HASH:=		6fff9215f5cb81760be4cc16d033526d1080427d236e86d70bb02994f85e3d38 +PKG_HASH:=		15a04e69c222eb6c01094b5c7ff8a249b36bb22788d72519646fb85feb267e67  PKG_DESCR:=		very fast, header-only/compiled, C++ logging library  PKG_BUILDDEP:=		fmt  PKG_SECTION:=		libs/misc diff --git a/package/squashfs/Makefile b/package/squashfs-tools/Makefile index 77cc880ac..c839e5dde 100644 --- a/package/squashfs/Makefile +++ b/package/squashfs-tools/Makefile @@ -3,33 +3,32 @@  include $(ADK_TOPDIR)/rules.mk -PKG_NAME:=		squashfs -PKG_VERSION:=		4.2 +PKG_NAME:=		squashfs-tools +PKG_VERSION:=		4.6.1  PKG_RELEASE:=		1 -PKG_HASH:=		d9e0195aa922dbb665ed322b9aaa96e04a476ee650f39bbeadb0d00b24022e96 +PKG_HASH:=		e847913868349b6336dc73e30ae888010d03485a158188747ff010c13f051440  PKG_DESCR:=		squashfs filesystem utilities  PKG_SECTION:=		sys/fs -HOST_BUILDDEP:=		xz-host -PKG_SITES:=		${MASTER_SITE_SOURCEFORGE:=squashfs/} +PKG_SITES:=		https://github.com/plougher/squashfs-tools/archive/refs/tags/ -DISTFILES:=		${PKG_NAME}${PKG_VERSION}.tar.gz -WRKDIST=		${WRKDIR}/$(PKG_NAME)${PKG_VERSION} +DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz +WRKDIST=		${WRKDIR}/$(PKG_NAME)-$(PKG_NAME)-${PKG_VERSION}  PKG_CFLINE_SQUASHFS:=	depends on ADK_HOST_ONLY  include $(ADK_TOPDIR)/mk/host.mk  include $(ADK_TOPDIR)/mk/package.mk -$(eval $(call HOST_template,SQUASHFS,squashfs,$(PKG_VERSION)-${PKG_RELEASE})) +$(eval $(call HOST_template,SQUASHFS-TOOLS,squashfs-tools,$(PKG_VERSION)-${PKG_RELEASE}))  HOST_STYLE:=		manual -HOST_MAKE_FLAGS+=	LZMA_SUPPORT=0 XATTR_SUPPORT=0 XZ_SUPPORT=1 EXTRA_LDFLAGS=$(LDFLAGS_FOR_BUILD) +HOST_MAKE_FLAGS+=	LZMA_SUPPORT=0 XATTR_SUPPORT=0 XZ_SUPPORT=0 EXTRA_LDFLAGS=$(LDFLAGS_FOR_BUILD)  host-build:  	(cd ${WRKBUILD}/squashfs-tools && env ${HOST_MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \  		${HOST_MAKE_FLAGS} ${HOST_ALL_TARGET}) -squashfs-hostinstall: +squashfs-tools-hostinstall:  	${INSTALL_DIR} ${STAGING_HOST_DIR}/usr/bin  	${INSTALL_BIN} ${WRKBUILD}/squashfs-tools/mksquashfs \  		${STAGING_HOST_DIR}/usr/bin diff --git a/package/squashfs/patches/patch-squashfs-tools_Makefile b/package/squashfs/patches/patch-squashfs-tools_Makefile deleted file mode 100644 index cc764141f..000000000 --- a/package/squashfs/patches/patch-squashfs-tools_Makefile +++ /dev/null @@ -1,11 +0,0 @@ ---- squashfs4.2.orig/squashfs-tools/Makefile	2011-02-28 21:04:15.000000000 +0100 -+++ squashfs4.2/squashfs-tools/Makefile	2014-03-29 15:02:11.000000000 +0100 -@@ -93,7 +93,7 @@ XATTR_DEFAULT = 1 - #        End of BUILD options section         # - ############################################### -  --INCLUDEDIR = -I. -+INCLUDEDIR = -I. $(CPPFLAGS_FOR_BUILD) - INSTALL_DIR = /usr/local/bin -  - MKSQUASHFS_OBJS = mksquashfs.o read_fs.o sort.o swap.o pseudo.o compressor.o diff --git a/package/squashfs/patches/patch-squashfs-tools_mksquashfs_c b/package/squashfs/patches/patch-squashfs-tools_mksquashfs_c deleted file mode 100644 index 877894c6c..000000000 --- a/package/squashfs/patches/patch-squashfs-tools_mksquashfs_c +++ /dev/null @@ -1,47 +0,0 @@ ---- squashfs4.2.orig/squashfs-tools/mksquashfs.c	2011-02-28 23:24:09.000000000 +0100 -+++ squashfs4.2/squashfs-tools/mksquashfs.c	2014-03-29 15:02:16.000000000 +0100 -@@ -60,6 +60,10 @@ - #include <sys/sysinfo.h> - #endif -  -+#ifndef FNM_EXTMATCH  -+#define FNM_EXTMATCH 0  -+#endif  -+ - #ifdef SQUASHFS_TRACE - #define TRACE(s, args...) \ - 		do { \ -@@ -721,13 +725,13 @@ void cache_block_put(struct file_buffer - 			+ (((char *)A) - data_cache))) -  -  --inline void inc_progress_bar() -+static inline void inc_progress_bar() - { - 	cur_uncompressed ++; - } -  -  --inline void update_progress_bar() -+static inline void update_progress_bar() - { - 	pthread_mutex_lock(&progress_mutex); - 	pthread_cond_signal(&progress_wait); -@@ -735,7 +739,7 @@ inline void update_progress_bar() - } -  -  --inline void waitforthread(int i) -+static inline void waitforthread(int i) - { - 	TRACE("Waiting for thread %d\n", i); - 	while(thread[i] != 0) -@@ -3340,7 +3344,7 @@ struct inode_info *lookup_inode(struct s - } -  -  --inline void add_dir_entry(char *name, char *pathname, struct dir_info *sub_dir, -+static inline void add_dir_entry(char *name, char *pathname, struct dir_info *sub_dir, - 	struct inode_info *inode_info, struct dir_info *dir) - { - 	if((dir->count % DIR_ENTRIES) == 0) { diff --git a/package/squashfs/patches/patch-squashfs-tools_unsquashfs_c b/package/squashfs/patches/patch-squashfs-tools_unsquashfs_c deleted file mode 100644 index d57b184de..000000000 --- a/package/squashfs/patches/patch-squashfs-tools_unsquashfs_c +++ /dev/null @@ -1,39 +0,0 @@ ---- squashfs4.2.orig/squashfs-tools/unsquashfs.c	2011-02-28 23:27:06.000000000 +0100 -+++ squashfs4.2/squashfs-tools/unsquashfs.c	2014-03-29 15:02:16.000000000 +0100 -@@ -29,7 +29,13 @@ - #include "compressor.h" - #include "xattr.h" -  -+#ifndef FNM_EXTMATCH  -+#define FNM_EXTMATCH 0  -+#endif  -+ -+#ifdef __linux__ - #include <sys/sysinfo.h> -+#endif - #include <sys/types.h> -  - struct cache *fragment_cache, *data_cache; -@@ -1810,7 +1816,7 @@ void initialise_threads(int fragment_buf - 			"\n"); -  - 	if(processors == -1) { --#ifndef linux -+#if 0 - 		int mib[2]; - 		size_t len = sizeof(processors); -  -@@ -1821,11 +1827,13 @@ void initialise_threads(int fragment_buf - 		mib[1] = HW_NCPU; - #endif -  -+#ifdef __linux__ - 		if(sysctl(mib, 2, &processors, &len, NULL, 0) == -1) { - 			ERROR("Failed to get number of available processors.  " - 				"Defaulting to 1\n"); - 			processors = 1; - 		} -+#endif - #else - 		processors = sysconf(_SC_NPROCESSORS_ONLN); - #endif diff --git a/package/strace/Makefile b/package/strace/Makefile index f32f720af..11360944a 100644 --- a/package/strace/Makefile +++ b/package/strace/Makefile @@ -4,9 +4,9 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		strace -PKG_VERSION:=		6.13 +PKG_VERSION:=		6.16  PKG_RELEASE:=		1 -PKG_HASH:=		e209daf0ee038ca5adcc4c277e9273b4d51f46a2ff86da575d36742ac3508a17 +PKG_HASH:=		3d7aee7e4f044b2f67f3d51a8a76eda18076e9fb2774de54ac351d777d4ebffa  PKG_DESCR:=		system call trace program  PKG_SECTION:=		app/debug  PKG_URL:=		https://strace.io @@ -18,11 +18,7 @@ include ${ADK_TOPDIR}/mk/package.mk  $(eval $(call PKG_template,STRACE,strace,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) -ifeq ($(OS_FOR_BUILD),Darwin) -XAKE_FLAGS+=		CPPFLAGS_FOR_BUILD="-I$(STAGING_TARGET_DIR)/usr/include -I$(LINUX_DIR)/include/uapi -I$(LINUX_DIR)/arch/$(ADK_TARGET_ARCH)/include/generated" -else  XAKE_FLAGS+=		CPPFLAGS_FOR_BUILD="-I$(LINUX_DIR)/include/uapi -I$(LINUX_DIR)/arch/$(ADK_TARGET_ARCH)/include/generated" -endif  ifeq ($(ADK_TARGET_LIB_MUSL),y)  TARGET_CPPFLAGS+=	-DMSG_EXCEPT=020000 -D_LARGEFILE64_SOURCE=1 diff --git a/package/stress-ng/Makefile b/package/stress-ng/Makefile index d9758801c..607cb922c 100644 --- a/package/stress-ng/Makefile +++ b/package/stress-ng/Makefile @@ -4,16 +4,14 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		stress-ng -PKG_VERSION:=		0.07.29 +PKG_VERSION:=		0.18.12  PKG_RELEASE:=		1 -PKG_HASH:=		71a9555d1d9ee0a4a9bca9ee14294289ee77e998a951c7071df6cc8e153d8410 -PKG_DESCR:=		stress-ng will stress test a computer system in various selectable ways +PKG_HASH:=		20401a5a52a3b3b5d84fbdd561e4daf1076b0368a1ccbbbc8d41af2be6ea6f34 +PKG_DESCR:=		stress test a computer system in various selectable ways  PKG_SECTION:=		sys/utils -PKG_SITES:=		http://kernel.ubuntu.com/~cking/tarballs/stress-ng/ +PKG_SITES:=		https://github.com/ColinIanKing/stress-ng/archive/refs/tags/ -DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz - -PKG_CFLINE_STRESS_NG:=	depends on ADK_BROKEN +DISTFILES:=		V${PKG_VERSION}.tar.gz  include ${ADK_TOPDIR}/mk/package.mk @@ -22,12 +20,12 @@ $(eval $(call PKG_template,STRESS_NG,stress-ng,${PKG_VERSION}-${PKG_RELEASE},${P  CONFIG_STYLE:=		manual  BUILD_STYLE:=		manual +do-build: +	PATH='$(HOST_PATH)' $(MAKE) ${BB_MAKE_FLAGS} -C ${WRKBUILD} stress-ng +  stress-ng-install:  	${INSTALL_DIR} ${IDIR_STRESS_NG}/usr/bin/  	${INSTALL_BIN} ${WRKINST}/usr/bin/stress-ng ${IDIR_STRESS_NG}/usr/bin/ -do-build: -	PATH='$(HOST_PATH)' $(MAKE) ${BB_MAKE_FLAGS} -C ${WRKBUILD} stress-ng -  include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/stress-ng/patches/patch-Makefile b/package/stress-ng/patches/patch-Makefile new file mode 100644 index 000000000..2548f682c --- /dev/null +++ b/package/stress-ng/patches/patch-Makefile @@ -0,0 +1,25 @@ +--- stress-ng-0.18.12.orig/Makefile	2025-03-30 14:58:32.000000000 +0200 ++++ stress-ng-0.18.12/Makefile	2025-04-24 12:52:34.277715554 +0200 +@@ -127,22 +127,6 @@ SANITIZE_FLAGS := \ + override CFLAGS += $(foreach flag,$(SANITIZE_FLAGS),$(cc_supports_flag)) + endif +  +-# +-# Test for hardening flags and apply them if applicable +-# +-MACHINE := $(shell make -f Makefile.machine) +-ifneq ($(PRESERVE_CFLAGS),1) +-ifneq ($(MACHINE),$(filter $(MACHINE),alpha hppa ia64)) +-flag = -Wformat -fstack-protector-strong -Werror=format-security +-# +-# add -D_FORTIFY_SOURCE=2 if _FORTIFY_SOURCE is not already defined +-# +-ifeq ($(shell echo _FORTIFY_SOURCE | $(CC) $(CFLAGS) -E -xc - | tail -1),_FORTIFY_SOURCE) +-flag += -D_FORTIFY_SOURCE=2 +-endif +-override CFLAGS += $(cc_supports_flag) +-endif +-endif +  + # + # Optimization flags diff --git a/package/syslog-ng/Makefile b/package/syslog-ng/Makefile index b2ce09edf..d8cb5e86d 100644 --- a/package/syslog-ng/Makefile +++ b/package/syslog-ng/Makefile @@ -4,16 +4,16 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		syslog-ng -PKG_VERSION:=		4.6.0 +PKG_VERSION:=		4.8.1  PKG_RELEASE:=		1 -PKG_HASH:=		a5f8b089887767b5e87f523562fc3c6d5ef4dd320fc9b1f44953cb2d6bd50026 +PKG_HASH:=		f54acc615215d8efac2955c3d0bfa040b61e39f19f18bd05fa933f587a863d40  PKG_DESCR:=		powerful syslog daemon  PKG_SECTION:=		sys/misc -PKG_BUILDDEP:=		cmake-host glib ivykis libressl json-c libnet  -PKG_BUILDDEP+=		pcre flex -PKG_DEPENDS:=		glib ivykis libressl json-c libnet -PKG_URL:=		http://www.balabit.com/ -PKG_SITES:=		https://github.com/balabit/syslog-ng/archive/ +PKG_BUILDDEP:=		cmake-host glib ivykis openssl json-c libnet  +PKG_BUILDDEP+=		pcre2 flex-host +PKG_DEPENDS:=		glib ivykis libopenssl json-c libnet +PKG_SITES:=		https://github.com/syslog-ng/syslog-ng/archive/refs/tags/ +PKG_NEEDS:=		iconv  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  WRKDIST=		${WRKDIR}/$(PKG_NAME)-$(PKG_NAME)-$(PKG_VERSION) @@ -36,6 +36,9 @@ CMAKE_FLAGS+=		-DSYSLOG_NG_ENABLE_SYSTEMD=OFF \  syslog-ng-install:  	${INSTALL_DIR} ${IDIR_SYSLOG_NG}/usr/sbin \  		${IDIR_SYSLOG_NG}/etc/syslog-ng +	${INSTALL_DIR} ${IDIR_SYSLOG_NG}/usr/lib +	${CP} ${WRKINST}/usr/lib/lib*.so* \ +		${IDIR_SYSLOG_NG}/usr/lib/  	${INSTALL_BIN} ${WRKINST}/usr/sbin/syslog-ng \  		${IDIR_SYSLOG_NG}/usr/sbin/  	${INSTALL_DATA} ./files/syslog-ng.conf \ diff --git a/package/taglib/Makefile b/package/taglib/Makefile index 9297caf75..1a1edec98 100644 --- a/package/taglib/Makefile +++ b/package/taglib/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		taglib -PKG_VERSION:=		1.13.1 +PKG_VERSION:=		2.1.1  PKG_RELEASE:=		1 -PKG_HASH:=		c8da2b10f1bfec2cd7dbfcd33f4a2338db0765d851a50583d410bacf055cfd0b +PKG_HASH:=		3716d31f7c83cbf17b67c8cf44dd82b2a2f17e6780472287a16823e70305ddba  PKG_DESCR:=		audio meta-data library  PKG_SECTION:=		libs/audio  PKG_DEPENDS:=		zlib diff --git a/package/talloc/Makefile b/package/talloc/Makefile index a296a7306..0b6c76b78 100644 --- a/package/talloc/Makefile +++ b/package/talloc/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		talloc -PKG_VERSION:=		2.4.2 +PKG_VERSION:=		2.4.3  PKG_RELEASE:=		1 -PKG_HASH:=		85ecf9e465e20f98f9950a52e9a411e14320bc555fa257d87697b7e7a9b1d8a6 +PKG_HASH:=		dc46c40b9f46bb34dd97fe41f548b0e8b247b77a918576733c528e83abd854dd  PKG_DESCR:=		memory allocation library  PKG_SECTION:=		libs/misc  PKG_BUILDDEP:=		python3-host python3 diff --git a/package/talloc/patches/patch-wscript b/package/talloc/patches/patch-wscript new file mode 100644 index 000000000..a1d880ed9 --- /dev/null +++ b/package/talloc/patches/patch-wscript @@ -0,0 +1,12 @@ +--- talloc-2.4.3.orig/wscript	2025-02-06 13:36:55.107552800 +0100 ++++ talloc-2.4.3/wscript	2025-04-09 16:37:03.721515766 +0200 +@@ -122,8 +122,7 @@ def build(bld): +                           public_headers=('' if private_library else 'talloc.h'), +                           pc_files='talloc.pc', +                           public_headers_install=not private_library, +-                          private_library=private_library, +-                          manpages='man/talloc.3') ++                          private_library=private_library) +  +     if not bld.CONFIG_SET('USING_SYSTEM_PYTALLOC_UTIL'): +         name = bld.pyembed_libname('pytalloc-util') diff --git a/package/tinyx/Makefile b/package/tinyx/Makefile new file mode 100644 index 000000000..17f79a2df --- /dev/null +++ b/package/tinyx/Makefile @@ -0,0 +1,39 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		tinyx +PKG_VERSION:=		git +PKG_RELEASE:=		1 +PKG_HASH:=		db206aeef89104e1bd4cab40508eb1160f8a6bc69848eaf16cbc35eda1c62864 +PKG_DESCR:=		tiny x server +PKG_SECTION:=		x11/drivers +PKG_DEPENDS:=		libxcvt libfontenc xkeyboard-config xkbcomp libxau libxaw +PKG_DEPENDS+=		libxmu libxpm libxrender libxt libxxf86dga libxext +PKG_DEPENDS+=		libxdmcp libxv libsm libice libx11 libxcb libdrm libxtst +PKG_DEPENDS+=		libxshmfence libfreetype libfontenc libxfont +PKG_BUILDDEP:=		libX11 randrproto renderproto fixesproto damageproto +PKG_BUILDDEP+=		scrnsaverproto resourceproto fontsproto videoproto +PKG_BUILDDEP+=		compositeproto evieext xf86dgaproto recordproto dri3proto +PKG_BUILDDEP+=		xineramaproto presentproto xf86driproto glproto libXtst +PKG_BUILDDEP+=		xorgproto libxcvt font-util-host libXfont +PKG_NEEDS:=		threads c++ +PKG_SITES:=		https://github.com/tinycorelinux/tinyx.git + +DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tar.gz + +PKG_CFLINE_TINYX:=depends on ADK_TARGET_WITH_VGA || ADK_TARGET_QEMU_WITH_GRAPHIC + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,TINYX,tinyx,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) + +AUTOTOOL_STYLE:=	autoreconf +CONFIGURE_ARGS+=	--with-fontdir=/usr/share/fonts/X11 + +tinyx-install: +	$(INSTALL_DIR) $(IDIR_TINYX)/usr/bin +	${CP} ${WRKINST}/usr/bin/Xfbdev $(IDIR_TINYX)/usr/bin + +include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/toolbox/src/lib/fgetln.h b/package/toolbox/src/lib/fgetln.h new file mode 100644 index 000000000..ae655c23d --- /dev/null +++ b/package/toolbox/src/lib/fgetln.h @@ -0,0 +1 @@ +char *fgetln(FILE *, size_t *); diff --git a/package/toolbox/src/sed/main.c b/package/toolbox/src/sed/main.c index afa10d4df..1d9e3ebaa 100644 --- a/package/toolbox/src/sed/main.c +++ b/package/toolbox/src/sed/main.c @@ -53,6 +53,7 @@  #include "defs.h"  #include "extern.h" +#include "fgetln.h"  __RCSID("$MirOS: src/usr.bin/sed/main.c,v 1.3 2017/11/20 01:23:57 tg Exp $"); diff --git a/package/tor/Makefile b/package/tor/Makefile index fc690de3d..39735dcd5 100644 --- a/package/tor/Makefile +++ b/package/tor/Makefile @@ -4,13 +4,13 @@  include ${ADK_TOPDIR}/rules.mk  PKG_NAME:=		tor -PKG_VERSION:=		0.4.8.10 +PKG_VERSION:=		0.4.8.16  PKG_RELEASE:=		1 -PKG_HASH:=		e628b4fab70edb4727715b23cf2931375a9f7685ac08f2c59ea498a178463a86 +PKG_HASH:=		6540dd377a120fb8e7d27530aa3b7ff72a0fa5b4f670fe1d64c987c1cfd390cb  PKG_DESCR:=		anonymous internet communication system  PKG_SECTION:=		net/proxy -PKG_DEPENDS:=		libevent zlib libressl -PKG_BUILDDEP:=		libevent zlib libressl +PKG_DEPENDS:=		libevent zlib libopenssl +PKG_BUILDDEP:=		libevent zlib openssl  PKG_NEEDS:=		threads  PKG_URL:=		https://www.torproject.org/  PKG_SITES:=		https://www.torproject.org/dist/ diff --git a/package/toybox/Makefile b/package/toybox/Makefile index c32c3aac5..9c54468eb 100644 --- a/package/toybox/Makefile +++ b/package/toybox/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		toybox -PKG_VERSION:=		0.8.3 +PKG_VERSION:=		0.8.12  PKG_RELEASE:=		1 -PKG_HASH:=		eab28fd29d19d4e61ef09704e5871940e6f35fd35a3bb1285e41f204504b5c01 +PKG_HASH:=		ad88a921133ae2231d9f2df875ec0bd42af4429145caea7d7db9e02208a6fd2e  PKG_DESCR:=		linux tools collection  PKG_SECTION:=		base/apps  PKG_URL:=		http://landley.net/toybox/ @@ -24,9 +24,16 @@ XAKE_FLAGS+=		CC="gcc" V=1 PREFIX="$(WRKINST)"  do-configure:  	-rm $(WRKBUILD)/toys/other/swap*.c -	cd $(WRKBUILD); CC="gcc" PATH='$(HOST_PATH)' $(MAKE) defconfig +	-rm $(WRKBUILD)/toys/other/gpiod.c +	-rm $(WRKBUILD)/toys/other/lsattr.c +	-rm $(WRKBUILD)/toys/other/nsenter.c +	-rm $(WRKBUILD)/toys/posix/getconf.c +	-rm $(WRKBUILD)/toys/posix/iconv.c +	cp ./files/config $(WRKBUILD)/.config  toybox-install:  	$(CP) $(WRKINST)/* $(IDIR_TOYBOX)/ +	$(INSTALL_DIR) $(IDIR_TOYBOX)/etc +	$(CP) ./files/inittab $(IDIR_TOYBOX)/etc  include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/toybox/files/config b/package/toybox/files/config new file mode 100644 index 000000000..5a14b8dd2 --- /dev/null +++ b/package/toybox/files/config @@ -0,0 +1,393 @@ +# +# Automatically generated make config: don't edit +# ToyBox version: KCONFIG_VERSION +# Tue Apr  8 13:12:22 2025 +# +# CONFIG_TOYBOX_ON_ANDROID is not set +# CONFIG_TOYBOX_FORK is not set + +# +# Posix commands +# +CONFIG_BASENAME=y +# CONFIG_CAL is not set +CONFIG_CAT=y +CONFIG_CHGRP=y +CONFIG_CHOWN=y +CONFIG_CHMOD=y +# CONFIG_CKSUM is not set +# CONFIG_CRC32 is not set +# CONFIG_CMP is not set +# CONFIG_COMM is not set +CONFIG_CP=y +CONFIG_MV=y +# CONFIG_INSTALL is not set +# CONFIG_CPIO is not set +# CONFIG_CUT is not set +CONFIG_DATE=y +CONFIG_DD=y +CONFIG_DF=y +# CONFIG_DIRNAME is not set +CONFIG_DU=y +CONFIG_ECHO=y +CONFIG_ENV=y +# CONFIG_EXPAND is not set +# CONFIG_FALSE is not set +# CONFIG_FILE is not set +# CONFIG_FIND is not set +# CONFIG_FOLD is not set +# CONFIG_GETCONF is not set +# CONFIG_GREP is not set +# CONFIG_EGREP is not set +# CONFIG_FGREP is not set +# CONFIG_HEAD is not set +# CONFIG_ICONV is not set +# CONFIG_ID is not set +# CONFIG_ID_Z is not set +# CONFIG_GROUPS is not set +# CONFIG_LOGNAME is not set +# CONFIG_WHOAMI is not set +CONFIG_KILL=y +# CONFIG_KILLALL5 is not set +# CONFIG_LINK is not set +CONFIG_LN=y +# CONFIG_LOGGER is not set +CONFIG_LS=y +CONFIG_MKDIR=y +# CONFIG_MKDIR_Z is not set +# CONFIG_MKFIFO is not set +# CONFIG_MKFIFO_Z is not set +# CONFIG_NICE is not set +# CONFIG_NL is not set +# CONFIG_NOHUP is not set +# CONFIG_OD is not set +# CONFIG_PASTE is not set +# CONFIG_PATCH is not set +# CONFIG_PRINTF is not set +CONFIG_PS=y +CONFIG_TOP=y +# CONFIG_IOTOP is not set +# CONFIG_PGREP is not set +# CONFIG_PKILL is not set +CONFIG_PWD=y +# CONFIG_RENICE is not set +CONFIG_RM=y +CONFIG_RMDIR=y +# CONFIG_SED is not set +# CONFIG_SLEEP is not set +# CONFIG_SORT is not set +CONFIG_SORT_FLOAT=y +# CONFIG_SPLIT is not set +# CONFIG_STRINGS is not set +# CONFIG_TAIL is not set +# CONFIG_TAR is not set +# CONFIG_TEE is not set +# CONFIG_TEST is not set +CONFIG_TEST_GLUE=y +# CONFIG_TIME is not set +# CONFIG_TOUCH is not set +# CONFIG_TRUE is not set +# CONFIG_TSORT is not set +# CONFIG_TTY is not set +# CONFIG_ULIMIT is not set +# CONFIG_ARCH is not set +CONFIG_UNAME=y +# CONFIG_UNIQ is not set +# CONFIG_UNLINK is not set +# CONFIG_UUDECODE is not set +# CONFIG_UUENCODE is not set +# CONFIG_WC is not set +# CONFIG_WHO is not set +CONFIG_XARGS=y + +# +# Pending (unfinished) commands +# +# CONFIG_ARP is not set +# CONFIG_ARPING is not set +# CONFIG_AWK is not set +# CONFIG_BC is not set +# CONFIG_BOOTCHARTD is not set +# CONFIG_BRCTL is not set +# CONFIG_CHSH is not set +# CONFIG_CROND is not set +# CONFIG_CRONTAB is not set +# CONFIG_CSPLIT is not set +# CONFIG_DHCP is not set +# CONFIG_DHCP6 is not set +# CONFIG_DHCPD is not set +# CONFIG_DEBUG_DHCP is not set +# CONFIG_DIFF is not set +# CONFIG_DUMPLEASES is not set +# CONFIG_EXPR is not set +# CONFIG_FDISK is not set +# CONFIG_FSCK is not set +# CONFIG_GETFATTR is not set +CONFIG_GETTY=y +# CONFIG_GITCOMPAT is not set +# CONFIG_GITCLONE is not set +# CONFIG_GITINIT is not set +# CONFIG_GITREMOTE is not set +# CONFIG_GITFETCH is not set +# CONFIG_GITCHECKOUT is not set +# CONFIG_GROUPADD is not set +# CONFIG_GROUPDEL is not set +# CONFIG_HEXDUMP is not set +# CONFIG_HD is not set +# CONFIG_INIT is not set +# CONFIG_IP is not set +# CONFIG_IPCRM is not set +# CONFIG_IPCS is not set +# CONFIG_KLOGD is not set +# CONFIG_LAST is not set +# CONFIG_LSOF is not set +# CONFIG_MAN is not set +# CONFIG_MDEV is not set +# CONFIG_MDEV_CONF is not set +# CONFIG_MODPROBE is not set +# CONFIG_MORE is not set +# CONFIG_ROUTE is not set +CONFIG_SH=y +# CONFIG_BREAK is not set +# CONFIG_CD is not set +# CONFIG_CONTINUE is not set +# CONFIG_DECLARE is not set +# CONFIG_EXIT is not set +# CONFIG_SET is not set +# CONFIG_UNSET is not set +# CONFIG_EVAL is not set +# CONFIG_EXEC is not set +# CONFIG_EXPORT is not set +# CONFIG_JOBS is not set +# CONFIG_LOCAL is not set +# CONFIG_RETURN is not set +# CONFIG_SHIFT is not set +# CONFIG_SOURCE is not set +# CONFIG_WAIT is not set +# CONFIG_STRACE is not set +# CONFIG_STTY is not set +# CONFIG_SULOGIN is not set +# CONFIG_SYSLOGD is not set +# CONFIG_TCPSVD is not set +# CONFIG_TELNET is not set +# CONFIG_TELNETD is not set +# CONFIG_TFTP is not set +# CONFIG_TFTPD is not set +# CONFIG_TR is not set +# CONFIG_TRACEROUTE is not set +# CONFIG_USERADD is not set +# CONFIG_USERDEL is not set +# CONFIG_VI is not set +# CONFIG_XZCAT is not set + +# +# Other commands +# +# CONFIG_ACPI is not set +# CONFIG_ASCII is not set +# CONFIG_UNICODE is not set +# CONFIG_BASE64 is not set +# CONFIG_BASE32 is not set +# CONFIG_BLKDISCARD is not set +# CONFIG_BLKID is not set +# CONFIG_FSTYPE is not set +# CONFIG_BLOCKDEV is not set +# CONFIG_BUNZIP2 is not set +# CONFIG_BZCAT is not set +# CONFIG_CHCON is not set +# CONFIG_CHROOT is not set +# CONFIG_CHRT is not set +CONFIG_CLEAR=y +# CONFIG_COUNT is not set +# CONFIG_DEVMEM is not set +# CONFIG_DOS2UNIX is not set +# CONFIG_UNIX2DOS is not set +# CONFIG_EJECT is not set +# CONFIG_FACTOR is not set +# CONFIG_FALLOCATE is not set +# CONFIG_FLOCK is not set +# CONFIG_FMT is not set +CONFIG_FREE=y +# CONFIG_FREERAMDISK is not set +# CONFIG_FSFREEZE is not set +# CONFIG_FSYNC is not set +# CONFIG_GETOPT is not set +# CONFIG_GPIODETECT is not set +# CONFIG_GPIOFIND is not set +# CONFIG_GPIOINFO is not set +# CONFIG_GPIOGET is not set +# CONFIG_GPIOSET is not set +# CONFIG_HELP is not set +# CONFIG_HEXEDIT is not set +# CONFIG_HWCLOCK is not set +# CONFIG_I2CDETECT is not set +# CONFIG_I2CDUMP is not set +# CONFIG_I2CGET is not set +# CONFIG_I2CSET is not set +# CONFIG_I2CTRANSFER is not set +# CONFIG_INOTIFYD is not set +# CONFIG_INSMOD is not set +# CONFIG_IONICE is not set +# CONFIG_IORENICE is not set +# CONFIG_LINUX32 is not set +# CONFIG_LOGIN is not set +# CONFIG_LOSETUP is not set +# CONFIG_LSATTR is not set +# CONFIG_CHATTR is not set +# CONFIG_LSMOD is not set +# CONFIG_LSPCI is not set +# CONFIG_LSUSB is not set +# CONFIG_MAKEDEVS is not set +# CONFIG_MCOOKIE is not set +# CONFIG_MEMEATER is not set +# CONFIG_MIX is not set +# CONFIG_MKPASSWD is not set +# CONFIG_MKSWAP is not set +# CONFIG_MODINFO is not set +# CONFIG_MOUNTPOINT is not set +# CONFIG_NBD_CLIENT is not set +# CONFIG_NBD_SERVER is not set +# CONFIG_UNSHARE is not set +# CONFIG_NSENTER is not set +# CONFIG_ONEIT is not set +# CONFIG_OPENVT is not set +# CONFIG_CHVT is not set +# CONFIG_DEALLOCVT is not set +# CONFIG_PARTPROBE is not set +# CONFIG_PIVOT_ROOT is not set +# CONFIG_PMAP is not set +# CONFIG_PRINTENV is not set +# CONFIG_PWDX is not set +# CONFIG_PWGEN is not set +# CONFIG_READAHEAD is not set +# CONFIG_READELF is not set +# CONFIG_READLINK is not set +# CONFIG_REALPATH is not set +CONFIG_REBOOT=y +# CONFIG_RESET is not set +# CONFIG_REV is not set +# CONFIG_RMMOD is not set +# CONFIG_RTCWAKE is not set +# CONFIG_SETFATTR is not set +# CONFIG_SETSID is not set +# CONFIG_SHA3SUM is not set +# CONFIG_SHRED is not set +# CONFIG_SHUF is not set +CONFIG_STAT=y +# CONFIG_SWAPOFF is not set +# CONFIG_SWAPON is not set +# CONFIG_SWITCH_ROOT is not set +# CONFIG_SYSCTL is not set +# CONFIG_TAC is not set +# CONFIG_NPROC is not set +# CONFIG_TASKSET is not set +# CONFIG_TIMEOUT is not set +# CONFIG_TRUNCATE is not set +# CONFIG_TS is not set +# CONFIG_UCLAMPSET is not set +CONFIG_UPTIME=y +# CONFIG_USLEEP is not set +# CONFIG_UUIDGEN is not set +# CONFIG_VCONFIG is not set +# CONFIG_VMSTAT is not set +# CONFIG_W is not set +# CONFIG_WATCH is not set +# CONFIG_WATCHDOG is not set +# CONFIG_WHICH is not set +# CONFIG_XXD is not set +# CONFIG_YES is not set + +# +# Networking commands +# +# CONFIG_FTPGET is not set +# CONFIG_FTPPUT is not set +# CONFIG_HOST is not set +# CONFIG_HTTPD is not set +CONFIG_IFCONFIG=y +# CONFIG_MICROCOM is not set +# CONFIG_NETCAT is not set +CONFIG_NETSTAT=y +CONFIG_PING=y +# CONFIG_RFKILL is not set +# CONFIG_SNTP is not set +# CONFIG_TUNCTL is not set +# CONFIG_WGET is not set +# CONFIG_WGET_LIBTLS is not set + +# +# Linux Standard Base commands +# +CONFIG_DMESG=y +# CONFIG_GZIP is not set +# CONFIG_GUNZIP is not set +# CONFIG_ZCAT is not set +CONFIG_HOSTNAME=y +# CONFIG_DNSDOMAINNAME is not set +# CONFIG_KILLALL is not set +# CONFIG_MD5SUM is not set +# CONFIG_SHA1SUM is not set +# CONFIG_SHA224SUM is not set +# CONFIG_SHA256SUM is not set +# CONFIG_SHA384SUM is not set +# CONFIG_SHA512SUM is not set +# CONFIG_MKNOD is not set +# CONFIG_MKNOD_Z is not set +# CONFIG_MKTEMP is not set +CONFIG_MOUNT=y +# CONFIG_PASSWD is not set +# CONFIG_PASSWD_SAD is not set +# CONFIG_PIDOF is not set +# CONFIG_SEQ is not set +# CONFIG_SU is not set +CONFIG_SYNC=y +CONFIG_UMOUNT=y + +# +# Example commands +# +# CONFIG_DEMO_MANY_OPTIONS is not set +# CONFIG_DEMO_NUMBER is not set +# CONFIG_DEMO_SCANKEY is not set +# CONFIG_DEMO_UTF8TOWC is not set +# CONFIG_HELLO is not set +# CONFIG_HOSTID is not set +# CONFIG_LOGPATH is not set +# CONFIG_SKELETON is not set +# CONFIG_SKELETON_ALIAS is not set + +# +# Android commands +# +# CONFIG_GETENFORCE is not set +# CONFIG_LOAD_POLICY is not set +# CONFIG_LOG is not set +# CONFIG_RESTORECON is not set +# CONFIG_RUNCON is not set +# CONFIG_SENDEVENT is not set +# CONFIG_SETENFORCE is not set + +# +#  +# + +# +# Toybox global settings +# +CONFIG_TOYBOX=y +CONFIG_TOYBOX_SUID=y +CONFIG_TOYBOX_LSM_NONE=y +# CONFIG_TOYBOX_SELINUX is not set +# CONFIG_TOYBOX_SMACK is not set +# CONFIG_TOYBOX_LIBCRYPTO is not set +# CONFIG_TOYBOX_LIBZ is not set +CONFIG_TOYBOX_FLOAT=y +CONFIG_TOYBOX_HELP=y +CONFIG_TOYBOX_HELP_DASHDASH=y +CONFIG_TOYBOX_ZHELP=y +# CONFIG_TOYBOX_FREE is not set +# CONFIG_TOYBOX_NORECURSE is not set +# CONFIG_TOYBOX_DEBUG is not set +CONFIG_TOYBOX_UID_SYS=100 +CONFIG_TOYBOX_UID_USR=500 +CONFIG_TOYBOX_FORCE_NOMMU=y diff --git a/package/toybox/files/inittab b/package/toybox/files/inittab new file mode 100644 index 000000000..6372bd6c0 --- /dev/null +++ b/package/toybox/files/inittab @@ -0,0 +1 @@ +/dev/ttySC2::askfirst:-/bin/sh diff --git a/package/toybox/patches/patch-main_c b/package/toybox/patches/patch-main_c new file mode 100644 index 000000000..e3e978763 --- /dev/null +++ b/package/toybox/patches/patch-main_c @@ -0,0 +1,16 @@ +--- toybox-0.8.12.orig/main.c	2025-01-18 21:20:33.000000000 +0100 ++++ toybox-0.8.12/main.c	2025-04-07 09:40:53.646935573 +0200 +@@ -179,13 +179,6 @@ void toy_singleinit(struct toy_list *whi +     toys.old_umask = umask(0); +     if (!(which->flags & TOYFLAG_UMASK)) umask(toys.old_umask); +  +-    // Try user's locale, but if that isn't UTF-8 merge in a UTF-8 locale's +-    // character type data. (Fall back to en_US for MacOS.) +-    setlocale(LC_CTYPE, ""); +-    if (strcmp("UTF-8", nl_langinfo(CODESET))) +-      uselocale(newlocale(LC_CTYPE_MASK, "C.UTF-8", 0) ? : +-        newlocale(LC_CTYPE_MASK, "en_US.UTF-8", 0)); +- +     if (which->flags & TOYFLAG_LINEBUF) btype = _IOLBF; +     else if (which->flags & TOYFLAG_NOBUF) btype = _IONBF; +     else buf = xmalloc(4096); diff --git a/package/toybox/patches/patch-toys_pending_init_c b/package/toybox/patches/patch-toys_pending_init_c new file mode 100644 index 000000000..3a69442ed --- /dev/null +++ b/package/toybox/patches/patch-toys_pending_init_c @@ -0,0 +1,12 @@ +--- toybox-0.8.12.orig/toys/pending/init.c	2025-01-18 21:20:33.000000000 +0100 ++++ toybox-0.8.12/toys/pending/init.c	2025-04-07 15:31:14.276281021 +0200 +@@ -246,8 +246,7 @@ static pid_t final_run(struct action_lis +  +   sigfillset(&signal_set); +   sigprocmask(SIG_BLOCK, &signal_set, NULL); +-  if (x->action & ASKFIRST) pid = fork(); +-  else pid = vfork(); ++  pid = vfork(); +  +   if (pid > 0) { +     //parent process or error diff --git a/package/toybox/patches/patch-toys_pending_sh_c b/package/toybox/patches/patch-toys_pending_sh_c new file mode 100644 index 000000000..37a7a3338 --- /dev/null +++ b/package/toybox/patches/patch-toys_pending_sh_c @@ -0,0 +1,29 @@ +--- toybox-0.8.12.orig/toys/pending/sh.c	2025-01-18 21:20:33.000000000 +0100 ++++ toybox-0.8.12/toys/pending/sh.c	2025-04-07 16:43:09.861935892 +0200 +@@ -1398,18 +1398,6 @@ static int run_subshell(char *str, int l +   pid_t pid; + //dprintf(2, "%d run_subshell %.*s\n", getpid(), len, str); debug_show_fds(); +   // The with-mmu path is significantly faster. +-  if (CFG_TOYBOX_FORK) { +-    if ((pid = fork())<0) perror_msg("fork"); +-    else if (!pid) { +-      call_function()->pp = (void *)1; +-      if (str) { +-        TT.ff->source = fmemopen(str, len, "r"); +-        longjmp(TT.forkchild, 1); +-      } +-    } +- +-  // On nommu vfork, exec /proc/self/exe, and pipe state data to ourselves. +-  } else { +     int pipes[2]; +     unsigned i; +     char **oldenv = environ, *ss = str ? : pl2str(TT.ff->pl->next, 0); +@@ -1446,7 +1434,6 @@ static int run_subshell(char *str, int l +     dprintf(pipes[1], "0 0\n%.*s\n", len, ss); +     if (!str) free(ss); +     close(pipes[1]); +-  } +  +   return pid; + } diff --git a/package/u-boot-avr32/Makefile b/package/u-boot-avr32/Makefile index 2886ddd3c..40f70681d 100644 --- a/package/u-boot-avr32/Makefile +++ b/package/u-boot-avr32/Makefile @@ -9,8 +9,8 @@ PKG_RELEASE:=		1  PKG_HASH:=		c8373949d7f0de1059e507b83a655d4cea539f75dc66ccdbb27adbd38d83095e  PKG_DESCR:=		portable bootloader  PKG_SECTION:=		base/boot -HOST_BUILDDEP:=		libressl-host dtc-host -PKG_BUILDDEP:=		u-boot-host +HOST_BUILDDEP:=		gnutls-host openssl-host dtc-host +PKG_BUILDDEP:=		u-boot-avr32-host  PKG_URL:=		http://www.denx.de/wiki/U-Boot	  PKG_SITES:=		ftp://ftp.denx.de/pub/u-boot/ @@ -54,39 +54,21 @@ do-build:  		PATH='$(HOST_PATH)' \  		CROSS_COMPILE='$(TARGET_CROSS)' \  		$(MAKE)) -ifneq ($(OS_FOR_BUILD),Darwin)  	(cd $(WRKBUILD) && env \  		PATH='$(HOST_PATH)' \  		CROSS_COMPILE='$(TARGET_CROSS)' \  		$(MAKE) env) -endif  u-boot-install:  	$(CP) $(WRKBUILD)/$(UBOOT) $(FW_DIR)  	$(INSTALL_DIR) $(IDIR_U_BOOT)/etc  	$(CP) ./files/fw_env.config $(IDIR_U_BOOT)/etc -ifneq ($(OS_FOR_BUILD),Darwin)  	$(INSTALL_DIR) $(IDIR_U_BOOT)/usr/bin  	$(INSTALL_BIN) $(WRKBUILD)/tools/env/fw_printenv \  		$(IDIR_U_BOOT)/usr/bin  	(cd $(IDIR_U_BOOT)/usr/bin && ln -sf fw_printenv fw_setenv)  	$(INSTALL_BIN) ./files/uboot_print_env $(IDIR_U_BOOT)/usr/bin  	$(INSTALL_BIN) ./files/uboot_set_env $(IDIR_U_BOOT)/usr/bin -endif -ifeq ($(ADK_TARGET_SYSTEM_BANANA_PRO),y) -	$(INSTALL_BIN) ./files/boot.script.bpi $(FW_DIR) -endif -ifeq ($(ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG),y) -	$(INSTALL_BIN) ./files/boot.script.clearfog $(FW_DIR) -endif -ifeq ($(ADK_TARGET_SYSTEM_SOLIDRUN_IMX6),y) -	$(INSTALL_BIN) $(WRKBUILD)/SPL $(FW_DIR) -	$(INSTALL_BIN) ./files/boot.script.imx6 $(FW_DIR) -endif -ifeq ($(ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK),y) -	$(CP) ./files/uEnv.txt.bbb $(FW_DIR)/uEnv.txt -	$(INSTALL_BIN) $(WRKBUILD)/MLO $(FW_DIR) -endif  include $(ADK_TOPDIR)/mk/host-bottom.mk  include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/u-boot-h8300/Makefile b/package/u-boot-h8300/Makefile index bfd0824df..e818a688e 100644 --- a/package/u-boot-h8300/Makefile +++ b/package/u-boot-h8300/Makefile @@ -3,24 +3,25 @@  include $(ADK_TOPDIR)/rules.mk -PKG_NAME:=		u-boot -# last working hash fa0e8426833edc1be3c2ea3acaf248157048a15a -PKG_VERSION:=		h8300 -PKG_GIT:=		branch +PKG_NAME:=		u-boot-h8300 +PKG_VERSION:=		0.1  PKG_RELEASE:=		1 +PKG_HASH:=		65461cc0cab37251e2487c0f5d4ae34c7ca89767bdf790b9a863800206b83539  PKG_DESCR:=		portable bootloader  PKG_SECTION:=		base/boot -HOST_BUILDDEP:=		libressl-host dtc-host +HOST_BUILDDEP:=		openssl-host dtc-host  PKG_BUILDDEP:=		u-boot-h8300-host -PKG_SITES:=		git://git.pf.osdn.jp/gitroot/y/ys/ysato/uboot.git +PKG_SITES:=		https://distfiles.openadk.org/  PKG_SYSTEM_DEPENDS:=	hitachi-edosk2674 +DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tar.gz +  include $(ADK_TOPDIR)/mk/host.mk  include $(ADK_TOPDIR)/mk/package.mk -$(eval $(call HOST_template,U_BOOT,u-boot,$(PKG_VERSION)-$(PKG_RELEASE))) -$(eval $(call PKG_template,U_BOOT,u-boot,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) +$(eval $(call HOST_template,U_BOOT_H8300,u-boot-h8300,$(PKG_VERSION)-$(PKG_RELEASE))) +$(eval $(call PKG_template,U_BOOT_8300,u-boot-h8300,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))  UBOOT:=			u-boot.bin @@ -37,7 +38,7 @@ host-build:  	(cd $(WRKBUILD) && env $(HOST_MAKE_ENV) $(MAKE) -f $(MAKE_FILE) \  		$(HOST_MAKE_FLAGS) tools $(MAKE_TRACE) ) -u-boot-hostinstall: +u-boot-h8300-hostinstall:  	$(INSTALL_BIN) $(WRKBUILD)/tools/mk{,env}image \  		$(STAGING_HOST_DIR)/usr/bin @@ -48,15 +49,13 @@ do-build:  	(cd $(WRKBUILD) && env \  		PATH='$(HOST_PATH)' \  		CROSS_COMPILE='$(TARGET_CROSS)' \ -		GCC_HONOUR_COPTS=s $(MAKE)) -ifneq ($(OS_FOR_BUILD),Darwin) +		$(MAKE))  	(cd $(WRKBUILD) && env \  		PATH='$(HOST_PATH)' \  		CROSS_COMPILE='$(TARGET_CROSS)' \ -		GCC_HONOUR_COPTS=s $(MAKE) env) -endif +		$(MAKE) env) -u-boot-install: +u-boot-h8300-install:  	$(CP) $(WRKBUILD)/$(UBOOT) $(FW_DIR)  	$(INSTALL_DIR) $(IDIR_U_BOOT)/etc  	$(CP) ./files/fw_env.config $(IDIR_U_BOOT)/etc diff --git a/package/u-boot/Makefile b/package/u-boot/Makefile index ba64d7356..65c430802 100644 --- a/package/u-boot/Makefile +++ b/package/u-boot/Makefile @@ -4,13 +4,13 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		u-boot -PKG_VERSION:=		2024.07 +PKG_VERSION:=		2025.04  PKG_RELEASE:=		1 -PKG_HASH:=		f591da9ab90ef3d6b3d173766d0ddff90c4ed7330680897486117df390d83c8f +PKG_HASH:=		439d3bef296effd54130be6a731c5b118be7fddd7fcc663ccbc5fb18294d8718  PKG_DESCR:=		portable bootloader  PKG_SECTION:=		base/boot -HOST_BUILDDEP:=		openssl-host dtc-host swig-host python3-host python-setuptools-host -PKG_BUILDDEP:=		python3-host python-setuptools-host swig-host u-boot-host +HOST_BUILDDEP:=		gnutls-host openssl-host dtc-host swig-host python3-host python3-setuptools-host +PKG_BUILDDEP:=		python3-host python3-setuptools-host swig-host u-boot-host  PKG_URL:=		http://www.denx.de/wiki/U-Boot	  PKG_SITES:=		ftp://ftp.denx.de/pub/u-boot/ @@ -39,6 +39,7 @@ UBOOT:=			u-boot.img  endif  ifeq ($(ADK_TARGET_SYSTEM_PCDUINO_3B),y)  CONFIG:=		Linksprite_pcDuino3_defconfig +UBOOT:=			u-boot-sunxi-with-spl.bin  endif  ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI),y)  CONFIG:=		rpi_defconfig @@ -91,6 +92,8 @@ CONFIG:=		starfive_visionfive2_defconfig  UBOOT:=			u-boot.itb  endif +MAKE_FLAGS+=		HOSTCFLAGS="-I$(STAGING_HOST_DIR)/usr/include" \ +			HOSTLDFLAGS="$(HOST_LDFLAGS)"  HOST_MAKE_FLAGS+=	HOSTCFLAGS="$(HOST_CPPFLAGS) $(HOST_CFLAGS)" \  			HOSTLDFLAGS="$(HOST_LDFLAGS) -ldl"  HOST_STYLE:=		manual @@ -104,9 +107,9 @@ endif  host-build:  	(cd $(WRKBUILD) && env $(HOST_MAKE_ENV) $(MAKE) -f $(MAKE_FILE) \ -		$(HOST_MAKE_FLAGS) sandbox_defconfig ) +		$(HOST_MAKE_FLAGS) tools-only_defconfig )  	(cd $(WRKBUILD) && env $(HOST_MAKE_ENV) $(MAKE) -f $(MAKE_FILE) \ -		$(HOST_MAKE_FLAGS) tools $(MAKE_TRACE) ) +		$(HOST_MAKE_FLAGS) tools-only $(MAKE_TRACE) )  u-boot-hostinstall:  	$(INSTALL_BIN) $(WRKBUILD)/tools/mk{,env}image \ diff --git a/package/u-boot/patches/patch-tools_Makefile b/package/u-boot/patches/patch-tools_Makefile deleted file mode 100644 index fc284ad58..000000000 --- a/package/u-boot/patches/patch-tools_Makefile +++ /dev/null @@ -1,11 +0,0 @@ ---- u-boot-2024.01.orig/tools/Makefile	2024-01-08 16:37:48.000000000 +0100 -+++ u-boot-2024.01/tools/Makefile	2024-01-17 17:56:21.004096375 +0100 -@@ -250,7 +250,7 @@ HOSTLDLIBS_mkeficapsule += \ - 	$(shell pkg-config --libs gnutls 2> /dev/null || echo "-lgnutls") - HOSTLDLIBS_mkeficapsule += \ - 	$(shell pkg-config --libs uuid 2> /dev/null || echo "-luuid") --hostprogs-$(CONFIG_TOOLS_MKEFICAPSULE) += mkeficapsule -+#hostprogs-$(CONFIG_TOOLS_MKEFICAPSULE) += mkeficapsule -  - mkfwumdata-objs := mkfwumdata.o generated/lib/crc32.o - HOSTLDLIBS_mkfwumdata += -luuid diff --git a/package/ulogd/Makefile b/package/ulogd/Makefile index d9fa07f5f..7af256546 100644 --- a/package/ulogd/Makefile +++ b/package/ulogd/Makefile @@ -33,8 +33,6 @@ PKGSB_ULOGD_MOD_PCAP:=		libpcap  PKGSS_ULOGD_MOD_PCAP:=		libpcap  PKGSN_ULOGD_MOD_PCAP:=		ulogd -PKG_HOST_DEPENDS:=	!cygwin -  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.bz2  include ${ADK_TOPDIR}/mk/package.mk diff --git a/package/unifdef/Makefile b/package/unifdef/Makefile new file mode 100644 index 000000000..64f8cbafc --- /dev/null +++ b/package/unifdef/Makefile @@ -0,0 +1,37 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		unifdef +PKG_VERSION:=		2.12 +PKG_RELEASE:=		1 +PKG_HASH:=		fba564a24db7b97ebe9329713ac970627b902e5e9e8b14e19e024eb6e278d10b +PKG_DESCR:=		build utility +PKG_SECTION:=		dev/tools +PKG_SITES:=		https://dotat.at/prog/unifdef/ + +DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz + +PKG_CFLINE_UNIFDEF:=	depends on ADK_HOST_ONLY + +include $(ADK_TOPDIR)/mk/host.mk +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call HOST_template,UNIFDEF,unifdef,$(PKG_VERSION)-${PKG_RELEASE})) + +HOST_STYLE:=		manual +HOST_FAKE_FLAGS+=	prefix=$(STAGING_HOST_DIR)/usr + +host-configure: + +host-build: +	(cd ${WRKBUILD} && env ${HOST_MAKE_ENV} ${MAKE} -j${ADK_MAKE_JOBS} -f ${MAKE_FILE} \ +		${HOST_MAKE_FLAGS} ${HOST_ALL_TARGET}) $(MAKE_TRACE) + +unifdef-hostinstall: +	cd ${WRKBUILD} && env ${HOST_MAKE_ENV} ${MAKE} -j${ADK_MAKE_JOBS} -f ${MAKE_FILE} \ +		${HOST_FAKE_FLAGS} ${HOST_INSTALL_TARGET} $(MAKE_TRACE) + +include ${ADK_TOPDIR}/mk/host-bottom.mk +include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/unifdef/patches/patch-Makefile b/package/unifdef/patches/patch-Makefile new file mode 100644 index 000000000..e83f0c0fd --- /dev/null +++ b/package/unifdef/patches/patch-Makefile @@ -0,0 +1,13 @@ +--- unifdef-2.12.orig/Makefile	2020-02-14 17:58:51.000000000 +0100 ++++ unifdef-2.12/Makefile	2025-03-30 19:25:30.876075366 +0200 +@@ -25,10 +25,6 @@ install: unifdef unifdefall.sh unifdef.1 + 	install -m 755 -d  ${bindest} + 	install -m 755 unifdef  ${bindest}/ + 	install -m 755 unifdefall.sh  ${bindest}/unifdefall +-	: manual +-	install -m 755 -d  ${man1dest} +-	install -m 644 unifdef.1  ${man1dest}/ +-	ln -s unifdef.1  ${man1dest}/unifdefall.1 +  + clean: + 	rm -f unifdef version.h diff --git a/package/upslug2/Makefile b/package/upslug2/Makefile new file mode 100644 index 000000000..203baed31 --- /dev/null +++ b/package/upslug2/Makefile @@ -0,0 +1,31 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		upslug2 +PKG_VERSION:=		5ce4239b8e6da802904b30aaa2ebcc7bc25d0200 +PKG_RELEASE:=		1 +PKG_HASH:=		af254788be98861f2bd9103fe6e60a774ec96a8c374744eef9197f6043075afa +PKG_DESCR:=		flash utility for Linksys NSLU2 +PKG_SECTION:=		dev/tools +PKG_SITES:=		https://github.com/nslu2-linux/UpSlug2.git + +DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz + +PKG_CFLINE_UPSLUG2:=	depends on ADK_HOST_ONLY + +include $(ADK_TOPDIR)/mk/host.mk +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call HOST_template,UPSLUG2,upslug2,$(PKG_VERSION)-${PKG_RELEASE})) + +AUTOTOOL_STYLE:=	autoreconf +HOST_STYLE:=		auto + +upslug2-hostinstall: +	cd ${WRKBUILD} && env ${HOST_MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \ +		${HOST_FAKE_FLAGS} ${HOST_INSTALL_TARGET} $(MAKE_TRACE) + +include ${ADK_TOPDIR}/mk/host-bottom.mk +include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/util-linux/Makefile b/package/util-linux/Makefile index 33c2d1809..c1712235e 100644 --- a/package/util-linux/Makefile +++ b/package/util-linux/Makefile @@ -4,18 +4,19 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		util-linux -PKG_VERSION:=		2.40.2 +PKG_VERSION:=		2.41.1  PKG_RELEASE:=		1 -PKG_HASH:=		d78b37a66f5922d70edf3bdfb01a6b33d34ed3c3cafd6628203b2a2b67c8e8b3 +PKG_HASH:=		be9ad9a276f4305ab7dd2f5225c8be1ff54352f565ff4dede9628c1aaa7dec57  PKG_DESCR:=		basic utilities  PKG_SECTION:=		base/apps  PKG_BUILDDEP:=		ncurses  PKG_NEEDS:=		threads -PKG_SITES:=		http://www.kernel.org/pub/linux/utils/util-linux/v2.40/ +PKG_SITES:=		http://www.kernel.org/pub/linux/utils/util-linux/v2.41/  PKG_OPTS:=		dev  PKG_SUBPKGS:=		FDISK AGETTY SFDISK SWAP_UTILS LOSETUP LSFD MCOOKIE MOUNT  PKG_SUBPKGS+=		LIBFDISK LIBUUID LIBBLKID LIBMOUNT LIBSMARTCOLS CFDISK MKFS +PKG_SUBPKGS+=		SWITCHROOT  PKGSD_LIBUUID:=		uuid library  PKGSC_LIBUUID:=		libs/misc  PKGSD_LIBBLKID:=	blkid library @@ -24,6 +25,7 @@ PKGSD_LIBFDISK:=	fdisk library  PKGSC_LIBFDISK:=	libs/misc  PKGSD_LIBMOUNT:=	mount library  PKGSC_LIBMOUNT:=	libs/misc +PKGSS_LIBMOUNT:=	libblkid  PKGSD_LIBSMARTCOLS:=	smartcols library  PKGSC_LIBSMARTCOLS:=	libs/misc  PKGSD_FDISK:=		partition table manipulation utility @@ -51,8 +53,11 @@ PKGSC_MKFS:=		sys/fs  PKGSD_MOUNT:=		mount/umount utilities  PKGSS_MOUNT:=		libblkid libmount libuuid libncurses  PKGSC_MOUNT:=		sys/fs +PKGSD_SWITCHROOT:=	switch_root utility +PKGSC_SWITCHROOT:=	sys/utils  PKGSD_MCOOKIE:=		generate magic cookies for xauth  PKGSC_MCOOKIE:=		x11/utils +PKGSS_MCOOKIE:=		libncurses  include $(ADK_TOPDIR)/mk/host.mk  include $(ADK_TOPDIR)/mk/package.mk @@ -67,6 +72,7 @@ $(eval $(call PKG_template,LOSETUP,losetup,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS  $(eval $(call PKG_template,LSFD,lsfd,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS_LSFD),$(PKGSD_LSFD),$(PKGSC_LSFD)))  $(eval $(call PKG_template,MKFS,mkfs,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS_MKFS),$(PKGSD_MKFS),$(PKGSC_MKFS)))  $(eval $(call PKG_template,MOUNT,mount,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS_MOUNT),$(PKGSD_MOUNT),$(PKGSC_MOUNT))) +$(eval $(call PKG_template,SWITCHROOT,switchroot,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS_MOUNT),$(PKGSD_MOUNT),$(PKGSC_MOUNT)))  $(eval $(call PKG_template,MCOOKIE,mcookie,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_MCOOKIE),$(PKGSC_MCOOKIE)))  $(eval $(call PKG_template,LIBUUID,libuuid,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_LIBUUID),$(PKGSC_LIBUUID),$(PKG_OPTS)))  $(eval $(call PKG_template,LIBBLKID,libblkid,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_LIBBLKID),$(PKGSC_LIBBLKID),$(PKG_OPTS))) @@ -96,7 +102,6 @@ CONFIGURE_ARGS+=	--exec-prefix=/usr \  			--disable-cramfs \  			--disable-login \  			--disable-eject \ -			--disable-switch_root \  			--disable-nsenter \  			--disable-unshare \  			--disable-wall \ @@ -105,6 +110,7 @@ CONFIGURE_ARGS+=	--exec-prefix=/usr \  			--without-python \  			--without-systemd \  			--without-user \ +			--enable-switch_root \  			--enable-libfdisk \  			--enable-libuuid \  			--enable-libblkid \ @@ -121,10 +127,8 @@ HOST_CONFIGURE_ARGS+=	--enable-libblkid \  			--enable-libuuid \  			--enable-libmount \  			--disable-all-programs \ -			--disable-use-tty-group -ifneq ($(OS_FOR_BUILD),Darwin) -HOST_CONFIGURE_ARGS+=   --enable-libuuid -endif +			--disable-use-tty-group \ +			--enable-libuuid  fdisk-install:  	$(INSTALL_DIR) $(IDIR_FDISK)/usr/sbin @@ -163,9 +167,13 @@ mount-install:  	$(INSTALL_DIR) $(IDIR_MOUNT)/bin  	$(INSTALL_BIN) $(WRKINST)/usr/bin/{u,}mount $(IDIR_MOUNT)/bin +switchroot-install: +	$(INSTALL_DIR) $(IDIR_SWITCHROOT)/sbin +	$(INSTALL_BIN) $(WRKINST)/sbin/switch_root $(IDIR_SWITCHROOT)/sbin +  mcookie-install: -	$(INSTALL_DIR) $(IDIR_MCOOKIE)/bin -	$(INSTALL_BIN) $(WRKINST)/usr/bin/mcookie $(IDIR_MCOOKIE)/bin +	$(INSTALL_DIR) $(IDIR_MCOOKIE)/usr/bin +	$(INSTALL_BIN) $(WRKINST)/usr/bin/mcookie $(IDIR_MCOOKIE)/usr/bin  libuuid-install:  	$(INSTALL_DIR) $(IDIR_LIBUUID)/usr/lib diff --git a/package/vtun/Makefile b/package/vtun/Makefile index 2bc582e42..4f5ff2ed4 100644 --- a/package/vtun/Makefile +++ b/package/vtun/Makefile @@ -16,8 +16,6 @@ PKG_SITES:=		${MASTER_SITE_SOURCEFORGE:=vtun/}  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz -PKG_HOST_DEPENDS:=	!freebsd -  include ${ADK_TOPDIR}/mk/package.mk  $(eval $(call PKG_template,VTUN,vtun,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) diff --git a/package/wayland-protocols/Makefile b/package/wayland-protocols/Makefile index 9c1f8ad1d..308ae62f1 100644 --- a/package/wayland-protocols/Makefile +++ b/package/wayland-protocols/Makefile @@ -4,15 +4,17 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		wayland-protocols -PKG_VERSION:=		1.31 +PKG_VERSION:=		1.45  PKG_RELEASE:=		1 -PKG_HASH:=		a07fa722ed87676ec020d867714bc9a2f24c464da73912f39706eeef5219e238 +PKG_HASH:=		460dad72a6c84b2a7d80745bee43d96ba117f4e3dfc4d7c45f83f66469ea27df  PKG_DESCR:=		wayland protocols  PKG_SECTION:=		x11/libs  PKG_BUILDDEP:=		meson-host wayland-host -PKG_SITES:=		https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/$(PKG_VERSION)/downloads/ +PKG_SITES:=		https://gitlab.freedesktop.org/wayland/wayland-protocols/-/archive/$(PKG_VERSION)/  PKG_OPTS:=		dev +DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tar.gz +  include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,WAYLAND_PROTOCOLS,wayland-protocols,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) diff --git a/package/wayland-protocols/patches/patch-meson_build b/package/wayland-protocols/patches/patch-meson_build deleted file mode 100644 index ad075be1c..000000000 --- a/package/wayland-protocols/patches/patch-meson_build +++ /dev/null @@ -1,11 +0,0 @@ ---- wayland-protocols-1.23.orig/meson.build	2021-09-15 14:52:03.136998200 +0200 -+++ wayland-protocols-1.23/meson.build	2021-11-14 04:45:19.472983046 +0100 -@@ -93,7 +93,7 @@ pkgconfig_configuration.set('abs_top_src - pkgconfig_configuration.set('PACKAGE', 'wayland-protocols') - pkgconfig_configuration.set('WAYLAND_PROTOCOLS_VERSION', wayland_protocols_version) -  --pkg_install_dir = join_paths(get_option('datadir'), 'pkgconfig') -+pkg_install_dir = join_paths(get_option('libdir'), 'pkgconfig') - configure_file( - 	input: 'wayland-protocols.pc.in', - 	output: 'wayland-protocols.pc', diff --git a/package/wayland-protocols/patches/patch-wayland-protocols_pc_in b/package/wayland-protocols/patches/patch-wayland-protocols_pc_in deleted file mode 100644 index ce3da7fb2..000000000 --- a/package/wayland-protocols/patches/patch-wayland-protocols_pc_in +++ /dev/null @@ -1,10 +0,0 @@ ---- wayland-protocols-1.23.orig/wayland-protocols.pc.in	2021-09-15 14:52:03.145998200 +0200 -+++ wayland-protocols-1.23/wayland-protocols.pc.in	2021-11-14 04:59:17.121707638 +0100 -@@ -1,6 +1,6 @@ - prefix=@prefix@ - datarootdir=@datarootdir@ --pkgdatadir=${pc_sysrootdir}${datarootdir}/@PACKAGE@ -+pkgdatadir=${datarootdir}/@PACKAGE@ -  - Name: Wayland Protocols - Description: Wayland protocol files diff --git a/package/wayland/Makefile b/package/wayland/Makefile index a546ebb51..24535f1cf 100644 --- a/package/wayland/Makefile +++ b/package/wayland/Makefile @@ -4,12 +4,12 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		wayland -PKG_VERSION:=		1.23.0 +PKG_VERSION:=		1.24.0  PKG_RELEASE:=		1 -PKG_HASH:=		05b3e1574d3e67626b5974f862f36b5b427c7ceeb965cb36a4e6c2d342e45ab2 +PKG_HASH:=		82892487a01ad67b334eca83b54317a7c86a03a89cfadacfef5211f11a5d0536  PKG_DESCR:=		wayland  PKG_SECTION:=		x11/libs -PKG_BUILDDEP:=		wayland-host +PKG_BUILDDEP:=		wayland-host libffi  HOST_BUILDDEP:=		meson-host expat-host libxml2-host libffi-host  PKG_SITES:=		https://gitlab.freedesktop.org/wayland/wayland/-/releases/$(PKG_VERSION)/downloads/  PKG_OPTS:=		dev diff --git a/package/webkitgtk/Makefile b/package/webkitgtk/Makefile index b6ad084a5..aed00abd7 100644 --- a/package/webkitgtk/Makefile +++ b/package/webkitgtk/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		webkitgtk -PKG_VERSION:=		2.34.6 +PKG_VERSION:=		2.48.1  PKG_RELEASE:=		1 -PKG_HASH:=		6bc8fd034aad0432a2459ce4fc7ee25ad65a4924c618bf8d93b52b0c1a84c1f6 +PKG_HASH:=		98efdf21c4cdca0fe0b73ab5a8cb52093b5aa52d9b1b016a93f71dbfa1eb258f  PKG_DESCR:=		web browser engine  PKG_SECTION:=		libs/misc  PKG_DEPENDS:=		glib icu4c zlib libwebp libgtk3 libsoup @@ -15,7 +15,7 @@ PKG_DEPENDS+=		gstreamer libnotify libwebp gst-plugins-base  PKG_BUILDDEP:=		glib icu4c zlib libwebp libgtk3 cmake-host  PKG_BUILDDEP+=		libsoup libsecret libXt harfbuzz libnotify  PKG_BUILDDEP+=		gstreamer cairo enchant libwebp gst-plugins-base -PKG_BUILDDEP+=		gnutls libgcrypt ruby-host +PKG_BUILDDEP+=		gst-plugins-good gnutls libgcrypt ruby-host unifdef-host  PKG_URL:=		http://www.webkitgtk.org/  PKG_SITES:=		http://webkitgtk.org/releases/  PKG_OPTS:=		dev @@ -26,7 +26,7 @@ $(eval $(call PKG_template,WEBKITGTK,webkitgtk,$(PKG_VERSION)-$(PKG_RELEASE),$(P  WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj  XAKE_FLAGS+=		VERBOSE=1 -TARGET_CXXFLAGS+=	-D__STDC_LIMIT_MACROS -D__STDC_FORMAT_MACROS +#TARGET_CXXFLAGS+=	-D__STDC_LIMIT_MACROS -D__STDC_FORMAT_MACROS  CONFIG_STYLE:=		cmake  CMAKE_FLAGS+= 		-DPORT=GTK \ @@ -36,17 +36,25 @@ CMAKE_FLAGS+= 		-DPORT=GTK \  			-DENABLE_API_TESTS=OFF \  			-DENABLE_GTKDOC=OFF \  			-DENABLE_GEOLOCATION=OFF \ +			-DENABLE_SPEECH_SYNTHESIS=OFF \ +			-DENABLE_JOURNALD_LOG=OFF \  			-DENABLE_MINIBROWSER=ON \  			-DUSE_SYSTEM_MALLOC=ON \  			-DUSE_LIBNOTIFY=OFF \ +			-DUSE_JPEGXL=OFF \ +			-DUSE_AVIF=OFF \ +			-DUSE_LIBBACKTRACE=OFF \ +			-DUSE_GSTREAMER_TRANSCODER=OFF \  			-DENABLE_JIT=OFF \  			-DUSE_LIBHYPHEN=OFF \  			-DUSE_SOUP2=ON \ +			-DUSE_GTK4=OFF \  			-DUSE_WPE_RENDERER=OFF \  			-DENABLE_GAMEPAD=OFF \  			-DUSE_OPENJPEG=OFF \  			-DUSE_WOFF2=OFF \  			-DUSE_SYSTEMD=OFF \ +			-DUSE_SYSTEM_SYSPROF_CAPTURE=NO \  			-DUSE_LCMS=OFF \  			-DENABLE_BUBBLEWRAP_SANDBOX=OFF \  			-DENABLE_INTROSPECTION=OFF diff --git a/package/weston/Makefile b/package/weston/Makefile index 5ce452214..76f4e5bb6 100644 --- a/package/weston/Makefile +++ b/package/weston/Makefile @@ -4,18 +4,19 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		weston -PKG_VERSION:=		13.0.3 -PKG_RELEASE:=		1 -PKG_HASH:=		27f68d96e3b97d98daadef13a202356524924fa381418fa6716b9136ef099093 +PKG_VERSION:=		14.0.2 +PKG_RELEASE:=		2 +PKG_HASH:=		633f4e0f232ad150300c95ffcbc646fedf1349487bf389dbd2045fa69013d6e2  PKG_DESCR:=		wayland compositor  PKG_SECTION:=		x11/drivers  PKG_DEPENDS:=		wayland libxkbcommon libinput libpng libjpeg-turbo libseat mesa libexpat  PKG_DEPENDS+=		libwebp pam libxcursor libudev xkeyboard-config cairo libffi libdrm seatd +PKG_DEPENDS+=		libdisplay-info  PKG_BUILDDEP:=		wayland wayland-protocols libxkbcommon libinput libpng libjpeg-turbo expat  PKG_BUILDDEP+=		libwebp pam libXcursor eudev cairo libseat libffi libdrm libdisplay-info mesa -PKG_SITES:=		https://gitlab.freedesktop.org/wayland/weston/-/releases/$(PKG_VERSION)/downloads/ +PKG_SITES:=		https://gitlab.freedesktop.org/wayland/weston/-/archive/$(PKG_VERSION)/ -PKG_CFLINE_WESTON:=	select ADK_PACKAGE_CAIRO_WITH_PNG@ +DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tar.gz  include $(ADK_TOPDIR)/mk/package.mk @@ -30,7 +31,9 @@ MESON_FLAGS+=		-Dsystemd=false \  			-Dbackend-pipewire=false \  			-Dxwayland=false \  			-Dtest-junit-xml=false \ -			-Ddemo-clients=false  +			-Ddemo-clients=false \ +			-Dshell-fullscreen=true \ +			-Drenderer-gl=true  WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj @@ -48,12 +51,12 @@ weston-install:  	$(INSTALL_DIR) $(IDIR_WESTON)/usr/lib  	$(CP) $(WRKINST)/usr/lib/weston \  		$(IDIR_WESTON)/usr/lib/ -	$(CP) $(WRKINST)/usr/lib/libweston-13 \ +	$(CP) $(WRKINST)/usr/lib/libweston-14 \  		$(IDIR_WESTON)/usr/lib/  	$(CP) $(WRKINST)/usr/lib/*so* \  		$(IDIR_WESTON)/usr/lib/  	$(INSTALL_DIR) $(IDIR_WESTON)/usr/bin -	$(INSTALL_BIN) $(WRKINST)/usr/bin/weston \ +	$(INSTALL_BIN) $(WRKINST)/usr/bin/* \  		$(IDIR_WESTON)/usr/bin  include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/wolfssl/Makefile b/package/wolfssl/Makefile index bc91eddcc..0623fd4aa 100644 --- a/package/wolfssl/Makefile +++ b/package/wolfssl/Makefile @@ -4,25 +4,25 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		wolfssl -PKG_VERSION:=		5.7.0 +PKG_VERSION:=		5.7.6  PKG_RELEASE:=		1 -PKG_HASH:=		2de93e8af588ee856fe67a6d7fce23fc1b226b74d710b0e3946bc8061f6aa18f +PKG_HASH:=		52b1e439e30d1ed8162a16308a8525a862183b67aa30373b11166ecbab000d63  PKG_DESCR:=		portable embedded ssl library  PKG_SECTION:=		libs/crypto +PKG_BUILDDEP:=		cmake-host  PKG_URL:=		http://www.wolfssl.com  PKG_SITES:=		https://github.com/wolfSSL/wolfssl/archive/refs/tags/  PKG_OPTS:=		dev  DISTFILES:=		v$(PKG_VERSION)-stable.tar.gz  WRKDIST=		${WRKDIR}/${PKG_NAME}-${PKG_VERSION}-stable +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj  include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,WOLFSSL,wolfssl,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) -AUTOTOOL_STYLE:=	autogen -CONFIGURE_ARGS+=	--disable-examples -CONFIGURE_ENV+=		C_EXTRA_FLAGS='$(TARGET_CFLAGS)' +CONFIG_STYLE:=		cmake  wolfssl-install:  	$(INSTALL_DIR) $(IDIR_WOLFSSL)/usr/lib diff --git a/package/wpebackend-fdo/Makefile b/package/wpebackend-fdo/Makefile new file mode 100644 index 000000000..e47faad6b --- /dev/null +++ b/package/wpebackend-fdo/Makefile @@ -0,0 +1,33 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		wpebackend-fdo +PKG_VERSION:=		1.16.0 +PKG_RELEASE:=		1 +PKG_HASH:=		beddf321232d5bd08106c179dbc600f8ce88eb3620b4a59a6329063b78f64635 +PKG_DESCR:=		freedesktop.org wpe backend +PKG_SECTION:=		libs/misc +PKG_DEPENDS:=		libwpe +PKG_BUILDDEP:=		wayland libwpe +PKG_URL:=		https://wpewebkit.org +PKG_SITES:=		https://wpewebkit.org/releases/ +PKG_OPTS:=		dev + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,WPEBACKEND_FDO,wpebackend-fdo,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) + +WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj + +CONFIG_STYLE:=		meson +BUILD_STYLE:=		meson +INSTALL_STYLE:=		meson + +wpebackend-fdo-install: +	$(INSTALL_DIR) $(IDIR_WPEBACKEND_FDO)/usr/lib +	$(CP) $(WRKINST)/usr/lib/libWPEBackend-fdo*.so* \ +		$(IDIR_WPEBACKEND_FDO)/usr/lib + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/wpewebkit/Makefile b/package/wpewebkit/Makefile new file mode 100644 index 000000000..163a3908e --- /dev/null +++ b/package/wpewebkit/Makefile @@ -0,0 +1,56 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		wpewebkit +PKG_VERSION:=		2.50.0 +PKG_RELEASE:=		1 +PKG_HASH:=		a9af62c5e18551b7386b7db864e8ba8156f219b8e6c639934bf6f3a567969922 +PKG_DESCR:=		web platform for embedded +PKG_SECTION:=		libs/misc +PKG_DEPENDS:=		libwpe libsoup3 harfbuzz libjpeg-turbo libgcrypt +PKG_DEPENDS+=		libtasn1 libwebp gstreamer gst-plugins-base libxslt +PKG_DEPENDS+=		libpsl libmount libblkid libepoxy +PKG_BUILDDEP:=		cmake-host libwpe libsoup3 harfbuzz libjpeg-turbo +PKG_BUILDDEP+=		libgcrypt libtasn1 libwebp gstreamer gst-plugins-base +PKG_BUILDDEP+=		libxslt libpsl libepoxy unifdef-host libatomic +PKG_URL:=		https://wpewebkit.org +PKG_SITES:=		https://wpewebkit.org/releases/ +PKG_OPTS:=		dev + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,WPEWEBKIT,wpewebkit,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) + +XAKE_FLAGS+=		VERBOSE=1 +CONFIG_STYLE:=		cmake +CMAKE_FLAGS+=		-DPORT=WPE \ +			-DUSE_SYSTEM_SYSPROF_CAPTURE=NO \ +			-DENABLE_API_TESTS=OFF \ +			-DENABLE_DOCUMENTATION=OFF \ +			-DENABLE_INTROSPECTION=OFF \ +			-DENABLE_MINIBROWSER=OFF \ +			-DENABLE_WEB_RTC=OFF \ +			-DENABLE_SPEECH_SYNTHESIS=OFF \ +			-DENABLE_JOURNALD_LOG=OFF \ +			-DENABLE_BUBBLEWRAP_SANDBOX=OFF \ +			-DENABLE_WEB_DRIVER=ON \ +			-DUSE_GSTREAMER_TRANSCODER=OFF \ +			-DUSE_LIBBACKTRACE=OFF \ +			-DUSE_JPEGXL=OFF \ +			-DUSE_LCMS=OFF \ +			-DUSE_WOFF2=OFF \ +			-DUSE_AVIF=OFF \ +			-DUSE_ATK=OFF \ +			-DUSE_SKIA=OFF + +wpewebkit-install: +	$(INSTALL_DIR) $(IDIR_WPEWEBKIT)/usr/lib +	$(CP) $(WRKINST)/usr/lib/libWPEWebKit*.so* \ +		$(IDIR_WPEWEBKIT)/usr/lib +	$(INSTALL_DIR) $(IDIR_WPEWEBKIT)/usr/libexec/wpe-webkit-2.0 +	$(INSTALL_BIN) $(WRKINST)/usr/libexec/wpe-webkit-2.0/* \ +		$(IDIR_WPEWEBKIT)/usr/libexec/wpe-webkit-2.0 + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/wpewebkit/patches/patch-Source_bmalloc_libpas_src_libpas_pas_probabilistic_guard_malloc_allocator_c b/package/wpewebkit/patches/patch-Source_bmalloc_libpas_src_libpas_pas_probabilistic_guard_malloc_allocator_c new file mode 100644 index 000000000..548167711 --- /dev/null +++ b/package/wpewebkit/patches/patch-Source_bmalloc_libpas_src_libpas_pas_probabilistic_guard_malloc_allocator_c @@ -0,0 +1,20 @@ +--- wpewebkit-2.50.0.orig/Source/bmalloc/libpas/src/libpas/pas_probabilistic_guard_malloc_allocator.c	2025-08-11 09:56:57.555220800 +0200 ++++ wpewebkit-2.50.0/Source/bmalloc/libpas/src/libpas/pas_probabilistic_guard_malloc_allocator.c	2025-09-26 23:53:28.359719212 +0200 +@@ -47,17 +47,12 @@ + #include <unistd.h> + #endif +  +-/* PlayStation does not currently support the backtrace API. Android API versions < 33 don't, either. Windows does not either. */ +-#if !PAS_PLATFORM(PLAYSTATION) && (!PAS_OS(ANDROID) || __ANDROID_API__ >= 33) && !PAS_OS(WINDOWS) +-#include <execinfo.h> +-#else + size_t backtrace(void** buffer, size_t size) + { +     PAS_UNUSED_PARAM(buffer); +     PAS_UNUSED_PARAM(size); +     return 0; + } +-#endif +  + static size_t free_wasted_mem  = PAS_PGM_MAX_WASTED_MEMORY; + static size_t free_virtual_mem = PAS_PGM_MAX_VIRTUAL_MEMORY; diff --git a/package/xcb-proto/Makefile b/package/xcb-proto/Makefile index d5639997b..b96619e75 100644 --- a/package/xcb-proto/Makefile +++ b/package/xcb-proto/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		xcb-proto -PKG_VERSION:=		1.16.0 +PKG_VERSION:=		1.17.0  PKG_RELEASE:=		1 -PKG_HASH:=		a75a1848ad2a89a82d841a51be56ce988ff3c63a8d6bf4383ae3219d8d915119 +PKG_HASH:=		2c1bacd2110f4799f74de6ebb714b94cf6f80fb112316b1219480fd22562148c  PKG_DESCR:=		xml-xcb protocol descriptions  PKG_SECTION:=		dev/header  HOST_BUILDDEP:=		python3-host diff --git a/package/xcb-proto/patches/patch-xcb-proto_pc_in b/package/xcb-proto/patches/patch-xcb-proto_pc_in deleted file mode 100644 index 3732f4310..000000000 --- a/package/xcb-proto/patches/patch-xcb-proto_pc_in +++ /dev/null @@ -1,14 +0,0 @@ ---- xcb-proto-1.16.0.orig/xcb-proto.pc.in	2023-08-16 22:10:21.000000000 +0200 -+++ xcb-proto-1.16.0/xcb-proto.pc.in	2024-01-21 13:00:16.488006595 +0100 -@@ -2,9 +2,9 @@ prefix=@prefix@ - exec_prefix=@exec_prefix@ - datarootdir=@datarootdir@ - datadir=@datadir@ --xcbincludedir=${pc_sysrootdir}@xcbincludedir@ -+xcbincludedir=@xcbincludedir@ - PYTHON_PREFIX=@PYTHON_PREFIX@ --pythondir=${pc_sysrootdir}@pythondir@ -+pythondir=@pythondir@ -  - Name: XCB Proto - Description: X protocol descriptions for XCB diff --git a/package/xf86-input-libinput/Makefile b/package/xf86-input-libinput/Makefile new file mode 100644 index 000000000..8f6bac4c1 --- /dev/null +++ b/package/xf86-input-libinput/Makefile @@ -0,0 +1,30 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		xf86-input-libinput +PKG_VERSION:=		1.5.0 +PKG_RELEASE:=		1 +PKG_HASH:=		2524c35f196554ea11aef3bba1cf324759454e1d49f98ac026ace2f6003580e6 +PKG_DESCR:=		x11 driver for libinput +PKG_SECTION:=		x11/drivers +PKG_DEPENDS:=		xorg-server libudev libevdev mtdev libinput +PKG_BUILDDEP:=		xorg-server eudev libevdev mtdev libinput +PKG_SITES:=		https://www.x.org/releases/individual/driver/ + +PKG_CFLINE_XF86_INPUT_LIBINPUT:= depends on ADK_TARGET_WITH_INPUT || ADK_TARGET_QEMU + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,XF86_INPUT_LIBINPUT,xf86-input-libinput,$(PKG_VERSION)-$(PKG_RELEASE),${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) + +xf86-input-libinput-install: +	${INSTALL_DIR} ${IDIR_XF86_INPUT_LIBINPUT}/usr/lib/xorg/modules/input +	${CP} ${WRKINST}/usr/lib/xorg/modules/input/*.so \ +		${IDIR_XF86_INPUT_LIBINPUT}/usr/lib/xorg/modules/input/ +	${INSTALL_DIR} ${IDIR_XF86_INPUT_LIBINPUT}/usr/share/X11/xorg.conf.d +	${CP} ${WRKINST}/usr/share/X11/xorg.conf.d/40-libinput.conf \ +		${IDIR_XF86_INPUT_LIBINPUT}/usr/share/X11/xorg.conf.d + +include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/xf86-video-fbdev/Makefile b/package/xf86-video-fbdev/Makefile index 4df0982a5..90f850545 100644 --- a/package/xf86-video-fbdev/Makefile +++ b/package/xf86-video-fbdev/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		xf86-video-fbdev -PKG_VERSION:=		0.4.4 +PKG_VERSION:=		0.5.1  PKG_RELEASE:=		1 -PKG_HASH:=		49e545951ea5fddc0d9b3ed3bf60e9a588a9c09401cc93ac082e064530bc0f81 +PKG_HASH:=		5e73c01f6ede09ddbc1f553fecdf35dd8efe76b44c7ed263de786a5968c5116f  PKG_DESCR:=		x11 driver for framebuffer devices  PKG_SECTION:=		x11/drivers  PKG_DEPENDS:=		xorg-server diff --git a/package/xinit/Makefile b/package/xinit/Makefile index a6f74d1e8..ba5160351 100644 --- a/package/xinit/Makefile +++ b/package/xinit/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		xinit -PKG_VERSION:=		1.2.1 -PKG_RELEASE:=		6 -PKG_HASH:=		3079d3fb86af99f4c2c2907b5725e5820fdb2144d3be6002ec367bfcebc5c480 +PKG_VERSION:=		1.4.4 +PKG_RELEASE:=		1 +PKG_HASH:=		45cca1b0f3a963105f43cecc24e9cc4db0d14faa87bd9860b9ec563e8c73fc47  PKG_DESCR:=		x window system initializer  PKG_SECTION:=		x11/utils  PKG_DEPENDS:=		xorg-server mcookie xauth xset @@ -33,8 +33,8 @@ xinit-install:  		$(IDIR_XINIT)/usr/bin/  	$(INSTALL_BIN) $(WRKINST)/usr/bin/xinit \  		$(IDIR_XINIT)/usr/bin/ -	$(INSTALL_DIR) $(IDIR_XINIT)/usr/lib/X11/xinit -	$(INSTALL_DATA) $(WRKINST)/usr/lib/X11/xinit/xinitrc \ -		$(IDIR_XINIT)/usr/lib/X11/xinit/ +	$(INSTALL_DIR) $(IDIR_XINIT)/etc/X11/xinit +	$(INSTALL_DATA) $(WRKINST)/etc/X11/xinit/xinitrc \ +		$(IDIR_XINIT)/etc/X11/xinit/  include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/xinit/patches/patch-xinitrc_in b/package/xinit/patches/patch-xinitrc_in new file mode 100644 index 000000000..9b76cf237 --- /dev/null +++ b/package/xinit/patches/patch-xinitrc_in @@ -0,0 +1,13 @@ +--- xinit-1.4.4.orig/xinitrc.in	2025-03-09 21:44:26.000000000 +0100 ++++ xinit-1.4.4/xinitrc.in	2025-09-27 00:32:37.482563426 +0200 +@@ -49,8 +49,5 @@ if [ -d "$xinitdir"/xinitrc.d ] ; then + 	unset f + fi +  +-"$twm" & +-"$xclock" -geometry 50x50-1+1 & +-"$xterm" -geometry 80x50+494+51 & +-"$xterm" -geometry 80x20+494-0 & +-exec "$xterm" -geometry 80x66+0+0 -name login ++evilwm -fn fixed -term xterm & ++exec "$xterm" -geometry 80x18 diff --git a/package/xkbcomp/Makefile b/package/xkbcomp/Makefile index 03da06b23..50be6a1a1 100644 --- a/package/xkbcomp/Makefile +++ b/package/xkbcomp/Makefile @@ -4,23 +4,25 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		xkbcomp -PKG_VERSION:=		1.0.5 -PKG_RELEASE:=		2 -PKG_HASH:=		817e2bda2ca51ffc1fc664e3f9ab88b359cd91246f0f4736fc747d6fbc59f2e7 +PKG_VERSION:=		1.4.7 +PKG_RELEASE:=		1 +PKG_HASH:=		0a288114e5f44e31987042c79aecff1ffad53a8154b8ec971c24a69a80f81f77  PKG_DESCR:=		x11 keyboard compiler  PKG_SECTION:=		x11/misc  PKG_BUILDDEP:=		libxkbfile libX11  PKG_DEPENDS:=		libxkbfile libx11 -PKG_SITES:=		http://xorg.freedesktop.org/releases/X11R7.4/src/everything/ - -DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz +HOST_BUILDDEP:=		libxkbfile-host +PKG_SITES:=		http://xorg.freedesktop.org/releases/individual/app/ +include $(ADK_TOPDIR)/mk/host.mk  include $(ADK_TOPDIR)/mk/package.mk +$(eval $(call HOST_template,XKBCOMP,xkbcomp,$(PKG_VERSION)-${PKG_RELEASE}))  $(eval $(call PKG_template,XKBCOMP,xkbcomp,$(PKG_VERSION)-$(PKG_RELEASE),${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))  xkbcomp-install:  	${INSTALL_DIR} ${IDIR_XKBCOMP}/usr/bin  	${INSTALL_BIN} ${WRKINST}/usr/bin/xkbcomp ${IDIR_XKBCOMP}/usr/bin +include ${ADK_TOPDIR}/mk/host-bottom.mk  include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/xkeyboard-config/Makefile b/package/xkeyboard-config/Makefile index 182812e57..5724468e0 100644 --- a/package/xkeyboard-config/Makefile +++ b/package/xkeyboard-config/Makefile @@ -4,12 +4,12 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		xkeyboard-config -PKG_VERSION:=		2.37 +PKG_VERSION:=		2.45  PKG_RELEASE:=		1 -PKG_HASH:=		eb1383a5ac4b6210d7c7302b9d6fab052abdf51c5d2c9b55f1f779997ba68c6c +PKG_HASH:=		169e075a92d957a57787c199e84e359df2931b7196c1c5b4a3d576ee6235a87c  PKG_DESCR:=		keyboard config  PKG_SECTION:=		x11/misc -PKG_BUILDDEP:=		util-macros-host xkbcomp meson-host +PKG_BUILDDEP:=		util-macros-host xkbcomp-host xkbcomp meson-host  PKG_SITES:=		http://www.x.org/releases/individual/data/xkeyboard-config/  include $(ADK_TOPDIR)/mk/package.mk @@ -23,9 +23,10 @@ BUILD_STYLE:=		meson  INSTALL_STYLE:=		meson  xkeyboard-config-install: -	${INSTALL_DIR} ${IDIR_XKEYBOARD_CONFIG}/usr/share/X11/xkb -	${CP} ${WRKINST}/usr/share/X11/xkb/* \ -		${IDIR_XKEYBOARD_CONFIG}/usr/share/X11/xkb -	rm -rf ${IDIR_XKEYBOARD_CONFIG}/usr/share/X11/xkb/symbols/sun_vndr +	${INSTALL_DIR} ${IDIR_XKEYBOARD_CONFIG}/usr/share/X11 +	${INSTALL_DIR} ${IDIR_XKEYBOARD_CONFIG}/usr/share/xkeyboard-config-2 +	${CP} ${WRKINST}/usr/share/xkeyboard-config-2/* \ +		${IDIR_XKEYBOARD_CONFIG}/usr/share/xkeyboard-config-2 +	(cd $(IDIR_XKEYBOARD_CONFIG)/usr/share/X11 && ln -sf ../xkeyboard-config-2 xkb)  include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/xorg-server/Makefile b/package/xorg-server/Makefile index 9c6c12ffc..a4b5ad899 100644 --- a/package/xorg-server/Makefile +++ b/package/xorg-server/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		xorg-server -PKG_VERSION:=		21.1.6 +PKG_VERSION:=		21.1.18  PKG_RELEASE:=		1 -PKG_HASH:=		1eb86ed674d042b6c8b1f9135e59395cbbca35ed551b122f73a7d8bb3bb22484 +PKG_HASH:=		c878d1930d87725d4a5bf498c24f4be8130d5b2646a9fd0f2994deff90116352  PKG_DESCR:=		xorg server  PKG_SECTION:=		x11/drivers  PKG_DEPENDS:=		libxfont2 pixman libpciaccess libxkbfile libxcvt @@ -14,13 +14,13 @@ PKG_DEPENDS+=		libfontenc xkeyboard-config xkbcomp libxau libxaw  PKG_DEPENDS+=		libxmu libxpm libxrender libxt libxxf86dga libxext  PKG_DEPENDS+=		libxdmcp libxv libsm libice libx11 libxcb libdrm  PKG_DEPENDS+=		libxshmfence libfreetype libfontenc libpciaccess -PKG_DEPENDS+=		libepoxy +PKG_DEPENDS+=		libepoxy libdbus  PKG_BUILDDEP:=		libX11 randrproto renderproto fixesproto damageproto  PKG_BUILDDEP+=		scrnsaverproto resourceproto fontsproto videoproto  PKG_BUILDDEP+=		compositeproto evieext libxkbfile libXfont2 pixman  PKG_BUILDDEP+=		libpciaccess xf86dgaproto recordproto dri3proto  PKG_BUILDDEP+=		xineramaproto presentproto xf86driproto glproto mesa -PKG_BUILDDEP+=		xorgproto libxcvt libdrm libepoxy +PKG_BUILDDEP+=		xorgproto libxcvt libdrm libepoxy font-util-host dbus  PKG_NEEDS:=		threads c++  PKG_URL:=		http://www.x.org/  PKG_SITES:=		http://www.x.org/releases/individual/xserver/ @@ -28,10 +28,10 @@ PKG_OPTS:=		dev  PKG_CFLINE_XORG_SERVER:=depends on ADK_TARGET_WITH_VGA || ADK_TARGET_QEMU_WITH_GRAPHIC -PKG_FLAVOURS_XORG_SERVER:=	WITH_KDRIVE -PKGFD_WITH_KDRIVE:=		build kdrive xfbdev server - -PKG_CHOICES_XORG_SERVER:=	WITH_LIBRESSL WITH_GCRYPT +PKG_CHOICES_XORG_SERVER:=	WITH_OPENSSL WITH_LIBRESSL WITH_GCRYPT +PKGCD_WITH_OPENSSL:=		use openssl crypto for sha1 +PKGCS_WITH_OPENSSL:=		libopenssl +PKGCB_WITH_OPENSSL:=		openssl  PKGCD_WITH_LIBRESSL:=		use libressl crypto for sha1  PKGCS_WITH_LIBRESSL:=		libressl  PKGCB_WITH_LIBRESSL:=		libressl @@ -44,6 +44,13 @@ include $(ADK_TOPDIR)/mk/package.mk  $(eval $(call PKG_template,XORG_SERVER,xorg-server,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))  TARGET_CPPFLAGS+=	-D_GNU_SOURCE -D__gid_t=gid_t -D__uid_t=uid_t +TARGET_LDFLAGS+=	-latomic -lstdc++ + +AUTOTOOL_STYLE:=	autoreconf + +ifeq (${ADK_PACKAGE_XORG_SERVER_WITH_OPENSSL},y) +CONFIGURE_ARGS+=	 --with-sha1=libcrypto +endif  ifeq (${ADK_PACKAGE_XORG_SERVER_WITH_GCRYPT},y)  CONFIGURE_ARGS+=	 --with-sha1=libgcrypt @@ -60,10 +67,10 @@ CONFIGURE_ARGS+=	--enable-dga \  			--enable-vgahw \  			--enable-dpms \  			--enable-xinerama \ +			--enable-config-udev \ +			--disable-debug \  			--disable-docs \ -			--disable-glamor \  			--disable-config-hal \ -			--disable-config-udev \  			--disable-xace \  			--disable-xephyr \  			--disable-xf86bigfont \ @@ -75,6 +82,8 @@ CONFIGURE_ARGS+=	--enable-dga \  			--disable-xvmc \  			--disable-selective-werror \  			--disable-strict-compilation \ +			--disable-systemd-logind \ +			--without-systemd-daemon \  			--enable-dri \  			--enable-dri2 \  			--enable-dri3 \ @@ -84,12 +93,6 @@ CONFIGURE_ARGS+=	--enable-dga \  			--with-fontrootdir=/usr/share/fonts/X11/ \  			--with-vendor-web="$(ADK_VENDOR_URL)" -ifeq (${ADK_PACKAGE_XORG_SERVER_WITH_KDRIVE},y) -CONFIGURE_ARGS+=	--enable-kdrive --enable-kdrive-kbd --enable-kdrive-mouse --enable-kdrive-evdev -else -CONFIGURE_ARGS+=	--disable-kdrive -endif -  ifeq (${ADK_TARGET_SYSTEM_LEMOTE_YEELONG},y)  CONFIGURE_ARGS+=	--with-int10=stub  endif @@ -118,6 +121,10 @@ ifeq (${ADK_TARGET_SYSTEM_SHARP_ZAURUS},y)  	${CP} ./files/xorg.conf.sharp-zaurus \  		$(IDIR_XORG_SERVER)/etc/X11/xorg.conf  endif +ifeq (${ADK_TARGET_SYSTEM_RASPBERRY_PI5},y) +	${CP} ./files/xorg.conf.raspberry-pi5 \ +		$(IDIR_XORG_SERVER)/etc/X11/xorg.conf +endif  	# add m4 file to host directory  	$(INSTALL_DIR) $(STAGING_HOST_DIR)/usr/share/aclocal  	$(CP) ${WRKINST}/usr/share/aclocal/xorg-server.m4 \ diff --git a/package/xorg-server/files/xorg.conf.raspberry-pi5 b/package/xorg-server/files/xorg.conf.raspberry-pi5 new file mode 100644 index 000000000..f23cd1328 --- /dev/null +++ b/package/xorg-server/files/xorg.conf.raspberry-pi5 @@ -0,0 +1,6 @@ +Section "OutputClass" +  Identifier "vc4" +  MatchDriver "vc4" +  Driver "modesetting" +  Option "PrimaryGPU" "true" +EndSection diff --git a/package/xorg-server/patches/patch-configure b/package/xorg-server/patches/patch-configure index 378c27c1c..f7b7beab0 100644 --- a/package/xorg-server/patches/patch-configure +++ b/package/xorg-server/patches/patch-configure @@ -1,6 +1,6 @@ ---- xorg-server-21.1.5.orig/configure	2022-12-14 03:25:26.000000000 +0100 -+++ xorg-server-21.1.5/configure	2022-12-31 10:38:30.017910171 +0100 -@@ -29281,7 +29281,7 @@ printf "%s\n" "#define BASE_FONT_PATH \" +--- xorg-server-21.1.16.orig/configure	2025-02-25 18:56:12.000000000 +0000 ++++ xorg-server-21.1.16/configure	2025-04-19 02:08:40.369203750 +0000 +@@ -30272,7 +30272,7 @@ printf "%s\n" "#define BASE_FONT_PATH \"     test "$prefix_NONE" && prefix=NONE     test "$exec_prefix_NONE" && exec_prefix=NONE diff --git a/package/xorg-server/patches/patch-hw_xfree86_drivers_modesetting_Makefile_am b/package/xorg-server/patches/patch-hw_xfree86_drivers_modesetting_Makefile_am new file mode 100644 index 000000000..c8cf55563 --- /dev/null +++ b/package/xorg-server/patches/patch-hw_xfree86_drivers_modesetting_Makefile_am @@ -0,0 +1,11 @@ +--- xorg-server-21.1.16.orig/hw/xfree86/drivers/modesetting/Makefile.am	2025-02-25 18:56:05.000000000 +0000 ++++ xorg-server-21.1.16/hw/xfree86/drivers/modesetting/Makefile.am	2025-04-24 17:19:31.290883875 +0000 +@@ -41,7 +41,7 @@ AM_CPPFLAGS = \ +  + modesetting_drv_la_LTLIBRARIES = modesetting_drv.la + modesetting_drv_la_LDFLAGS = -module -avoid-version +-modesetting_drv_la_LIBADD = $(UDEV_LIBS) $(DRM_LIBS) ++modesetting_drv_la_LIBADD = $(UDEV_LIBS) $(DRM_LIBS) $(GBM_LIBS) + modesetting_drv_ladir = @moduledir@/drivers +  + modesetting_drv_la_SOURCES = \ diff --git a/package/xorgproto/Makefile b/package/xorgproto/Makefile index 264ee8da6..42b6879eb 100644 --- a/package/xorgproto/Makefile +++ b/package/xorgproto/Makefile @@ -4,11 +4,11 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		xorgproto -PKG_VERSION:=		2021.5 +PKG_VERSION:=		2024.1  PKG_RELEASE:=		1  PKG_DESCR:=		xorg extension headers  PKG_SECTION:=		dev/header -PKG_HASH:=		be6ddd6590881452fdfa170c1c9ff87209a98d36155332cbf2ccbc431add86ff +PKG_HASH:=		4f6b9b4faf91e5df8265b71843a91fc73dc895be6210c84117a996545df296ce  PKG_SITES:=		http://www.x.org/releases/individual/proto/  PKG_OPTS:=              dev devonly diff --git a/package/xterm/Makefile b/package/xterm/Makefile index 4bc96d25d..0c6f1c634 100644 --- a/package/xterm/Makefile +++ b/package/xterm/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		xterm -PKG_VERSION:=		377 +PKG_VERSION:=		401  PKG_RELEASE:=		1 -PKG_HASH:=		db108fe7a45d8ed97e604721b58443b473649e61e263631bf8759f8618a990b2 +PKG_HASH:=		3da2b5e64cb49b03aa13057d85e62e1f2e64f7c744719c00d338d11cd3e6ca1a  PKG_DESCR:=		terminal emulator  PKG_SECTION:=		x11/apps  PKG_DEPENDS:=		libxaw libxt libncurses libxft fontconfig libuuid diff --git a/package/xterm/patches/patch-Makefile_in b/package/xterm/patches/patch-Makefile_in deleted file mode 100644 index 1282767e2..000000000 --- a/package/xterm/patches/patch-Makefile_in +++ /dev/null @@ -1,22 +0,0 @@ -	Fix shell compatibility problem. Note: this is rather hacky, as it -	changes the actual semantics of the code - instead of evaluating the -	shell statement when being used as parameter to a command, now the -	$(shell) function is being used and therefore the result computed at -	variable assignment stage. ---- xterm-259.orig/Makefile.in	2010-04-05 00:41:32.000000000 +0200 -+++ xterm-259/Makefile.in	2010-06-06 22:35:13.384934404 +0200 -@@ -175,10 +175,10 @@ resize$x : $(OBJS2) -  - charproc$o : main.h @CHARPROC_DEPS@ - ################################################################################ --actual_xterm  = `echo xterm|        sed '$(transform)'` --actual_resize = `echo resize|       sed '$(transform)'` --actual_uxterm = `echo uxterm|       sed '$(transform)'` --actual_k8term = `echo koi8rxterm|   sed '$(transform)'` -+actual_xterm  = $(shell echo xterm|        sed '$(transform)') -+actual_resize = $(shell echo resize|       sed '$(transform)') -+actual_uxterm = $(shell echo uxterm|       sed '$(transform)') -+actual_k8term = $(shell echo koi8rxterm|   sed '$(transform)') -  - binary_xterm  = $(actual_xterm)$x - binary_resize = $(actual_resize)$x diff --git a/package/xterm/patches/patch-main_c b/package/xterm/patches/patch-main_c deleted file mode 100644 index 96d2398c8..000000000 --- a/package/xterm/patches/patch-main_c +++ /dev/null @@ -1,41 +0,0 @@ ---- xterm-325.orig/main.c	2016-06-01 11:13:46.000000000 +0200 -+++ xterm-325/main.c	2016-09-09 22:25:42.000000000 +0200 -@@ -2637,7 +2637,7 @@ main(int argc, char *argv[]ENVP_ARG) -     } - } -  --#if defined(__osf__) || (defined(__GLIBC__) && !defined(USE_USG_PTYS)) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) -+#if defined(__osf__) || (defined(__linux__) && !defined(USE_USG_PTYS)) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) - #define USE_OPENPTY 1 - static int opened_tty = -1; - #endif -@@ -3204,7 +3204,7 @@ find_utmp(struct UTMP_STR *tofind) -  - #define close_fd(fd) close(fd), fd = -1 -  --#if defined(TIOCNOTTY) && (!defined(__GLIBC__) || (__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1))) -+#if defined(TIOCNOTTY) && defined(__linux__) - #define USE_NO_DEV_TTY 1 - #else - #define USE_NO_DEV_TTY 0 -@@ -3537,7 +3537,8 @@ spawnXTerm(XtermWidget xw) - 	    } - #endif /* __MVS__ */ -  --	    close_fd(ttyfd); -+	    // do not close it here -+	    // close_fd(ttyfd); - 	} -  - 	if (get_pty(&screen->respond, XDisplayString(screen->display))) { -@@ -3966,8 +3967,9 @@ spawnXTerm(XtermWidget xw) - 		   eg. by lineedit in the shell, or emacs, etc. then tio - 		   will have bad values.  Let's just get termio from the - 		   new tty and tailor it.  */ --		if (ttyGetAttr(ttyfd, &tio) == -1) -+		if (ttyGetAttr(ttyfd, &tio) == -1) { - 		    SysError(ERROR_TIOCGETP); -+		} - 		tio.c_lflag |= ECHOE; - #endif /* umips */ - 		/* Now is also the time to change the modes of the diff --git a/package/xterm/patches/patch-ptyx_h b/package/xterm/patches/patch-ptyx_h deleted file mode 100644 index 6fa2d72d2..000000000 --- a/package/xterm/patches/patch-ptyx_h +++ /dev/null @@ -1,11 +0,0 @@ ---- xterm-325.orig/ptyx.h	2016-05-29 22:32:48.000000000 +0200 -+++ xterm-325/ptyx.h	2016-09-09 22:25:42.000000000 +0200 -@@ -176,7 +176,7 @@ - #define USE_PTY_DEVICE 1 - #define USE_PTY_SEARCH 1 -  --#if defined(__osf__) || (defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && (__GLIBC_MINOR__ >= 1)) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) -+#if defined(__osf__) || defined(linux) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) - #undef USE_PTY_DEVICE - #undef USE_PTY_SEARCH - #define USE_PTS_DEVICE 1 diff --git a/package/xvidcore/Makefile b/package/xvidcore/Makefile index c7999cc4b..13e57b5a7 100644 --- a/package/xvidcore/Makefile +++ b/package/xvidcore/Makefile @@ -4,9 +4,9 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		xvidcore -PKG_VERSION:=		1.3.5 +PKG_VERSION:=		1.3.7  PKG_RELEASE:=		1 -PKG_HASH:=		165ba6a2a447a8375f7b06db5a3c91810181f2898166e7c8137401d7fc894cf0 +PKG_HASH:=		abbdcbd39555691dd1c9b4d08f0a031376a3b211652c0d8b3b8aa9be1303ce2d  PKG_DESCR:=		xvid codec library  PKG_SECTION:=		libs/video  PKG_URL:=		http://www.xvid.org/ diff --git a/package/xwayland/Makefile b/package/xwayland/Makefile index 2e0848cdd..5ec1dbc9a 100644 --- a/package/xwayland/Makefile +++ b/package/xwayland/Makefile @@ -4,18 +4,18 @@  include $(ADK_TOPDIR)/rules.mk  PKG_NAME:=		xwayland -PKG_VERSION:=		21.1.3 +PKG_VERSION:=		24.1.6  PKG_RELEASE:=		1 -PKG_HASH:=		ebc2757f39fd4c7db1654fd86591589c211aa20172d43a54f77ae567cedbf8a2 +PKG_HASH:=		737e612ca36bbdf415a911644eb7592cf9389846847b47fa46dc705bd754d2d7  PKG_DESCR:=		wayland server  PKG_SECTION:=		x11/drivers  PKG_DEPENDS:=		wayland wayland-protocols libepoxy libtirpc -PKG_DEPENDS+=		pixman libxkbfile libxfont2 font-util libressl +PKG_DEPENDS+=		pixman libxkbfile libxfont2 font-util libopenssl  PKG_DEPENDS+=		libxdmcp libxshmfence libx11 libxcb libxext  PKG_DEPENDS+=		libxau libfreetype libfontenc  PKG_BUILDDEP:=		wayland wayland-protocols libepoxy libtirpc  PKG_BUILDDEP+=		pixman xorgproto libxkbfile libXfont2 font-util -PKG_BUILDDEP+=		libressl libXdmcp libxshmfence libX11 libxcb +PKG_BUILDDEP+=		openssl libXdmcp libxshmfence libX11 libxcb  PKG_BUILDDEP+=		libXext libXau freetype libfontenc  PKG_URL:=		https://xorg.freedesktop.org/  PKG_SITES:=		https://www.x.org/releases/individual/xserver/ diff --git a/package/yaboot/Makefile b/package/yaboot/Makefile index 48ddcdba8..573440bc0 100644 --- a/package/yaboot/Makefile +++ b/package/yaboot/Makefile @@ -13,6 +13,8 @@ PKG_BUILDDEP:=		e2fsprogs  PKG_URL:=		http://yaboot.ozlabs.org/  PKG_SITES:=		http://yaboot.ozlabs.org/releases/ +PKG_ARCH_DEPENDS:=	ppc +  DISTFILES:=             $(PKG_NAME)-$(PKG_VERSION).tar.gz  include $(ADK_TOPDIR)/mk/package.mk diff --git a/package/yaml/Makefile b/package/yaml/Makefile new file mode 100644 index 000000000..f524ed1b4 --- /dev/null +++ b/package/yaml/Makefile @@ -0,0 +1,29 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:=		yaml +PKG_VERSION:=		0.2.5 +PKG_RELEASE:=		1 +PKG_HASH:=		c642ae9b75fee120b2d96c712538bd2cf283228d2337df2cf2988e3c02678ef4 +PKG_DESCR:=		yaml library +PKG_SECTION:=		libs/misc +PKG_SITES:=		https://github.com/yaml/libyaml/releases/download/$(PKG_VERSION)/ +PKG_OPTS:=		dev + +DISTFILES:=             $(PKG_NAME)-$(PKG_VERSION).tar.gz + +include $(ADK_TOPDIR)/mk/host.mk +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call HOST_template,YAML,yaml,$(PKG_VERSION)-${PKG_RELEASE})) +$(eval $(call PKG_template,YAML,yaml,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) + +yaml-install: +	$(INSTALL_DIR) $(IDIR_YAML)/usr/lib +	$(CP) $(WRKINST)/usr/lib/libyaml*.so* \ +		$(IDIR_YAML)/usr/lib + +include $(ADK_TOPDIR)/mk/host-bottom.mk +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/zip/Makefile b/package/zip/Makefile index 77f6c6f1c..991963c33 100644 --- a/package/zip/Makefile +++ b/package/zip/Makefile @@ -31,7 +31,7 @@ MAKE_FILE:=		unix/Makefile  ALL_TARGET:=		generic_gcc  host-build: -	(cd ${WRKBUILD} && env ${HOST_MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \ +	(cd ${WRKBUILD} && env ${HOST_MAKE_ENV} CC="$(HOST_CC) -std=gnu89" ${MAKE} -f ${MAKE_FILE} \  		${HOST_MAKE_FLAGS} ${ALL_TARGET})  zip-hostinstall: diff --git a/package/zip/patches/patch-timezone_c b/package/zip/patches/patch-timezone_c new file mode 100644 index 000000000..9f549df5c --- /dev/null +++ b/package/zip/patches/patch-timezone_c @@ -0,0 +1,10 @@ +--- zip30.orig/timezone.c	2004-11-13 09:35:12.000000000 +0100 ++++ zip30/timezone.c	2025-10-05 03:57:25.603996335 +0200 +@@ -41,6 +41,7 @@ + #include "timezone.h" + #include <ctype.h> + #include <errno.h> ++#include <time.h> +  + #ifdef IZTZ_DEFINESTDGLOBALS + long timezone = 0; diff --git a/package/zip/patches/patch-unix_configure b/package/zip/patches/patch-unix_configure new file mode 100644 index 000000000..d177b83f8 --- /dev/null +++ b/package/zip/patches/patch-unix_configure @@ -0,0 +1,14 @@ +--- zip30.orig/unix/configure	2008-06-20 05:32:20.000000000 +0200 ++++ zip30/unix/configure	2025-10-05 03:55:24.305239765 +0200 +@@ -519,7 +519,10 @@ done +  +  + echo Check for memset +-echo "int main(){ char k; memset(&k,0,0); return 0; }" > conftest.c ++cat > conftest.c << _EOF_ ++#include <string.h> ++int main(){ char k; memset(&k,0,0); return 0; } ++_EOF_ + $CC -o conftest conftest.c >/dev/null 2>/dev/null + [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DZMEM" +  diff --git a/scripts/create.sh b/scripts/create.sh index cc0099b4d..7ca6b3a3b 100755 --- a/scripts/create.sh +++ b/scripts/create.sh @@ -2,7 +2,7 @@  #-  # Copyright © 2010, 2011, 2012  #	Thorsten Glaser <tg@mirbsd.org> -# Copyright © 2010-2024 +# Copyright © 2010-2025  #	Waldemar Brodkorb <wbx@openadk.org>  #  # Provided that these terms and disclaimer and all copyright notices @@ -152,7 +152,7 @@ else  fi  if (( usegrub )); then -	tar -xOJf "$src" boot/grub/core.img >"$T/core.img" +	tar -xOzf "$src" boot/grub/core.img >"$T/core.img"  	integer coreimgsz=$($statcmd "$T/core.img")  	if (( coreimgsz < 1024 )); then  		print -u2 core.img is probably too small: $coreimgsz diff --git a/scripts/install.sh b/scripts/install.sh index 335607391..dd541c396 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -1,6 +1,6 @@  #!/usr/bin/env bash  #- -# Copyright © 2010-2023 +# Copyright © 2010-2025  #	Waldemar Brodkorb <wbx@openadk.org>  #	Thorsten Glaser <tg@mirbsd.org>  # @@ -127,13 +127,6 @@ case $ostype {  (Linux)  	tools="bc mkfs.ext4 mkfs.vfat tune2fs partprobe"  	;; -(Darwin) -	tools="bc diskutil" -	if [[ $paragon_ext == 0 ]]; then -	    export PATH=/usr/local/opt/e2fsprogs/sbin:/usr/local/opt/e2fsprogs/bin:$PATH -	    tools="$tools fuse-ext2 umount mkfs.ext4 tune2fs" -	fi -	;;  (*)  	print -u2 Sorry, not ported to the OS "'$ostype'" yet.  	exit 1 @@ -155,7 +148,7 @@ tgt=$2  src=$3  case $target { -(atmel-ngw100|banana-pro|banana-pro-zero|orange-pi0|pcengines-apu|phytec-imx6|phytec-wega|raspberry-pi|raspberry-pi0|raspberry-pi2|raspberry-pi3|raspberry-pi3-64|raspberry-pi4|raspberry-pi4-64|raspberry-pi5|rockpi4-plus|solidrun-imx6|solidrun-clearfog|imgtec-ci20|default) ;; +(atmel-ngw100|banana-pro|banana-pro-zero|orange-pi0|pcengines-apu|phytec-imx6|phytec-wega|raspberry-pi|raspberry-pi0|raspberry-pi2|raspberry-pi3|raspberry-pi3-64|raspberry-pi4|raspberry-pi4-64|raspberry-pi5|rockpi4-plus|solidrun-imx6|solidrun-clearfog|imgtec-ci20|hp-jornada|default) ;;  (*)  	print -u2 "Unknown target '$target', exiting"  	exit 1 ;; @@ -171,54 +164,6 @@ fi  (( quiet )) || print "Installing $src on $tgt."  case $ostype { -(Darwin) -	R=/Volumes/ADKROOT; diskutil unmount $R || umount $R -	B=/Volumes/ADKBOOT; diskutil unmount $B || umount $B -	D=/Volumes/ADKDATA; diskutil unmount $D || umount $D -	basedev=$tgt -	rootpart=${basedev}s1 -	datapart=${basedev}s2 -	if [[ $target = raspberry-pi || $target = raspberry-pi0 || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 || $target = raspberry-pi4 || $target = raspberry-pi4-64 || $target = raspberry-pi5 || $target = phytec-wega ]]; then -		bootpart=${basedev}s1 -		rootpart=${basedev}s2 -		datapart=${basedev}s3 -	fi -	match=\'${basedev}\''?(s+([0-9]))' -	function mount_fs { -	    if [[ $paragon_ext == 0 && $3 = ext4 ]]; then -		mkdir -p $2 -		fuse-ext2 "$1" "$2" -o rw+ -	    fi -	} -	function umount_fs { -		(( quiet )) || print "Unmounting filesystem on ${1}..." -	    if [[ $paragon_ext == 0 ]]; then -		umount "$1" || diskutil unmount "$1" || true -		rmdir $2 || true -	    else -		diskutil unmount "$1" -	    fi -	} -	function create_fs { -		(( quiet )) || printf "Creating filesystem on ${1}" -	    if [[ $paragon_ext == 0 && $3 = ext4 ]]; then -			mkfs.ext4 -L "$2" "$1" -	    else -			if [[ $3 = ext4 ]]; then -				fstype=UFSD_EXTFS4 -			fi -			if [[ $3 = vfat ]]; then -				fstype=fat32 -			fi -			diskutil eraseVolume $fstype "$2" "$1" -	    fi -	} -	function tune_fs { -	    if [[ $paragon_ext == 0 && $3 = ext4 ]]; then -			tune2fs -c 0 -i 0 "$1" -	    fi -	} -	;;  (Linux)  	basedev=$tgt @@ -277,12 +222,11 @@ if ! T=$(mktemp -d /tmp/openadk.XXXXXXXXXX); then  	print -u2 Error creating temporary directory.  	exit 1  fi -if [[ $ostype != Darwin ]]; then -	R=$T/rootmnt -	B=$T/bootmnt -	D=$T/datamnt -	mkdir -p "$R" "$B" "$D" -fi + +R=$T/rootmnt +B=$T/bootmnt +D=$T/datamnt +mkdir -p "$R" "$B" "$D"  # get disk size  dksz=$(dkgetsz "$tgt") diff --git a/scripts/prereq.sh b/scripts/prereq.sh index 8caa5d5f5..786d379c6 100755 --- a/scripts/prereq.sh +++ b/scripts/prereq.sh @@ -25,19 +25,6 @@ rm -f foo  echo >FOO  if [ -e foo ]; then    printf "ERROR: OpenADK cannot be built in a case-insensitive file system.\n" -  case $os in -    CYG*) -      printf "Building OpenADK on $os needs a small registry change.\n" -      printf "http://cygwin.com/cygwin-ug-net/using-specialnames.html\n" -      ;; -    Darwin*) -      printf "Building OpenADK on $os needs a case-sensitive disk partition.\n" -      printf "For Snow Leopard and above you can use diskutil to resize your existing disk.\n" -      printf "Example: sudo diskutil resizeVolume disk0s2 90G 1 jhfsx adk 30G\n" -      printf "For older versions you might consider to use a disk image:\n" -      printf "hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 30g ~/openadk.dmg\n" -      ;; -  esac    rm -f FOO    exit 1  fi @@ -110,11 +97,8 @@ if [ ! -d $topdir/dl ]; then  fi  # check for c compiler -if [ $os = "Darwin" ]; then -  compilerbins="clang cc gcc" -else -  compilerbins="cc gcc clang" -fi +compilerbins="cc gcc clang" +  for compilerbin in $compilerbins; do    printf " --->  checking if $compilerbin is installed.. "    if which $compilerbin >/dev/null; then @@ -133,11 +117,8 @@ if [ -z "$CCFOUND" ]; then  fi  # check for c++ compiler -if [ $os = "Darwin" ]; then -  compilerbins="clang++ c++ g++" -else -  compilerbins="c++ g++ clang++" -fi +compilerbins="c++ g++ clang++" +  for compilerbin in $compilerbins; do    printf " --->  checking if $compilerbin is installed.. "    if which $compilerbin >/dev/null; then @@ -755,36 +736,6 @@ case $os in      printf "\tbool\n" >> $topdir/target/config/Config.in.prereq      printf "\tdefault y\n" >> $topdir/target/config/Config.in.prereq      ;; -  Darwin) -    printf "\nconfig ADK_HOST_DARWIN\n" >> $topdir/target/config/Config.in.prereq -    printf "\tbool\n" >> $topdir/target/config/Config.in.prereq -    printf "\tdefault y\n" >> $topdir/target/config/Config.in.prereq -    ;; -  OpenBSD) -    printf "\nconfig ADK_HOST_OPENBSD\n" >> $topdir/target/config/Config.in.prereq -    printf "\tbool\n" >> $topdir/target/config/Config.in.prereq -    printf "\tdefault y\n" >> $topdir/target/config/Config.in.prereq -    ;; -  FreeBSD) -    printf "\nconfig ADK_HOST_FREEBSD\n" >> $topdir/target/config/Config.in.prereq -    printf "\tbool\n" >> $topdir/target/config/Config.in.prereq -    printf "\tdefault y\n" >> $topdir/target/config/Config.in.prereq -    ;; -  NetBSD) -    printf "\nconfig ADK_HOST_NETBSD\n" >> $topdir/target/config/Config.in.prereq -    printf "\tbool\n" >> $topdir/target/config/Config.in.prereq -    printf "\tdefault y\n" >> $topdir/target/config/Config.in.prereq -    ;; -  MirBSD) -    printf "\nconfig ADK_HOST_MIRBSD\n" >> $topdir/target/config/Config.in.prereq -    printf "\tbool\n" >> $topdir/target/config/Config.in.prereq -    printf "\tdefault y\n" >> $topdir/target/config/Config.in.prereq -    ;; -  Cygwin*) -    printf "\nconfig ADK_HOST_CYGWIN\n" >> $topdir/target/config/Config.in.prereq -    printf "\tbool\n" >> $topdir/target/config/Config.in.prereq -    printf "\tdefault y\n" >> $topdir/target/config/Config.in.prereq -    ;;  esac  if [ "$target" = "defconfig" ]; then @@ -800,6 +751,9 @@ else    # scan host-tool prerequisites of certain packages before building.    . $topdir/.config +  if [ -n "$ADK_TARGET_ARCH_X86_64" ]; then +    NEED_LIBELF="$NEED_LIBELF x86_64 arch" +  fi    if [ -n "$ADK_PACKAGE_FIREFOX" ]; then      NEED_RUST="$NEED_RUST firefox"    fi @@ -820,10 +774,6 @@ else      NEED_STATIC_LIBSTDCXX="$NEED_STATIC_LIBSTDCXX icu4c"    fi -  if [ -n "$ADK_PACKAGE_XKEYBOARD_CONFIG" ]; then -    NEED_XKBCOMP="$NEED_XKBCOMP xkeyboard-config" -  fi -    if [ -n "$ADK_PACKAGE_FONT_BH_100DPI" ]; then      NEED_MKFONTDIR="$NEED_MKFONTDIR font-bh-100dpi"    fi @@ -894,13 +844,6 @@ else      fi    fi -  if [ -n "$NEED_XKBCOMP" ]; then -    if ! which xkbcomp >/dev/null 2>&1; then -      printf "You need xkbcomp to build $NEED_XKBCOMP \n" -      out=1 -    fi -  fi -    if [ -n "$NEED_JAVA" ]; then      if ! which java >/dev/null 2>&1; then        printf "You need java to build $NEED_JAVA \n" @@ -936,6 +879,13 @@ else      fi    fi +  if [ -n "$NEED_LIBELF" ]; then +    if ! test -f /usr/include/gelf.h >/dev/null 2>&1; then +      printf "You need libelf-dev to build $NEED_LIBELF \n" +      out=1 +    fi +  fi +    if [ -n "$NEED_STATIC_LIBSTDCXX" ]; then  cat >test.c <<-'EOF'  	#include <stdio.h> diff --git a/scripts/slugimage.pl b/scripts/slugimage.pl new file mode 100755 index 000000000..366b239e9 --- /dev/null +++ b/scripts/slugimage.pl @@ -0,0 +1,1217 @@ +#!/usr/bin/env perl +#  +# SlugImage : Manipulate NSLU2 firmware images +#             Dwayne Fontenot (jacques) +#             Rod Whitby (rwhitby) +#	      www.nslu2-linux.org +# +# Copyright (c) 2004, 2006, Dwayne Fontenot & Rod Whitby +# All rights reserved. +#  +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +#  +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# Neither the name of the NSLU2-Linux Development Team nor the names +# of its contributors may be used to endorse or promote products +# derived from this software without specific prior written +# permission. +#  +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# + +use strict; +use warnings; + +use Getopt::Long qw(:config no_ignore_case); +use File::Temp qw(tempfile); + +my($debug) = 0; +my($quiet) = 0; +my($flash_start)    = 0x50000000; +my($flash_len)      = 0x00800000; +my($block_size)     = 0x00020000; +my($kernel_offset)  = 0x00060000; +my($kernel_size)    = 0x00100000; +my($ramdisk_offset) = 0x00160000; +my(@cleanup); + +# The last 70 bytes of the SercommRedBootTrailer (i.e. excluding MAC +# address).  Needed to create an image with an empty RedBoot partition +# since the Sercomm upgrade tool checks for this trailer. +# http://www.nslu2-linux.org/wiki/Info/SercommRedBootTrailer +my @sercomm_redboot_trailer = (0x4573, 0x4372, 0x4d6f, 0x006d, 0x0001, +       0x0400, 0x3170, 0x5895, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, +       0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +       0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0003, 0x2300, +       0x0063, 0x0000, 0x7320, 0x7245, 0x6f43, 0x6d4d); + +# There's a 16 byte Sercomm trailer at the end of the flash. It is used +# by RedBoot to detect a Sercomm flash layout and to configure the +# Sercomm upgrade system. +# http://www.nslu2-linux.org/wiki/Info/SercommFlashTrailer +my @sercomm_flash_trailer = (0x0100, 0x0000, 0x6323, 0xf790, 0x5265, +                             0x4f63, 0x4d6d, 0xb400); + +# Take $data, and pad it out to $total_len bytes, appending 0xff's. +sub padBytes { +    my($data,$total_len) = @_; + +    # 0xFF is used to pad, as it's the erase value of the flash. +    my($pad_char) = pack("C",0xff); +    my($pad_len) = $total_len - length($data); + +    # A request for negative padding is indicative of a logic error ... +    if (length($data) > $total_len) { +	die sprintf("padBytes error: data (%d) is longer than total_len (%d)", length($data), $total_len); +    } + +    return $data . ($pad_char x $pad_len); +} + +# Return the next multiple of block_size larger than or equal to $data_len. +sub paddedSize { +    my($data_len) = @_; + +    use integer; +    return (($data_len - 1) / $block_size) * $block_size + $block_size; +} + +# Return the number of block_size blocks required to hold $data_len. +sub numBlocks { +    my($data_len) = @_; + +    use integer; +    return (($data_len - 1) / $block_size) + 1; +} + +# Pack the name, address, size and optional skip regions of a partition entry into binary form. +sub createPartitionEntry { +    my($name, $flash_base, $size, $skips) = @_; +    my $entry; + +    my($zero_long) = 0x0000; + +    # Pack the partition entry according to the format that RedBoot (and the MTD partition parsing code) requires. +    $entry = pack("a16N5x212N2",$name,$flash_base,$zero_long,$size,$zero_long,$zero_long,$zero_long,$zero_long); + +    # Optionally put a skip header into the padding area. +    if (defined $skips) { +	my $i = scalar(@$skips); +	foreach my $region (@$skips) { +	    substr($entry, -8 - 12*$i, 12) = +		pack("a4N2", "skip", $region->{'offset'}, $region->{'size'}); +	    $i--; +	} +    } + +    return $entry; +} + +# Parse partition entry and return anon array ref [$name, $offset, $size, $skip] or return 0 on partition terminator. +sub parsePartitionEntry { +    my($partition_entry) = @_; + +    my($entry_len) = 0x100; +    length($partition_entry) eq $entry_len or die "parsePartitionEntry: partition entry length is not $entry_len!\n"; + +    # Unpack the partition table entry, saving those values in which we are interested. +    my($name, $flash_base, $size, $dummy_long, $padding, $skips); +    ($name, $flash_base, $dummy_long, $size, $dummy_long, $dummy_long, $padding, $dummy_long, $dummy_long) = +	unpack("a16N5a212N2",$partition_entry); + +    # A partition entry starting with 0xFF terminates the table. +    if (unpack("C", $name) eq 0xff) { +	# %%% FIXME: This should only skip, not terminate. %%% +	$debug and print "Found terminator for <FIS directory>\n"; +	return 0; +    } + +    # Remove trailing nulls from the partition name. +    $name =~ s/\000+//; + +    # Extract the skip regions out of the padding area. +    $padding =~ s/^\000+//; +    $padding =~ s/\000*skip(........)\000*/$1/g; +    $padding =~ s/\000+$//; + +    # Store the skip regions in an array for later use. +    while (length($padding)) { +	my $region = {}; +	($region->{'offset'}, $region->{'size'}) = +	    unpack("N2", $padding); +	$debug and printf("Found skip region at 0x%05X, size 0x%05X\n", +			  $region->{'offset'}, $region->{'size'}); +	push(@$skips, $region); +	$padding = substr($padding,8); +    } + +    return [$name, $flash_base - $flash_start, $size, $skips]; +} + +# Return partition table from data is one exists, otherwise return 0. +sub findPartitionTable { +    my($data_buf) = @_; + +    unpack("a7", $data_buf) eq 'RedBoot' or return 0; +    return substr($data_buf, 0, 0x1000) +} + +# Parse partition table and return array of anonymous array references ([$name, $offset, $size, $skips], ...). +sub parsePartitionTable { +    my($partition_table) = @_; + +    my(@partitions, $fields_ref); +    my($entry_len) = 0x100; +    my($partition_count) = 0; + +    # Loop through the fixed size partition table entries, and store the entries in @partitions. +    # %%% FIXME: This doesn't handle the case of a completely full partition table. %%% +    while ($fields_ref = parsePartitionEntry(substr($partition_table, $partition_count * $entry_len, $entry_len))) { +	$debug and printf("Found <%s> at 0x%08X (%s)%s\n", $fields_ref->[0], $fields_ref->[1], +			  ($fields_ref->[2] >= $block_size ? +			   sprintf("%d blocks", numBlocks($fields_ref->[2])) : +			   sprintf("0x%05X bytes", $fields_ref->[2])), +			  (defined $fields_ref->[3] ? +			   sprintf(" [%s]", +				   join(", ", +					map { sprintf("0x%05X/0x%05X", $_->{'offset'},$_->{'size'}) } +					@{$fields_ref->[3]})) : +			   "")); +	$partitions[$partition_count++] = $fields_ref; +    } +    return(@partitions); +} + +# Create an empty jffs2 block. +sub jffs2Block { +    return padBytes(pack("N3", 0x19852003, 0x0000000c, 0xf060dc98), $block_size); +} + +# Write out $data to $filename, +sub writeOut { +    my($data, $filename) = @_; + +    open FILE,">$filename" or die "Can't open file \"$filename\": $!\n"; + +    if (defined($data)) { print FILE $data;} + +    close FILE or die "Can't close file \"$filename\": $!\n"; +} + +# Not used at the moment. +sub trailerData { +    my($product_id)       = 0x0001; +    my($protocol_id)      = 0x0000; +    my($firmware_version) = 0x2325; +    my($unknown1)         = 0x90f7; +    my($magic_number)     = 'eRcOmM'; +    my($unknown2)         = 0x00b9; + +    return pack("n4a6n",$product_id,$protocol_id,$firmware_version,$unknown1,$magic_number,$unknown2); +} + +# Print the contents of the Sercomm RedBoot trailer. +sub printRedbootTrailer { +    my($redboot_data) = @_; + +    my($correct_redboot_len) = 0x40000; +    my($redboot_data_len) = length($redboot_data); + +    if ($redboot_data_len != $correct_redboot_len) { +	printf("Redboot length (0x%08X) is not 0x%08X\n", $redboot_data_len, $correct_redboot_len); +	return; +    } + +    # The trailer is the last 80 bytes of the redboot partition. +    my($redboot_trailer) = substr($redboot_data, -80); + +    writeOut($redboot_trailer, 'RedbootTrailer'); + +    my($mac_addr0, $mac_addr1, $mac_addr2, $unknown, $prefix, $ver_ctrl, $down_ctrl, $hid, $hver, $prodid, $prodidmask, +       $protid, $protidmask, $funcid, $funcidmask, $fver, $cseg, $csize, $postfix) = +	   unpack("n3Na7n2a32n10a7",$redboot_trailer); + +    printf("MAC address is %04X%04X%04X\n", $mac_addr0, $mac_addr1, $mac_addr2); +    printf("unknown: %08X\n", $unknown); +    printf("%s:%04X:%04X:%s\n", $prefix, $ver_ctrl, $down_ctrl, $postfix); +    printf("VerControl: %04X\nDownControl: %04X\n", $ver_ctrl, $down_ctrl); +    printf("hid: %04X %04X %04X %04X %04X %04X %04X %04X %04X %04X %04X %04X %04X %04X %04X %04X\n", unpack("n16", $hid)); +    printf("Hver: %04X\nProdID: %04X\nProtID: %04X\nFuncID: %04X\nFver: %04X\nCseg: %04X\nCsize: %04X\n", +	   $hver, $prodid, $protid, $funcid, $fver, $cseg, $csize); +} + +# remove the optional Loader partition +sub removeOptionalLoader { +    my($partitions_ref) = @_; + +    my $index; +    my $count = 0; +    map { +	if (not defined $index) { +	    if ($_->{'name'} eq "Loader") { +		$index = $count; +	    } +	    $count++; +	} +    } @$partitions_ref; +     +    defined $index or die "Cannot find the Loader partition\n"; + +    splice(@$partitions_ref, $index, 1); + +    # Set fixed offsets and sizes for Kernel and Ramdisk +    map { +	if ($_->{'name'} eq 'Kernel') { +	    $_->{'offset'}   = $kernel_offset; +	    $_->{'size'}     = $kernel_size; +	    $_->{'variable'} = 0; +	} +	if ($_->{'name'} eq 'Ramdisk') { +	    $_->{'offset'}   = $ramdisk_offset; +	} +    } @$partitions_ref; + +    return; +} + + +# populate @partitions based on the firmware's partition table +sub spliceFirmwarePartitions { +    my($firmware_buf, $partitions_ref) = @_; + +    # we know that partition table, if it exists, begins at start of 'FIS directory' and has max length 0x1000 +    my($partition_table); +    map { +	$_->{'name'} eq 'FIS directory' and +	    $partition_table = findPartitionTable(substr($firmware_buf, $_->{'offset'}, $_->{'size'})); +    } @$partitions_ref; + +    # return 0 here if no partition table in FIS directory +    return if not $partition_table; + +    my @new_partitions = parsePartitionTable($partition_table); + +    # Remove the optional second stage bootloader if it is not found in the FIS directory. +    if (not grep { $_->[0] eq 'Loader' } @new_partitions) { +	removeOptionalLoader($partitions_ref); +    } + +    my($partition_count) = 0; +    my($splice) = 0; +    map { + +	# Skip pseudo partitions. +	while (($partition_count < scalar(@$partitions_ref)) and +	       $partitions_ref->[$partition_count]->{'pseudo'}) { +	    $debug and printf("Skipped <%s> (pseudo partition)\n", $partitions_ref->[$partition_count]->{'name'}); +	    $partition_count++; +	} + +	# If we are in a variable area, and we haven't reached the end of it, +	# then splice in another partition for use by the later code. +	if ($splice and ($partitions_ref->[$partition_count]->{'name'} ne $_->[0])) { +	    $debug and printf("Splicing new partition <%s> before <%s>\n", +			      $_->[0], $partitions_ref->[$partition_count]->{'name'}); +	    splice(@{$partitions_ref}, $partition_count, 0, ({'name' => "",'variable'=>1,'header'=>0})); +	} + +	my $partition = $partitions_ref->[$partition_count]; + +	# Variable partitions can be overridden by the real FIS directory +	if ($partition->{'variable'}) { + +	    # Only override the filename if the partition name is not set or doesn't match +	    if ($partition->{'name'} ne $_->[0]) { + +		if (length($partition->{'name'})) { +		    $debug and printf("Overwriting <%s> with <%s>\n", +				      $partitions_ref->[$partition_count]->{'name'}, $_->[0]); +		} + +		$partition->{'name'} = $_->[0]; +		$partition->{'file'} = $_->[0]; +	    } + +	    # Set the offset, size and skips based on the real partition table +	    $partition->{'offset'} = $_->[1]; +	    $partition->{'size'}   = $_->[2]; +	    $partition->{'skips'}  = $_->[3]; + +	    $debug and printf("Locating <%s> at 0x%08X (%s)\n", +			      $partition->{'name'}, $partition->{'offset'}, +			      ($partition->{'size'} >= $block_size ? +			       sprintf("%d blocks", numBlocks($partition->{'size'})) : +			       sprintf("0x%05X bytes", $partition->{'size'}))); + +	    $splice = 1; +	} + +	# Fixed partitions cannot be overridden +	else { +	    ($partition->{'name'} eq $_->[0]) or +		die "Unexpected partition <",$_->[0],"> (expecting <",$partition->{'name'},">)\n"; + +	    $debug and printf("Locating <%s> at 0x%08X (%s)\n", +			      $partition->{'name'}, $partition->{'offset'}, +			      ($partition->{'size'} >= $block_size ? +			       sprintf("%d blocks", numBlocks($partition->{'size'})) : +			       sprintf("0x%05X bytes", $partition->{'size'}))); +	     +	    $splice = 0; +	} +	 +	$partition_count++; + +    } @new_partitions; + +    return; +} + +# Read in an 8MB firmware file, and store the data into @partitions. +# Note that the data is only stored in a partition if 'offset' and 'size' are defined, +# and it does not already have data stored in it. +sub readInFirmware { +    my($filename, $partitions_ref) = @_; + +    my($firmware_buf); + +    open FILE,$filename or die "Can't find firmware image \"$filename\": $!\n"; +    read FILE,$firmware_buf,$flash_len or die "Can't read $flash_len bytes from \"$filename\": $!\n"; +    close FILE or die "Can't close \"$filename\": $!\n"; + +    $debug and printf("Read 0x%08X bytes from \"%s\"\n", length($firmware_buf), $filename); + +    spliceFirmwarePartitions($firmware_buf, $partitions_ref); + +    # Read the parts of the firmware file into the partitions table. +    map { +	if (defined $_->{'offset'} and defined $_->{'size'}) { + +	    if (defined $_->{'data'}) { +		$debug and printf("Not overwriting data in <%s>\n", $_->{'name'}); +	    } +	    else { + +		# Slurp up the data, based on whether a header and/or data is present or not +		if ($_->{'header'}) { + +		    # Read the length, and grab the data based on the length. +		    my($data_len) = unpack("N", substr($firmware_buf, $_->{'offset'})); + +		    # A length of 0xFFFFFFFF means that the area is not initialised +		    if ($data_len != 0xFFFFFFFF) { +			$debug and printf("Found header size of 0x%08X bytes for <%s>\n", $data_len, $_->{'name'}); +			$_->{'data'} = substr($firmware_buf, $_->{'offset'} + $_->{'header'}, $data_len); +		    } +		} +		elsif ($_->{'pseudo'} and not defined $_->{'file'} and +		       (substr($firmware_buf, $_->{'offset'}, $_->{'size'}) eq +			(pack("C", 0xff) x $_->{'size'}))) { +		    $debug and printf("Skipping empty pseudo partition <%s>\n", $_->{'name'}); +		} +		else { + +		    # Grab the whole partition, using the maximum size. +		    $_->{'data'} = substr($firmware_buf, $_->{'offset'}, $_->{'size'}); +		} + +		# If skip regions are defined, remove them from the data. +		if (defined $_->{'skips'}) { +		    my $removed = 0; +		    foreach my $region (@{$_->{'skips'}}) { +			if (($region->{'offset'} > 0) or +			    not ($_->{'header'} > 0)) { +			    $debug and printf("Removing 0x%05X bytes from offset 0x%05X\n", +					      $region->{'size'}, $region->{'offset'}); +			    $region->{'data'} = substr($_->{'data'}, $region->{'offset'} - $removed, $region->{'size'}, ''); +			} +			$removed += $region->{'size'}; +		    } +		} + +		$quiet or defined $_->{'data'} and printf("Read %s into <%s>\n", +							  (length($_->{'data'}) >= $block_size ? +							   sprintf("%d blocks", numBlocks(length($_->{'data'}))) : +							   sprintf("0x%05X bytes", length($_->{'data'}))), $_->{'name'}); +	    } +	} +    } @$partitions_ref; +} + +# Write the partition data stored in memory out into the files associated with each. +sub writeOutFirmwareParts { +    my(@partitions) = @_; + +    # Write out the parts of the firmware file. +    map { + +	# We can only write if 'data' and 'file' are defined. +	if (defined $_->{'file'} and defined $_->{'data'} and length($_->{'data'})) { +	    writeOut($_->{'data'}, $_->{'file'}); +	    $quiet or printf("Wrote 0x%08X bytes from <%s> into \"%s\"\n", +			      length($_->{'data'}), $_->{'name'}, $_->{'file'}); +	} +	else { +	    $debug and printf("Skipping <%s> (%s)\n", $_->{'name'}, +			      (not defined $_->{'file'}) ? +			      "no filename specified" : +			      "no data to write"); +	} + +    } @partitions; + +    return; +} + +# Read in the partition data from the files associated with each and store in memory. +sub readInFirmwareParts { +    my(@partitions) = (@_); +     +    undef $/; # we want to slurp + +    map { + +	my $file = $_->{'file'}; +	if (defined $file) { +	    open FILE,$file or die "Can't find firmware part \"$file\": $!\n"; + +	    # Slurp in the data +	    $_->{'data'} = <FILE>; + +	    # close the file +	    close FILE or die "Can't close file \"$file\": $!\n"; + +	    # Optionally byteswap the data +	    if ($_->{'byteswap'}) { +		# Byte swap the data (which has to be padded to a multiple of 4 bytes). +		$_->{'data'} = pack("N*", unpack("V*", $_->{'data'}.pack("CCC", 0))); +	    } + +	    # Keep track of the actual size. +	    my $size; + +	    if ($_->{'header'}) { +		if ($_->{'pseudo'}) { +		    $size = $_->{'header'} + length($_->{'data'}); +		} +		else { +		    $size = paddedSize($_->{'header'} + length($_->{'data'})); +		} +	    } +	    elsif (not $_->{'pseudo'}) { +		$size = paddedSize(length($_->{'data'})); +	    } +	    else { +		$size = length($_->{'data'}); +	    } + +	    # Check to make sure the file contents are not too large. +	    if (defined $_->{'size'} and ($size > $_->{'size'})) { +		die sprintf("Ran out of flash space in <%s> - %s too large.\n", $_->{'name'}, +			    sprintf("0x%05X bytes", ($size - $_->{'size'}))); +	    } + +	    # If the partition does not have a fixed size, the calculate the size. +	    if (not defined $_->{'size'}) { +		$_->{'size'} = $size; +	    } + +	    # Keep the user appraised ... +	    $quiet or printf("Read 0x%08X bytes from \"%s\" into <%s> (%s / %s)%s\n", +			     length($_->{'data'}), $_->{'file'}, $_->{'name'}, +			     ($size >= $block_size ? +			      sprintf("%d blocks", numBlocks($size)) : +			      sprintf("0x%05X bytes", $size)), +			     ($_->{'size'} >= $block_size ? +			      sprintf("%d blocks", numBlocks($_->{'size'})) : +			      sprintf("0x%05X bytes", $_->{'size'})), +			     ($_->{'byteswap'} ? " (byte-swapped)" : "")); +	} + +    } @partitions; + +    return; +} + +# layoutPartitions : this function must be ugly - it needs to verify RedBoot, SysConf, Kernel, Ramdisk, and +#     FIS directory partitions exist, are in the correct order, and do not have more data than can fit in +#     their lengths (fixed for all but Ramdisk, which has a minimum length of one block). +#     If Rootdisk and/or Userdisk exist, it must also verify that their block padded lengths are not +#     too great for the available space. +# input : an array of hashes, some of which are populated with data +# output: same reference with start and size (partition not data) also populated. this populated structure +#         can then be passed to buildPartitionTable() to generate the actual partition table data +sub layoutPartitions { +    my(@partitions) = @_; + +    # Find the kernel partition, and save a pointer to it for later use +    my $kernel; +    map { ($_->{'name'} eq "Kernel") && ($kernel = $_); } @partitions; +    $kernel or die "Couldn't find the kernel partition\n"; + +    # Find the last variable size partition, and save a pointer to it for later use +    my $lastdisk; +    my $directory_offset; +    my $curdisk = $partitions[0]; +    map { +	if (not defined $lastdisk) { +	    if ($_->{'name'} eq "FIS directory") { +		$lastdisk = $curdisk; +		$directory_offset = $_->{'offset'}; +	    } +	    else { +		$curdisk = $_; +	    } +	} +    } @partitions; + +    $lastdisk or die "Couldn't find the last variable size partition\n"; + +    $debug and printf("Last variable size partition is <%s>\n", $lastdisk->{'name'}); + +    # +    # here we go through the $partitions array ref and fill in all the values +    # + +    # This points to where the next partition should be placed. +    my $pointer = $flash_start; + +    map { + +	$debug and printf("Pointer is 0x%08X\n", $pointer); + +	# Determine the start and offset of the current partition. +	if (defined $_->{'offset'}) { +	    $_->{'start'} = $flash_start + $_->{'offset'}; +	    # Check for running past the defined start of the partition. +	    if (($pointer > $_->{'start'}) and not $_->{'pseudo'}) { +		die sprintf("Ran out of flash space before <%s> - %s too large.\n", $_->{'name'}, +			    sprintf("0x%05X bytes", ($pointer - $_->{'start'}))); +	    } +	} + +	# If offset is not defined, then calculate it. +	else { +	    $_->{'start'} = $pointer; +	    $_->{'offset'} = $_->{'start'} - $flash_start; +	} + +	my $size = defined $_->{'data'} ? length($_->{'data'}) : 0; + +	# Add skip regions for the partitions with headers. +	if ($_->{'header'} > 0) { +	    # Define the skip region for the initial Sercomm header. +	    push(@{$_->{'skips'}}, +		 { 'offset' => 0, 'size' => $_->{'header'}, 'data' => undef }); +	    # Allow for the Sercomm header to be prepended to the data. +	    $size += $_->{'header'}; + +	    # Determine if the partition overlaps the ramdisk boundary. +	    if (($_->{'offset'} < $ramdisk_offset) and +		(($_->{'offset'} + $size) > $ramdisk_offset)) { +		# Define the skip region for the inline Sercomm header. +		push(@{$_->{'skips'}}, +		     { 'offset' => ($ramdisk_offset - $_->{'offset'}), 'size' => 16, +		       'data' => pack("N4", $block_size) }); +		# Allow for the Sercomm header to be inserted in the data. +		$size += 16; +	    } +	} + +	# Partitions without headers cannot have skip regions. +	elsif (($_->{'offset'} <= $ramdisk_offset) and +	       (($_->{'offset'} + $size) > $ramdisk_offset)) { +	    # Pad the kernel until it extends past the ramdisk offset. +	    push(@{$kernel->{'skips'}}, +		 { 'offset' => ($ramdisk_offset - $kernel->{'offset'}), 'size' => 16, +		   'data' => pack("N4", $block_size) }); +	    $kernel->{'size'} = $ramdisk_offset - $kernel->{'offset'} + $block_size; +	    $kernel->{'data'} = padBytes($kernel->{'data'}, +					 $kernel->{'size'} - $kernel->{'header'} - 16); +	    $_->{'offset'} = $ramdisk_offset + $block_size; +	    $_->{'start'} = $flash_start + $_->{'offset'}; +	    $pointer = $_->{'start'}; +	    $debug and printf("Extending kernel partition past ramdisk offset.\n"); +	} + +	# If this is the last variable size partition, then fill the rest of the space. +	if ($_->{'name'} eq $lastdisk->{'name'}) { +	    $_->{'size'} = paddedSize($directory_offset + $flash_start - $pointer); +	    $debug and printf("Padding last variable partition <%s> to 0x%08X bytes\n", $_->{'name'}, $_->{'size'}); +	} + +	die sprintf("Partition size not defined in <%s>.\n", $_->{'name'}) +	    unless defined $_->{'size'}; + +	# Extend to another block if required. +	if ($size > $_->{'size'}) { +	    if ($_->{'name'} eq $lastdisk->{'name'}) { +		die sprintf("Ran out of flash space in <%s> - %s too large.\n", $_->{'name'}, +			    sprintf("0x%05X bytes", ($size - $_->{'size'}))); +	    } +	    $_->{'size'} = $size; +	    printf("Extending partition <%s> to 0x%08X bytes\n", $_->{'name'}, $_->{'size'}); +	} + +	# Keep the user appraised ... +	$debug and printf("Allocated <%s> from 0x%08X to 0x%08X (%s / %s)\n", +			  $_->{'name'}, $_->{'start'}, $_->{'start'} + $_->{'size'}, +			  ($size >= $block_size ? +			   sprintf("%d blocks", numBlocks($size)) : +			   sprintf("0x%05X bytes", $size)), +			  ($_->{'size'} >= $block_size ? +			   sprintf("%d blocks", numBlocks($_->{'size'})) : +			   sprintf("0x%05X bytes", $_->{'size'}))); + +	# Check to make sure we have not run out of room. +	if (($_->{'start'} + $_->{'size'}) > ($flash_start + $flash_len)) { +	    die "Ran out of flash space in <", $_->{'name'}, ">\n"; +	} + +	$debug and printf("Moving pointer from 0x%08X to 0x%08X (0x%08X + 0x%08X)\n", +			  $pointer, paddedSize($_->{'start'} + $_->{'size'}), +			  $_->{'start'}, $_->{'size'}); + +	# Move the pointer up, in preparation for the next partition. +	$pointer = paddedSize($_->{'start'} + $_->{'size'}); + +    } @partitions; + +    return; +} + +sub buildPartitionTable { +    my(@partitions) = @_; + +    my($flash_start) = 0x50000000; +    my($partition_data) = ''; + +    map { + +	# Collate the partition data for all known partitions. +	if (not $_->{'pseudo'} and defined $_->{'offset'} and defined $_->{'size'}) { + +	    # Pack and append the binary table entry for this partition. +	    $partition_data .= createPartitionEntry($_->{'name'}, $_->{'offset'} + $flash_start, +						    $_->{'size'}, $_->{'skips'}); + +	    # If this is the FIS directory, then write the partition table data into it. +	    if ($_->{'name'} eq "FIS directory") { +		# Explicitly terminate the partition data. +		$partition_data .= pack("C",0xff) x 0x100; +		$_->{'data'} = padBytes($partition_data, $_->{'size'}); +	    } + +	    my $size = length($_->{'data'}); + +	    # Keep the user appraised ... +	    $debug and printf("Table entry <%s> from 0x%08X to 0x%08X (%s / %s)%s\n", +			      $_->{'name'}, $_->{'start'}, $_->{'start'} + $_->{'size'}, +			      ($size >= $block_size ? +			       sprintf("%d blocks", numBlocks($size)) : +			       sprintf("0x%05X bytes", $size)), +			      ($_->{'size'} >= $block_size ? +			       sprintf("%d blocks", numBlocks($_->{'size'})) : +			       sprintf("0x%05X bytes", $_->{'size'})), +			      (defined $_->{'skips'} ? +			       sprintf("\nTable entry <%s> skip %s", $_->{'name'}, +				       join(", ", +					    map { sprintf("0x%08X to 0x%08X", $_->{'offset'}, +							  $_->{'offset'} + $_->{'size'} - 1) } +					    @{$_->{'skips'}})) : +			       "") +			      ); +	} +	else { +	    $debug and print "No table entry required for <", $_->{'name'}, ">\n"; +	} + +    } @partitions; + +    return; +} + +sub writeOutFirmware { +    my($filename, @partitions) = @_; + +    # Clear the image to start. +    my $image_buf = ""; + +    map { + +	# We can only write a partition if it has an offset, a size, and some data to write. +	if (defined $_->{'offset'} and defined $_->{'size'} and defined $_->{'data'}) { + +	    # Keep track of the end of the image. +	    my $end_point = length($image_buf); + +	    # If the next partition is well past the end of the current image, then pad it. +	    if ($_->{'offset'} > $end_point) { +		$image_buf .= padBytes("", $_->{'offset'} - $end_point); +		$quiet or printf("Padded %s before <%s> in \"%s\"\n", +				 ((length($image_buf) - $end_point) >= $block_size ? +				  sprintf("%d blocks", numBlocks(length($image_buf) - $end_point)) : +				  sprintf("0x%05X bytes", length($image_buf) - $end_point)), +				 $_->{'name'}, $filename); +	    } + +	    # If the next partition is before the end of the current image, then rewind. +	    elsif ($_->{'offset'} < $end_point) { +		$debug and printf("Rewound %s before <%s> in \"%s\"\n", +				  (($end_point - $_->{'offset'}) >= $block_size ? +				   sprintf("%d blocks", numBlocks($end_point - $_->{'offset'})) : +				   sprintf("0x%05X bytes", $end_point - $_->{'offset'})), +				  $_->{'name'}, $filename); +# 		if (($end_point - $_->{'offset'}) >= $block_size) { +# 		    die "Allocation error: rewound a full block or more ...\n"; +# 		} +	    } + +	    # If skip regions are defined, add them to the data. +	    if (defined $_->{'skips'}) { +		my $added = 0; +		foreach my $region (@{$_->{'skips'}}) { +		    if (($region->{'offset'} > 0) or +			not ($_->{'header'} > 0)) { +			$debug and printf("Inserted 0x%05X bytes (at offset 0x%05X) into <%s>\n", +					  $region->{'size'}, $region->{'offset'}, $_->{'name'}); +			substr($_->{'data'}, +			       $region->{'offset'} + $added - $_->{'header'}, +			       0, $region->{'data'}); +			$added += $region->{'size'}; +		    } +		} +	    } + +	    # Splice the data into the image at the appropriate place, padding as required. +	    substr($image_buf, $_->{'offset'}, $_->{'size'}, +		   $_->{'header'} ? +		   padBytes(pack("N4",length($_->{'data'})).$_->{'data'}, $_->{'size'}) : +		   padBytes($_->{'data'}, $_->{'size'})); +	     +	    # Keep the user appraised ... +	    $quiet or printf("Wrote %s (0x%08X to 0x%08X) from <%s> into \"%s\"\n", +			     ($_->{'size'} >= $block_size ? +			      sprintf("%2d blocks", numBlocks($_->{'size'})) : +			      sprintf("0x%05X bytes", $_->{'size'})), +			     $_->{'offset'}, $_->{'offset'}+$_->{'size'}, $_->{'name'}, $filename); +	} + +	# If we are not able to write a partition, then give debug information about why. +	else { +	    $debug and printf("Skipping <%s> (%s)\n", $_->{'name'}, +			      (not defined $_->{'offset'}) ? "no offset defined" : +			      ((not defined $_->{'size'}) ? "no size defined" : +			       "no data available")); +	} + +    } @partitions; + +    # Write the image to the specified file. +    writeOut($image_buf, $filename); + +    return; +} + +# checkPartitionTable: sanity check partition table - for testing but might evolve into setting @partitions +#    so that we can write out jffs2 partitions from a read image +#    currently not nearly paranoid enough +sub checkPartitionTable { +    my($data) = @_; + +    my($pointer) = 0; +    my($entry); + +    my($name, $flash_base, $size, $done, $dummy_long, $padding); +    do { +	$entry = substr($data, $pointer, 0x100); + +	($name,$flash_base,$dummy_long,$size,$dummy_long,$dummy_long,$padding,$dummy_long,$dummy_long) = unpack("a16N5x212N2",$entry); +	$name =~ s/\0//g; +	$debug and printf("pointer: %d\tname: %s%sflash_base: 0x%08X\tsize: 0x%08X\n", +			  $pointer, $name, (" " x (16 - length($name))), $flash_base, $size); +	$pointer += 0x100; +	$debug and printf("terminator: 0x%08X\n", unpack("C", substr($data, $pointer, 1))); +	if (unpack("C", substr($data, $pointer, 1)) eq 0xff) { +	    $done = 1; +	} +    } until $done; +} + +sub printPartitions { +    my(@partitions) = @_; + +    my($offset, $size, $skips); +    map { +#	defined $_->{'size'} ? $size = $_->{'size'} : $size = undef; + +	if (defined  $_->{'size'}) { +	    $size = $_->{'size'}; +	} +	else { +	    $size = undef; +	} +	if (defined  $_->{'offset'}) { +	    $offset = $_->{'offset'}; +	} +	else { +	    $offset = undef; +	} +	if (defined  $_->{'skips'}) { +	    $skips = $_->{'skips'}; +	} +	else { +	    $skips = undef; +	} +	printf("%s%s", $_->{'name'}, (" " x (16 - length($_->{'name'})))); +	if (defined $offset) { printf("0x%08X\t", $offset); } else { printf("(undefined)\t");   }; +	if (defined $size)   { printf("0x%08X", $size); } else { printf("(undefined)"); }; +	if (defined $skips) { +	    printf("\t[%s]", +		   join(", ", +			map { sprintf("0x%05X/0x%05X", $_->{'offset'}, $_->{'size'}); } +			@$skips)); +	} +	printf("\n"); +    } @partitions; +} + +sub defaultPartitions { + +    return ({'name'=>'RedBoot',          'file'=>'RedBoot', +	     'offset'=>0x00000000,        'size'=>0x00040000, +	     'variable'=>0, 'header'=>0,  'pseudo'=>0, 'data'=>undef, 'byteswap'=>0}, +	    {'name'=>'EthAddr',           'file'=>undef, +	     'offset'=>0x0003ffb0,        'size'=>0x00000006, +	     'variable'=>0, 'header'=>0,  'pseudo'=>1, 'data'=>undef, 'byteswap'=>0}, +	    {'name'=>'SysConf',           'file'=>'SysConf', +	     'offset'=>0x00040000,        'size'=>0x00020000, +	     'variable'=>0, 'header'=>0,  'pseudo'=>0, 'data'=>undef, 'byteswap'=>0}, +	    {'name'=>'Loader',            'file'=>'apex.bin', +	     'offset'=>undef,             'size'=>undef, +	     'variable'=>1, 'header'=>16, 'pseudo'=>0, 'data'=>undef, 'byteswap'=>0}, +	    {'name'=>'Kernel',            'file'=>'vmlinuz', +	     'offset'=>undef,             'size'=>undef, +	     'variable'=>1, 'header'=>16, 'pseudo'=>0, 'data'=>undef, 'byteswap'=>0}, +	    {'name'=>'Ramdisk',           'file'=>'ramdisk.gz', +	     'offset'=>undef,             'size'=>undef, +	     'variable'=>1, 'header'=>16, 'pseudo'=>0, 'data'=>undef, 'byteswap'=>0}, +	    {'name'=>'FIS directory',     'file'=>undef, +	     'offset'=>0x007e0000,        'size'=>0x00020000, +	     'variable'=>0, 'header'=>0,  'pseudo'=>0, 'data'=>undef, 'byteswap'=>0}, +	    {'name'=>'Loader config',	  'file'=>undef, +	     'offset'=>0x007f8000,        'size'=>0x00004000, +	     'variable'=>0, 'header'=>0,  'pseudo'=>1, 'data'=>undef, 'byteswap'=>0}, +	    {'name'=>'Microcode',	  'file'=>'NPE-B', +	     'offset'=>0x007fc000,        'size'=>0x00003fe0, +	     'variable'=>0, 'header'=>16, 'pseudo'=>1, 'data'=>undef, 'byteswap'=>0}, +	    {'name'=>'Trailer',           'file'=>'Trailer', +	     'offset'=>0x007ffff0,        'size'=>0x00000010, +	     'variable'=>0, 'header'=>0,  'pseudo'=>1, 'data'=>undef, 'byteswap'=>0}); +} + +# Main routine starts here ... + +my($unpack, $pack, $little, $fatflash, $input, $output, $redboot); +my($kernel, $sysconf, $ramdisk, $fisdir); +my($microcode, $trailer, $ethaddr, $loader); + +END { +    # Remove temporary files +    for my $file (@cleanup) { +	unlink $file; +    } +} + +if (!GetOptions("d|debug"       => \$debug, +		"q|quiet"       => \$quiet, +		"u|unpack"      => \$unpack, +		"p|pack"        => \$pack, +		"l|little"      => \$little, +		"F|fatflash"    => \$fatflash, +		"i|input=s"     => \$input, +		"o|output=s"    => \$output, +		"b|redboot=s"   => \$redboot, +		"k|kernel=s"    => \$kernel, +		"s|sysconf=s"   => \$sysconf, +		"r|ramdisk=s"   => \$ramdisk, +		"f|fisdir=s"    => \$fisdir, +		"m|microcode=s" => \$microcode, +		"t|trailer=s"   => \$trailer, +		"e|ethaddr=s"   => \$ethaddr, +		"L|loader=s"    => \$loader, +		) or (not defined $pack and not defined $unpack)) { +    print "Usage: slugimage <options>\n"; +    print "\n"; +    print "  [-d|--debug]			Turn on debugging output\n"; +    print "  [-q|--quiet]			Turn off status messages\n"; +    print "  [-u|--unpack]			Unpack a firmware image\n"; +    print "  [-p|--pack]			Pack a firmware image\n"; +    print "  [-l|--little]			Convert Kernel and Ramdisk to little-endian\n"; +    print "  [-F|--fatflash]			Generate an image for 16MB flash\n"; +    print "  [-i|--input]     <file>		Input firmware image filename\n"; +    print "  [-o|--output]    <file>		Output firmware image filename\n"; +    print "  [-b|--redboot]   <file>		Input/Output RedBoot filename\n"; +    print "  [-s|--sysconf]   <file>		Input/Output SysConf filename\n"; +    print "  [-L|--loader]    <file>		Second stage boot loader filename\n"; +    print "  [-k|--kernel]    <file>		Input/Output Kernel filename\n"; +    print "  [-r|--ramdisk]   <file>		Input/Output Ramdisk filename(s)\n"; +    print "  [-f|--fisdir]    <file>		Input/Output FIS directory filename\n"; +    print "  [-m|--microcode] <file>		Input/Output Microcode filename\n"; +    print "  [-t|--trailer]   <file>		Input/Output Trailer filename\n"; +    print "  [-e|--ethaddr]   <AABBCCDDEEFF>	Set the Ethernet address\n"; + +    # %%% TODO %%% Document --ramdisk syntax + +    exit 1; +} + +my(@partitions) = defaultPartitions(); + +if ($pack) { +    die "Output filename must be specified\n" unless defined $output; + +    # If we're creating an image and no RedBoot, SysConf partition is +    # explicitly specified, simply write an empty one as the upgrade tools +    # don't touch RedBoot and SysConf anyway.  If no Trailer is specified, +    # put in one. +    if (not defined $redboot and not -e "RedBoot") { +	$redboot = tempfile(); +	open TMP, ">$redboot" or die "Cannot open file $redboot: $!"; +	push @cleanup, $redboot; +	# The RedBoot partition is 256 * 1024 = 262144; the trailer we add +	# is 70 bytes. +	print TMP "\0"x(262144-70); +	# Upgrade tools check for an appropriate Sercomm trailer. +	for my $i (@sercomm_redboot_trailer) { +	    print TMP pack "S", $i; +	} +	close TMP; +    } +    if (not defined $sysconf and not -e "SysConf") { +	$sysconf = tempfile(); +	open TMP, ">$sysconf" or die "Cannot open file $sysconf: $!"; +	push @cleanup, $sysconf; +	# The SysConf partition is 128 * 1024 = 131072 +	print TMP "\0"x131072; +	close TMP; +    } +    if (not defined $trailer and not -e "Trailer") { +	$trailer = tempfile(); +	open TMP, ">$trailer" or die "Cannot open file $trailer: $!"; +	push @cleanup, $trailer; +	for my $i (@sercomm_flash_trailer) { +	    print TMP pack "S", $i; +	} +	close TMP; +    } + +    # If the microcode was not specified, then don't complain that it's missing. +    if (not defined $microcode and not -e "NPE-B") { +	map { ($_->{'name'} eq 'Microcode') && ($_->{'file'} = undef);   } @partitions; +    } +} + +# Go through the partition options, and set the names and files in @partitions +if (defined $redboot)   { map { ($_->{'name'} eq 'RedBoot')	  && ($_->{'file'} = $redboot);   } @partitions; } +if (defined $sysconf)   { map { ($_->{'name'} eq 'SysConf')	  && ($_->{'file'} = $sysconf);   } @partitions; } +if (defined $loader)    { map { ($_->{'name'} eq 'Loader')	  && ($_->{'file'} = $loader);    } @partitions; } +if (defined $kernel)    { map { ($_->{'name'} eq 'Kernel')	  && ($_->{'file'} = $kernel);    } @partitions; } +if (defined $fisdir)    { map { ($_->{'name'} eq 'FIS directory') && ($_->{'file'} = $fisdir);    } @partitions; } +if (defined $microcode) { map { ($_->{'name'} eq 'Microcode')	  && ($_->{'file'} = $microcode); } @partitions; } +if (defined $trailer)   { map { ($_->{'name'} eq 'Trailer')	  && ($_->{'file'} = $trailer);   } @partitions; } + +if (defined $little)  { +    map { +	if (($_->{'name'} eq 'Loader') or +	    ($_->{'name'} eq 'Kernel') or +	    ($_->{'name'} eq 'Ramdisk')) { +	    $_->{'byteswap'} = 1; +	} +    } @partitions; +} + +if (defined $fatflash)  { +    $flash_len = 0x01000000; +    map { +	if (($_->{'name'} eq 'FIS directory') or +	    ($_->{'name'} eq 'Loader config') or +	    ($_->{'name'} eq 'Microcode') or +	    ($_->{'name'} eq 'Trailer')) { +	    $_->{'offset'} += 0x00800000; +	} +    } @partitions; +} + +if (defined $ethaddr) { +    map { +	if ($_->{'name'} eq 'EthAddr') { +	    $ethaddr =~ s/://g; +	    if (($ethaddr !~ m/^[0-9A-Fa-f]+$/) or (length($ethaddr) != 12)) { +		die "Invalid ethernet address specification: '".$ethaddr."'\n"; +	    } +	    $_->{'data'} = pack("H12", $ethaddr); +	} +    } @partitions; +} + +if (defined $ramdisk) { + +    # A single filename is used for the ramdisk filename +    if ($ramdisk !~ m/[:,]/) { +	map { ($_->{'name'} eq 'Ramdisk') && ($_->{'file'} = $ramdisk); } @partitions; +    } + +    # otherwise, it's a list of name:file mappings +    else { +	my @mappings = split(',', $ramdisk); + +	# Find the index of the Ramdisk entry +	my $index; +	my $count = 0; +	map { +	    if (not defined $index) { +		if ($_->{'name'} eq "Ramdisk") { +		    $index = $count; +		} +		$count++; +	    } +	} @partitions; + +	defined $index or die "Cannot find the Ramdisk partition\n"; + +	# Replace the Ramdisk entry with the new mappings +	splice(@partitions, $index, 1, map { + +	    # Preserve the information from the ramdisk entry +	    my %entry = %{$partitions[$index]}; + +	    # Parse the mapping +	    ($_ =~ m/^([^:]+):([^:]+)(:([^:]+))?$/) or die "Invalid syntax in --ramdisk\n"; +	    $entry{'name'} = $1; $entry{'file'} = $2; my $size = $4; + +	    # If the mapping is not for the ramdisk, then undefine its attributes +	    if ($entry{'name'} ne 'Ramdisk') { +		$entry{'offset'} = undef; +		$entry{'size'} = undef; +		$entry{'variable'} = 1; +		$entry{'header'} = 0; +		$entry{'pseudo'} = 0; +		$entry{'data'} = undef; +		$entry{'byteswap'} = 0; +	    } + +	    # Support specification of the number of blocks for empty jffs2 +	    if ($entry{'file'} =~ m/^[0-9]+$/) { +		$size = $entry{'file'}; +		$entry{'file'} = undef; +	    } + +	    # If the user has specified a size, then respect their wishes +	    if (defined $size) { +		$entry{'size'} = $size * $block_size; +		# Create an empty partition of the requested size. +		$entry{'data'} = padBytes("", $entry{'size'} - $entry{'header'}); +	    } + +	    \%entry; + +	} @mappings); +    } +} + +# Read in the firmware image +if ($input) { +    if ($debug) { +	print "Initial partition map:\n"; +	printPartitions(@partitions); +    } +     +    my $result = readInFirmware($input, \@partitions); + +    if ($debug) { +	print "After reading firmware:\n"; +	printPartitions(@partitions); +    } +} + +# Unpack the firmware if requested +if ($unpack) { +    die "Input filename must be specified\n" unless defined $input; + +#    map { +#	($_->{'name'} eq 'FIS directory') and @partitions = checkPartitionTable($_->{'data'}); +#    } @partitions; + +    writeOutFirmwareParts(@partitions); + +} + +# Pack the firmware if requested +if ($pack) { + +    if (!defined $loader) { +	removeOptionalLoader(\@partitions); +    } + +    if ($debug) { +	print "Initial partition map:\n"; +	printPartitions(@partitions); +    } +     +    my $result = readInFirmwareParts(@partitions); + +    if ($debug) { +	print "after readInFirmwareParts():\n"; +	printPartitions(@partitions); +# 	map { +# 	    ($_->{'name'} eq 'RedBoot') && (printRedbootTrailer($_->{'data'})); +# 	} @partitions; +    } +     +    layoutPartitions(@partitions); + +    if ($debug) { + 	print "after layoutPartitions():\n"; + 	printPartitions(@partitions); +    } +     +    buildPartitionTable(@partitions); + +    if ($debug) { + 	print "after buildPartitionTable():\n"; + 	printPartitions(@partitions); + +#  	my($lastblock); +#  	map { +#  	    if ($_->{'name'} eq 'FIS directory') { +#  		$lastblock = $_->{'data'}; +#  	    } +#  	} @partitions; + +#  	print "checkPartitionTable():\n"; +#  	checkPartitionTable($lastblock); +    } +     +    writeOutFirmware($output, @partitions); + +} + +exit 0; diff --git a/target/aarch64/Makefile b/target/aarch64/Makefile index a461cf4d3..e81b4dec5 100644 --- a/target/aarch64/Makefile +++ b/target/aarch64/Makefile @@ -9,9 +9,7 @@ KERNEL:=${LINUX_DIR}/arch/arm64/boot/Image  QEMU_ARGS:=${ADK_QEMU_ARGS}  QEMU_ARGS+=-M virt -cpu cortex-a57 -smp 1 -ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y)  QEMU_ARGS+=-netdev user,id=eth0 -device virtio-net-device,netdev=eth0 -endif  ifeq ($(ADK_TARGET_FS),archive)  QEMU_ARGS+=-device virtio-blk-device,drive=vda -drive file=qemu-${ADK_TARGET_CPU_ARCH}.img,if=none,id=vda,format=raw  endif diff --git a/target/aarch64/kernel/raspberry-pi4-64 b/target/aarch64/kernel/raspberry-pi4-64 index d818141cc..561ef1f16 100644 --- a/target/aarch64/kernel/raspberry-pi4-64 +++ b/target/aarch64/kernel/raspberry-pi4-64 @@ -926,15 +926,6 @@ CONFIG_THERMAL_GOV_STEP_WISE=y  CONFIG_BCM2711_THERMAL=y  CONFIG_BCM2835_THERMAL=y -CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_CORE=y -CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y -CONFIG_WATCHDOG_OPEN_TIMEOUT=0 - - -CONFIG_BCM2835_WDT=y - -  CONFIG_SSB_POSSIBLE=y  CONFIG_SSB_SPROM=y  CONFIG_SSB_BLOCKIO=y diff --git a/target/aarch64/uclibc-ng.config b/target/aarch64/uclibc-ng.config index 4d75e41c8..cf939adc7 100644 --- a/target/aarch64/uclibc-ng.config +++ b/target/aarch64/uclibc-ng.config @@ -1,6 +1,6 @@  #  # Automatically generated file; DO NOT EDIT. -# uClibc-ng 1.0.47 C Library Configuration +# uClibc-ng 1.0.51 C Library Configuration  #  TARGET_aarch64=y  # TARGET_alpha is not set @@ -60,6 +60,7 @@ UCLIBC_HAS_FLOATS=y  UCLIBC_HAS_FPU=y  DO_C99_MATH=y  DO_XSI_MATH=y +UCLIBC_HAS_FENV=y  UCLIBC_HAS_LONG_DOUBLE_MATH=y  KERNEL_HEADERS=""  HAVE_DOT_CONFIG=y @@ -247,7 +248,7 @@ UCLIBC_EXTRA_CFLAGS=""  # DODEBUG is not set  # DOSTRIP is not set  # DOASSERTS is not set -SUPPORT_LD_DEBUG=y +# SUPPORT_LD_DEBUG is not set  # SUPPORT_LD_DEBUG_EARLY is not set  # UCLIBC_MALLOC_DEBUGGING is not set  # UCLIBC_HAS_BACKTRACE is not set diff --git a/target/arc/kernel/synopsys-hsdk b/target/arc/kernel/synopsys-hsdk index 55ae3ccb6..a4e93f109 100644 --- a/target/arc/kernel/synopsys-hsdk +++ b/target/arc/kernel/synopsys-hsdk @@ -9,3 +9,9 @@ CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS=y  CONFIG_ARC_HAS_LL64=y  CONFIG_ARC_HAS_DIV_REM=y  CONFIG_ARC_HAS_ACCL_REGS=y +CONFIG_ARC_CACHE=y +CONFIG_ARC_CACHE_LINE_SHIFT=6 +CONFIG_ARC_HAS_ICACHE=y +CONFIG_ARC_HAS_DCACHE=y +CONFIG_ARC_CACHE_PAGES=y + diff --git a/target/arc/systems/synopsys-hsdk b/target/arc/systems/synopsys-hsdk index 799813e0d..8e81915d2 100644 --- a/target/arc/systems/synopsys-hsdk +++ b/target/arc/systems/synopsys-hsdk @@ -2,13 +2,14 @@ config ADK_TARGET_SYSTEM_SYNOPSYS_HSDK  	bool "Synopsys HSDK"  	select ADK_TARGET_LITTLE_ENDIAN  	select ADK_TARGET_CPU_ARC_ARCHS -	select ADK_TARGET_KERNEL_UIMAGE  	select ADK_TARGET_WITH_SERIAL  	select ADK_TARGET_WITH_NET  	select ADK_TARGET_WITH_NETDEVICE  	select ADK_TARGET_WITH_BLOCK +	select ADK_TARGET_WITH_SD  	select ADK_TARGET_WITH_SMP  	select ADK_HOST_BUILD_U_BOOT +	select ADK_TARGET_KERNEL_UIMAGE  	select ADK_TARGET_KERNEL_WITH_COMPRESSION  	help  	  Support for Synopsys HSDK. diff --git a/target/arc/uclibc-ng.config b/target/arc/uclibc-ng.config index 2842123a9..083e6489d 100644 --- a/target/arc/uclibc-ng.config +++ b/target/arc/uclibc-ng.config @@ -1,6 +1,6 @@  #  # Automatically generated file; DO NOT EDIT. -# uClibc-ng 1.0.45 C Library Configuration +# uClibc-ng 1.0.52 C Library Configuration  #  # TARGET_aarch64 is not set  # TARGET_alpha is not set @@ -61,6 +61,7 @@ UCLIBC_HAS_FLOATS=y  UCLIBC_HAS_FPU=y  DO_C99_MATH=y  DO_XSI_MATH=y +UCLIBC_HAS_FENV=y  UCLIBC_HAS_LONG_DOUBLE_MATH=y  KERNEL_HEADERS=""  HAVE_DOT_CONFIG=y diff --git a/target/arm/Makefile b/target/arm/Makefile index 9ce20ef4f..227cc97ca 100644 --- a/target/arm/Makefile +++ b/target/arm/Makefile @@ -23,12 +23,6 @@ QEMU_ARGS:=${ADK_QEMU_ARGS}  ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_XILINX_ZYNQ),y)  QEMU_ARGS+=-M xilinx-zynq-a9 -dtb $(FW_DIR)/zynq-zc702.dtb -serial null -serial mon:stdio  endif -ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_SPITZ),y) -QEMU_ARGS+=-M spitz -endif -ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_TERRIER),y) -QEMU_ARGS+=-M terrier -endif  ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_REALVIEW_EB_MPCORE),y)  QEMU_ARGS+=-M realview-eb-mpcore -net user -net nic -dtb $(FW_DIR)/arm-realview-eb-11mp-ctrevb.dtb  endif @@ -50,7 +44,7 @@ ifeq ($(ADK_TARGET_FS),archive)  targethelp:  	@echo "#################################################"  	@echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSTARBALL)" -ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_VEXPRESS_A9)$(ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB)$(ADK_TARGET_SYSTEM_QEMU_ARM_TERRIER)$(ADK_TARGET_SYSTEM_QEMU_ARM_SPITZ),y) +ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_VEXPRESS_A9)$(ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB),y)  	@echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'  	@echo "Use following command to create a QEMU Image:"  	@echo "./scripts/create.sh qemu-${ADK_TARGET_CPU_ARCH}.img $(FW_DIR)/$(ROOTFSTARBALL)" @@ -135,10 +129,6 @@ ifeq ($(ADK_TARGET_FS),nfsroot)  targethelp:  	@echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'  	@echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSUSERTARBALL)" -ifeq ($(ADK_TARGET_SYSTEM_LINKSYS_NSLU2),y) -	@echo "Use following in RedBoot bootloader:" -	@echo "RedBoot> ip_address -l <localip> -h <serverip>; load -r -v -b 0x01d00000 ${TARGET_KERNEL}; exec 0x01d00000" -endif  endif  ifeq ($(ADK_TARGET_FS),squashfs)  targethelp: @@ -208,6 +198,12 @@ endif  ifeq ($(ADK_TARGET_SYSTEM_BANANA_PRO),y)  VENDOR:=allwinner/  endif +ifeq ($(ADK_TARGET_SYSTEM_PCDUINO_3B),y) +VENDOR:=allwinner/ +endif +ifeq ($(ADK_TARGET_SYSTEM_LINKSYS_NSLU2),y) +VENDOR:=intel/ixp/ +endif  endif  dtb-install: @@ -250,6 +246,9 @@ endif  ifeq ($(ADK_TARGET_SYSTEM_BANANA_PRO),y)  	${KERNEL_MAKE} $(VENDOR)sun7i-a20-bananapro.dtb $(MAKE_TRACE)  endif +ifeq ($(ADK_TARGET_SYSTEM_PCDUINO_3B),y) +	${KERNEL_MAKE} $(VENDOR)sun7i-a20-pcduino3.dtb $(MAKE_TRACE) +endif  ifeq ($(ADK_TARGET_SYSTEM_ORANGE_PI0),y)  	${KERNEL_MAKE} sun8i-h2-plus-orangepi-zero.dtb $(MAKE_TRACE)  endif @@ -272,6 +271,9 @@ endif  ifeq ($(ADK_TARGET_SYSTEM_ST_STM32F746G),y)  	${KERNEL_MAKE} $(VENDOR)stm32f746-disco.dtb $(MAKE_TRACE)  endif +ifeq ($(ADK_TARGET_SYSTEM_LINKSYS_NSLU2),y) +	${KERNEL_MAKE} $(VENDOR)intel-ixp42x-linksys-nslu2.dtb $(MAKE_TRACE) +endif  	for x in $(LINUX_DIR)/arch/arm/boot/dts/$(VENDOR)*.dtb; do \  		[[ -e "$$x" ]] && cp $(LINUX_DIR)/arch/arm/boot/dts/$(VENDOR)*.dtb $(FW_DIR); \  		break; \ @@ -294,7 +296,7 @@ ifeq (${ADK_TARGET_FS},genimage)  imageinstall: dtb-install $(FW_DIR)/$(GENIMAGE) targethelp  endif  ifeq ($(ADK_TARGET_FS),nfsroot) -imageinstall: kernel-install $(FW_DIR)/$(ROOTFSUSERTARBALL) targethelp +imageinstall: kernel-install dtb-install $(FW_DIR)/$(ROOTFSUSERTARBALL) targethelp  endif  ifeq ($(ADK_TARGET_FS),squashfs)  imageinstall: $(BUILD_DIR)/root.squashfs kernel-install dtb-install targethelp diff --git a/target/arm/kernel/linksys-nslu2 b/target/arm/kernel/linksys-nslu2 index a0a941721..924970b7c 100644 --- a/target/arm/kernel/linksys-nslu2 +++ b/target/arm/kernel/linksys-nslu2 @@ -1,4 +1,7 @@  CONFIG_ARM=y +CONFIG_ARCH_MULTIPLATFORM=y +CONFIG_ARCH_MULTI_V5=y +CONFIG_ARCH_MULTI_V4_V5=y  CONFIG_ARCH_IXDP425=y  CONFIG_ARCH_IXDP4XX=y  CONFIG_ARCH_IXP4XX=y @@ -7,6 +10,38 @@ CONFIG_ATAGS=y  CONFIG_CPU_XSCALE=y  CONFIG_IXP4XX_NPE=y  CONFIG_IXP4XX_QMGR=y -CONFIG_IXP4XX_WATCHDOG=y  CONFIG_MACH_NSLU2=y  CONFIG_FPE_NWFPE=y +CONFIG_ARM_APPENDED_DTB=y +CONFIG_ARM_THUMB=y +CONFIG_KUSER_HELPERS=y + +CONFIG_FW_LOADER=y +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y +CONFIG_REGMAP=y +CONFIG_REGMAP_MMIO=y +CONFIG_INTEL_IXP4XX_EB=y +CONFIG_MTD=y +CONFIG_MTD_OF_PARTS=y +CONFIG_MTD_REDBOOT_PARTS=y +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_GEN_PROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +CONFIG_MTD_OTP=y +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_CFI_AMDSTD=y +CONFIG_MTD_CFI_UTIL=y +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_PHYSMAP_OF=y +CONFIG_MTD_PHYSMAP_IXP4XX=y diff --git a/target/arm/kernel/qemu-arm-spitz b/target/arm/kernel/qemu-arm-spitz deleted file mode 100644 index 09a1d76ff..000000000 --- a/target/arm/kernel/qemu-arm-spitz +++ /dev/null @@ -1,46 +0,0 @@ -CONFIG_ARM=y -CONFIG_ARM_PATCH_PHYS_VIRT=y -CONFIG_ARCH_PXA=y -CONFIG_PXA_SHARPSL=y -CONFIG_PXA_SHARPSL_DETECT_MACH_ID=y -CONFIG_MACH_SPITZ=y -CONFIG_PXA27x=y -CONFIG_PXA_SHARP_Cxx00=y -CONFIG_SHARPSL_PM=y -CONFIG_SHARPSL_PM_MAX1111=y -CONFIG_PXA_SSP=y -CONFIG_PLAT_PXA=y -CONFIG_CPU_XSCALE=y -CONFIG_IWMMXT=y -CONFIG_XSCALE_PMU=y -CONFIG_MULTI_IRQ_HANDLER=y -CONFIG_SHARP_PARAM=y -CONFIG_SHARP_SCOOP=y -CONFIG_ATAGS=y -CONFIG_ATAGS_PROC=y -CONFIG_I2C=y -CONFIG_I2C_BOARDINFO=y -CONFIG_I2C_PXA=y -CONFIG_SPI=y -CONFIG_SPI_MASTER=y -CONFIG_SPI_PXA2XX_DMA=y -CONFIG_SPI_PXA2XX=y -CONFIG_GPIO_DEVRES=y -CONFIG_GPIOLIB=y -CONFIG_GPIO_PXA=y -CONFIG_POWER_SUPPLY=y -CONFIG_PDA_POWER=y -CONFIG_APM_POWER=y -CONFIG_SENSORS_MAX1111=y -CONFIG_BACKLIGHT_LCD_SUPPORT=y -CONFIG_LCD_CLASS_DEVICE=y -CONFIG_LCD_CORGI=y -CONFIG_BACKLIGHT_CLASS_DEVICE=y -CONFIG_BACKLIGHT_GENERIC=y -CONFIG_HID=y -CONFIG_HID_GENERIC=y -CONFIG_SERIAL_PXA=y -CONFIG_SERIAL_PXA_NON8250=y -CONFIG_SERIAL_PXA_CONSOLE=y -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y diff --git a/target/arm/kernel/qemu-arm-terrier b/target/arm/kernel/qemu-arm-terrier deleted file mode 100644 index e8a01e232..000000000 --- a/target/arm/kernel/qemu-arm-terrier +++ /dev/null @@ -1,46 +0,0 @@ -CONFIG_ARM=y -CONFIG_ARM_PATCH_PHYS_VIRT=y -CONFIG_ARCH_PXA=y -CONFIG_PXA_SHARPSL=y -CONFIG_PXA_SHARPSL_DETECT_MACH_ID=y -CONFIG_MACH_BORZOI=y -CONFIG_PXA27x=y -CONFIG_PXA_SHARP_Cxx00=y -CONFIG_SHARPSL_PM=y -CONFIG_SHARPSL_PM_MAX1111=y -CONFIG_PXA_SSP=y -CONFIG_PLAT_PXA=y -CONFIG_CPU_XSCALE=y -CONFIG_IWMMXT=y -CONFIG_XSCALE_PMU=y -CONFIG_MULTI_IRQ_HANDLER=y -CONFIG_SHARP_PARAM=y -CONFIG_SHARP_SCOOP=y -CONFIG_ATAGS=y -CONFIG_ATAGS_PROC=y -CONFIG_I2C=y -CONFIG_I2C_BOARDINFO=y -CONFIG_I2C_PXA=y -CONFIG_SPI=y -CONFIG_SPI_MASTER=y -CONFIG_SPI_PXA2XX_DMA=y -CONFIG_SPI_PXA2XX=y -CONFIG_GPIO_DEVRES=y -CONFIG_GPIOLIB=y -CONFIG_GPIO_PXA=y -CONFIG_POWER_SUPPLY=y -CONFIG_PDA_POWER=y -CONFIG_APM_POWER=y -CONFIG_SENSORS_MAX1111=y -CONFIG_BACKLIGHT_LCD_SUPPORT=y -CONFIG_LCD_CLASS_DEVICE=y -CONFIG_LCD_CORGI=y -CONFIG_BACKLIGHT_CLASS_DEVICE=y -CONFIG_BACKLIGHT_GENERIC=y -CONFIG_HID=y -CONFIG_HID_GENERIC=y -CONFIG_SERIAL_PXA=y -CONFIG_SERIAL_PXA_NON8250=y -CONFIG_SERIAL_PXA_CONSOLE=y -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y diff --git a/target/arm/pcduino-3b/extlinux.conf b/target/arm/pcduino-3b/extlinux.conf new file mode 100644 index 000000000..dbbb487c0 --- /dev/null +++ b/target/arm/pcduino-3b/extlinux.conf @@ -0,0 +1,4 @@ +LABEL default +  kernel /boot/kernel +  devicetreedir /boot +  append root=PARTUUID=f6c8cabe-f191-4392-89bb-2ba14119482e rootwait console=${console} rootfstype=ext4 panic=10 diff --git a/target/arm/pcduino-3b/genimage.cfg b/target/arm/pcduino-3b/genimage.cfg new file mode 100644 index 000000000..9d2d124f1 --- /dev/null +++ b/target/arm/pcduino-3b/genimage.cfg @@ -0,0 +1,20 @@ +image sdcard.img { +	partition u-boot { +		in-partition-table = false +		image = "u-boot-sunxi-with-spl.bin" +		offset = 8K +		size = 1000K # 1MB - 8KB(offset) - 16KB(GPT) +	} + +	hdimage { +		partition-table-type = "gpt" +		gpt-location = 1008K # 1MB - 16KB(GPT) +		gpt-no-backup = true +	} + +	partition rootfs { +		offset = 1M +		image = "rootfs.ext" +		partition-uuid = f6c8cabe-f191-4392-89bb-2ba14119482e +	} +} diff --git a/target/arm/systems/linksys-nslu2 b/target/arm/systems/linksys-nslu2 index 72f55eadd..18333a17c 100644 --- a/target/arm/systems/linksys-nslu2 +++ b/target/arm/systems/linksys-nslu2 @@ -4,15 +4,17 @@ config ADK_TARGET_SYSTEM_LINKSYS_NSLU2  	select ADK_TARGET_BIG_ENDIAN  	select ADK_TARGET_CPU_ARM_XSCALE  	select ADK_TARGET_WITH_USB -	select ADK_TARGET_WITH_PCI  	select ADK_TARGET_WITH_SERIAL  	select ADK_TARGET_WITH_NET  	select ADK_TARGET_WITH_NETDEVICE -	select ADK_TARGET_WITH_BLOCK  	select ADK_TARGET_WITH_I2C +	select ADK_TARGET_WITH_MTD +	select ADK_TARGET_WITH_PCI  	select ADK_TARGET_KERNEL_ZIMAGE  	select ADK_TARGET_KERNEL_WITH_COMPRESSION  	select ADK_PACKAGE_IXP4XX_MICROCODE +	select ADK_PACKAGE_APEX +	select ADK_HOST_BUILD_UPSLUG2  	help  	  Linksys NSLU2 diff --git a/target/arm/systems/pcduino-3b b/target/arm/systems/pcduino-3b index 71763d2e1..c146b59c0 100644 --- a/target/arm/systems/pcduino-3b +++ b/target/arm/systems/pcduino-3b @@ -12,7 +12,7 @@ config ADK_TARGET_SYSTEM_PCDUINO_3B  	select ADK_TARGET_WITH_NET  	select ADK_TARGET_WITH_NETDEVICE  	select ADK_TARGET_WITH_BLOCK -	select ADK_TARGET_KERNEL_IMAGE +	select ADK_TARGET_KERNEL_ZIMAGE  	select ADK_PACKAGE_U_BOOT  	help  	  PCduino 3b diff --git a/target/arm/systems/qemu-arm-spitz b/target/arm/systems/qemu-arm-spitz deleted file mode 100644 index d97c5868e..000000000 --- a/target/arm/systems/qemu-arm-spitz +++ /dev/null @@ -1,11 +0,0 @@ -config ADK_TARGET_SYSTEM_QEMU_ARM_SPITZ -	bool "Qemu Emulator (Spitz PDA)" -	depends on ADK_TARGET_OS_LINUX -	select ADK_TARGET_LITTLE_ENDIAN -	select ADK_TARGET_CPU_ARM_XSCALE -	select ADK_TARGET_QEMU -	select ADK_TARGET_KERNEL_ZIMAGE -	select ADK_TARGET_KERNEL_WITH_COMPRESSION -	help -	  Qemu Emulator for ARM architecture (Spitz PDA). - diff --git a/target/arm/systems/qemu-arm-terrier b/target/arm/systems/qemu-arm-terrier deleted file mode 100644 index 2fe25fc0f..000000000 --- a/target/arm/systems/qemu-arm-terrier +++ /dev/null @@ -1,11 +0,0 @@ -config ADK_TARGET_SYSTEM_QEMU_ARM_TERRIER -	bool "Qemu Emulator (Terrier PDA)" -	depends on ADK_TARGET_OS_LINUX -	select ADK_TARGET_LITTLE_ENDIAN -	select ADK_TARGET_CPU_ARM_XSCALE -	select ADK_TARGET_QEMU -	select ADK_TARGET_KERNEL_ZIMAGE -	select ADK_TARGET_KERNEL_WITH_COMPRESSION -	help -	  Qemu Emulator for ARM architecture (Terrier PDA). - diff --git a/target/arm/systems/st-stm32f746g b/target/arm/systems/st-stm32f746g index 4b87b9340..eb68dbfe4 100644 --- a/target/arm/systems/st-stm32f746g +++ b/target/arm/systems/st-stm32f746g @@ -4,6 +4,7 @@ config ADK_TARGET_SYSTEM_ST_STM32F746G  	select ADK_TARGET_LITTLE_ENDIAN  	select ADK_TARGET_CPU_ARM_CORTEX_M7  	select ADK_TARGET_ARCH_ARM_WITH_THUMB +	select ADK_TARGET_SOFT_FLOAT  	select ADK_TARGET_WITH_SERIAL  	select ADK_TARGET_UCLINUX  	select ADK_TARGET_KERNEL_WITH_COMPRESSION diff --git a/target/arm/uclibc-ng.config b/target/arm/uclibc-ng.config index 64accdcd0..f4b47ffaa 100644 --- a/target/arm/uclibc-ng.config +++ b/target/arm/uclibc-ng.config @@ -1,6 +1,6 @@  #  # Automatically generated file; DO NOT EDIT. -# uClibc-ng 1.0.47 C Library Configuration +# uClibc-ng 1.0.51 C Library Configuration  #  # TARGET_aarch64 is not set  # TARGET_alpha is not set @@ -60,6 +60,7 @@ UCLIBC_HAS_FLOATS=y  UCLIBC_HAS_SOFT_FLOAT=y  DO_C99_MATH=y  DO_XSI_MATH=y +UCLIBC_HAS_FENV=y  UCLIBC_HAS_LONG_DOUBLE_MATH=y  KERNEL_HEADERS=""  HAVE_DOT_CONFIG=y diff --git a/target/config/Config.in.binutils b/target/config/Config.in.binutils index cf11a76c9..c78550b03 100644 --- a/target/config/Config.in.binutils +++ b/target/config/Config.in.binutils @@ -8,14 +8,20 @@ default ADK_TOOLCHAIN_BINUTILS_ARC if ADK_TARGET_CPU_ARC_ARC64  default ADK_TOOLCHAIN_BINUTILS_AVR32 if ADK_TARGET_ARCH_AVR32  default ADK_TOOLCHAIN_BINUTILS_KVX if ADK_TARGET_ARCH_KVX  default ADK_TOOLCHAIN_BINUTILS_NDS32 if ADK_TARGET_ARCH_NDS32 +default ADK_TOOLCHAIN_BINUTILS_2_26 if ADK_TARGET_ARCH_BFIN && ADK_TARGET_BINFMT_FDPIC  default ADK_TOOLCHAIN_BINUTILS_2_43_1 if ADK_TARGET_ARCH_NIOS2 -default ADK_TOOLCHAIN_BINUTILS_2_43_1 if ADK_TARGET_ARCH_X86_64 -default ADK_TOOLCHAIN_BINUTILS_2_44 +default ADK_TOOLCHAIN_BINUTILS_2_44 if ADK_TARGET_ARCH_CRIS +default ADK_TOOLCHAIN_BINUTILS_2_45  config ADK_TOOLCHAIN_BINUTILS_GIT  	bool "git"  	depends on !ADK_TARGET_ARCH_AVR32 +config ADK_TOOLCHAIN_BINUTILS_2_45 +	bool "2.45" +	depends on !ADK_TARGET_ARCH_AVR32 +	depends on !ADK_TARGET_ARCH_NIOS2 +  config ADK_TOOLCHAIN_BINUTILS_2_44  	bool "2.44"  	depends on !ADK_TARGET_ARCH_AVR32 @@ -54,6 +60,11 @@ config ADK_TOOLCHAIN_BINUTILS_2_37  	depends on !ADK_TARGET_ARCH_AVR32  	depends on !ADK_TARGET_ARCH_KVX +config ADK_TOOLCHAIN_BINUTILS_2_26 +	bool "2.26" +	depends on !ADK_TARGET_ARCH_AVR32 +	depends on !ADK_TARGET_ARCH_KVX +  config ADK_TOOLCHAIN_BINUTILS_ARC  	bool "arc-2023.09"  	depends on ADK_TARGET_ARCH_ARC diff --git a/target/config/Config.in.compiler b/target/config/Config.in.compiler index 93554a715..a932de6b8 100644 --- a/target/config/Config.in.compiler +++ b/target/config/Config.in.compiler @@ -18,7 +18,7 @@ default ADK_TOOLCHAIN_GCC_AVR32 if ADK_TARGET_ARCH_AVR32  default ADK_TOOLCHAIN_GCC_KVX if ADK_TARGET_ARCH_KVX  default ADK_TOOLCHAIN_GCC_LM32 if ADK_TARGET_ARCH_LM32  default ADK_TOOLCHAIN_GCC_METAG if ADK_TARGET_ARCH_METAG -default ADK_TOOLCHAIN_GCC_NDS32 if ADK_TARGET_SYSTEM_ANDES_AG101P +default ADK_TOOLCHAIN_GCC_NDS32 if ADK_TARGET_ARCH_NDS32  default ADK_TOOLCHAIN_GCC_7 if ADK_TARGET_ARCH_C6X # ICE with newer GCC  default ADK_TOOLCHAIN_GCC_10 if ADK_TARGET_ARCH_CRIS # no longer supported  default ADK_TOOLCHAIN_GCC_10 if ADK_TARGET_CPU_SH_J2 # j2.patch @@ -30,20 +30,26 @@ config ADK_TOOLCHAIN_GCC_GIT  	depends on !ADK_TARGET_ARCH_METAG  	depends on !ADK_TARGET_ARCH_NDS32 +config ADK_TOOLCHAIN_GCC_15 +	bool "15.2.0" +	depends on !ADK_TARGET_ARCH_AVR32 +	depends on !ADK_TARGET_ARCH_CRIS +	depends on !ADK_TARGET_ARCH_METAG +  config ADK_TOOLCHAIN_GCC_14 -	bool "14.2.0" +	bool "14.3.0"  	depends on !ADK_TARGET_ARCH_AVR32  	depends on !ADK_TARGET_ARCH_CRIS  	depends on !ADK_TARGET_ARCH_METAG  config ADK_TOOLCHAIN_GCC_13 -	bool "13.3.0" +	bool "13.4.0"  	depends on !ADK_TARGET_ARCH_AVR32  	depends on !ADK_TARGET_ARCH_CRIS  	depends on !ADK_TARGET_ARCH_METAG  config ADK_TOOLCHAIN_GCC_12 -	bool "12.4.0" +	bool "12.5.0"  	depends on !ADK_TARGET_ARCH_AVR32  	depends on !ADK_TARGET_ARCH_CRIS  	depends on !ADK_TARGET_ARCH_METAG diff --git a/target/config/Config.in.cpu b/target/config/Config.in.cpu index 7ea9829a3..77945b403 100644 --- a/target/config/Config.in.cpu +++ b/target/config/Config.in.cpu @@ -93,6 +93,7 @@ config ADK_TARGET_CPU_ARC_ARCHS  	select ADK_TARGET_SUPPORTS_NPTL  	select ADK_TARGET_SUPPORTS_LT  	select ADK_TARGET_WITH_MMU +	select ADK_TARGET_CPU_WITH_FPU  	depends on ADK_TARGET_ARCH_ARC  config ADK_TARGET_CPU_ARC_ARC32 @@ -789,6 +790,7 @@ config ADK_TARGET_CPU_CF_5475  	select ADK_TARGET_SUPPORTS_LT  	select ADK_TARGET_CPU_CF  	select ADK_TARGET_WITH_MMU +	select ADK_TARGET_CPU_WITH_FPU  	depends on ADK_TARGET_ARCH_M68K  config ADK_TARGET_CPU_CF_54418 @@ -1058,6 +1060,7 @@ config ADK_TARGET_CPU_OR1K  	select ADK_TARGET_SUPPORTS_LT  	select ADK_TARGET_SUPPORTS_NPTL  	select ADK_TARGET_WITH_MMU +	select ADK_TARGET_CPU_WITH_FPU  	depends on ADK_TARGET_ARCH_OR1K  # ppc32 @@ -1212,6 +1215,14 @@ config ADK_TARGET_CPU_RISCV32_RV32IMAC  	select ADK_TARGET_ABI_ILP32  	depends on ADK_TARGET_ARCH_RISCV32 +config ADK_TARGET_CPU_RISCV32_RV32IMADC +	bool "rv32imadc" +	select ADK_TARGET_SUPPORTS_THREADS +	select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_WITH_MMU +	select ADK_TARGET_SUPPORTS_LT +	select ADK_TARGET_ABI_ILP32D +	depends on ADK_TARGET_ARCH_RISCV32 +  config ADK_TARGET_CPU_RISCV32_RV32IMA  	bool "rv32ima"  	select ADK_TARGET_SUPPORTS_THREADS @@ -1228,14 +1239,6 @@ config ADK_TARGET_CPU_RISCV32_RV32IMAFC  	select ADK_TARGET_ABI_ILP32F  	depends on ADK_TARGET_ARCH_RISCV32 -config ADK_TARGET_CPU_RISCV32_RV32IMADC -	bool "rv32imadc" -	select ADK_TARGET_SUPPORTS_THREADS -	select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_WITH_MMU -	select ADK_TARGET_SUPPORTS_LT -	select ADK_TARGET_ABI_ILP32D -	depends on ADK_TARGET_ARCH_RISCV32 -  config ADK_TARGET_CPU_RISCV32_RV32IMAFDC  	bool "rv32imafdc"  	select ADK_TARGET_SUPPORTS_THREADS if ADK_TARGET_WITH_MMU @@ -1251,6 +1254,14 @@ config ADK_TARGET_CPU_RISCV64_RV64IMAC  	select ADK_TARGET_ABI_LP64  	depends on ADK_TARGET_ARCH_RISCV64 +config ADK_TARGET_CPU_RISCV64_RV64IMADC +	bool "rv64imadc" +	select ADK_TARGET_SUPPORTS_THREADS +	select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_WITH_MMU +	select ADK_TARGET_SUPPORTS_LT +	select ADK_TARGET_ABI_LP64D +	depends on ADK_TARGET_ARCH_RISCV64 +  config ADK_TARGET_CPU_RISCV64_RV64IMA  	bool "rv64ima"  	select ADK_TARGET_SUPPORTS_THREADS @@ -1267,14 +1278,6 @@ config ADK_TARGET_CPU_RISCV64_RV64IMAFC  	select ADK_TARGET_ABI_LP64F  	depends on ADK_TARGET_ARCH_RISCV64 -config ADK_TARGET_CPU_RISCV64_RV64IMADC -	bool "rv64imadc" -	select ADK_TARGET_SUPPORTS_THREADS -	select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_WITH_MMU -	select ADK_TARGET_SUPPORTS_LT -	select ADK_TARGET_ABI_LP64D -	depends on ADK_TARGET_ARCH_RISCV64 -  config ADK_TARGET_CPU_RISCV64_RV64IMAFDC  	bool "rv64imafdc"  	select ADK_TARGET_SUPPORTS_THREADS if ADK_TARGET_WITH_MMU diff --git a/target/config/Config.in.float b/target/config/Config.in.float index 3fd79d2b9..63ac5ffd7 100644 --- a/target/config/Config.in.float +++ b/target/config/Config.in.float @@ -3,7 +3,8 @@  choice ADK_TARGET_FLOAT_MODE  prompt "Float configuration" -depends on ADK_TARGET_ARCH_ARM || \ +depends on ADK_TARGET_ARCH_ARC || \ +	   ADK_TARGET_ARCH_ARM || \  	   ADK_TARGET_ARCH_CSKY || \  	   ADK_TARGET_ARCH_M68K || \  	   ADK_TARGET_ARCH_MIPS || \ @@ -34,7 +35,8 @@ endchoice  config ADK_TARGET_FLOAT  	string -	depends on !ADK_TARGET_ARCH_M68K \ +	depends on !ADK_TARGET_ARCH_ARC \ +		&& !ADK_TARGET_ARCH_M68K \  		&& !ADK_TARGET_ARCH_NIOS2  	default "hard" if ADK_TARGET_HARD_FLOAT || ADK_TARGET_HARD_FLOAT_SP || ADK_TARGET_HARD_FLOAT_DP  	default "soft" if ADK_TARGET_SOFT_FLOAT diff --git a/target/config/Config.in.fpu b/target/config/Config.in.fpu index 1018937cd..0c4614bb0 100644 --- a/target/config/Config.in.fpu +++ b/target/config/Config.in.fpu @@ -21,7 +21,8 @@ config ADK_TARGET_ARCH_ARM_WITH_NEON  config ADK_TARGET_FPU  	string -	depends on ADK_TARGET_ARCH_ARM +	depends on ADK_TARGET_ARCH_ARC || ADK_TARGET_ARCH_ARM +	default "fpus" if ADK_TARGET_CPU_WITH_FPU && ADK_TARGET_ARCH_ARC  	default "vfp" if ADK_TARGET_CPU_WITH_FPU_VFP  	default "vfpv3-fp16" if ADK_TARGET_CPU_ARM_CORTEX_A5 && !ADK_TARGET_ARCH_ARM_WITH_NEON  	default "vfpv4" if ADK_TARGET_CPU_ARM_CORTEX_A7 && !ADK_TARGET_ARCH_ARM_WITH_NEON diff --git a/target/config/Config.in.kernelfmt b/target/config/Config.in.kernelfmt index 2704b08ae..d4ea880ca 100644 --- a/target/config/Config.in.kernelfmt +++ b/target/config/Config.in.kernelfmt @@ -113,3 +113,4 @@ config ADK_TARGET_KERNEL_APPEND_DTB  	string  	default "armada-xp-synology-ds414" if ADK_TARGET_SYSTEM_SYNOLOGY_DS414 && !ADK_TARGET_KERNEL_VENDORED_DTB  	default "marvell/armada-xp-synology-ds414" if ADK_TARGET_SYSTEM_SYNOLOGY_DS414 && ADK_TARGET_KERNEL_VENDORED_DTB +	default "intel/ixp/intel-ixp42x-linksys-nslu2" if ADK_TARGET_SYSTEM_LINKSYS_NSLU2 && ADK_TARGET_KERNEL_VENDORED_DTB diff --git a/target/config/Config.in.libc b/target/config/Config.in.libc index 2cb1fccec..382c527a4 100644 --- a/target/config/Config.in.libc +++ b/target/config/Config.in.libc @@ -148,16 +148,16 @@ choice  prompt "Target C library version"  depends on !ADK_TARGET_CHOOSE_ARCH -config ADK_TARGET_LIB_UCLIBC_NG_1_0_51 -	bool "1.0.51" +config ADK_TARGET_LIB_UCLIBC_NG_1_0_55 +	bool "1.0.55"  	depends on ADK_TARGET_LIB_UCLIBC_NG  config ADK_TARGET_LIB_UCLIBC_NG_GIT  	bool "git"  	depends on ADK_TARGET_LIB_UCLIBC_NG && ADK_EXPERIMENTAL -config ADK_TARGET_LIB_GLIBC_2_41 -	bool "2.41" +config ADK_TARGET_LIB_GLIBC_2_42 +	bool "2.42"  	depends on ADK_TARGET_LIB_GLIBC  config ADK_TARGET_LIB_GLIBC_GIT @@ -198,9 +198,9 @@ config ADK_TARGET_LIBC  config ADK_LIBC_VERSION  	string -	default "1.0.51" if ADK_TARGET_LIB_UCLIBC_NG_1_0_51 +	default "1.0.55" if ADK_TARGET_LIB_UCLIBC_NG_1_0_55  	default "1.2.5" if ADK_TARGET_LIB_MUSL_1_2_5 -	default "2.41" if ADK_TARGET_LIB_GLIBC_2_40 +	default "2.42" if ADK_TARGET_LIB_GLIBC_2_42  	default "4.4.0" if ADK_TARGET_LIB_NEWLIB_4_4_0  	default "git" if ADK_TARGET_LIB_UCLIBC_NG_GIT || \  		         ADK_TARGET_LIB_MUSL_GIT || \ diff --git a/target/config/Config.in.qemuopts b/target/config/Config.in.qemuopts index 78c608b49..c428d9d8f 100644 --- a/target/config/Config.in.qemuopts +++ b/target/config/Config.in.qemuopts @@ -4,14 +4,9 @@  config ADK_QEMU_ARGS  	string  	default "-vga std" if ADK_TARGET_QEMU_WITH_GRAPHIC -	default "" if ADK_TARGET_QEMU_WITH_GRAPHIC_ONLY +	default "-device virtio-vga-gl -display sdl,gl=on" if ADK_TARGET_QEMU_WITH_VIRTIO_GRAPHIC  	default "-nographic" -config ADK_TARGET_QEMU_WITH_GRAPHIC_ONLY -	bool -	select ADK_TARGET_WITH_VGA -	depends on ADK_TARGET_SYSTEM_QEMU_ARM_SPITZ || ADK_TARGET_SYSTEM_QEMU_ARM_TERRIER -  config ADK_TARGET_QEMU_WITH_BLOCK  	bool  	select ADK_TARGET_WITH_BLOCK @@ -29,18 +24,12 @@ config ADK_TARGET_QEMU_WITH_BLOCK  	select ADK_LINUX_KERNEL_SCSI_SUNESP if ADK_TARGET_SYSTEM_QEMU_SPARC  	select ADK_LINUX_KERNEL_PATA_CMD64X if ADK_TARGET_SYSTEM_QEMU_SPARC64  	select ADK_LINUX_KERNEL_PATA_PLATFORM if ADK_TARGET_SYSTEM_QEMU_SH -	select ADK_LINUX_KERNEL_PATA_PXA if ADK_TARGET_QEMU_ARM_SPITZ \ -					|| ADK_TARGET_SYSTEM_QEMU_ARM_TERRIER  	select ADK_LINUX_KERNEL_MMC_ARMMMCI if ADK_TARGET_SYSTEM_QEMU_ARM_VEXPRESS_A9  	select ADK_LINUX_KERNEL_BLK_DEV_CMD64X if ADK_TARGET_SYSTEM_QEMU_ALPHA  menu "Qemu system configuration"  depends on ADK_TARGET_QEMU && (ADK_TARGET_SYSTEM_QEMU_X86_64 \ -				|| ADK_TARGET_SYSTEM_QEMU_RISCV32 \ -				|| ADK_TARGET_SYSTEM_QEMU_RISCV64 \ -				|| ADK_TARGET_SYSTEM_QEMU_CSKY \  				|| ADK_TARGET_SYSTEM_QEMU_X86 \ -				|| ADK_TARGET_SYSTEM_QEMU_AARCH64 \  				|| ADK_TARGET_SYSTEM_QEMU_ARC \  				|| ADK_TARGET_SYSTEM_QEMU_M68K_VIRT \  				|| ADK_TARGET_SYSTEM_QEMU_SPARC64) @@ -84,31 +73,39 @@ config ADK_TARGET_QEMU_WITH_GRAPHIC  	select ADK_LINUX_KERNEL_INPUT_MOUSEDEV  	select ADK_LINUX_KERNEL_PLAT_VERSATILE_CLCD if ADK_TARGET_SYSTEM_QEMU_ARM_VEXPRESS_A9  	select ADK_LINUX_KERNEL_FB_SM501 if ADK_TARGET_SYSTEM_QEMU_SH +	select ADK_LINUX_KERNEL_DRM if ADK_TARGET_SYSTEM_QEMU_X86 || ADK_TARGET_SYSTEM_QEMU_X86_64  	select ADK_LINUX_KERNEL_DRM_BOCHS if ADK_TARGET_SYSTEM_QEMU_X86 || ADK_TARGET_SYSTEM_QEMU_X86_64  	select ADK_LINUX_KERNEL_KEYBOARD_ATKBD if ADK_TARGET_SYSTEM_QEMU_X86 || ADK_TARGET_SYSTEM_QEMU_X86_64  	select ADK_LINUX_KERNEL_MOUSE_PS2 if ADK_TARGET_SYSTEM_QEMU_X86 || ADK_TARGET_SYSTEM_QEMU_X86_64  	select ADK_LINUX_KERNEL_USB_HID if ADK_TARGET_SYSTEM_QEMU_SH  	select ADK_LINUX_KERNEL_USB_OHCI_HCD_PLATFORM if ADK_TARGET_SYSTEM_QEMU_SH +config ADK_TARGET_QEMU_WITH_VIRTIO_GRAPHIC +	bool "virtio enabled" +	select ADK_TARGET_WITH_VGA +	select ADK_LINUX_KERNEL_DRM +	select ADK_LINUX_KERNEL_DRM_VIRTIO_GPU +	select ADK_LINUX_KERNEL_VT +	select ADK_LINUX_KERNEL_VT_CONSOLE +	select ADK_LINUX_KERNEL_FB +	select ADK_LINUX_KERNEL_FRAMEBUFFER_CONSOLE +	select ADK_LINUX_KERNEL_FONTS +	select ADK_LINUX_KERNEL_FONT_8x16 +	select ADK_LINUX_KERNEL_KEYBOARD_ATKBD if ADK_TARGET_SYSTEM_QEMU_X86 || ADK_TARGET_SYSTEM_QEMU_X86_64 +	select ADK_LINUX_KERNEL_MOUSE_PS2 if ADK_TARGET_SYSTEM_QEMU_X86 || ADK_TARGET_SYSTEM_QEMU_X86_64 +	select ADK_LINUX_KERNEL_INPUT +	select ADK_LINUX_KERNEL_INPUT_KEYBOARD +	select ADK_LINUX_KERNEL_INPUT_MOUSE +	select ADK_LINUX_KERNEL_INPUT_MOUSEDEV +	select ADK_LINUX_KERNEL_INPUT_EVDEV +  endchoice  choice  prompt "Qemu Emulation using VirtIO drivers"  depends on ADK_TARGET_SYSTEM_QEMU_SPARC64 || \ -		ADK_TARGET_SYSTEM_QEMU_AARCH64 || \ -		ADK_TARGET_SYSTEM_QEMU_ARC || \ -		ADK_TARGET_SYSTEM_QEMU_CSKY || \ -		ADK_TARGET_SYSTEM_QEMU_M68K_VIRT || \ -		ADK_TARGET_SYSTEM_QEMU_RISCV32 || \ -		ADK_TARGET_SYSTEM_QEMU_RISCV64 || \  		ADK_TARGET_SYSTEM_QEMU_X86 || \  		ADK_TARGET_SYSTEM_QEMU_X86_64 -default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_AARCH64 -default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_ARC -default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_CSKY -default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_RISCV32 -default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_RISCV64 -default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_M68K_VIRT  config ADK_TARGET_QEMU_WITHOUT_VIRTIO  	bool "disabled" diff --git a/target/config/Config.in.rootfs b/target/config/Config.in.rootfs index 5c658fd02..403a2739f 100644 --- a/target/config/Config.in.rootfs +++ b/target/config/Config.in.rootfs @@ -59,8 +59,8 @@ config ADK_TARGET_ROOTFS_INITRAMFS  config ADK_TARGET_ROOTFS_SQUASHFS  	bool "Compressed read-only root filesystem (squashfs)" -	select ADK_KERNEL_SQUASHFS -	select ADK_HOST_NEED_SQUASHFS +	select ADK_LINUX_KERNEL_SQUASHFS +	select ADK_HOST_NEED_SQUASHFS_TOOLS  	select ADK_HOST_NEED_QEMU if ADK_TARGET_QEMU  	select ADK_TARGET_QEMU_WITH_BLOCK if ADK_TARGET_QEMU  	depends on ADK_TARGET_WITH_MTD \ @@ -101,8 +101,7 @@ config ADK_TARGET_ROOTFS_NFSROOT  	select ADK_LINUX_KERNEL_IP_PNP_DHCP if ADK_TARGET_OS_LINUX  	depends on !ADK_TARGET_QEMU && \  		   !ADK_TARGET_SIM && \ -		   !ADK_TARGET_SYSTEM_ARANYM_M68K && \ -		   !ADK_TARGET_SYSTEM_LINKSYS_NSLU2  +		   !ADK_TARGET_SYSTEM_ARANYM_M68K  	depends on ADK_TARGET_WITH_NETDEVICE  	help  	  Root filesystem mounted via NFS. (DHCP) diff --git a/target/config/Config.in.runtime b/target/config/Config.in.runtime index 438d4791e..4f2b135c0 100644 --- a/target/config/Config.in.runtime +++ b/target/config/Config.in.runtime @@ -22,10 +22,18 @@ config ADK_RUNTIME_INIT_SYSV  	depends on ADK_PACKAGE_BUSYBOX && \  		   !ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT +config ADK_RUNTIME_INIT_TOYBOX +	bool "Use toybox init" +	select ADK_PACKAGE_TOYBOX +  config ADK_RUNTIME_INIT_SIMPLEINIT  	bool "Use a very simple init"  	select ADK_PACKAGE_SIMPLEINIT +config ADK_RUNTIME_INIT_MINIINIT +	bool "Use a minimal init" +	select ADK_PACKAGE_MINIINIT +  endchoice  choice @@ -306,6 +314,7 @@ config ADK_RUNTIME_GETTY_VGA  	default y if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6  	default y if ADK_TARGET_SYSTEM_LEMOTE_YEELONG  	default y if ADK_TARGET_SYSTEM_ARANYM_M68K +	default y if ADK_TARGET_SYSTEM_HP_JORNADA  	default y if ADK_TARGET_MODEL_PCENGINES_ALIX1C  	default n  	help @@ -359,6 +368,7 @@ config ADK_RUNTIME_CONSOLE_SERIAL_DEVICE  				|| ADK_TARGET_SYSTEM_QEMU_AARCH64  	default "ttyARC0" if ADK_TARGET_SYSTEM_SYNOPSYS_NSIM && ADK_TARGET_CPU_ARC_ARC700  	default "ttySC1" if ADK_TARGET_SYSTEM_QEMU_SH +	default "ttySC1" if ADK_TARGET_SYSTEM_HP_JORNADA  	default "ttySC0" if ADK_TARGET_SYSTEM_SIM_H8300H  	default "ttySC2" if ADK_TARGET_SYSTEM_HITACHI_EDOSK2674  	default "ttySIF0" if ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT @@ -421,6 +431,12 @@ config ADK_ROOTSH_HUSH  	help  	  hush shell from busybox. +config ADK_ROOTSH_TOYSH +	bool "toysh (Shell compatible with non-MMU systems)" +	select ADK_PACKAGE_TOYBOX if !ADK_APPLIANCE_TOOLCHAIN +	help +	  ToyBox shell. +  config ADK_ROOTSH_SASH  	bool "sash (Shell compatible with non-MMU systems)"  	select ADK_PACKAGE_SASH if !ADK_APPLIANCE_TOOLCHAIN @@ -480,6 +496,12 @@ config ADK_BINSH_HUSH  	help  	  hush shell. +config ADK_BINSH_TOYSH +	bool "toysh (toybox Shell)" +	select ADK_PACKAGE_TOYBOX if !ADK_APPLIANCE_TOOLCHAIN +	help +	  sash shell. +  config ADK_BINSH_SASH  	bool "sash (Standalone Shell)"  	select ADK_PACKAGE_SASH if !ADK_APPLIANCE_TOOLCHAIN diff --git a/target/config/Config.in.subsystem b/target/config/Config.in.subsystem index ce43f391c..1a8c46348 100644 --- a/target/config/Config.in.subsystem +++ b/target/config/Config.in.subsystem @@ -2,6 +2,18 @@  # material, please see the LICENCE file in the top-level directory.  choice +prompt "HP Jornada model" +depends on ADK_TARGET_SYSTEM_HP_JORNADA + +config ADK_TARGET_MODEL_HP_JORNADA_690 +	bool "HP Jornada 690" + +config ADK_TARGET_MODEL_HP_JORNADA_680 +	bool "HP Jornada 680" + +endchoice + +choice  prompt "PCengines ALIX model"  depends on ADK_TARGET_SYSTEM_PCENGINES_ALIX diff --git a/target/config/Config.in.tools b/target/config/Config.in.tools index cdeeb90ed..0a0a0ef81 100644 --- a/target/config/Config.in.tools +++ b/target/config/Config.in.tools @@ -39,9 +39,9 @@ config ADK_HOST_BUILD_LIBTOOL  	bool  	default y -config ADK_HOST_BUILD_LIBRESSL +config ADK_HOST_BUILD_OPENSSL  	bool -	default n +	default y  config ADK_HOST_BUILD_PKGCONF  	bool @@ -133,6 +133,10 @@ config ADK_HOST_BUILD_STLINK  	bool  	default n +config ADK_HOST_BUILD_UPSLUG2 +	bool +	default n +  config ADK_HOST_BUILD_TAR  	bool  	default n @@ -280,13 +284,13 @@ config ADK_HOST_BUILD_OPKG  	default y if ADK_HOST_NEED_OPKG  	default n -config ADK_HOST_NEED_SQUASHFS +config ADK_HOST_NEED_SQUASHFS_TOOLS  	bool  	default n -config ADK_HOST_BUILD_SQUASHFS +config ADK_HOST_BUILD_SQUASHFS_TOOLS  	bool -	default y if ADK_HOST_NEED_SQUASHFS +	default y if ADK_HOST_NEED_SQUASHFS_TOOLS  	default n  config ADK_HOST_NEED_SYSLINUX diff --git a/target/cris/systems/axis-89-device-server b/target/cris/systems/axis-89-device-server new file mode 100644 index 000000000..80449caea --- /dev/null +++ b/target/cris/systems/axis-89-device-server @@ -0,0 +1,10 @@ +config ADK_TARGET_SYSTEM_AXIS_89_DEVICE_SERVER +	bool "Axis 89 Device Server" +	select ADK_TARGET_CPU_CRIS_CRISV32 +	select ADK_TARGET_WITH_MTD +	select ADK_TARGET_WITH_NETDEVICE +	select ADK_TARGET_KERNEL_ZIMAGE +	select ADK_TARGET_KERNEL_WITH_COMPRESSION +	help +	  Axis 89 Device Server + diff --git a/target/cris/systems/foxboard-lx832 b/target/cris/systems/foxboard-lx832 index 82eaad093..4ef104a95 100644 --- a/target/cris/systems/foxboard-lx832 +++ b/target/cris/systems/foxboard-lx832 @@ -2,6 +2,7 @@ config ADK_TARGET_SYSTEM_FOXBOARD_LX832  	bool "Foxboard LX832"  	select ADK_TARGET_CPU_CRIS_CRISV10  	select ADK_TARGET_WITH_MTD +	select ADK_TARGET_WITH_NETDEVICE  	select ADK_TARGET_KERNEL_ZIMAGE  	select ADK_TARGET_KERNEL_WITH_COMPRESSION  	help diff --git a/target/csky/Makefile b/target/csky/Makefile index a79b2c4d7..7b668d815 100644 --- a/target/csky/Makefile +++ b/target/csky/Makefile @@ -8,10 +8,8 @@ include $(ADK_TOPDIR)/mk/image.mk  KERNEL:=$(LINUX_DIR)/$(ADK_TARGET_KERNEL)  QEMU:=qemu-system-cskyv2 -ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y)  QEMU_ARGS:=${ADK_QEMU_ARGS} -M virt  QEMU_ARGS+=-netdev user,id=eth0 -device virtio-net-device,netdev=eth0 -endif  # target helper text  ifeq ($(ADK_TARGET_FS),archive) diff --git a/target/frv/uclibc-ng.config b/target/frv/uclibc-ng-nommu.config index 489ab8811..489ab8811 100644 --- a/target/frv/uclibc-ng.config +++ b/target/frv/uclibc-ng-nommu.config diff --git a/target/kvx/uclibc-ng.config b/target/kvx/uclibc-ng.config index fc6e6a1ed..0e314a41a 100644 --- a/target/kvx/uclibc-ng.config +++ b/target/kvx/uclibc-ng.config @@ -1,6 +1,6 @@  #  # Automatically generated file; DO NOT EDIT. -# uClibc-ng 1.0.36 C Library Configuration +# uClibc-ng 1.0.55 C Library Configuration  #  # TARGET_aarch64 is not set  # TARGET_alpha is not set @@ -27,29 +27,30 @@ TARGET_kvx=y  # TARGET_or1k is not set  # TARGET_powerpc is not set  # TARGET_riscv64 is not set +# TARGET_riscv32 is not set  # TARGET_sh is not set  # TARGET_sparc is not set  # TARGET_sparc64 is not set  # TARGET_tile is not set  # TARGET_x86_64 is not set  # TARGET_xtensa is not set +TARGET_LDSO_NAME="ld64-uClibc" +TARGET_ARCH_BITS=64  #  # Target Architecture Features and Options  #  TARGET_ARCH="kvx"  FORCE_OPTIONS_FOR_ARCH=y -# CONFIG_AARCH64_PAGE_SIZE_4K is not set -# CONFIG_AARCH64_PAGE_SIZE_16K is not set -# CONFIG_AARCH64_PAGE_SIZE_64K is not set +CONFIG_KVX_COOLIDGE_V1=y +# CONFIG_KVX_COOLIDGE_V2 is not set +TARGET_MARCH="kv3-1"  TARGET_SUBARCH=""  #  # Using ELF file format  #  ARCH_LITTLE_ENDIAN=y -# ARCH_WANTS_BIG_ENDIAN is not set -# ARCH_WANTS_LITTLE_ENDIAN is not set  #  # Using Little Endian @@ -69,6 +70,8 @@ HAVE_DOT_CONFIG=y  # General Library Settings  #  DOPIC=y +ARCH_HAS_UCONTEXT=y +HAVE_LDSO=y  HAVE_SHARED=y  # FORCE_SHAREABLE_TEXT_SEGMENTS is not set  LDSO_LDD_SUPPORT=y @@ -92,6 +95,7 @@ UCLIBC_HAS_THREADS_NATIVE=y  UCLIBC_HAS_THREADS=y  UCLIBC_HAS_TLS=y  PTHREADS_DEBUG_SUPPORT=y +PTHREADS_STACK_DEFAULT_SIZE=2097152  UCLIBC_HAS_SYSLOG=y  UCLIBC_HAS_LFS=y  # MALLOC is not set @@ -102,6 +106,7 @@ UCLIBC_HAS_UTMPX=y  UCLIBC_HAS_UTMP=y  UCLIBC_SUSV2_LEGACY=y  UCLIBC_SUSV3_LEGACY=y +UCLIBC_HAS_CONTEXT_FUNCS=y  # UCLIBC_SUSV3_LEGACY_MACROS is not set  UCLIBC_SUSV4_LEGACY=y  # UCLIBC_STRICT_HEADERS is not set @@ -158,6 +163,10 @@ UCLIBC_HAS_BSD_RES_CLOSE=y  UCLIBC_HAS_COMPAT_RES_STATE=y  # UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set  UCLIBC_HAS_RESOLVER_SUPPORT=y +# UCLIBC_DNSRAND_MODE_URANDOM is not set +# UCLIBC_DNSRAND_MODE_CLOCK is not set +UCLIBC_DNSRAND_MODE_PRNGPLUS=y +# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set  #  # String and Stdio Support diff --git a/target/linux/Config.in b/target/linux/Config.in index fb9d1810e..3709af90e 100644 --- a/target/linux/Config.in +++ b/target/linux/Config.in @@ -29,3 +29,4 @@ source target/linux/config/Config.in.kvm  source target/linux/config/Config.in.virtio  source target/linux/config/Config.in.debug  source target/linux/config/Config.in.compat +source target/linux/config/Config.in.hpjornada diff --git a/target/linux/Config.in.kernelcfg b/target/linux/Config.in.kernelcfg index 718731f20..d848147fc 100644 --- a/target/linux/Config.in.kernelcfg +++ b/target/linux/Config.in.kernelcfg @@ -7,7 +7,7 @@ depends on ADK_TARGET_OS_LINUX  default ADK_TARGET_LINUX_KERNEL_USE_DEFCONFIG if ADK_TARGET_CPU_ARC_ARC32  default ADK_TARGET_LINUX_KERNEL_USE_DEFCONFIG if ADK_TARGET_CPU_ARC_ARC64  default ADK_TARGET_LINUX_KERNEL_USE_DEFCONFIG if ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT -default ADK_TARGET_LINUX_KERNEL_USE_DEFCONFIG if ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT +default ADK_TARGET_LINUX_KERNEL_USE_DEFCONFIG if ADK_TARGET_SYSTEM_SIPEED_MAIXDUINO  default ADK_TARGET_LINUX_KERNEL_USE_DEFCONFIG if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK && ADK_TARGET_LINUX_KERNEL_VERSION_GIT  default ADK_TARGET_LINUX_KERNEL_USE_DEFCONFIG if ADK_TARGET_SYSTEM_PHYTEC_WEGA && ADK_TARGET_LINUX_KERNEL_VERSION_GIT  default ADK_TARGET_LINUX_KERNEL_USE_DEFCONFIG if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG && ADK_TARGET_LINUX_KERNEL_VERSION_GIT @@ -50,6 +50,7 @@ config ADK_TARGET_LINUX_KERNEL_DEFCONFIG  	default "sunxi_defconfig" if ADK_TARGET_SYSTEM_ORANGE_PI0  	default "sunxi_defconfig" if ADK_TARGET_SYSTEM_BANANA_P2_ZERO  	default "sunxi_defconfig" if ADK_TARGET_SYSTEM_BANANA_PRO +	default "sunxi_defconfig" if ADK_TARGET_SYSTEM_PCDUINO_3B  	default "edosk2674_defconfig" if ADK_TARGET_SYSTEM_HITACHI_EDOSK2674  	default "x86_64_defconfig" if ADK_TARGET_SYSTEM_GENERIC_X86_64  	default "i386_defconfig" if ADK_TARGET_SYSTEM_GENERIC_X86 @@ -57,6 +58,7 @@ config ADK_TARGET_LINUX_KERNEL_DEFCONFIG  	default "stm32_defconfig" if ADK_TARGET_SYSTEM_ST_STM32F769  	default "stm32_defconfig" if ADK_TARGET_SYSTEM_ST_STM32F746G  	default "nommu_k210_defconfig" if ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT +	default "nommu_k210_defconfig" if ADK_TARGET_SYSTEM_SIPEED_MAIXDUINO  	default "loongson3_defconfig" if ADK_TARGET_SYSTEM_QEMU_LOONGARCH  	default "defconfig" if ADK_TARGET_SYSTEM_ROCKPI4_PLUS  	default "rockpi4_defconfig" if ADK_TARGET_SYSTEM_ROCKPI4_PLUS && ADK_TARGET_LINUX_KERNEL_VERSION_GIT @@ -65,10 +67,13 @@ config ADK_TARGET_LINUX_KERNEL_DEFCONFIG  	default "spitz_defconfig" if ADK_TARGET_SYSTEM_QEMU_ARM_SPITZ  	default "haps_hs5x_defconfig" if ADK_TARGET_CPU_ARC_ARC32  	default "haps_arc64_defconfig" if ADK_TARGET_CPU_ARC_ARC64 +	default "hsdk_defconfig" if ADK_TARGET_SYSTEM_SYNOPSYS_HSDK  	default "m5208evb_defconfig" if ADK_TARGET_SYSTEM_QEMU_M68K_MCF5208  	default "default_defconfig" if ADK_TARGET_ARCH_KVX  	default "ci20_defconfig" if ADK_TARGET_SYSTEM_IMGTEC_CI20  	default "lemote2f_defconfig" if ADK_TARGET_SYSTEM_LEMOTE_FULOONG +	default "etraxfs_defconfig" if ADK_TARGET_SYSTEM_AXIS_89_DEVICE_SERVER +	default "hp6xx_defconfig" if ADK_TARGET_SYSTEM_HP_JORNADA  	default ""  config ADK_TARGET_LINUX_KERNEL_CUSTOMCONFIG_PATH diff --git a/target/linux/Config.in.kernelversion b/target/linux/Config.in.kernelversion index e07d3c03c..b9f80eefb 100644 --- a/target/linux/Config.in.kernelversion +++ b/target/linux/Config.in.kernelversion @@ -5,7 +5,6 @@ choice  prompt "Linux Kernel version" if !ADK_TARGET_CHOOSE_ARCH  depends on ADK_TARGET_OS_LINUX  default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_BOARD_BCM28XX -default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG  default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_SYSTEM_KINETIS_K70  default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_SYSTEM_ADSP_BF537  default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_SYSTEM_PHYTEC_WEGA @@ -13,7 +12,7 @@ default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_CPU_ARC_ARC32  default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_CPU_ARC_ARC64  default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_ARCH_KVX  default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_ARCH_LM32 -default ADK_TARGET_LINUX_KERNEL_VERSION_3_4 if ADK_TARGET_SYSTEM_ANDES_AG101P +default ADK_TARGET_LINUX_KERNEL_VERSION_3_4 if ADK_TARGET_ARCH_NDS32  default ADK_TARGET_LINUX_KERNEL_VERSION_4_4 if ADK_TARGET_ARCH_CRIS  default ADK_TARGET_LINUX_KERNEL_VERSION_4_4 if ADK_TARGET_ARCH_H8300  default ADK_TARGET_LINUX_KERNEL_VERSION_4_4 if ADK_TARGET_ARCH_METAG @@ -38,14 +37,10 @@ config ADK_TARGET_LINUX_KERNEL_VERSION_GIT  	depends on !ADK_TARGET_ARCH_IA64  	depends on !ADK_TARGET_ARCH_METAG  	depends on !ADK_TARGET_ARCH_NDS32 -	select ADK_HOST_NEED_LZOP if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 -	select ADK_HOST_NEED_LZ4 if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK  	select ADK_HOST_NEED_LZ4 if ADK_TARGET_SYSTEM_PHYTEC_WEGA && ADK_TARGET_LINUX_KERNEL_VERSION_GIT -	select ADK_TARGET_LINUX_KERNEL_IMAGE if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 -	select ADK_TARGET_LINUX_KERNEL_IMAGE if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK -config ADK_TARGET_LINUX_KERNEL_VERSION_6_13 -	bool "6.13.6" +config ADK_TARGET_LINUX_KERNEL_VERSION_6_17 +	bool "6.17.2"  	depends on !ADK_TARGET_ARCH_AVR32  	depends on !ADK_TARGET_ARCH_BFIN  	depends on !ADK_TARGET_ARCH_C6X @@ -56,7 +51,7 @@ config ADK_TARGET_LINUX_KERNEL_VERSION_6_13  	depends on !ADK_TARGET_ARCH_NDS32  config ADK_TARGET_LINUX_KERNEL_VERSION_6_12 -	bool "6.12.18" +	bool "6.12.52"  	depends on !ADK_TARGET_ARCH_AVR32  	depends on !ADK_TARGET_ARCH_BFIN  	depends on !ADK_TARGET_ARCH_C6X @@ -67,7 +62,7 @@ config ADK_TARGET_LINUX_KERNEL_VERSION_6_12  	depends on !ADK_TARGET_ARCH_NDS32  config ADK_TARGET_LINUX_KERNEL_VERSION_6_6 -	bool "6.6.82" +	bool "6.6.88"  	depends on !ADK_TARGET_ARCH_AVR32  	depends on !ADK_TARGET_ARCH_BFIN  	depends on !ADK_TARGET_ARCH_C6X @@ -78,7 +73,7 @@ config ADK_TARGET_LINUX_KERNEL_VERSION_6_6  	depends on !ADK_TARGET_ARCH_NDS32  config ADK_TARGET_LINUX_KERNEL_VERSION_6_1 -	bool "6.1.130" +	bool "6.1.135"  	depends on !ADK_TARGET_ARCH_AVR32  	depends on !ADK_TARGET_ARCH_BFIN  	depends on !ADK_TARGET_ARCH_C6X @@ -89,7 +84,7 @@ config ADK_TARGET_LINUX_KERNEL_VERSION_6_1  	depends on !ADK_TARGET_ARCH_NDS32  config ADK_TARGET_LINUX_KERNEL_VERSION_5_15 -	bool "5.15.178" +	bool "5.15.180"  	depends on !ADK_TARGET_ARCH_AVR32  	depends on !ADK_TARGET_ARCH_BFIN  	depends on !ADK_TARGET_ARCH_C6X @@ -99,7 +94,7 @@ config ADK_TARGET_LINUX_KERNEL_VERSION_5_15  	depends on !ADK_TARGET_ARCH_METAG  config ADK_TARGET_LINUX_KERNEL_VERSION_5_10 -	bool "5.10.234" +	bool "5.10.236"  	depends on !ADK_TARGET_ARCH_AVR32  	depends on !ADK_TARGET_ARCH_BFIN  	depends on !ADK_TARGET_ARCH_C6X @@ -110,7 +105,7 @@ config ADK_TARGET_LINUX_KERNEL_VERSION_5_10  	depends on !ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT  config ADK_TARGET_LINUX_KERNEL_VERSION_5_4 -	bool "5.4.289" +	bool "5.4.292"  	depends on !ADK_TARGET_ARCH_AVR32  	depends on !ADK_TARGET_ARCH_BFIN  	depends on !ADK_TARGET_ARCH_CRIS @@ -149,7 +144,6 @@ config ADK_TARGET_LINUX_KERNEL_VERSION_4_9  	depends on !ADK_TARGET_ARCH_ARC  	depends on !ADK_TARGET_ARCH_CRIS  	depends on !ADK_TARGET_ARCH_CSKY -	depends on !ADK_TARGET_ARCH_H8300  	depends on !ADK_TARGET_ARCH_METAG  	depends on !ADK_TARGET_ARCH_NDS32  	depends on !ADK_TARGET_ARCH_OR1K @@ -228,13 +222,9 @@ config ADK_TARGET_LINUX_KERNEL_GIT_REPO  	default "https://github.com/raspberrypi/linux.git" if ADK_TARGET_BOARD_BCM28XX  	default "git://git.code.sf.net/p/adi-linux/code" if ADK_TARGET_SYSTEM_ADSP_BF537  	default "https://github.com/EmcraftSystems/linux-emcraft.git" if ADK_TARGET_SYSTEM_KINETIS_K70 -	default "https://github.com/SolidRun/linux-fslc.git" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 -	default "https://github.com/SolidRun/linux-armada38x.git" if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG -	default "https://github.com/beagleboard/linux.git" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK  	default "https://git.phytec.de/git/linux-ti.git" if ADK_TARGET_SYSTEM_PHYTEC_WEGA  	default "https://github.com/kalray/linux_coolidge.git" if ADK_TARGET_ARCH_KVX  	default "https://github.com/m-labs/linux-milkymist.git" if ADK_TARGET_ARCH_LM32 -	default "https://github.com/radxa/kernel.git" if ADK_TARGET_SYSTEM_ROCKPI4_PLUS  	default "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git"  	help  	  GIT repository to use. @@ -247,12 +237,8 @@ config ADK_TARGET_LINUX_KERNEL_GIT_REPO_NAME  	default "lm32" if ADK_TARGET_ARCH_LM32  	default "rpi" if ADK_TARGET_BOARD_BCM28XX  	default "ad" if ADK_TARGET_SYSTEM_ADSP_BF537 -	default "bb" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK  	default "emcraft" if ADK_TARGET_SYSTEM_KINETIS_K70  	default "phytec" if ADK_TARGET_SYSTEM_PHYTEC_WEGA -	default "clearfog" if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG -	default "fslc" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 -	default "radxa" if ADK_TARGET_SYSTEM_ROCKPI4_PLUS  	default "linus"  config ADK_TARGET_LINUX_KERNEL_GIT @@ -261,35 +247,25 @@ config ADK_TARGET_LINUX_KERNEL_GIT  	default "f6e9dab9d1dc1e8fa2acb75504bf5ff86b885b8e" if ADK_TARGET_CPU_ARC_ARC32 || ADK_TARGET_CPU_ARC_ARC64  	default "b02c139d3608c8ae87f5398a3a29854f6df7a041" if ADK_TARGET_ARCH_KVX  	default "6a2f2e4198eaff63ee75f6085ce9f966c47b4441" if ADK_TARGET_ARCH_LM32 -	default "a320d39840745502d420f56b3d49b3723a12058f" if ADK_TARGET_BOARD_BCM28XX +	default "0c7075b4607f90c2fecf5e290e91168a91567d70" if ADK_TARGET_BOARD_BCM28XX  	default "f8d3b2a0fa5054aaed0f14cd457db9d8922bb167" if ADK_TARGET_SYSTEM_ADSP_BF537  	default "e7c8afc1dda7b7c18596d90ad6a17ae886650b72" if ADK_TARGET_SYSTEM_KINETIS_K70 -	default "902739f3353150ac9eb69ad995098f3079d862a3" if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG -	default "c85fbc86c61a8c8fd45ab1fe3d1bdd2df12f7962" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 -	default "v6.6.32-ti-arm32-r7" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK -	default "stable-4.4-rockpi4" if ADK_TARGET_SYSTEM_ROCKPI4_PLUS  	default "v4.4.52-phy" if ADK_TARGET_SYSTEM_PHYTEC_WEGA  config ADK_TARGET_LINUX_KERNEL_GIT_VER  	string "kernel version"  	depends on ADK_TARGET_LINUX_KERNEL_VERSION_GIT -	default "6.6.74" if ADK_TARGET_BOARD_BCM28XX +	default "6.12.51" if ADK_TARGET_BOARD_BCM28XX  	default "5.16" if ADK_TARGET_CPU_ARC_ARC32 || ADK_TARGET_CPU_ARC_ARC64 -	default "5.10.110" if ADK_TARGET_SYSTEM_ROCKPI4_PLUS -	default "6.6.32" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK  	default "4.4.52" if ADK_TARGET_SYSTEM_PHYTEC_WEGA  	default "2.6.33" if ADK_TARGET_SYSTEM_KINETIS_K70 -	default "3.14.79" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6  	default "3.6.0" if ADK_TARGET_SYSTEM_QEMU_LM32  	default "5.8.12" if ADK_TARGET_ARCH_KVX  config ADK_TARGET_LINUX_KERNEL_GIT_TYPE  	string  	depends on ADK_TARGET_LINUX_KERNEL_VERSION_GIT -	default "branch" if ADK_TARGET_LINUX_ARCH_LM32  	default "branch" if ADK_TARGET_SYSTEM_PHYTEC_WEGA -	default "branch" if ADK_TARGET_SYSTEM_ROCKPI4_PLUS -	default "branch" if ADK_TARGET_SYSTEM_BEAGLEBONE_BACK  	default "hash"  config ADK_TARGET_LINUX_KERNEL_NO_MIRROR diff --git a/target/linux/config/Config.in.arc b/target/linux/config/Config.in.arc index 461d1b7cd..f2da2a7ea 100644 --- a/target/linux/config/Config.in.arc +++ b/target/linux/config/Config.in.arc @@ -24,4 +24,11 @@ config ADK_LINUX_KERNEL_ARC_BUILTIN_DTB_NAME  	default "haps_hs" if ADK_TARGET_CPU_ARC_ARCHS && ADK_TARGET_SYSTEM_QEMU_ARC  	default "nsim_700" if ADK_TARGET_CPU_ARC_ARC700 +config ADK_LINUX_KERNEL_BUILTIN_DTB_NAME +	string +	depends on ADK_TARGET_ARCH_ARC +	default "hsdk" if ADK_TARGET_CPU_ARC_ARCHS && ADK_TARGET_SYSTEM_SYNOPSYS_HSDK +	default "haps_hs" if ADK_TARGET_CPU_ARC_ARCHS && ADK_TARGET_SYSTEM_SYNOPSYS_NSIM +	default "haps_hs" if ADK_TARGET_CPU_ARC_ARCHS && ADK_TARGET_SYSTEM_QEMU_ARC +	default "nsim_700" if ADK_TARGET_CPU_ARC_ARC700 diff --git a/target/linux/config/Config.in.block b/target/linux/config/Config.in.block index 59fffad68..8ccb10e72 100644 --- a/target/linux/config/Config.in.block +++ b/target/linux/config/Config.in.block @@ -489,8 +489,27 @@ config ADK_LINUX_KERNEL_MMC_BCM2835_MMC  	default y if ADK_TARGET_BOARD_BCM28XX  	default n +config ADK_LINUX_KERNEL_MMC_DW +	bool "SD card support for Synopsys HSDK board" +	select ADK_LINUX_KERNEL_BLOCK +	select ADK_LINUX_KERNEL_LBDAF +	select ADK_LINUX_KERNEL_SCSI +	select ADK_LINUX_KERNEL_MMC +	select ADK_LINUX_KERNEL_MMC_SPI +	select ADK_LINUX_KERNEL_MMC_BLOCK +	select ADK_LINUX_KERNEL_MMC_DW_PLTFM +	select ADK_LINUX_KERNEL_BLK_DEV +	select ADK_LINUX_KERNEL_BLK_DEV_SD +	select ADK_LINUX_KERNEL_MMC_SDHCI +	select ADK_LINUX_KERNEL_MMC_SDHCI_PLTFM +	select ADK_LINUX_KERNEL_PWRSEQ_EMMC +	select ADK_LINUX_KERNEL_PWRSEQ_SIMPLE +	depends on ADK_TARGET_SYSTEM_SYNOPSYS_HSDK +	default y if ADK_TARGET_SYSTEM_SYNOPSYS_HSDK +	default n +  config ADK_LINUX_KERNEL_MMC_MVSDIO -	bool "SD card support for Soidrun Clearfog" +	bool "SD card support for Solidrun Clearfog"  	select ADK_LINUX_KERNEL_BLOCK  	select ADK_LINUX_KERNEL_LBDAF  	select ADK_LINUX_KERNEL_SCSI diff --git a/target/linux/config/Config.in.bus b/target/linux/config/Config.in.bus index 45c79e1eb..54eddce4a 100644 --- a/target/linux/config/Config.in.bus +++ b/target/linux/config/Config.in.bus @@ -25,3 +25,9 @@ config ADK_LINUX_KERNEL_PCI_IMX6  	default y if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6  || \  		ADK_TARGET_SYSTEM_PHYTEC_IMX6  	default n + +config ADK_LINUX_KERNEL_PCI_IXP4XX +	bool +	depends on ADK_TARGET_SYSTEM_LINKSYS_NSLU2 +	default y if ADK_TARGET_SYSTEM_LINKSYS_NSLU2 +	default n diff --git a/target/linux/config/Config.in.dma b/target/linux/config/Config.in.dma index c570b546e..11094514b 100644 --- a/target/linux/config/Config.in.dma +++ b/target/linux/config/Config.in.dma @@ -58,6 +58,14 @@ config ADK_LINUX_KERNEL_DMA_BCM2708  	default y if ADK_TARGET_BOARD_BCM28XX  	default n +config ADK_LINUX_KERNEL_DW_AXI_DMAC +        bool +        select ADK_LINUX_KERNEL_DMADEVICES +	select ADK_LINUX_KERNEL_DMA_SHARED_BUFFER +	depends on ADK_TARGET_SYSTEM_SYNOPSYS_HSDK +	default y if ADK_TARGET_SYSTEM_SYNOPSYS_HSDK +	default n +  config ADK_LINUX_KERNEL_IMX_SDMA  	bool  	select ADK_LINUX_KERNEL_MXS_DMA diff --git a/target/linux/config/Config.in.ethernet b/target/linux/config/Config.in.ethernet index 7c3a617ed..1a9909a95 100644 --- a/target/linux/config/Config.in.ethernet +++ b/target/linux/config/Config.in.ethernet @@ -9,6 +9,9 @@ config ADK_LINUX_KERNEL_NET_ETHERNET  	bool  	default y +config ADK_LINUX_KERNEL_NET_CADENCE +	bool +  config ADK_LINUX_KERNEL_NET_VENDOR_CADENCE  	bool @@ -438,6 +441,7 @@ config ADK_LINUX_KERNEL_IBMVETH  config ADK_LINUX_KERNEL_MACB  	tristate "Cadence MACB network driver"  	select ADK_LINUX_KERNEL_NET_VENDOR_CADENCE +	select ADK_LINUX_KERNEL_NET_CADENCE  	depends on ADK_TARGET_CPU_AVR32 \  		|| ADK_TARGET_SYSTEM_RASPBERRY_PI5 \  		|| ADK_TARGET_SYSTEM_QEMU_ARM_XILINX_ZYNQ diff --git a/target/linux/config/Config.in.flash b/target/linux/config/Config.in.flash index effa41d58..38c5cf7b2 100644 --- a/target/linux/config/Config.in.flash +++ b/target/linux/config/Config.in.flash @@ -91,6 +91,22 @@ config ADK_LINUX_KERNEL_ETRAX_AXISFLASHMAP  	depends on ADK_TARGET_SYSTEM_FOXBOARD_LX832  	default y if ADK_TARGET_SYSTEM_FOXBOARD_LX832 +config ADK_LINUX_KERNEL_MTD_PHYSMAP_IXP4XX +	bool "Linksys NSLU2 Flashmap driver" +	select ADK_LINUX_KERNEL_BLOCK +	select ADK_LINUX_KERNEL_MTD +	select ADK_LINUX_KERNEL_MTD_PARTITIONS +	select ADK_LINUX_KERNEL_MTD_CHAR +	select ADK_LINUX_KERNEL_MTD_BLKDEVS +	select ADK_LINUX_KERNEL_MTD_BLOCK +	select ADK_LINUX_KERNEL_MTD_ROOTFS_ROOT_DEV +	select ADK_LINUX_KERNEL_MTD_CFI +	select ADK_LINUX_KERNEL_MTD_CFI_INTELEXT +	select ADK_LINUX_KERNEL_MTD_PHYSMAP +	select ADK_LINUX_KERNEL_MTD_PHYSMAP_OF +	depends on ADK_TARGET_SYSTEM_LINKSYS_NSLU2 +	default y if ADK_TARGET_SYSTEM_LINKSYS_NSLU2 +  config ADK_LINUX_KERNEL_MTD_M25P80  	bool "MTD M25P80 driver"  	select ADK_LINUX_KERNEL_BLOCK @@ -164,6 +180,7 @@ config ADK_TARGET_MTD_SIZE  	depends on ADK_TARGET_SYSTEM_QEMU_MICROBLAZE_S3ADSP1800 \  		|| ADK_TARGET_SYSTEM_QEMU_MICROBLAZE_ML605 \  		|| ADK_TARGET_SYSTEM_QEMU_ARM_VEXPRESS_A9 \ +		|| ADK_TARGET_SYSTEM_LINKSYS_NSLU2 \  		|| ADK_TARGET_SYSTEM_MIKROTIK_RB532  	default "16777216" if ADK_TARGET_SYSTEM_QEMU_MICROBLAZE_S3ADSP1800  	default "33554432" if ADK_TARGET_SYSTEM_QEMU_MICROBLAZE_ML605 diff --git a/target/linux/config/Config.in.fs b/target/linux/config/Config.in.fs index 1bed25ee6..ee4a0204e 100644 --- a/target/linux/config/Config.in.fs +++ b/target/linux/config/Config.in.fs @@ -43,9 +43,6 @@ config ADK_LINUX_KERNEL_FAT_DEFAULT_IOCHARSET  	string  	default "iso8859-1" -config ADK_LINUX_KERNEL_SQUASHFS_XZ -	bool -  config ADK_LINUX_KERNEL_JFFS2_COMPRESSION_OPTIONS  	bool @@ -253,7 +250,6 @@ config ADK_LINUX_KERNEL_JFFS2_FS  config ADK_LINUX_KERNEL_SQUASHFS  	tristate "SquashFS filesystem"  	select ADK_LINUX_KERNEL_MISC_FILESYSTEMS -	select ADK_LINUX_KERNEL_SQUASHFS_XZ  	help  	  Squashfs compressed read-only filesystem diff --git a/target/linux/config/Config.in.graphics b/target/linux/config/Config.in.graphics index 11e94db68..8d080b377 100644 --- a/target/linux/config/Config.in.graphics +++ b/target/linux/config/Config.in.graphics @@ -279,12 +279,8 @@ config ADK_LINUX_KERNEL_FB_PXA  	select ADK_LINUX_KERNEL_DUMMY_CONSOLE  	select ADK_LINUX_KERNEL_FRAMEBUFFER_CONSOLE  	select ADK_LINUX_KERNEL_FRAMEBUFFER_CONSOLE_ROTATION -	depends on ADK_TARGET_SYSTEM_SHARP_ZAURUS \ -		|| ADK_TARGET_SYSTEM_QEMU_ARM_TERRIER \ -		|| ADK_TARGET_SYSTEM_QEMU_ARM_SPITZ +	depends on ADK_TARGET_SYSTEM_SHARP_ZAURUS  	default y if ADK_TARGET_SYSTEM_SHARP_ZAURUS -	default y if ADK_TARGET_SYSTEM_QEMU_ARM_TERRIER -	default y if ADK_TARGET_SYSTEM_QEMU_ARM_SPITZ   	default n   	help  	  Framebuffer support for Sharp Zaurus CL Series. diff --git a/target/linux/config/Config.in.hpjornada b/target/linux/config/Config.in.hpjornada new file mode 100644 index 000000000..fc46c316f --- /dev/null +++ b/target/linux/config/Config.in.hpjornada @@ -0,0 +1,12 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +config ADK_LINUX_KERNEL_MEMORY_SIZE +	hex  +	default "0x2000000" +	depends on ADK_TARGET_MODEL_HP_JORNADA_690 + +config ADK_LINUX_KERNEL_MEMORY_SIZE +	hex  +	default "0x1000000" +	depends on ADK_TARGET_MODEL_HP_JORNADA_680 diff --git a/target/linux/config/Config.in.input b/target/linux/config/Config.in.input index 7d4932e41..5d2b31804 100644 --- a/target/linux/config/Config.in.input +++ b/target/linux/config/Config.in.input @@ -33,8 +33,6 @@ config ADK_LINUX_KERNEL_INPUT  	default y if ADK_TARGET_SYSTEM_ARANYM_M68K  	default y if ADK_TARGET_SYSTEM_LEMOTE_YEELONG  	default y if ADK_TARGET_SYSTEM_SHARP_ZAURUS -	default y if ADK_TARGET_SYSTEM_QEMU_ARM_SPITZ -	default y if ADK_TARGET_SYSTEM_QEMU_ARM_TERRIER  	default y if ADK_TARGET_MODEL_PCENGINES_ALIX1C  	default n @@ -57,15 +55,11 @@ config ADK_LINUX_KERNEL_MOUSE_ATARI  config ADK_LINUX_KERNEL_KEYBOARD_GPIO  	bool  	default y if ADK_TARGET_SYSTEM_SHARP_ZAURUS -	default y if ADK_TARGET_SYSTEM_QEMU_ARM_SPITZ -	default y if ADK_TARGET_SYSTEM_QEMU_ARM_TERRIER  	default n  config ADK_LINUX_KERNEL_KEYBOARD_MATRIX  	bool  	default y if ADK_TARGET_SYSTEM_SHARP_ZAURUS -	default y if ADK_TARGET_SYSTEM_QEMU_ARM_SPITZ -	default y if ADK_TARGET_SYSTEM_QEMU_ARM_TERRIER  	default n  config ADK_LINUX_KERNEL_INPUT_TOUCHSCREEN @@ -82,8 +76,6 @@ config ADK_LINUX_KERNEL_INPUT_KEYBOARD  	default y if ADK_TARGET_SYSTEM_ARANYM_M68K  	default y if ADK_TARGET_SYSTEM_LEMOTE_YEELONG  	default y if ADK_TARGET_SYSTEM_SHARP_ZAURUS -	default y if ADK_TARGET_SYSTEM_QEMU_ARM_SPITZ -	default y if ADK_TARGET_SYSTEM_QEMU_ARM_TERRIER  	default y if ADK_TARGET_MODEL_PCENGINES_ALIX1C  	default n @@ -92,8 +84,6 @@ config ADK_LINUX_KERNEL_INPUT_MOUSE  	default y if ADK_TARGET_SYSTEM_ARANYM_M68K  	default y if ADK_TARGET_SYSTEM_LEMOTE_YEELONG  	default y if ADK_TARGET_SYSTEM_SHARP_ZAURUS -	default y if ADK_TARGET_SYSTEM_QEMU_ARM_SPITZ -	default y if ADK_TARGET_SYSTEM_QEMU_ARM_TERRIER  	default y if ADK_TARGET_MODEL_PCENGINES_ALIX1C  	default n @@ -122,6 +112,12 @@ config ADK_LINUX_KERNEL_USB_HID  	help  	  You need this driver for USB keyboard and mouse support. +config ADK_LINUX_KERNEL_USB_HIDDEV +	bool "support for /dev/usb/hiddevX device" +	help +	  Enable access to HID devices that aren't strictly user interface +	  devices, like monitor controls and Uninterruptible Power Supplies. +  config ADK_TARGET_USB_KEYBOARD  	bool "enable keyboard support"  	depends on ADK_LINUX_KERNEL_USB_HID diff --git a/target/linux/config/Config.in.kernel b/target/linux/config/Config.in.kernel index e2b619926..eb9c66abb 100644 --- a/target/linux/config/Config.in.kernel +++ b/target/linux/config/Config.in.kernel @@ -294,7 +294,7 @@ config ADK_LINUX_KERNEL_NET_NS  	default n  config ADK_LINUX_KERNEL_TIME_NS -	bool "Network namespace" +	bool "Time namespace"  	select ADK_LINUX_KERNEL_NAMESPACES  	select ADK_LINUX_KERNEL_GENERIC_VDSO_TIME_NS  	default n diff --git a/target/linux/config/Config.in.network b/target/linux/config/Config.in.network index db330f0f1..8d1906caf 100644 --- a/target/linux/config/Config.in.network +++ b/target/linux/config/Config.in.network @@ -31,8 +31,6 @@ config ADK_LINUX_KERNEL_INET  	select ADK_LINUX_KERNEL_NET_CORE  	select ADK_LINUX_KERNEL_NETDEVICES  	select ADK_LINUX_KERNEL_ETHERNET -	select ADK_LINUX_KERNEL_CRYPTO -	select ADK_LINUX_KERNEL_CRYPTO_AES  	default y  config ADK_LINUX_KERNEL_IP_FIB_HASH diff --git a/target/linux/config/Config.in.serial b/target/linux/config/Config.in.serial index 39470b7f7..eb891d86b 100644 --- a/target/linux/config/Config.in.serial +++ b/target/linux/config/Config.in.serial @@ -119,7 +119,9 @@ config ADK_LINUX_KERNEL_SERIAL_8250  						|| ADK_TARGET_SYSTEM_SYNOPSYS_HSDK \  						|| ADK_TARGET_SYSTEM_SOM_C6745 \  						|| ADK_TARGET_SYSTEM_ROCKPI4_PLUS \ -						|| ADK_TARGET_SYSTEM_STARFIVE_VISIONFIVE2 +						|| ADK_TARGET_SYSTEM_STARFIVE_VISIONFIVE2 \ +						|| ADK_TARGET_SYSTEM_PCDUINO_3B \ +						|| ADK_TARGET_SYSTEM_LINKSYS_NSLU2  	select ADK_LINUX_KERNEL_SERIAL_8250_PNP if ADK_TARGET_SYSTEM_PCENGINES_APU  	select ADK_LINUX_KERNEL_SERIAL_8250_DW if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG  	select ADK_LINUX_KERNEL_SERIAL_8250_DW if ADK_TARGET_SYSTEM_ORANGE_PI0 @@ -128,6 +130,7 @@ config ADK_LINUX_KERNEL_SERIAL_8250  	select ADK_LINUX_KERNEL_SERIAL_8250_DW if ADK_TARGET_SYSTEM_ROCKPI4_PLUS  	select ADK_LINUX_KERNEL_SERIAL_8250_DW if ADK_TARGET_SYSTEM_STARFIVE_VISIONFIVE2  	select ADK_LINUX_KERNEL_SERIAL_8250_DW if ADK_TARGET_SYSTEM_BANANA_PRO +	select ADK_LINUX_KERNEL_SERIAL_8250_DW if ADK_TARGET_SYSTEM_PCDUINO_3B  	select ADK_LINUX_KERNEL_SERIAL_8250_EXTENDED if ADK_TARGET_SYSTEM_VISIONFIVE2  	select ADK_LINUX_KERNEL_SERIAL_8250_DMA if ADK_TARGET_SYSTEM_ORANGE_PI0  	select ADK_LINUX_KERNEL_SERIAL_8250_INGENIC if ADK_TARGET_SYSTEM_IMGTEC_CI20 @@ -173,7 +176,8 @@ config ADK_LINUX_KERNEL_SERIAL_8250  		|| ADK_TARGET_SYSTEM_RASPBERRY_PI4_64 \  		|| ADK_TARGET_SYSTEM_ROCKPI4_PLUS \  		|| ADK_TARGET_SYSTEM_STARFIVE_VISIONFIVE2 \ -		|| ADK_TARGET_SYSTEM_BANANA_PRO +		|| ADK_TARGET_SYSTEM_BANANA_PRO \ +		|| ADK_TARGET_SYSTEM_PCDUINO_3B  	default y if ADK_TARGET_SYSTEM_XILINX_KINTEX7  	default y if ADK_TARGET_SYSTEM_IMGTEC_CI20  	default y if ADK_TARGET_SYSTEM_LINKSYS_NSLU2 @@ -211,6 +215,7 @@ config ADK_LINUX_KERNEL_SERIAL_8250  	default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS  	default y if ADK_TARGET_SYSTEM_STARFIVE_VISIONFIVE2  	default y if ADK_TARGET_SYSTEM_BANANA_PRO +	default y if ADK_TARGET_SYSTEM_PCDUINO_3B  	default n  	help  	  Serial driver for 8250 UART chip. diff --git a/target/linux/config/Config.in.usb b/target/linux/config/Config.in.usb index 157c2f222..e6e3351f6 100644 --- a/target/linux/config/Config.in.usb +++ b/target/linux/config/Config.in.usb @@ -78,6 +78,7 @@ config ADK_LINUX_KERNEL_USB  	select ADK_LINUX_KERNEL_NLS  	select ADK_LINUX_KERNEL_USB_SUPPORT  	select ADK_LINUX_KERNEL_USB_ANNOUNCE_NEW_DEVICES +	select ADK_LINUX_KERNEL_USB_PCI if ADK_TARGET_SYSTEM_LINKSYS_NSLU2  	default m if ADK_TARGET_SYSTEM_PCENGINES_APU  	default m if ADK_TARGET_SYSTEM_PCENGINES_ALIX  	default m if ADK_TARGET_SYSTEM_LEMOTE_YEELONG @@ -88,6 +89,7 @@ config ADK_LINUX_KERNEL_USB  	default y if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG  	default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS  	default y if ADK_TARGET_SYSTEM_RASPBERRY_PI5 +	default y if ADK_TARGET_SYSTEM_LINKSYS_NSLU2  	default n  	help  	  Universal Serial Bus (USB) is a specification for a serial bus @@ -159,6 +161,7 @@ config ADK_LINUX_KERNEL_USB_EHCI_HCD  	default y if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG  	default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS  	default y if ADK_TARGET_SYSTEM_RASPBERRY_PI5 +	default y if ADK_TARGET_SYSTEM_LINKSYS_NSLU2  	default n  	help  	  The Enhanced Host Controller Interface (EHCI) is standard for USB 2.0 @@ -205,11 +208,13 @@ config ADK_LINUX_KERNEL_USB_OHCI_HCD  	select ADK_LINUX_KERNEL_USB_OHCI_HCD_PCI if ADK_TARGET_SYSTEM_PCENGINES_ALIX  	select ADK_LINUX_KERNEL_USB_OHCI_HCD_PCI if ADK_TARGET_SYSTEM_PCENGINES_APU  	select ADK_LINUX_KERNEL_USB_OHCI_HCD_PCI if ADK_TARGET_SYSTEM_ROCKPI4_PLUS +	select ADK_LINUX_KERNEL_USB_OHCI_HCD_PCI if ADK_TARGET_SYSTEM_LINKSYS_NSLU2  	default m if ADK_TARGET_SYSTEM_PCENGINES_APU  	default m if ADK_TARGET_SYSTEM_PCENGINES_ALIX  	default m if ADK_TARGET_SYSTEM_ACMESYSTEMS_FOXG20  	default m if ADK_TARGET_SYSTEM_LEMOTE_YEELONG  	default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS +	default y if ADK_TARGET_SYSTEM_LINKSYS_NSLU2  	default n  	help  	  The Open Host Controller Interface (OHCI) is a standard for accessing diff --git a/target/linux/config/Config.in.virtio b/target/linux/config/Config.in.virtio index 526e2920e..65b6d31b8 100644 --- a/target/linux/config/Config.in.virtio +++ b/target/linux/config/Config.in.virtio @@ -4,13 +4,16 @@  menu "Virtio driver support"  depends on ADK_TARGET_WITH_VIRTIO || ADK_TARGET_QEMU -config ADK_LINUX_KERNEL_VIRTIO_MENU +config ADK_LINUX_KERNEL_DRM_FBDEV_EMULATION  	bool -config ADK_LINUX_KERNEL_VIRTIO +config ADK_LINUX_KERNEL_DRM_VIRTIO_GPU_KMS  	bool -config ADK_LINUX_KERNEL_VIRTIO_CONSOLE +config ADK_LINUX_KERNEL_VIRTIO_MENU +	bool + +config ADK_LINUX_KERNEL_VIRTIO  	bool  config ADK_LINUX_KERNEL_VIRTIO_PCI_LEGACY @@ -22,6 +25,20 @@ config ADK_LINUX_KERNEL_VIRTIO_PCI  config ADK_LINUX_KERNEL_VIRTIO_MMIO  	bool +config ADK_LINUX_KERNEL_VIRTIO_CONSOLE +	bool "Virtio console driver" +	select ADK_LINUX_KERNEL_VIRTIO +	default y if ADK_TARGET_SYSTEM_QEMU_AARCH64 +	default y if ADK_TARGET_SYSTEM_QEMU_ARC +	default y if ADK_TARGET_SYSTEM_QEMU_CSKY +	default y if ADK_TARGET_SYSTEM_QEMU_M68K_VIRT +	default y if ADK_TARGET_SYSTEM_QEMU_RISCV32 +	default y if ADK_TARGET_SYSTEM_QEMU_RISCV64 +	default y if ADK_TARGET_SYSTEM_QEMU_S390 +	default n +	help +	  Enables support for Virtio console driver. +  config ADK_LINUX_KERNEL_VIRTIO_NET  	tristate "Virtio net driver"  	select ADK_LINUX_KERNEL_VIRTIO @@ -29,6 +46,12 @@ config ADK_LINUX_KERNEL_VIRTIO_NET  	select ADK_LINUX_KERNEL_VIRTIO_MMIO  	select ADK_LINUX_KERNEL_VIRTIO_PCI  	select ADK_LINUX_KERNEL_VIRTIO_PCI_LEGACY +	default y if ADK_TARGET_SYSTEM_QEMU_AARCH64 +	default y if ADK_TARGET_SYSTEM_QEMU_ARC +	default y if ADK_TARGET_SYSTEM_QEMU_CSKY +	default y if ADK_TARGET_SYSTEM_QEMU_M68K_VIRT +	default y if ADK_TARGET_SYSTEM_QEMU_RISCV32 +	default y if ADK_TARGET_SYSTEM_QEMU_RISCV64  	default y if ADK_TARGET_SYSTEM_QEMU_S390  	default n  	help @@ -42,8 +65,23 @@ config ADK_LINUX_KERNEL_VIRTIO_BLK  	select ADK_LINUX_KERNEL_VIRTIO_PCI_LEGACY  	select ADK_LINUX_KERNEL_VIRTIO_MMIO  	select ADK_LINUX_KERNEL_BLK_DEV +	default y if ADK_TARGET_SYSTEM_QEMU_AARCH64 +	default y if ADK_TARGET_SYSTEM_QEMU_ARC +	default y if ADK_TARGET_SYSTEM_QEMU_CSKY +	default y if ADK_TARGET_SYSTEM_QEMU_M68K_VIRT +	default y if ADK_TARGET_SYSTEM_QEMU_RISCV32 +	default y if ADK_TARGET_SYSTEM_QEMU_RISCV64 +	default y if ADK_TARGET_SYSTEM_QEMU_S390  	default n  	help  	  Enables support for Virtio Block driver. +config ADK_LINUX_KERNEL_DRM_VIRTIO_GPU +	tristate "Virtio GPU support" +	select ADK_LINUX_KERNEL_DRM_VIRTIO_GPU_KMS +	select ADK_LINUX_KERNEL_DRM_FBDEV_EMULATION +	default n +	help +	  Enables support for Virtio GPU driver. +  endmenu diff --git a/target/linux/config/Config.in.watchdog b/target/linux/config/Config.in.watchdog index 59c60d94f..eaa07a65d 100644 --- a/target/linux/config/Config.in.watchdog +++ b/target/linux/config/Config.in.watchdog @@ -35,6 +35,15 @@ config ADK_LINUX_KERNEL_IMX2_WDT  	help  	  Watchdog driver for IMX6 boards. +config ADK_LINUX_KERNEL_IXP4XX_WATCHDOG +	bool "Hardware Watchdog for Linksys NSLU2" +	select ADK_LINUX_KERNEL_WATCHDOG +	depends on ADK_TARGET_SYSTEM_LINKSYS_NSLU2 +	default y if ADK_TARGET_SYSTEM_LINKSYS_NSLU2 +	default n +	help +	  Watchdog driver for Linksys NSLU2. +  config ADK_LINUX_KERNEL_SCx200_WDT  	bool "Natsemi Hardware Watchdog"   	depends on ADK_TARGET_SYSTEM_PCENGINES_WRAP diff --git a/target/linux/patches/0c7075b4607f90c2fecf5e290e91168a91567d70/defconfig.patch b/target/linux/patches/0c7075b4607f90c2fecf5e290e91168a91567d70/defconfig.patch new file mode 100644 index 000000000..dde888d4e --- /dev/null +++ b/target/linux/patches/0c7075b4607f90c2fecf5e290e91168a91567d70/defconfig.patch @@ -0,0 +1,38 @@ +diff -Nur linux-0c7075b4607f90c2fecf5e290e91168a91567d70.orig/arch/arm64/configs/bcm2711_defconfig linux-0c7075b4607f90c2fecf5e290e91168a91567d70/arch/arm64/configs/bcm2711_defconfig +--- linux-0c7075b4607f90c2fecf5e290e91168a91567d70.orig/arch/arm64/configs/bcm2711_defconfig	2025-10-12 18:01:40.000000000 +0200 ++++ linux-0c7075b4607f90c2fecf5e290e91168a91567d70/arch/arm64/configs/bcm2711_defconfig	2025-10-13 06:38:12.148665505 +0200 +@@ -1,4 +1,4 @@ +-CONFIG_LOCALVERSION="-v8" ++CONFIG_LOCALVERSION="" + # CONFIG_LOCALVERSION_AUTO is not set + CONFIG_SYSVIPC=y + CONFIG_POSIX_MQUEUE=y +@@ -78,8 +78,7 @@ + CONFIG_MODULE_UNLOAD=y + CONFIG_MODVERSIONS=y + CONFIG_MODULE_SRCVERSION_ALL=y +-CONFIG_MODULE_COMPRESS=y +-CONFIG_MODULE_COMPRESS_XZ=y ++# CONFIG_MODULE_COMPRESS is not set + CONFIG_BLK_DEV_THROTTLING=y + CONFIG_PARTITION_ADVANCED=y + CONFIG_MAC_PARTITION=y +diff -Nur linux-0c7075b4607f90c2fecf5e290e91168a91567d70.orig/arch/arm64/configs/bcm2712_defconfig linux-0c7075b4607f90c2fecf5e290e91168a91567d70/arch/arm64/configs/bcm2712_defconfig +--- linux-0c7075b4607f90c2fecf5e290e91168a91567d70.orig/arch/arm64/configs/bcm2712_defconfig	2025-10-12 18:01:40.000000000 +0200 ++++ linux-0c7075b4607f90c2fecf5e290e91168a91567d70/arch/arm64/configs/bcm2712_defconfig	2025-10-13 06:38:12.148665505 +0200 +@@ -1,4 +1,4 @@ +-CONFIG_LOCALVERSION="-v8-16k" ++CONFIG_LOCALVERSION="" + # CONFIG_LOCALVERSION_AUTO is not set + CONFIG_SYSVIPC=y + CONFIG_POSIX_MQUEUE=y +@@ -81,8 +81,7 @@ + CONFIG_MODULE_UNLOAD=y + CONFIG_MODVERSIONS=y + CONFIG_MODULE_SRCVERSION_ALL=y +-CONFIG_MODULE_COMPRESS=y +-CONFIG_MODULE_COMPRESS_XZ=y ++# CONFIG_MODULE_COMPRESS is not set + CONFIG_BLK_DEV_THROTTLING=y + CONFIG_PARTITION_ADVANCED=y + CONFIG_MAC_PARTITION=y diff --git a/target/linux/patches/2.6.32.70/proc-xscale.patch b/target/linux/patches/2.6.32.70/proc-xscale.patch new file mode 100644 index 000000000..a8546bba9 --- /dev/null +++ b/target/linux/patches/2.6.32.70/proc-xscale.patch @@ -0,0 +1,12 @@ +diff -Nur linux-2.6.32.70.orig/arch/arm/mm/proc-xscale.S linux-2.6.32.70/arch/arm/mm/proc-xscale.S +--- linux-2.6.32.70.orig/arch/arm/mm/proc-xscale.S	2016-01-29 22:13:00.000000000 +0100 ++++ linux-2.6.32.70/arch/arm/mm/proc-xscale.S	2025-04-06 10:56:31.793163221 +0200 +@@ -605,7 +605,7 @@ +  + 	.align +  +-	.section ".proc.info.init", #alloc, #execinstr ++	.section ".proc.info.init", "ax" +  + 	.type	__80200_A0_A1_proc_info,#object + __80200_A0_A1_proc_info: diff --git a/target/linux/patches/2.6.32.70/uaccess.patch b/target/linux/patches/2.6.32.70/uaccess.patch new file mode 100644 index 000000000..428a06b69 --- /dev/null +++ b/target/linux/patches/2.6.32.70/uaccess.patch @@ -0,0 +1,14 @@ +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85745 + +diff -Nur linux-2.6.32.70.orig/arch/arm/include/asm/uaccess.h linux-2.6.32.70/arch/arm/include/asm/uaccess.h +--- linux-2.6.32.70.orig/arch/arm/include/asm/uaccess.h	2016-01-29 22:13:00.000000000 +0100 ++++ linux-2.6.32.70/arch/arm/include/asm/uaccess.h	2025-04-06 10:41:37.342042671 +0200 +@@ -145,7 +145,7 @@ +  + #define put_user(x,p)							\ + 	({								\ +-		register const typeof(*(p)) __r2 asm("r2") = (x);	\ ++		register typeof(*(p)) __r2 asm("r2") = (x);	\ + 		register const typeof(*(p)) __user *__p asm("r0") = (p);\ + 		register int __e asm("r0");				\ + 		switch (sizeof(*(__p))) {				\ diff --git a/target/linux/patches/3.16.85/bsd-compatibility.patch b/target/linux/patches/3.16.85/bsd-compatibility.patch deleted file mode 100644 index b954b658f..000000000 --- a/target/linux/patches/3.16.85/bsd-compatibility.patch +++ /dev/null @@ -1,2538 +0,0 @@ -diff -Nur linux-3.11.5.orig/scripts/Makefile.lib linux-3.11.5/scripts/Makefile.lib ---- linux-3.11.5.orig/scripts/Makefile.lib	2013-10-14 03:14:45.000000000 +0200 -+++ linux-3.11.5/scripts/Makefile.lib	2013-10-16 18:09:31.000000000 +0200 -@@ -281,7 +281,12 @@ - size_append = printf $(shell						\ - dec_size=0;								\ - for F in $1; do								\ --	fsize=$$(stat -c "%s" $$F);					\ -+	if stat -qs .>/dev/null 2>&1; then				\ -+		statcmd='stat -f %z';					\ -+	else								\ -+		statcmd='stat -c %s';					\ -+	fi;								\ -+	fsize=$$($$statcmd $$F);					\ - 	dec_size=$$(expr $$dec_size + $$fsize);				\ - done;									\ - printf "%08x\n" $$dec_size |						\ -diff -Nur linux-3.11.5.orig/scripts/mod/mk_elfconfig.c linux-3.11.5/scripts/mod/mk_elfconfig.c ---- linux-3.11.5.orig/scripts/mod/mk_elfconfig.c	2013-10-14 03:14:45.000000000 +0200 -+++ linux-3.11.5/scripts/mod/mk_elfconfig.c	2013-10-16 18:09:31.000000000 +0200 -@@ -1,7 +1,18 @@ - #include <stdio.h> - #include <stdlib.h> - #include <string.h> --#include <elf.h> -+ -+#define EI_NIDENT (16) -+#define ELFMAG          "\177ELF" -+ -+#define SELFMAG         4 -+#define EI_CLASS        4 -+#define ELFCLASS32      1               /* 32-bit objects */ -+#define ELFCLASS64      2               /* 64-bit objects */ -+ -+#define EI_DATA         5               /* Data encoding byte index */ -+#define ELFDATA2LSB     1               /* 2's complement, little endian */ -+#define ELFDATA2MSB     2               /* 2's complement, big endian */ -  - int - main(int argc, char **argv) -diff -Nur linux-3.11.5.orig/scripts/mod/modpost.h linux-3.11.5/scripts/mod/modpost.h ---- linux-3.11.5.orig/scripts/mod/modpost.h	2013-10-14 03:14:45.000000000 +0200 -+++ linux-3.11.5/scripts/mod/modpost.h	2013-10-16 18:09:31.000000000 +0200 -@@ -7,7 +7,2453 @@ - #include <sys/mman.h> - #include <fcntl.h> - #include <unistd.h> --#include <elf.h> -+ -+ -+/* This file defines standard ELF types, structures, and macros. -+   Copyright (C) 1995-1999,2000,2001,2002,2003 Free Software Foundation, Inc. -+   This file is part of the GNU C Library. -+ -+   The GNU C Library is free software; you can redistribute it and/or -+   modify it under the terms of the GNU Lesser General Public -+   License as published by the Free Software Foundation; either -+   version 2.1 of the License, or (at your option) any later version. -+ -+   The GNU C Library is distributed in the hope that it will be useful, -+   but WITHOUT ANY WARRANTY; without even the implied warranty of -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -+   Lesser General Public License for more details. -+ -+   You should have received a copy of the GNU Lesser General Public -+   License along with the GNU C Library; if not, write to the Free -+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+   02111-1307 USA.  */ -+ -+#ifndef _ELF_H -+#define	_ELF_H 1 -+ -+__BEGIN_DECLS -+ -+/* Standard ELF types.  */ -+ -+#include <stdint.h> -+ -+/* Type for a 16-bit quantity.  */ -+typedef uint16_t Elf32_Half; -+typedef uint16_t Elf64_Half; -+ -+/* Types for signed and unsigned 32-bit quantities.  */ -+typedef uint32_t Elf32_Word; -+typedef	int32_t  Elf32_Sword; -+typedef uint32_t Elf64_Word; -+typedef	int32_t  Elf64_Sword; -+ -+/* Types for signed and unsigned 64-bit quantities.  */ -+typedef uint64_t Elf32_Xword; -+typedef	int64_t  Elf32_Sxword; -+typedef uint64_t Elf64_Xword; -+typedef	int64_t  Elf64_Sxword; -+ -+/* Type of addresses.  */ -+typedef uint32_t Elf32_Addr; -+typedef uint64_t Elf64_Addr; -+ -+/* Type of file offsets.  */ -+typedef uint32_t Elf32_Off; -+typedef uint64_t Elf64_Off; -+ -+/* Type for section indices, which are 16-bit quantities.  */ -+typedef uint16_t Elf32_Section; -+typedef uint16_t Elf64_Section; -+ -+/* Type for version symbol information.  */ -+typedef Elf32_Half Elf32_Versym; -+typedef Elf64_Half Elf64_Versym; -+ -+ -+/* The ELF file header.  This appears at the start of every ELF file.  */ -+ -+#define EI_NIDENT (16) -+ -+typedef struct -+{ -+  unsigned char	e_ident[EI_NIDENT];	/* Magic number and other info */ -+  Elf32_Half	e_type;			/* Object file type */ -+  Elf32_Half	e_machine;		/* Architecture */ -+  Elf32_Word	e_version;		/* Object file version */ -+  Elf32_Addr	e_entry;		/* Entry point virtual address */ -+  Elf32_Off	e_phoff;		/* Program header table file offset */ -+  Elf32_Off	e_shoff;		/* Section header table file offset */ -+  Elf32_Word	e_flags;		/* Processor-specific flags */ -+  Elf32_Half	e_ehsize;		/* ELF header size in bytes */ -+  Elf32_Half	e_phentsize;		/* Program header table entry size */ -+  Elf32_Half	e_phnum;		/* Program header table entry count */ -+  Elf32_Half	e_shentsize;		/* Section header table entry size */ -+  Elf32_Half	e_shnum;		/* Section header table entry count */ -+  Elf32_Half	e_shstrndx;		/* Section header string table index */ -+} Elf32_Ehdr; -+ -+typedef struct -+{ -+  unsigned char	e_ident[EI_NIDENT];	/* Magic number and other info */ -+  Elf64_Half	e_type;			/* Object file type */ -+  Elf64_Half	e_machine;		/* Architecture */ -+  Elf64_Word	e_version;		/* Object file version */ -+  Elf64_Addr	e_entry;		/* Entry point virtual address */ -+  Elf64_Off	e_phoff;		/* Program header table file offset */ -+  Elf64_Off	e_shoff;		/* Section header table file offset */ -+  Elf64_Word	e_flags;		/* Processor-specific flags */ -+  Elf64_Half	e_ehsize;		/* ELF header size in bytes */ -+  Elf64_Half	e_phentsize;		/* Program header table entry size */ -+  Elf64_Half	e_phnum;		/* Program header table entry count */ -+  Elf64_Half	e_shentsize;		/* Section header table entry size */ -+  Elf64_Half	e_shnum;		/* Section header table entry count */ -+  Elf64_Half	e_shstrndx;		/* Section header string table index */ -+} Elf64_Ehdr; -+ -+/* Fields in the e_ident array.  The EI_* macros are indices into the -+   array.  The macros under each EI_* macro are the values the byte -+   may have.  */ -+ -+#define EI_MAG0		0		/* File identification byte 0 index */ -+#define ELFMAG0		0x7f		/* Magic number byte 0 */ -+ -+#define EI_MAG1		1		/* File identification byte 1 index */ -+#define ELFMAG1		'E'		/* Magic number byte 1 */ -+ -+#define EI_MAG2		2		/* File identification byte 2 index */ -+#define ELFMAG2		'L'		/* Magic number byte 2 */ -+ -+#define EI_MAG3		3		/* File identification byte 3 index */ -+#define ELFMAG3		'F'		/* Magic number byte 3 */ -+ -+/* Conglomeration of the identification bytes, for easy testing as a word.  */ -+#define	ELFMAG		"\177ELF" -+#define	SELFMAG		4 -+ -+#define EI_CLASS	4		/* File class byte index */ -+#define ELFCLASSNONE	0		/* Invalid class */ -+#define ELFCLASS32	1		/* 32-bit objects */ -+#define ELFCLASS64	2		/* 64-bit objects */ -+#define ELFCLASSNUM	3 -+ -+#define EI_DATA		5		/* Data encoding byte index */ -+#define ELFDATANONE	0		/* Invalid data encoding */ -+#define ELFDATA2LSB	1		/* 2's complement, little endian */ -+#define ELFDATA2MSB	2		/* 2's complement, big endian */ -+#define ELFDATANUM	3 -+ -+#define EI_VERSION	6		/* File version byte index */ -+					/* Value must be EV_CURRENT */ -+ -+#define EI_OSABI	7		/* OS ABI identification */ -+#define ELFOSABI_NONE		0	/* UNIX System V ABI */ -+#define ELFOSABI_SYSV		0	/* Alias.  */ -+#define ELFOSABI_HPUX		1	/* HP-UX */ -+#define ELFOSABI_NETBSD		2	/* NetBSD.  */ -+#define ELFOSABI_LINUX		3	/* Linux.  */ -+#define ELFOSABI_SOLARIS	6	/* Sun Solaris.  */ -+#define ELFOSABI_AIX		7	/* IBM AIX.  */ -+#define ELFOSABI_IRIX		8	/* SGI Irix.  */ -+#define ELFOSABI_FREEBSD	9	/* FreeBSD.  */ -+#define ELFOSABI_TRU64		10	/* Compaq TRU64 UNIX.  */ -+#define ELFOSABI_MODESTO	11	/* Novell Modesto.  */ -+#define ELFOSABI_OPENBSD	12	/* OpenBSD.  */ -+#define ELFOSABI_ARM		97	/* ARM */ -+#define ELFOSABI_STANDALONE	255	/* Standalone (embedded) application */ -+ -+#define EI_ABIVERSION	8		/* ABI version */ -+ -+#define EI_PAD		9		/* Byte index of padding bytes */ -+ -+/* Legal values for e_type (object file type).  */ -+ -+#define ET_NONE		0		/* No file type */ -+#define ET_REL		1		/* Relocatable file */ -+#define ET_EXEC		2		/* Executable file */ -+#define ET_DYN		3		/* Shared object file */ -+#define ET_CORE		4		/* Core file */ -+#define	ET_NUM		5		/* Number of defined types */ -+#define ET_LOOS		0xfe00		/* OS-specific range start */ -+#define ET_HIOS		0xfeff		/* OS-specific range end */ -+#define ET_LOPROC	0xff00		/* Processor-specific range start */ -+#define ET_HIPROC	0xffff		/* Processor-specific range end */ -+ -+/* Legal values for e_machine (architecture).  */ -+ -+#define EM_NONE		 0		/* No machine */ -+#define EM_M32		 1		/* AT&T WE 32100 */ -+#define EM_SPARC	 2		/* SUN SPARC */ -+#define EM_386		 3		/* Intel 80386 */ -+#define EM_68K		 4		/* Motorola m68k family */ -+#define EM_88K		 5		/* Motorola m88k family */ -+#define EM_860		 7		/* Intel 80860 */ -+#define EM_MIPS		 8		/* MIPS R3000 big-endian */ -+#define EM_S370		 9		/* IBM System/370 */ -+#define EM_MIPS_RS3_LE	10		/* MIPS R3000 little-endian */ -+ -+#define EM_PARISC	15		/* HPPA */ -+#define EM_VPP500	17		/* Fujitsu VPP500 */ -+#define EM_SPARC32PLUS	18		/* Sun's "v8plus" */ -+#define EM_960		19		/* Intel 80960 */ -+#define EM_PPC		20		/* PowerPC */ -+#define EM_PPC64	21		/* PowerPC 64-bit */ -+#define EM_S390		22		/* IBM S390 */ -+ -+#define EM_V800		36		/* NEC V800 series */ -+#define EM_FR20		37		/* Fujitsu FR20 */ -+#define EM_RH32		38		/* TRW RH-32 */ -+#define EM_RCE		39		/* Motorola RCE */ -+#define EM_ARM		40		/* ARM */ -+#define EM_FAKE_ALPHA	41		/* Digital Alpha */ -+#define EM_SH		42		/* Hitachi SH */ -+#define EM_SPARCV9	43		/* SPARC v9 64-bit */ -+#define EM_TRICORE	44		/* Siemens Tricore */ -+#define EM_ARC		45		/* Argonaut RISC Core */ -+#define EM_H8_300	46		/* Hitachi H8/300 */ -+#define EM_H8_300H	47		/* Hitachi H8/300H */ -+#define EM_H8S		48		/* Hitachi H8S */ -+#define EM_H8_500	49		/* Hitachi H8/500 */ -+#define EM_IA_64	50		/* Intel Merced */ -+#define EM_MIPS_X	51		/* Stanford MIPS-X */ -+#define EM_COLDFIRE	52		/* Motorola Coldfire */ -+#define EM_68HC12	53		/* Motorola M68HC12 */ -+#define EM_MMA		54		/* Fujitsu MMA Multimedia Accelerator*/ -+#define EM_PCP		55		/* Siemens PCP */ -+#define EM_NCPU		56		/* Sony nCPU embeeded RISC */ -+#define EM_NDR1		57		/* Denso NDR1 microprocessor */ -+#define EM_STARCORE	58		/* Motorola Start*Core processor */ -+#define EM_ME16		59		/* Toyota ME16 processor */ -+#define EM_ST100	60		/* STMicroelectronic ST100 processor */ -+#define EM_TINYJ	61		/* Advanced Logic Corp. Tinyj emb.fam*/ -+#define EM_X86_64	62		/* AMD x86-64 architecture */ -+#define EM_PDSP		63		/* Sony DSP Processor */ -+ -+#define EM_FX66		66		/* Siemens FX66 microcontroller */ -+#define EM_ST9PLUS	67		/* STMicroelectronics ST9+ 8/16 mc */ -+#define EM_ST7		68		/* STmicroelectronics ST7 8 bit mc */ -+#define EM_68HC16	69		/* Motorola MC68HC16 microcontroller */ -+#define EM_68HC11	70		/* Motorola MC68HC11 microcontroller */ -+#define EM_68HC08	71		/* Motorola MC68HC08 microcontroller */ -+#define EM_68HC05	72		/* Motorola MC68HC05 microcontroller */ -+#define EM_SVX		73		/* Silicon Graphics SVx */ -+#define EM_ST19		74		/* STMicroelectronics ST19 8 bit mc */ -+#define EM_VAX		75		/* Digital VAX */ -+#define EM_CRIS		76		/* Axis Communications 32-bit embedded processor */ -+#define EM_JAVELIN	77		/* Infineon Technologies 32-bit embedded processor */ -+#define EM_FIREPATH	78		/* Element 14 64-bit DSP Processor */ -+#define EM_ZSP		79		/* LSI Logic 16-bit DSP Processor */ -+#define EM_MMIX		80		/* Donald Knuth's educational 64-bit processor */ -+#define EM_HUANY	81		/* Harvard University machine-independent object files */ -+#define EM_PRISM	82		/* SiTera Prism */ -+#define EM_AVR		83		/* Atmel AVR 8-bit microcontroller */ -+#define EM_FR30		84		/* Fujitsu FR30 */ -+#define EM_D10V		85		/* Mitsubishi D10V */ -+#define EM_D30V		86		/* Mitsubishi D30V */ -+#define EM_V850		87		/* NEC v850 */ -+#define EM_M32R		88		/* Mitsubishi M32R */ -+#define EM_MN10300	89		/* Matsushita MN10300 */ -+#define EM_MN10200	90		/* Matsushita MN10200 */ -+#define EM_PJ		91		/* picoJava */ -+#define EM_OPENRISC	92		/* OpenRISC 32-bit embedded processor */ -+#define EM_ARC_A5	93		/* ARC Cores Tangent-A5 */ -+#define EM_XTENSA	94		/* Tensilica Xtensa Architecture */ -+#define EM_NUM		95 -+ -+/* If it is necessary to assign new unofficial EM_* values, please -+   pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the -+   chances of collision with official or non-GNU unofficial values.  */ -+ -+#define EM_ALPHA	0x9026 -+ -+/* Legal values for e_version (version).  */ -+ -+#define EV_NONE		0		/* Invalid ELF version */ -+#define EV_CURRENT	1		/* Current version */ -+#define EV_NUM		2 -+ -+/* Section header.  */ -+ -+typedef struct -+{ -+  Elf32_Word	sh_name;		/* Section name (string tbl index) */ -+  Elf32_Word	sh_type;		/* Section type */ -+  Elf32_Word	sh_flags;		/* Section flags */ -+  Elf32_Addr	sh_addr;		/* Section virtual addr at execution */ -+  Elf32_Off	sh_offset;		/* Section file offset */ -+  Elf32_Word	sh_size;		/* Section size in bytes */ -+  Elf32_Word	sh_link;		/* Link to another section */ -+  Elf32_Word	sh_info;		/* Additional section information */ -+  Elf32_Word	sh_addralign;		/* Section alignment */ -+  Elf32_Word	sh_entsize;		/* Entry size if section holds table */ -+} Elf32_Shdr; -+ -+typedef struct -+{ -+  Elf64_Word	sh_name;		/* Section name (string tbl index) */ -+  Elf64_Word	sh_type;		/* Section type */ -+  Elf64_Xword	sh_flags;		/* Section flags */ -+  Elf64_Addr	sh_addr;		/* Section virtual addr at execution */ -+  Elf64_Off	sh_offset;		/* Section file offset */ -+  Elf64_Xword	sh_size;		/* Section size in bytes */ -+  Elf64_Word	sh_link;		/* Link to another section */ -+  Elf64_Word	sh_info;		/* Additional section information */ -+  Elf64_Xword	sh_addralign;		/* Section alignment */ -+  Elf64_Xword	sh_entsize;		/* Entry size if section holds table */ -+} Elf64_Shdr; -+ -+/* Special section indices.  */ -+ -+#define SHN_UNDEF	0		/* Undefined section */ -+#define SHN_LORESERVE	0xff00		/* Start of reserved indices */ -+#define SHN_LOPROC	0xff00		/* Start of processor-specific */ -+#define SHN_HIPROC	0xff1f		/* End of processor-specific */ -+#define SHN_LOOS	0xff20		/* Start of OS-specific */ -+#define SHN_HIOS	0xff3f		/* End of OS-specific */ -+#define SHN_ABS		0xfff1		/* Associated symbol is absolute */ -+#define SHN_COMMON	0xfff2		/* Associated symbol is common */ -+#define SHN_XINDEX	0xffff		/* Index is in extra table.  */ -+#define SHN_HIRESERVE	0xffff		/* End of reserved indices */ -+ -+/* Legal values for sh_type (section type).  */ -+ -+#define SHT_NULL	  0		/* Section header table entry unused */ -+#define SHT_PROGBITS	  1		/* Program data */ -+#define SHT_SYMTAB	  2		/* Symbol table */ -+#define SHT_STRTAB	  3		/* String table */ -+#define SHT_RELA	  4		/* Relocation entries with addends */ -+#define SHT_HASH	  5		/* Symbol hash table */ -+#define SHT_DYNAMIC	  6		/* Dynamic linking information */ -+#define SHT_NOTE	  7		/* Notes */ -+#define SHT_NOBITS	  8		/* Program space with no data (bss) */ -+#define SHT_REL		  9		/* Relocation entries, no addends */ -+#define SHT_SHLIB	  10		/* Reserved */ -+#define SHT_DYNSYM	  11		/* Dynamic linker symbol table */ -+#define SHT_INIT_ARRAY	  14		/* Array of constructors */ -+#define SHT_FINI_ARRAY	  15		/* Array of destructors */ -+#define SHT_PREINIT_ARRAY 16		/* Array of pre-constructors */ -+#define SHT_GROUP	  17		/* Section group */ -+#define SHT_SYMTAB_SHNDX  18		/* Extended section indeces */ -+#define	SHT_NUM		  19		/* Number of defined types.  */ -+#define SHT_LOOS	  0x60000000	/* Start OS-specific */ -+#define SHT_GNU_LIBLIST	  0x6ffffff7	/* Prelink library list */ -+#define SHT_CHECKSUM	  0x6ffffff8	/* Checksum for DSO content.  */ -+#define SHT_LOSUNW	  0x6ffffffa	/* Sun-specific low bound.  */ -+#define SHT_SUNW_move	  0x6ffffffa -+#define SHT_SUNW_COMDAT   0x6ffffffb -+#define SHT_SUNW_syminfo  0x6ffffffc -+#define SHT_GNU_verdef	  0x6ffffffd	/* Version definition section.  */ -+#define SHT_GNU_verneed	  0x6ffffffe	/* Version needs section.  */ -+#define SHT_GNU_versym	  0x6fffffff	/* Version symbol table.  */ -+#define SHT_HISUNW	  0x6fffffff	/* Sun-specific high bound.  */ -+#define SHT_HIOS	  0x6fffffff	/* End OS-specific type */ -+#define SHT_LOPROC	  0x70000000	/* Start of processor-specific */ -+#define SHT_HIPROC	  0x7fffffff	/* End of processor-specific */ -+#define SHT_LOUSER	  0x80000000	/* Start of application-specific */ -+#define SHT_HIUSER	  0x8fffffff	/* End of application-specific */ -+ -+/* Legal values for sh_flags (section flags).  */ -+ -+#define SHF_WRITE	     (1 << 0)	/* Writable */ -+#define SHF_ALLOC	     (1 << 1)	/* Occupies memory during execution */ -+#define SHF_EXECINSTR	     (1 << 2)	/* Executable */ -+#define SHF_MERGE	     (1 << 4)	/* Might be merged */ -+#define SHF_STRINGS	     (1 << 5)	/* Contains nul-terminated strings */ -+#define SHF_INFO_LINK	     (1 << 6)	/* `sh_info' contains SHT index */ -+#define SHF_LINK_ORDER	     (1 << 7)	/* Preserve order after combining */ -+#define SHF_OS_NONCONFORMING (1 << 8)	/* Non-standard OS specific handling -+					   required */ -+#define SHF_GROUP	     (1 << 9)	/* Section is member of a group.  */ -+#define SHF_TLS		     (1 << 10)	/* Section hold thread-local data.  */ -+#define SHF_MASKOS	     0x0ff00000	/* OS-specific.  */ -+#define SHF_MASKPROC	     0xf0000000	/* Processor-specific */ -+ -+/* Section group handling.  */ -+#define GRP_COMDAT	0x1		/* Mark group as COMDAT.  */ -+ -+/* Symbol table entry.  */ -+ -+typedef struct -+{ -+  Elf32_Word	st_name;		/* Symbol name (string tbl index) */ -+  Elf32_Addr	st_value;		/* Symbol value */ -+  Elf32_Word	st_size;		/* Symbol size */ -+  unsigned char	st_info;		/* Symbol type and binding */ -+  unsigned char	st_other;		/* Symbol visibility */ -+  Elf32_Section	st_shndx;		/* Section index */ -+} Elf32_Sym; -+ -+typedef struct -+{ -+  Elf64_Word	st_name;		/* Symbol name (string tbl index) */ -+  unsigned char	st_info;		/* Symbol type and binding */ -+  unsigned char st_other;		/* Symbol visibility */ -+  Elf64_Section	st_shndx;		/* Section index */ -+  Elf64_Addr	st_value;		/* Symbol value */ -+  Elf64_Xword	st_size;		/* Symbol size */ -+} Elf64_Sym; -+ -+/* The syminfo section if available contains additional information about -+   every dynamic symbol.  */ -+ -+typedef struct -+{ -+  Elf32_Half si_boundto;		/* Direct bindings, symbol bound to */ -+  Elf32_Half si_flags;			/* Per symbol flags */ -+} Elf32_Syminfo; -+ -+typedef struct -+{ -+  Elf64_Half si_boundto;		/* Direct bindings, symbol bound to */ -+  Elf64_Half si_flags;			/* Per symbol flags */ -+} Elf64_Syminfo; -+ -+/* Possible values for si_boundto.  */ -+#define SYMINFO_BT_SELF		0xffff	/* Symbol bound to self */ -+#define SYMINFO_BT_PARENT	0xfffe	/* Symbol bound to parent */ -+#define SYMINFO_BT_LOWRESERVE	0xff00	/* Beginning of reserved entries */ -+ -+/* Possible bitmasks for si_flags.  */ -+#define SYMINFO_FLG_DIRECT	0x0001	/* Direct bound symbol */ -+#define SYMINFO_FLG_PASSTHRU	0x0002	/* Pass-thru symbol for translator */ -+#define SYMINFO_FLG_COPY	0x0004	/* Symbol is a copy-reloc */ -+#define SYMINFO_FLG_LAZYLOAD	0x0008	/* Symbol bound to object to be lazy -+					   loaded */ -+/* Syminfo version values.  */ -+#define SYMINFO_NONE		0 -+#define SYMINFO_CURRENT		1 -+#define SYMINFO_NUM		2 -+ -+ -+/* How to extract and insert information held in the st_info field.  */ -+ -+#define ELF32_ST_BIND(val)		(((unsigned char) (val)) >> 4) -+#define ELF32_ST_TYPE(val)		((val) & 0xf) -+#define ELF32_ST_INFO(bind, type)	(((bind) << 4) + ((type) & 0xf)) -+ -+/* Both Elf32_Sym and Elf64_Sym use the same one-byte st_info field.  */ -+#define ELF64_ST_BIND(val)		ELF32_ST_BIND (val) -+#define ELF64_ST_TYPE(val)		ELF32_ST_TYPE (val) -+#define ELF64_ST_INFO(bind, type)	ELF32_ST_INFO ((bind), (type)) -+ -+/* Legal values for ST_BIND subfield of st_info (symbol binding).  */ -+ -+#define STB_LOCAL	0		/* Local symbol */ -+#define STB_GLOBAL	1		/* Global symbol */ -+#define STB_WEAK	2		/* Weak symbol */ -+#define	STB_NUM		3		/* Number of defined types.  */ -+#define STB_LOOS	10		/* Start of OS-specific */ -+#define STB_HIOS	12		/* End of OS-specific */ -+#define STB_LOPROC	13		/* Start of processor-specific */ -+#define STB_HIPROC	15		/* End of processor-specific */ -+ -+/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ -+ -+#define STT_NOTYPE	0		/* Symbol type is unspecified */ -+#define STT_OBJECT	1		/* Symbol is a data object */ -+#define STT_FUNC	2		/* Symbol is a code object */ -+#define STT_SECTION	3		/* Symbol associated with a section */ -+#define STT_FILE	4		/* Symbol's name is file name */ -+#define STT_COMMON	5		/* Symbol is a common data object */ -+#define STT_TLS		6		/* Symbol is thread-local data object*/ -+#define	STT_NUM		7		/* Number of defined types.  */ -+#define STT_LOOS	10		/* Start of OS-specific */ -+#define STT_HIOS	12		/* End of OS-specific */ -+#define STT_LOPROC	13		/* Start of processor-specific */ -+#define STT_HIPROC	15		/* End of processor-specific */ -+ -+ -+/* Symbol table indices are found in the hash buckets and chain table -+   of a symbol hash table section.  This special index value indicates -+   the end of a chain, meaning no further symbols are found in that bucket.  */ -+ -+#define STN_UNDEF	0		/* End of a chain.  */ -+ -+ -+/* How to extract and insert information held in the st_other field.  */ -+ -+#define ELF32_ST_VISIBILITY(o)	((o) & 0x03) -+ -+/* For ELF64 the definitions are the same.  */ -+#define ELF64_ST_VISIBILITY(o)	ELF32_ST_VISIBILITY (o) -+ -+/* Symbol visibility specification encoded in the st_other field.  */ -+#define STV_DEFAULT	0		/* Default symbol visibility rules */ -+#define STV_INTERNAL	1		/* Processor specific hidden class */ -+#define STV_HIDDEN	2		/* Sym unavailable in other modules */ -+#define STV_PROTECTED	3		/* Not preemptible, not exported */ -+ -+ -+/* Relocation table entry without addend (in section of type SHT_REL).  */ -+ -+typedef struct -+{ -+  Elf32_Addr	r_offset;		/* Address */ -+  Elf32_Word	r_info;			/* Relocation type and symbol index */ -+} Elf32_Rel; -+ -+/* I have seen two different definitions of the Elf64_Rel and -+   Elf64_Rela structures, so we'll leave them out until Novell (or -+   whoever) gets their act together.  */ -+/* The following, at least, is used on Sparc v9, MIPS, and Alpha.  */ -+ -+typedef struct -+{ -+  Elf64_Addr	r_offset;		/* Address */ -+  Elf64_Xword	r_info;			/* Relocation type and symbol index */ -+} Elf64_Rel; -+ -+/* Relocation table entry with addend (in section of type SHT_RELA).  */ -+ -+typedef struct -+{ -+  Elf32_Addr	r_offset;		/* Address */ -+  Elf32_Word	r_info;			/* Relocation type and symbol index */ -+  Elf32_Sword	r_addend;		/* Addend */ -+} Elf32_Rela; -+ -+typedef struct -+{ -+  Elf64_Addr	r_offset;		/* Address */ -+  Elf64_Xword	r_info;			/* Relocation type and symbol index */ -+  Elf64_Sxword	r_addend;		/* Addend */ -+} Elf64_Rela; -+ -+/* How to extract and insert information held in the r_info field.  */ -+ -+#define ELF32_R_SYM(val)		((val) >> 8) -+#define ELF32_R_TYPE(val)		((val) & 0xff) -+#define ELF32_R_INFO(sym, type)		(((sym) << 8) + ((type) & 0xff)) -+ -+#define ELF64_R_SYM(i)			((i) >> 32) -+#define ELF64_R_TYPE(i)			((i) & 0xffffffff) -+#define ELF64_R_INFO(sym,type)		((((Elf64_Xword) (sym)) << 32) + (type)) -+ -+/* Program segment header.  */ -+ -+typedef struct -+{ -+  Elf32_Word	p_type;			/* Segment type */ -+  Elf32_Off	p_offset;		/* Segment file offset */ -+  Elf32_Addr	p_vaddr;		/* Segment virtual address */ -+  Elf32_Addr	p_paddr;		/* Segment physical address */ -+  Elf32_Word	p_filesz;		/* Segment size in file */ -+  Elf32_Word	p_memsz;		/* Segment size in memory */ -+  Elf32_Word	p_flags;		/* Segment flags */ -+  Elf32_Word	p_align;		/* Segment alignment */ -+} Elf32_Phdr; -+ -+typedef struct -+{ -+  Elf64_Word	p_type;			/* Segment type */ -+  Elf64_Word	p_flags;		/* Segment flags */ -+  Elf64_Off	p_offset;		/* Segment file offset */ -+  Elf64_Addr	p_vaddr;		/* Segment virtual address */ -+  Elf64_Addr	p_paddr;		/* Segment physical address */ -+  Elf64_Xword	p_filesz;		/* Segment size in file */ -+  Elf64_Xword	p_memsz;		/* Segment size in memory */ -+  Elf64_Xword	p_align;		/* Segment alignment */ -+} Elf64_Phdr; -+ -+/* Legal values for p_type (segment type).  */ -+ -+#define	PT_NULL		0		/* Program header table entry unused */ -+#define PT_LOAD		1		/* Loadable program segment */ -+#define PT_DYNAMIC	2		/* Dynamic linking information */ -+#define PT_INTERP	3		/* Program interpreter */ -+#define PT_NOTE		4		/* Auxiliary information */ -+#define PT_SHLIB	5		/* Reserved */ -+#define PT_PHDR		6		/* Entry for header table itself */ -+#define PT_TLS		7		/* Thread-local storage segment */ -+#define	PT_NUM		8		/* Number of defined types */ -+#define PT_LOOS		0x60000000	/* Start of OS-specific */ -+#define PT_GNU_EH_FRAME	0x6474e550	/* GCC .eh_frame_hdr segment */ -+#define PT_GNU_STACK	0x6474e551	/* Indicates stack executability */ -+#define PT_LOSUNW	0x6ffffffa -+#define PT_SUNWBSS	0x6ffffffa	/* Sun Specific segment */ -+#define PT_SUNWSTACK	0x6ffffffb	/* Stack segment */ -+#define PT_HISUNW	0x6fffffff -+#define PT_HIOS		0x6fffffff	/* End of OS-specific */ -+#define PT_LOPROC	0x70000000	/* Start of processor-specific */ -+#define PT_HIPROC	0x7fffffff	/* End of processor-specific */ -+ -+/* Legal values for p_flags (segment flags).  */ -+ -+#define PF_X		(1 << 0)	/* Segment is executable */ -+#define PF_W		(1 << 1)	/* Segment is writable */ -+#define PF_R		(1 << 2)	/* Segment is readable */ -+#define PF_MASKOS	0x0ff00000	/* OS-specific */ -+#define PF_MASKPROC	0xf0000000	/* Processor-specific */ -+ -+/* Legal values for note segment descriptor types for core files. */ -+ -+#define NT_PRSTATUS	1		/* Contains copy of prstatus struct */ -+#define NT_FPREGSET	2		/* Contains copy of fpregset struct */ -+#define NT_PRPSINFO	3		/* Contains copy of prpsinfo struct */ -+#define NT_PRXREG	4		/* Contains copy of prxregset struct */ -+#define NT_TASKSTRUCT	4		/* Contains copy of task structure */ -+#define NT_PLATFORM	5		/* String from sysinfo(SI_PLATFORM) */ -+#define NT_AUXV		6		/* Contains copy of auxv array */ -+#define NT_GWINDOWS	7		/* Contains copy of gwindows struct */ -+#define NT_ASRS		8		/* Contains copy of asrset struct */ -+#define NT_PSTATUS	10		/* Contains copy of pstatus struct */ -+#define NT_PSINFO	13		/* Contains copy of psinfo struct */ -+#define NT_PRCRED	14		/* Contains copy of prcred struct */ -+#define NT_UTSNAME	15		/* Contains copy of utsname struct */ -+#define NT_LWPSTATUS	16		/* Contains copy of lwpstatus struct */ -+#define NT_LWPSINFO	17		/* Contains copy of lwpinfo struct */ -+#define NT_PRFPXREG	20		/* Contains copy of fprxregset struct*/ -+ -+/* Legal values for the note segment descriptor types for object files.  */ -+ -+#define NT_VERSION	1		/* Contains a version string.  */ -+ -+ -+/* Dynamic section entry.  */ -+ -+typedef struct -+{ -+  Elf32_Sword	d_tag;			/* Dynamic entry type */ -+  union -+    { -+      Elf32_Word d_val;			/* Integer value */ -+      Elf32_Addr d_ptr;			/* Address value */ -+    } d_un; -+} Elf32_Dyn; -+ -+typedef struct -+{ -+  Elf64_Sxword	d_tag;			/* Dynamic entry type */ -+  union -+    { -+      Elf64_Xword d_val;		/* Integer value */ -+      Elf64_Addr d_ptr;			/* Address value */ -+    } d_un; -+} Elf64_Dyn; -+ -+/* Legal values for d_tag (dynamic entry type).  */ -+ -+#define DT_NULL		0		/* Marks end of dynamic section */ -+#define DT_NEEDED	1		/* Name of needed library */ -+#define DT_PLTRELSZ	2		/* Size in bytes of PLT relocs */ -+#define DT_PLTGOT	3		/* Processor defined value */ -+#define DT_HASH		4		/* Address of symbol hash table */ -+#define DT_STRTAB	5		/* Address of string table */ -+#define DT_SYMTAB	6		/* Address of symbol table */ -+#define DT_RELA		7		/* Address of Rela relocs */ -+#define DT_RELASZ	8		/* Total size of Rela relocs */ -+#define DT_RELAENT	9		/* Size of one Rela reloc */ -+#define DT_STRSZ	10		/* Size of string table */ -+#define DT_SYMENT	11		/* Size of one symbol table entry */ -+#define DT_INIT		12		/* Address of init function */ -+#define DT_FINI		13		/* Address of termination function */ -+#define DT_SONAME	14		/* Name of shared object */ -+#define DT_RPATH	15		/* Library search path (deprecated) */ -+#define DT_SYMBOLIC	16		/* Start symbol search here */ -+#define DT_REL		17		/* Address of Rel relocs */ -+#define DT_RELSZ	18		/* Total size of Rel relocs */ -+#define DT_RELENT	19		/* Size of one Rel reloc */ -+#define DT_PLTREL	20		/* Type of reloc in PLT */ -+#define DT_DEBUG	21		/* For debugging; unspecified */ -+#define DT_TEXTREL	22		/* Reloc might modify .text */ -+#define DT_JMPREL	23		/* Address of PLT relocs */ -+#define	DT_BIND_NOW	24		/* Process relocations of object */ -+#define	DT_INIT_ARRAY	25		/* Array with addresses of init fct */ -+#define	DT_FINI_ARRAY	26		/* Array with addresses of fini fct */ -+#define	DT_INIT_ARRAYSZ	27		/* Size in bytes of DT_INIT_ARRAY */ -+#define	DT_FINI_ARRAYSZ	28		/* Size in bytes of DT_FINI_ARRAY */ -+#define DT_RUNPATH	29		/* Library search path */ -+#define DT_FLAGS	30		/* Flags for the object being loaded */ -+#define DT_ENCODING	32		/* Start of encoded range */ -+#define DT_PREINIT_ARRAY 32		/* Array with addresses of preinit fct*/ -+#define DT_PREINIT_ARRAYSZ 33		/* size in bytes of DT_PREINIT_ARRAY */ -+#define	DT_NUM		34		/* Number used */ -+#define DT_LOOS		0x6000000d	/* Start of OS-specific */ -+#define DT_HIOS		0x6ffff000	/* End of OS-specific */ -+#define DT_LOPROC	0x70000000	/* Start of processor-specific */ -+#define DT_HIPROC	0x7fffffff	/* End of processor-specific */ -+#define	DT_PROCNUM	DT_MIPS_NUM	/* Most used by any processor */ -+ -+/* DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the -+   Dyn.d_un.d_val field of the Elf*_Dyn structure.  This follows Sun's -+   approach.  */ -+#define DT_VALRNGLO	0x6ffffd00 -+#define DT_GNU_PRELINKED 0x6ffffdf5	/* Prelinking timestamp */ -+#define DT_GNU_CONFLICTSZ 0x6ffffdf6	/* Size of conflict section */ -+#define DT_GNU_LIBLISTSZ 0x6ffffdf7	/* Size of library list */ -+#define DT_CHECKSUM	0x6ffffdf8 -+#define DT_PLTPADSZ	0x6ffffdf9 -+#define DT_MOVEENT	0x6ffffdfa -+#define DT_MOVESZ	0x6ffffdfb -+#define DT_FEATURE_1	0x6ffffdfc	/* Feature selection (DTF_*).  */ -+#define DT_POSFLAG_1	0x6ffffdfd	/* Flags for DT_* entries, effecting -+					   the following DT_* entry.  */ -+#define DT_SYMINSZ	0x6ffffdfe	/* Size of syminfo table (in bytes) */ -+#define DT_SYMINENT	0x6ffffdff	/* Entry size of syminfo */ -+#define DT_VALRNGHI	0x6ffffdff -+#define DT_VALTAGIDX(tag)	(DT_VALRNGHI - (tag))	/* Reverse order! */ -+#define DT_VALNUM 12 -+ -+/* DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the -+   Dyn.d_un.d_ptr field of the Elf*_Dyn structure. -+ -+   If any adjustment is made to the ELF object after it has been -+   built these entries will need to be adjusted.  */ -+#define DT_ADDRRNGLO	0x6ffffe00 -+#define DT_GNU_CONFLICT	0x6ffffef8	/* Start of conflict section */ -+#define DT_GNU_LIBLIST	0x6ffffef9	/* Library list */ -+#define DT_CONFIG	0x6ffffefa	/* Configuration information.  */ -+#define DT_DEPAUDIT	0x6ffffefb	/* Dependency auditing.  */ -+#define DT_AUDIT	0x6ffffefc	/* Object auditing.  */ -+#define	DT_PLTPAD	0x6ffffefd	/* PLT padding.  */ -+#define	DT_MOVETAB	0x6ffffefe	/* Move table.  */ -+#define DT_SYMINFO	0x6ffffeff	/* Syminfo table.  */ -+#define DT_ADDRRNGHI	0x6ffffeff -+#define DT_ADDRTAGIDX(tag)	(DT_ADDRRNGHI - (tag))	/* Reverse order! */ -+#define DT_ADDRNUM 10 -+ -+/* The versioning entry types.  The next are defined as part of the -+   GNU extension.  */ -+#define DT_VERSYM	0x6ffffff0 -+ -+#define DT_RELACOUNT	0x6ffffff9 -+#define DT_RELCOUNT	0x6ffffffa -+ -+/* These were chosen by Sun.  */ -+#define DT_FLAGS_1	0x6ffffffb	/* State flags, see DF_1_* below.  */ -+#define	DT_VERDEF	0x6ffffffc	/* Address of version definition -+					   table */ -+#define	DT_VERDEFNUM	0x6ffffffd	/* Number of version definitions */ -+#define	DT_VERNEED	0x6ffffffe	/* Address of table with needed -+					   versions */ -+#define	DT_VERNEEDNUM	0x6fffffff	/* Number of needed versions */ -+#define DT_VERSIONTAGIDX(tag)	(DT_VERNEEDNUM - (tag))	/* Reverse order! */ -+#define DT_VERSIONTAGNUM 16 -+ -+/* Sun added these machine-independent extensions in the "processor-specific" -+   range.  Be compatible.  */ -+#define DT_AUXILIARY    0x7ffffffd      /* Shared object to load before self */ -+#define DT_FILTER       0x7fffffff      /* Shared object to get values from */ -+#define DT_EXTRATAGIDX(tag)	((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) -+#define DT_EXTRANUM	3 -+ -+/* Values of `d_un.d_val' in the DT_FLAGS entry.  */ -+#define DF_ORIGIN	0x00000001	/* Object may use DF_ORIGIN */ -+#define DF_SYMBOLIC	0x00000002	/* Symbol resolutions starts here */ -+#define DF_TEXTREL	0x00000004	/* Object contains text relocations */ -+#define DF_BIND_NOW	0x00000008	/* No lazy binding for this object */ -+#define DF_STATIC_TLS	0x00000010	/* Module uses the static TLS model */ -+ -+/* State flags selectable in the `d_un.d_val' element of the DT_FLAGS_1 -+   entry in the dynamic section.  */ -+#define DF_1_NOW	0x00000001	/* Set RTLD_NOW for this object.  */ -+#define DF_1_GLOBAL	0x00000002	/* Set RTLD_GLOBAL for this object.  */ -+#define DF_1_GROUP	0x00000004	/* Set RTLD_GROUP for this object.  */ -+#define DF_1_NODELETE	0x00000008	/* Set RTLD_NODELETE for this object.*/ -+#define DF_1_LOADFLTR	0x00000010	/* Trigger filtee loading at runtime.*/ -+#define DF_1_INITFIRST	0x00000020	/* Set RTLD_INITFIRST for this object*/ -+#define DF_1_NOOPEN	0x00000040	/* Set RTLD_NOOPEN for this object.  */ -+#define DF_1_ORIGIN	0x00000080	/* $ORIGIN must be handled.  */ -+#define DF_1_DIRECT	0x00000100	/* Direct binding enabled.  */ -+#define DF_1_TRANS	0x00000200 -+#define DF_1_INTERPOSE	0x00000400	/* Object is used to interpose.  */ -+#define DF_1_NODEFLIB	0x00000800	/* Ignore default lib search path.  */ -+#define DF_1_NODUMP	0x00001000	/* Object can't be dldump'ed.  */ -+#define DF_1_CONFALT	0x00002000	/* Configuration alternative created.*/ -+#define DF_1_ENDFILTEE	0x00004000	/* Filtee terminates filters search. */ -+#define	DF_1_DISPRELDNE	0x00008000	/* Disp reloc applied at build time. */ -+#define	DF_1_DISPRELPND	0x00010000	/* Disp reloc applied at run-time.  */ -+ -+/* Flags for the feature selection in DT_FEATURE_1.  */ -+#define DTF_1_PARINIT	0x00000001 -+#define DTF_1_CONFEXP	0x00000002 -+ -+/* Flags in the DT_POSFLAG_1 entry effecting only the next DT_* entry.  */ -+#define DF_P1_LAZYLOAD	0x00000001	/* Lazyload following object.  */ -+#define DF_P1_GROUPPERM	0x00000002	/* Symbols from next object are not -+					   generally available.  */ -+ -+/* Version definition sections.  */ -+ -+typedef struct -+{ -+  Elf32_Half	vd_version;		/* Version revision */ -+  Elf32_Half	vd_flags;		/* Version information */ -+  Elf32_Half	vd_ndx;			/* Version Index */ -+  Elf32_Half	vd_cnt;			/* Number of associated aux entries */ -+  Elf32_Word	vd_hash;		/* Version name hash value */ -+  Elf32_Word	vd_aux;			/* Offset in bytes to verdaux array */ -+  Elf32_Word	vd_next;		/* Offset in bytes to next verdef -+					   entry */ -+} Elf32_Verdef; -+ -+typedef struct -+{ -+  Elf64_Half	vd_version;		/* Version revision */ -+  Elf64_Half	vd_flags;		/* Version information */ -+  Elf64_Half	vd_ndx;			/* Version Index */ -+  Elf64_Half	vd_cnt;			/* Number of associated aux entries */ -+  Elf64_Word	vd_hash;		/* Version name hash value */ -+  Elf64_Word	vd_aux;			/* Offset in bytes to verdaux array */ -+  Elf64_Word	vd_next;		/* Offset in bytes to next verdef -+					   entry */ -+} Elf64_Verdef; -+ -+ -+/* Legal values for vd_version (version revision).  */ -+#define VER_DEF_NONE	0		/* No version */ -+#define VER_DEF_CURRENT	1		/* Current version */ -+#define VER_DEF_NUM	2		/* Given version number */ -+ -+/* Legal values for vd_flags (version information flags).  */ -+#define VER_FLG_BASE	0x1		/* Version definition of file itself */ -+#define VER_FLG_WEAK	0x2		/* Weak version identifier */ -+ -+/* Versym symbol index values.  */ -+#define	VER_NDX_LOCAL		0	/* Symbol is local.  */ -+#define	VER_NDX_GLOBAL		1	/* Symbol is global.  */ -+#define	VER_NDX_LORESERVE	0xff00	/* Beginning of reserved entries.  */ -+#define	VER_NDX_ELIMINATE	0xff01	/* Symbol is to be eliminated.  */ -+ -+/* Auxialiary version information.  */ -+ -+typedef struct -+{ -+  Elf32_Word	vda_name;		/* Version or dependency names */ -+  Elf32_Word	vda_next;		/* Offset in bytes to next verdaux -+					   entry */ -+} Elf32_Verdaux; -+ -+typedef struct -+{ -+  Elf64_Word	vda_name;		/* Version or dependency names */ -+  Elf64_Word	vda_next;		/* Offset in bytes to next verdaux -+					   entry */ -+} Elf64_Verdaux; -+ -+ -+/* Version dependency section.  */ -+ -+typedef struct -+{ -+  Elf32_Half	vn_version;		/* Version of structure */ -+  Elf32_Half	vn_cnt;			/* Number of associated aux entries */ -+  Elf32_Word	vn_file;		/* Offset of filename for this -+					   dependency */ -+  Elf32_Word	vn_aux;			/* Offset in bytes to vernaux array */ -+  Elf32_Word	vn_next;		/* Offset in bytes to next verneed -+					   entry */ -+} Elf32_Verneed; -+ -+typedef struct -+{ -+  Elf64_Half	vn_version;		/* Version of structure */ -+  Elf64_Half	vn_cnt;			/* Number of associated aux entries */ -+  Elf64_Word	vn_file;		/* Offset of filename for this -+					   dependency */ -+  Elf64_Word	vn_aux;			/* Offset in bytes to vernaux array */ -+  Elf64_Word	vn_next;		/* Offset in bytes to next verneed -+					   entry */ -+} Elf64_Verneed; -+ -+ -+/* Legal values for vn_version (version revision).  */ -+#define VER_NEED_NONE	 0		/* No version */ -+#define VER_NEED_CURRENT 1		/* Current version */ -+#define VER_NEED_NUM	 2		/* Given version number */ -+ -+/* Auxiliary needed version information.  */ -+ -+typedef struct -+{ -+  Elf32_Word	vna_hash;		/* Hash value of dependency name */ -+  Elf32_Half	vna_flags;		/* Dependency specific information */ -+  Elf32_Half	vna_other;		/* Unused */ -+  Elf32_Word	vna_name;		/* Dependency name string offset */ -+  Elf32_Word	vna_next;		/* Offset in bytes to next vernaux -+					   entry */ -+} Elf32_Vernaux; -+ -+typedef struct -+{ -+  Elf64_Word	vna_hash;		/* Hash value of dependency name */ -+  Elf64_Half	vna_flags;		/* Dependency specific information */ -+  Elf64_Half	vna_other;		/* Unused */ -+  Elf64_Word	vna_name;		/* Dependency name string offset */ -+  Elf64_Word	vna_next;		/* Offset in bytes to next vernaux -+					   entry */ -+} Elf64_Vernaux; -+ -+ -+/* Legal values for vna_flags.  */ -+#define VER_FLG_WEAK	0x2		/* Weak version identifier */ -+ -+ -+/* Auxiliary vector.  */ -+ -+/* This vector is normally only used by the program interpreter.  The -+   usual definition in an ABI supplement uses the name auxv_t.  The -+   vector is not usually defined in a standard <elf.h> file, but it -+   can't hurt.  We rename it to avoid conflicts.  The sizes of these -+   types are an arrangement between the exec server and the program -+   interpreter, so we don't fully specify them here.  */ -+ -+typedef struct -+{ -+  int a_type;			/* Entry type */ -+  union -+    { -+      long int a_val;		/* Integer value */ -+      void *a_ptr;		/* Pointer value */ -+      void (*a_fcn) (void);	/* Function pointer value */ -+    } a_un; -+} Elf32_auxv_t; -+ -+typedef struct -+{ -+  long int a_type;		/* Entry type */ -+  union -+    { -+      long int a_val;		/* Integer value */ -+      void *a_ptr;		/* Pointer value */ -+      void (*a_fcn) (void);	/* Function pointer value */ -+    } a_un; -+} Elf64_auxv_t; -+ -+/* Legal values for a_type (entry type).  */ -+ -+#define AT_NULL		0		/* End of vector */ -+#define AT_IGNORE	1		/* Entry should be ignored */ -+#define AT_EXECFD	2		/* File descriptor of program */ -+#define AT_PHDR		3		/* Program headers for program */ -+#define AT_PHENT	4		/* Size of program header entry */ -+#define AT_PHNUM	5		/* Number of program headers */ -+#define AT_PAGESZ	6		/* System page size */ -+#define AT_BASE		7		/* Base address of interpreter */ -+#define AT_FLAGS	8		/* Flags */ -+#define AT_ENTRY	9		/* Entry point of program */ -+#define AT_NOTELF	10		/* Program is not ELF */ -+#define AT_UID		11		/* Real uid */ -+#define AT_EUID		12		/* Effective uid */ -+#define AT_GID		13		/* Real gid */ -+#define AT_EGID		14		/* Effective gid */ -+#define AT_CLKTCK	17		/* Frequency of times() */ -+ -+/* Some more special a_type values describing the hardware.  */ -+#define AT_PLATFORM	15		/* String identifying platform.  */ -+#define AT_HWCAP	16		/* Machine dependent hints about -+					   processor capabilities.  */ -+ -+/* This entry gives some information about the FPU initialization -+   performed by the kernel.  */ -+#define AT_FPUCW	18		/* Used FPU control word.  */ -+ -+/* Cache block sizes.  */ -+#define AT_DCACHEBSIZE	19		/* Data cache block size.  */ -+#define AT_ICACHEBSIZE	20		/* Instruction cache block size.  */ -+#define AT_UCACHEBSIZE	21		/* Unified cache block size.  */ -+ -+/* A special ignored value for PPC, used by the kernel to control the -+   interpretation of the AUXV. Must be > 16.  */ -+#define AT_IGNOREPPC	22		/* Entry should be ignored.  */ -+ -+#define	AT_SECURE	23		/* Boolean, was exec setuid-like?  */ -+ -+/* Pointer to the global system page used for system calls and other -+   nice things.  */ -+#define AT_SYSINFO	32 -+#define AT_SYSINFO_EHDR	33 -+ -+ -+/* Note section contents.  Each entry in the note section begins with -+   a header of a fixed form.  */ -+ -+typedef struct -+{ -+  Elf32_Word n_namesz;			/* Length of the note's name.  */ -+  Elf32_Word n_descsz;			/* Length of the note's descriptor.  */ -+  Elf32_Word n_type;			/* Type of the note.  */ -+} Elf32_Nhdr; -+ -+typedef struct -+{ -+  Elf64_Word n_namesz;			/* Length of the note's name.  */ -+  Elf64_Word n_descsz;			/* Length of the note's descriptor.  */ -+  Elf64_Word n_type;			/* Type of the note.  */ -+} Elf64_Nhdr; -+ -+/* Known names of notes.  */ -+ -+/* Solaris entries in the note section have this name.  */ -+#define ELF_NOTE_SOLARIS	"SUNW Solaris" -+ -+/* Note entries for GNU systems have this name.  */ -+#define ELF_NOTE_GNU		"GNU" -+ -+ -+/* Defined types of notes for Solaris.  */ -+ -+/* Value of descriptor (one word) is desired pagesize for the binary.  */ -+#define ELF_NOTE_PAGESIZE_HINT	1 -+ -+ -+/* Defined note types for GNU systems.  */ -+ -+/* ABI information.  The descriptor consists of words: -+   word 0: OS descriptor -+   word 1: major version of the ABI -+   word 2: minor version of the ABI -+   word 3: subminor version of the ABI -+*/ -+#define ELF_NOTE_ABI		1 -+ -+/* Known OSes.  These value can appear in word 0 of an ELF_NOTE_ABI -+   note section entry.  */ -+#define ELF_NOTE_OS_LINUX	0 -+#define ELF_NOTE_OS_GNU		1 -+#define ELF_NOTE_OS_SOLARIS2	2 -+#define ELF_NOTE_OS_FREEBSD	3 -+ -+ -+/* Move records.  */ -+typedef struct -+{ -+  Elf32_Xword m_value;		/* Symbol value.  */ -+  Elf32_Word m_info;		/* Size and index.  */ -+  Elf32_Word m_poffset;		/* Symbol offset.  */ -+  Elf32_Half m_repeat;		/* Repeat count.  */ -+  Elf32_Half m_stride;		/* Stride info.  */ -+} Elf32_Move; -+ -+typedef struct -+{ -+  Elf64_Xword m_value;		/* Symbol value.  */ -+  Elf64_Xword m_info;		/* Size and index.  */ -+  Elf64_Xword m_poffset;	/* Symbol offset.  */ -+  Elf64_Half m_repeat;		/* Repeat count.  */ -+  Elf64_Half m_stride;		/* Stride info.  */ -+} Elf64_Move; -+ -+/* Macro to construct move records.  */ -+#define ELF32_M_SYM(info)	((info) >> 8) -+#define ELF32_M_SIZE(info)	((unsigned char) (info)) -+#define ELF32_M_INFO(sym, size)	(((sym) << 8) + (unsigned char) (size)) -+ -+#define ELF64_M_SYM(info)	ELF32_M_SYM (info) -+#define ELF64_M_SIZE(info)	ELF32_M_SIZE (info) -+#define ELF64_M_INFO(sym, size)	ELF32_M_INFO (sym, size) -+ -+ -+/* Motorola 68k specific definitions.  */ -+ -+/* Values for Elf32_Ehdr.e_flags.  */ -+#define EF_CPU32	0x00810000 -+ -+/* m68k relocs.  */ -+ -+#define R_68K_NONE	0		/* No reloc */ -+#define R_68K_32	1		/* Direct 32 bit  */ -+#define R_68K_16	2		/* Direct 16 bit  */ -+#define R_68K_8		3		/* Direct 8 bit  */ -+#define R_68K_PC32	4		/* PC relative 32 bit */ -+#define R_68K_PC16	5		/* PC relative 16 bit */ -+#define R_68K_PC8	6		/* PC relative 8 bit */ -+#define R_68K_GOT32	7		/* 32 bit PC relative GOT entry */ -+#define R_68K_GOT16	8		/* 16 bit PC relative GOT entry */ -+#define R_68K_GOT8	9		/* 8 bit PC relative GOT entry */ -+#define R_68K_GOT32O	10		/* 32 bit GOT offset */ -+#define R_68K_GOT16O	11		/* 16 bit GOT offset */ -+#define R_68K_GOT8O	12		/* 8 bit GOT offset */ -+#define R_68K_PLT32	13		/* 32 bit PC relative PLT address */ -+#define R_68K_PLT16	14		/* 16 bit PC relative PLT address */ -+#define R_68K_PLT8	15		/* 8 bit PC relative PLT address */ -+#define R_68K_PLT32O	16		/* 32 bit PLT offset */ -+#define R_68K_PLT16O	17		/* 16 bit PLT offset */ -+#define R_68K_PLT8O	18		/* 8 bit PLT offset */ -+#define R_68K_COPY	19		/* Copy symbol at runtime */ -+#define R_68K_GLOB_DAT	20		/* Create GOT entry */ -+#define R_68K_JMP_SLOT	21		/* Create PLT entry */ -+#define R_68K_RELATIVE	22		/* Adjust by program base */ -+/* Keep this the last entry.  */ -+#define R_68K_NUM	23 -+ -+/* Intel 80386 specific definitions.  */ -+ -+/* i386 relocs.  */ -+ -+#define R_386_NONE	   0		/* No reloc */ -+#define R_386_32	   1		/* Direct 32 bit  */ -+#define R_386_PC32	   2		/* PC relative 32 bit */ -+#define R_386_GOT32	   3		/* 32 bit GOT entry */ -+#define R_386_PLT32	   4		/* 32 bit PLT address */ -+#define R_386_COPY	   5		/* Copy symbol at runtime */ -+#define R_386_GLOB_DAT	   6		/* Create GOT entry */ -+#define R_386_JMP_SLOT	   7		/* Create PLT entry */ -+#define R_386_RELATIVE	   8		/* Adjust by program base */ -+#define R_386_GOTOFF	   9		/* 32 bit offset to GOT */ -+#define R_386_GOTPC	   10		/* 32 bit PC relative offset to GOT */ -+#define R_386_32PLT	   11 -+#define R_386_TLS_TPOFF	   14		/* Offset in static TLS block */ -+#define R_386_TLS_IE	   15		/* Address of GOT entry for static TLS -+					   block offset */ -+#define R_386_TLS_GOTIE	   16		/* GOT entry for static TLS block -+					   offset */ -+#define R_386_TLS_LE	   17		/* Offset relative to static TLS -+					   block */ -+#define R_386_TLS_GD	   18		/* Direct 32 bit for GNU version of -+					   general dynamic thread local data */ -+#define R_386_TLS_LDM	   19		/* Direct 32 bit for GNU version of -+					   local dynamic thread local data -+					   in LE code */ -+#define R_386_16	   20 -+#define R_386_PC16	   21 -+#define R_386_8		   22 -+#define R_386_PC8	   23 -+#define R_386_TLS_GD_32	   24		/* Direct 32 bit for general dynamic -+					   thread local data */ -+#define R_386_TLS_GD_PUSH  25		/* Tag for pushl in GD TLS code */ -+#define R_386_TLS_GD_CALL  26		/* Relocation for call to -+					   __tls_get_addr() */ -+#define R_386_TLS_GD_POP   27		/* Tag for popl in GD TLS code */ -+#define R_386_TLS_LDM_32   28		/* Direct 32 bit for local dynamic -+					   thread local data in LE code */ -+#define R_386_TLS_LDM_PUSH 29		/* Tag for pushl in LDM TLS code */ -+#define R_386_TLS_LDM_CALL 30		/* Relocation for call to -+					   __tls_get_addr() in LDM code */ -+#define R_386_TLS_LDM_POP  31		/* Tag for popl in LDM TLS code */ -+#define R_386_TLS_LDO_32   32		/* Offset relative to TLS block */ -+#define R_386_TLS_IE_32	   33		/* GOT entry for negated static TLS -+					   block offset */ -+#define R_386_TLS_LE_32	   34		/* Negated offset relative to static -+					   TLS block */ -+#define R_386_TLS_DTPMOD32 35		/* ID of module containing symbol */ -+#define R_386_TLS_DTPOFF32 36		/* Offset in TLS block */ -+#define R_386_TLS_TPOFF32  37		/* Negated offset in static TLS block */ -+/* Keep this the last entry.  */ -+#define R_386_NUM	   38 -+ -+/* SUN SPARC specific definitions.  */ -+ -+/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ -+ -+#define STT_REGISTER	13		/* Global register reserved to app. */ -+ -+/* Values for Elf64_Ehdr.e_flags.  */ -+ -+#define EF_SPARCV9_MM		3 -+#define EF_SPARCV9_TSO		0 -+#define EF_SPARCV9_PSO		1 -+#define EF_SPARCV9_RMO		2 -+#define EF_SPARC_LEDATA		0x800000 /* little endian data */ -+#define EF_SPARC_EXT_MASK	0xFFFF00 -+#define EF_SPARC_32PLUS		0x000100 /* generic V8+ features */ -+#define EF_SPARC_SUN_US1	0x000200 /* Sun UltraSPARC1 extensions */ -+#define EF_SPARC_HAL_R1		0x000400 /* HAL R1 extensions */ -+#define EF_SPARC_SUN_US3	0x000800 /* Sun UltraSPARCIII extensions */ -+ -+/* SPARC relocs.  */ -+ -+#define R_SPARC_NONE		0	/* No reloc */ -+#define R_SPARC_8		1	/* Direct 8 bit */ -+#define R_SPARC_16		2	/* Direct 16 bit */ -+#define R_SPARC_32		3	/* Direct 32 bit */ -+#define R_SPARC_DISP8		4	/* PC relative 8 bit */ -+#define R_SPARC_DISP16		5	/* PC relative 16 bit */ -+#define R_SPARC_DISP32		6	/* PC relative 32 bit */ -+#define R_SPARC_WDISP30		7	/* PC relative 30 bit shifted */ -+#define R_SPARC_WDISP22		8	/* PC relative 22 bit shifted */ -+#define R_SPARC_HI22		9	/* High 22 bit */ -+#define R_SPARC_22		10	/* Direct 22 bit */ -+#define R_SPARC_13		11	/* Direct 13 bit */ -+#define R_SPARC_LO10		12	/* Truncated 10 bit */ -+#define R_SPARC_GOT10		13	/* Truncated 10 bit GOT entry */ -+#define R_SPARC_GOT13		14	/* 13 bit GOT entry */ -+#define R_SPARC_GOT22		15	/* 22 bit GOT entry shifted */ -+#define R_SPARC_PC10		16	/* PC relative 10 bit truncated */ -+#define R_SPARC_PC22		17	/* PC relative 22 bit shifted */ -+#define R_SPARC_WPLT30		18	/* 30 bit PC relative PLT address */ -+#define R_SPARC_COPY		19	/* Copy symbol at runtime */ -+#define R_SPARC_GLOB_DAT	20	/* Create GOT entry */ -+#define R_SPARC_JMP_SLOT	21	/* Create PLT entry */ -+#define R_SPARC_RELATIVE	22	/* Adjust by program base */ -+#define R_SPARC_UA32		23	/* Direct 32 bit unaligned */ -+ -+/* Additional Sparc64 relocs.  */ -+ -+#define R_SPARC_PLT32		24	/* Direct 32 bit ref to PLT entry */ -+#define R_SPARC_HIPLT22		25	/* High 22 bit PLT entry */ -+#define R_SPARC_LOPLT10		26	/* Truncated 10 bit PLT entry */ -+#define R_SPARC_PCPLT32		27	/* PC rel 32 bit ref to PLT entry */ -+#define R_SPARC_PCPLT22		28	/* PC rel high 22 bit PLT entry */ -+#define R_SPARC_PCPLT10		29	/* PC rel trunc 10 bit PLT entry */ -+#define R_SPARC_10		30	/* Direct 10 bit */ -+#define R_SPARC_11		31	/* Direct 11 bit */ -+#define R_SPARC_64		32	/* Direct 64 bit */ -+#define R_SPARC_OLO10		33	/* 10bit with secondary 13bit addend */ -+#define R_SPARC_HH22		34	/* Top 22 bits of direct 64 bit */ -+#define R_SPARC_HM10		35	/* High middle 10 bits of ... */ -+#define R_SPARC_LM22		36	/* Low middle 22 bits of ... */ -+#define R_SPARC_PC_HH22		37	/* Top 22 bits of pc rel 64 bit */ -+#define R_SPARC_PC_HM10		38	/* High middle 10 bit of ... */ -+#define R_SPARC_PC_LM22		39	/* Low miggle 22 bits of ... */ -+#define R_SPARC_WDISP16		40	/* PC relative 16 bit shifted */ -+#define R_SPARC_WDISP19		41	/* PC relative 19 bit shifted */ -+#define R_SPARC_7		43	/* Direct 7 bit */ -+#define R_SPARC_5		44	/* Direct 5 bit */ -+#define R_SPARC_6		45	/* Direct 6 bit */ -+#define R_SPARC_DISP64		46	/* PC relative 64 bit */ -+#define R_SPARC_PLT64		47	/* Direct 64 bit ref to PLT entry */ -+#define R_SPARC_HIX22		48	/* High 22 bit complemented */ -+#define R_SPARC_LOX10		49	/* Truncated 11 bit complemented */ -+#define R_SPARC_H44		50	/* Direct high 12 of 44 bit */ -+#define R_SPARC_M44		51	/* Direct mid 22 of 44 bit */ -+#define R_SPARC_L44		52	/* Direct low 10 of 44 bit */ -+#define R_SPARC_REGISTER	53	/* Global register usage */ -+#define R_SPARC_UA64		54	/* Direct 64 bit unaligned */ -+#define R_SPARC_UA16		55	/* Direct 16 bit unaligned */ -+#define R_SPARC_TLS_GD_HI22	56 -+#define R_SPARC_TLS_GD_LO10	57 -+#define R_SPARC_TLS_GD_ADD	58 -+#define R_SPARC_TLS_GD_CALL	59 -+#define R_SPARC_TLS_LDM_HI22	60 -+#define R_SPARC_TLS_LDM_LO10	61 -+#define R_SPARC_TLS_LDM_ADD	62 -+#define R_SPARC_TLS_LDM_CALL	63 -+#define R_SPARC_TLS_LDO_HIX22	64 -+#define R_SPARC_TLS_LDO_LOX10	65 -+#define R_SPARC_TLS_LDO_ADD	66 -+#define R_SPARC_TLS_IE_HI22	67 -+#define R_SPARC_TLS_IE_LO10	68 -+#define R_SPARC_TLS_IE_LD	69 -+#define R_SPARC_TLS_IE_LDX	70 -+#define R_SPARC_TLS_IE_ADD	71 -+#define R_SPARC_TLS_LE_HIX22	72 -+#define R_SPARC_TLS_LE_LOX10	73 -+#define R_SPARC_TLS_DTPMOD32	74 -+#define R_SPARC_TLS_DTPMOD64	75 -+#define R_SPARC_TLS_DTPOFF32	76 -+#define R_SPARC_TLS_DTPOFF64	77 -+#define R_SPARC_TLS_TPOFF32	78 -+#define R_SPARC_TLS_TPOFF64	79 -+/* Keep this the last entry.  */ -+#define R_SPARC_NUM		80 -+ -+/* For Sparc64, legal values for d_tag of Elf64_Dyn.  */ -+ -+#define DT_SPARC_REGISTER 0x70000001 -+#define DT_SPARC_NUM	2 -+ -+/* Bits present in AT_HWCAP, primarily for Sparc32.  */ -+ -+#define HWCAP_SPARC_FLUSH	1	/* The cpu supports flush insn.  */ -+#define HWCAP_SPARC_STBAR	2 -+#define HWCAP_SPARC_SWAP	4 -+#define HWCAP_SPARC_MULDIV	8 -+#define HWCAP_SPARC_V9		16	/* The cpu is v9, so v8plus is ok.  */ -+#define HWCAP_SPARC_ULTRA3	32 -+ -+/* MIPS R3000 specific definitions.  */ -+ -+/* Legal values for e_flags field of Elf32_Ehdr.  */ -+ -+#define EF_MIPS_NOREORDER   1		/* A .noreorder directive was used */ -+#define EF_MIPS_PIC	    2		/* Contains PIC code */ -+#define EF_MIPS_CPIC	    4		/* Uses PIC calling sequence */ -+#define EF_MIPS_XGOT	    8 -+#define EF_MIPS_64BIT_WHIRL 16 -+#define EF_MIPS_ABI2	    32 -+#define EF_MIPS_ABI_ON32    64 -+#define EF_MIPS_ARCH	    0xf0000000	/* MIPS architecture level */ -+ -+/* Legal values for MIPS architecture level.  */ -+ -+#define EF_MIPS_ARCH_1	    0x00000000	/* -mips1 code.  */ -+#define EF_MIPS_ARCH_2	    0x10000000	/* -mips2 code.  */ -+#define EF_MIPS_ARCH_3	    0x20000000	/* -mips3 code.  */ -+#define EF_MIPS_ARCH_4	    0x30000000	/* -mips4 code.  */ -+#define EF_MIPS_ARCH_5	    0x40000000	/* -mips5 code.  */ -+#define EF_MIPS_ARCH_32	    0x60000000	/* MIPS32 code.  */ -+#define EF_MIPS_ARCH_64	    0x70000000	/* MIPS64 code.  */ -+ -+/* The following are non-official names and should not be used.  */ -+ -+#define E_MIPS_ARCH_1	  0x00000000	/* -mips1 code.  */ -+#define E_MIPS_ARCH_2	  0x10000000	/* -mips2 code.  */ -+#define E_MIPS_ARCH_3	  0x20000000	/* -mips3 code.  */ -+#define E_MIPS_ARCH_4	  0x30000000	/* -mips4 code.  */ -+#define E_MIPS_ARCH_5	  0x40000000	/* -mips5 code.  */ -+#define E_MIPS_ARCH_32	  0x60000000	/* MIPS32 code.  */ -+#define E_MIPS_ARCH_64	  0x70000000	/* MIPS64 code.  */ -+ -+/* Special section indices.  */ -+ -+#define SHN_MIPS_ACOMMON    0xff00	/* Allocated common symbols */ -+#define SHN_MIPS_TEXT	    0xff01	/* Allocated test symbols.  */ -+#define SHN_MIPS_DATA	    0xff02	/* Allocated data symbols.  */ -+#define SHN_MIPS_SCOMMON    0xff03	/* Small common symbols */ -+#define SHN_MIPS_SUNDEFINED 0xff04	/* Small undefined symbols */ -+ -+/* Legal values for sh_type field of Elf32_Shdr.  */ -+ -+#define SHT_MIPS_LIBLIST       0x70000000 /* Shared objects used in link */ -+#define SHT_MIPS_MSYM	       0x70000001 -+#define SHT_MIPS_CONFLICT      0x70000002 /* Conflicting symbols */ -+#define SHT_MIPS_GPTAB	       0x70000003 /* Global data area sizes */ -+#define SHT_MIPS_UCODE	       0x70000004 /* Reserved for SGI/MIPS compilers */ -+#define SHT_MIPS_DEBUG	       0x70000005 /* MIPS ECOFF debugging information*/ -+#define SHT_MIPS_REGINFO       0x70000006 /* Register usage information */ -+#define SHT_MIPS_PACKAGE       0x70000007 -+#define SHT_MIPS_PACKSYM       0x70000008 -+#define SHT_MIPS_RELD	       0x70000009 -+#define SHT_MIPS_IFACE         0x7000000b -+#define SHT_MIPS_CONTENT       0x7000000c -+#define SHT_MIPS_OPTIONS       0x7000000d /* Miscellaneous options.  */ -+#define SHT_MIPS_SHDR	       0x70000010 -+#define SHT_MIPS_FDESC	       0x70000011 -+#define SHT_MIPS_EXTSYM	       0x70000012 -+#define SHT_MIPS_DENSE	       0x70000013 -+#define SHT_MIPS_PDESC	       0x70000014 -+#define SHT_MIPS_LOCSYM	       0x70000015 -+#define SHT_MIPS_AUXSYM	       0x70000016 -+#define SHT_MIPS_OPTSYM	       0x70000017 -+#define SHT_MIPS_LOCSTR	       0x70000018 -+#define SHT_MIPS_LINE	       0x70000019 -+#define SHT_MIPS_RFDESC	       0x7000001a -+#define SHT_MIPS_DELTASYM      0x7000001b -+#define SHT_MIPS_DELTAINST     0x7000001c -+#define SHT_MIPS_DELTACLASS    0x7000001d -+#define SHT_MIPS_DWARF         0x7000001e /* DWARF debugging information.  */ -+#define SHT_MIPS_DELTADECL     0x7000001f -+#define SHT_MIPS_SYMBOL_LIB    0x70000020 -+#define SHT_MIPS_EVENTS	       0x70000021 /* Event section.  */ -+#define SHT_MIPS_TRANSLATE     0x70000022 -+#define SHT_MIPS_PIXIE	       0x70000023 -+#define SHT_MIPS_XLATE	       0x70000024 -+#define SHT_MIPS_XLATE_DEBUG   0x70000025 -+#define SHT_MIPS_WHIRL	       0x70000026 -+#define SHT_MIPS_EH_REGION     0x70000027 -+#define SHT_MIPS_XLATE_OLD     0x70000028 -+#define SHT_MIPS_PDR_EXCEPTION 0x70000029 -+ -+/* Legal values for sh_flags field of Elf32_Shdr.  */ -+ -+#define SHF_MIPS_GPREL	 0x10000000	/* Must be part of global data area */ -+#define SHF_MIPS_MERGE	 0x20000000 -+#define SHF_MIPS_ADDR	 0x40000000 -+#define SHF_MIPS_STRINGS 0x80000000 -+#define SHF_MIPS_NOSTRIP 0x08000000 -+#define SHF_MIPS_LOCAL	 0x04000000 -+#define SHF_MIPS_NAMES	 0x02000000 -+#define SHF_MIPS_NODUPE	 0x01000000 -+ -+ -+/* Symbol tables.  */ -+ -+/* MIPS specific values for `st_other'.  */ -+#define STO_MIPS_DEFAULT		0x0 -+#define STO_MIPS_INTERNAL		0x1 -+#define STO_MIPS_HIDDEN			0x2 -+#define STO_MIPS_PROTECTED		0x3 -+#define STO_MIPS_SC_ALIGN_UNUSED	0xff -+ -+/* MIPS specific values for `st_info'.  */ -+#define STB_MIPS_SPLIT_COMMON		13 -+ -+/* Entries found in sections of type SHT_MIPS_GPTAB.  */ -+ -+typedef union -+{ -+  struct -+    { -+      Elf32_Word gt_current_g_value;	/* -G value used for compilation */ -+      Elf32_Word gt_unused;		/* Not used */ -+    } gt_header;			/* First entry in section */ -+  struct -+    { -+      Elf32_Word gt_g_value;		/* If this value were used for -G */ -+      Elf32_Word gt_bytes;		/* This many bytes would be used */ -+    } gt_entry;				/* Subsequent entries in section */ -+} Elf32_gptab; -+ -+/* Entry found in sections of type SHT_MIPS_REGINFO.  */ -+ -+typedef struct -+{ -+  Elf32_Word	ri_gprmask;		/* General registers used */ -+  Elf32_Word	ri_cprmask[4];		/* Coprocessor registers used */ -+  Elf32_Sword	ri_gp_value;		/* $gp register value */ -+} Elf32_RegInfo; -+ -+/* Entries found in sections of type SHT_MIPS_OPTIONS.  */ -+ -+typedef struct -+{ -+  unsigned char kind;		/* Determines interpretation of the -+				   variable part of descriptor.  */ -+  unsigned char size;		/* Size of descriptor, including header.  */ -+  Elf32_Section section;	/* Section header index of section affected, -+				   0 for global options.  */ -+  Elf32_Word info;		/* Kind-specific information.  */ -+} Elf_Options; -+ -+/* Values for `kind' field in Elf_Options.  */ -+ -+#define ODK_NULL	0	/* Undefined.  */ -+#define ODK_REGINFO	1	/* Register usage information.  */ -+#define ODK_EXCEPTIONS	2	/* Exception processing options.  */ -+#define ODK_PAD		3	/* Section padding options.  */ -+#define ODK_HWPATCH	4	/* Hardware workarounds performed */ -+#define ODK_FILL	5	/* record the fill value used by the linker. */ -+#define ODK_TAGS	6	/* reserve space for desktop tools to write. */ -+#define ODK_HWAND	7	/* HW workarounds.  'AND' bits when merging. */ -+#define ODK_HWOR	8	/* HW workarounds.  'OR' bits when merging.  */ -+ -+/* Values for `info' in Elf_Options for ODK_EXCEPTIONS entries.  */ -+ -+#define OEX_FPU_MIN	0x1f	/* FPE's which MUST be enabled.  */ -+#define OEX_FPU_MAX	0x1f00	/* FPE's which MAY be enabled.  */ -+#define OEX_PAGE0	0x10000	/* page zero must be mapped.  */ -+#define OEX_SMM		0x20000	/* Force sequential memory mode?  */ -+#define OEX_FPDBUG	0x40000	/* Force floating point debug mode?  */ -+#define OEX_PRECISEFP	OEX_FPDBUG -+#define OEX_DISMISS	0x80000	/* Dismiss invalid address faults?  */ -+ -+#define OEX_FPU_INVAL	0x10 -+#define OEX_FPU_DIV0	0x08 -+#define OEX_FPU_OFLO	0x04 -+#define OEX_FPU_UFLO	0x02 -+#define OEX_FPU_INEX	0x01 -+ -+/* Masks for `info' in Elf_Options for an ODK_HWPATCH entry.  */ -+ -+#define OHW_R4KEOP	0x1	/* R4000 end-of-page patch.  */ -+#define OHW_R8KPFETCH	0x2	/* may need R8000 prefetch patch.  */ -+#define OHW_R5KEOP	0x4	/* R5000 end-of-page patch.  */ -+#define OHW_R5KCVTL	0x8	/* R5000 cvt.[ds].l bug.  clean=1.  */ -+ -+#define OPAD_PREFIX	0x1 -+#define OPAD_POSTFIX	0x2 -+#define OPAD_SYMBOL	0x4 -+ -+/* Entry found in `.options' section.  */ -+ -+typedef struct -+{ -+  Elf32_Word hwp_flags1;	/* Extra flags.  */ -+  Elf32_Word hwp_flags2;	/* Extra flags.  */ -+} Elf_Options_Hw; -+ -+/* Masks for `info' in ElfOptions for ODK_HWAND and ODK_HWOR entries.  */ -+ -+#define OHWA0_R4KEOP_CHECKED	0x00000001 -+#define OHWA1_R4KEOP_CLEAN	0x00000002 -+ -+/* MIPS relocs.  */ -+ -+#define R_MIPS_NONE		0	/* No reloc */ -+#define R_MIPS_16		1	/* Direct 16 bit */ -+#define R_MIPS_32		2	/* Direct 32 bit */ -+#define R_MIPS_REL32		3	/* PC relative 32 bit */ -+#define R_MIPS_26		4	/* Direct 26 bit shifted */ -+#define R_MIPS_HI16		5	/* High 16 bit */ -+#define R_MIPS_LO16		6	/* Low 16 bit */ -+#define R_MIPS_GPREL16		7	/* GP relative 16 bit */ -+#define R_MIPS_LITERAL		8	/* 16 bit literal entry */ -+#define R_MIPS_GOT16		9	/* 16 bit GOT entry */ -+#define R_MIPS_PC16		10	/* PC relative 16 bit */ -+#define R_MIPS_CALL16		11	/* 16 bit GOT entry for function */ -+#define R_MIPS_GPREL32		12	/* GP relative 32 bit */ -+ -+#define R_MIPS_SHIFT5		16 -+#define R_MIPS_SHIFT6		17 -+#define R_MIPS_64		18 -+#define R_MIPS_GOT_DISP		19 -+#define R_MIPS_GOT_PAGE		20 -+#define R_MIPS_GOT_OFST		21 -+#define R_MIPS_GOT_HI16		22 -+#define R_MIPS_GOT_LO16		23 -+#define R_MIPS_SUB		24 -+#define R_MIPS_INSERT_A		25 -+#define R_MIPS_INSERT_B		26 -+#define R_MIPS_DELETE		27 -+#define R_MIPS_HIGHER		28 -+#define R_MIPS_HIGHEST		29 -+#define R_MIPS_CALL_HI16	30 -+#define R_MIPS_CALL_LO16	31 -+#define R_MIPS_SCN_DISP		32 -+#define R_MIPS_REL16		33 -+#define R_MIPS_ADD_IMMEDIATE	34 -+#define R_MIPS_PJUMP		35 -+#define R_MIPS_RELGOT		36 -+#define R_MIPS_JALR		37 -+/* Keep this the last entry.  */ -+#define R_MIPS_NUM		38 -+ -+/* Legal values for p_type field of Elf32_Phdr.  */ -+ -+#define PT_MIPS_REGINFO	0x70000000	/* Register usage information */ -+#define PT_MIPS_RTPROC  0x70000001	/* Runtime procedure table. */ -+#define PT_MIPS_OPTIONS 0x70000002 -+ -+/* Special program header types.  */ -+ -+#define PF_MIPS_LOCAL	0x10000000 -+ -+/* Legal values for d_tag field of Elf32_Dyn.  */ -+ -+#define DT_MIPS_RLD_VERSION  0x70000001	/* Runtime linker interface version */ -+#define DT_MIPS_TIME_STAMP   0x70000002	/* Timestamp */ -+#define DT_MIPS_ICHECKSUM    0x70000003	/* Checksum */ -+#define DT_MIPS_IVERSION     0x70000004	/* Version string (string tbl index) */ -+#define DT_MIPS_FLAGS	     0x70000005	/* Flags */ -+#define DT_MIPS_BASE_ADDRESS 0x70000006	/* Base address */ -+#define DT_MIPS_MSYM	     0x70000007 -+#define DT_MIPS_CONFLICT     0x70000008	/* Address of CONFLICT section */ -+#define DT_MIPS_LIBLIST	     0x70000009	/* Address of LIBLIST section */ -+#define DT_MIPS_LOCAL_GOTNO  0x7000000a	/* Number of local GOT entries */ -+#define DT_MIPS_CONFLICTNO   0x7000000b	/* Number of CONFLICT entries */ -+#define DT_MIPS_LIBLISTNO    0x70000010	/* Number of LIBLIST entries */ -+#define DT_MIPS_SYMTABNO     0x70000011	/* Number of DYNSYM entries */ -+#define DT_MIPS_UNREFEXTNO   0x70000012	/* First external DYNSYM */ -+#define DT_MIPS_GOTSYM	     0x70000013	/* First GOT entry in DYNSYM */ -+#define DT_MIPS_HIPAGENO     0x70000014	/* Number of GOT page table entries */ -+#define DT_MIPS_RLD_MAP	     0x70000016	/* Address of run time loader map.  */ -+#define DT_MIPS_DELTA_CLASS  0x70000017	/* Delta C++ class definition.  */ -+#define DT_MIPS_DELTA_CLASS_NO    0x70000018 /* Number of entries in -+						DT_MIPS_DELTA_CLASS.  */ -+#define DT_MIPS_DELTA_INSTANCE    0x70000019 /* Delta C++ class instances.  */ -+#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a /* Number of entries in -+						DT_MIPS_DELTA_INSTANCE.  */ -+#define DT_MIPS_DELTA_RELOC  0x7000001b /* Delta relocations.  */ -+#define DT_MIPS_DELTA_RELOC_NO 0x7000001c /* Number of entries in -+					     DT_MIPS_DELTA_RELOC.  */ -+#define DT_MIPS_DELTA_SYM    0x7000001d /* Delta symbols that Delta -+					   relocations refer to.  */ -+#define DT_MIPS_DELTA_SYM_NO 0x7000001e /* Number of entries in -+					   DT_MIPS_DELTA_SYM.  */ -+#define DT_MIPS_DELTA_CLASSSYM 0x70000020 /* Delta symbols that hold the -+					     class declaration.  */ -+#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 /* Number of entries in -+						DT_MIPS_DELTA_CLASSSYM.  */ -+#define DT_MIPS_CXX_FLAGS    0x70000022 /* Flags indicating for C++ flavor.  */ -+#define DT_MIPS_PIXIE_INIT   0x70000023 -+#define DT_MIPS_SYMBOL_LIB   0x70000024 -+#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 -+#define DT_MIPS_LOCAL_GOTIDX 0x70000026 -+#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 -+#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 -+#define DT_MIPS_OPTIONS	     0x70000029 /* Address of .options.  */ -+#define DT_MIPS_INTERFACE    0x7000002a /* Address of .interface.  */ -+#define DT_MIPS_DYNSTR_ALIGN 0x7000002b -+#define DT_MIPS_INTERFACE_SIZE 0x7000002c /* Size of the .interface section. */ -+#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d /* Address of rld_text_rsolve -+						    function stored in GOT.  */ -+#define DT_MIPS_PERF_SUFFIX  0x7000002e /* Default suffix of dso to be added -+					   by rld on dlopen() calls.  */ -+#define DT_MIPS_COMPACT_SIZE 0x7000002f /* (O32)Size of compact rel section. */ -+#define DT_MIPS_GP_VALUE     0x70000030 /* GP value for aux GOTs.  */ -+#define DT_MIPS_AUX_DYNAMIC  0x70000031 /* Address of aux .dynamic.  */ -+#define DT_MIPS_NUM	     0x32 -+ -+/* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry.  */ -+ -+#define RHF_NONE		   0		/* No flags */ -+#define RHF_QUICKSTART		   (1 << 0)	/* Use quickstart */ -+#define RHF_NOTPOT		   (1 << 1)	/* Hash size not power of 2 */ -+#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2)	/* Ignore LD_LIBRARY_PATH */ -+#define RHF_NO_MOVE		   (1 << 3) -+#define RHF_SGI_ONLY		   (1 << 4) -+#define RHF_GUARANTEE_INIT	   (1 << 5) -+#define RHF_DELTA_C_PLUS_PLUS	   (1 << 6) -+#define RHF_GUARANTEE_START_INIT   (1 << 7) -+#define RHF_PIXIE		   (1 << 8) -+#define RHF_DEFAULT_DELAY_LOAD	   (1 << 9) -+#define RHF_REQUICKSTART	   (1 << 10) -+#define RHF_REQUICKSTARTED	   (1 << 11) -+#define RHF_CORD		   (1 << 12) -+#define RHF_NO_UNRES_UNDEF	   (1 << 13) -+#define RHF_RLD_ORDER_SAFE	   (1 << 14) -+ -+/* Entries found in sections of type SHT_MIPS_LIBLIST.  */ -+ -+typedef struct -+{ -+  Elf32_Word l_name;		/* Name (string table index) */ -+  Elf32_Word l_time_stamp;	/* Timestamp */ -+  Elf32_Word l_checksum;	/* Checksum */ -+  Elf32_Word l_version;		/* Interface version */ -+  Elf32_Word l_flags;		/* Flags */ -+} Elf32_Lib; -+ -+typedef struct -+{ -+  Elf64_Word l_name;		/* Name (string table index) */ -+  Elf64_Word l_time_stamp;	/* Timestamp */ -+  Elf64_Word l_checksum;	/* Checksum */ -+  Elf64_Word l_version;		/* Interface version */ -+  Elf64_Word l_flags;		/* Flags */ -+} Elf64_Lib; -+ -+ -+/* Legal values for l_flags.  */ -+ -+#define LL_NONE		  0 -+#define LL_EXACT_MATCH	  (1 << 0)	/* Require exact match */ -+#define LL_IGNORE_INT_VER (1 << 1)	/* Ignore interface version */ -+#define LL_REQUIRE_MINOR  (1 << 2) -+#define LL_EXPORTS	  (1 << 3) -+#define LL_DELAY_LOAD	  (1 << 4) -+#define LL_DELTA	  (1 << 5) -+ -+/* Entries found in sections of type SHT_MIPS_CONFLICT.  */ -+ -+typedef Elf32_Addr Elf32_Conflict; -+ -+ -+/* HPPA specific definitions.  */ -+ -+/* Legal values for e_flags field of Elf32_Ehdr.  */ -+ -+#define EF_PARISC_TRAPNIL	0x00010000 /* Trap nil pointer dereference.  */ -+#define EF_PARISC_EXT		0x00020000 /* Program uses arch. extensions. */ -+#define EF_PARISC_LSB		0x00040000 /* Program expects little endian. */ -+#define EF_PARISC_WIDE		0x00080000 /* Program expects wide mode.  */ -+#define EF_PARISC_NO_KABP	0x00100000 /* No kernel assisted branch -+					      prediction.  */ -+#define EF_PARISC_LAZYSWAP	0x00400000 /* Allow lazy swapping.  */ -+#define EF_PARISC_ARCH		0x0000ffff /* Architecture version.  */ -+ -+/* Defined values for `e_flags & EF_PARISC_ARCH' are:  */ -+ -+#define EFA_PARISC_1_0		    0x020b /* PA-RISC 1.0 big-endian.  */ -+#define EFA_PARISC_1_1		    0x0210 /* PA-RISC 1.1 big-endian.  */ -+#define EFA_PARISC_2_0		    0x0214 /* PA-RISC 2.0 big-endian.  */ -+ -+/* Additional section indeces.  */ -+ -+#define SHN_PARISC_ANSI_COMMON	0xff00	   /* Section for tenatively declared -+					      symbols in ANSI C.  */ -+#define SHN_PARISC_HUGE_COMMON	0xff01	   /* Common blocks in huge model.  */ -+ -+/* Legal values for sh_type field of Elf32_Shdr.  */ -+ -+#define SHT_PARISC_EXT		0x70000000 /* Contains product specific ext. */ -+#define SHT_PARISC_UNWIND	0x70000001 /* Unwind information.  */ -+#define SHT_PARISC_DOC		0x70000002 /* Debug info for optimized code. */ -+ -+/* Legal values for sh_flags field of Elf32_Shdr.  */ -+ -+#define SHF_PARISC_SHORT	0x20000000 /* Section with short addressing. */ -+#define SHF_PARISC_HUGE		0x40000000 /* Section far from gp.  */ -+#define SHF_PARISC_SBP		0x80000000 /* Static branch prediction code. */ -+ -+/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ -+ -+#define STT_PARISC_MILLICODE	13	/* Millicode function entry point.  */ -+ -+#define STT_HP_OPAQUE		(STT_LOOS + 0x1) -+#define STT_HP_STUB		(STT_LOOS + 0x2) -+ -+/* HPPA relocs.  */ -+ -+#define R_PARISC_NONE		0	/* No reloc.  */ -+#define R_PARISC_DIR32		1	/* Direct 32-bit reference.  */ -+#define R_PARISC_DIR21L		2	/* Left 21 bits of eff. address.  */ -+#define R_PARISC_DIR17R		3	/* Right 17 bits of eff. address.  */ -+#define R_PARISC_DIR17F		4	/* 17 bits of eff. address.  */ -+#define R_PARISC_DIR14R		6	/* Right 14 bits of eff. address.  */ -+#define R_PARISC_PCREL32	9	/* 32-bit rel. address.  */ -+#define R_PARISC_PCREL21L	10	/* Left 21 bits of rel. address.  */ -+#define R_PARISC_PCREL17R	11	/* Right 17 bits of rel. address.  */ -+#define R_PARISC_PCREL17F	12	/* 17 bits of rel. address.  */ -+#define R_PARISC_PCREL14R	14	/* Right 14 bits of rel. address.  */ -+#define R_PARISC_DPREL21L	18	/* Left 21 bits of rel. address.  */ -+#define R_PARISC_DPREL14R	22	/* Right 14 bits of rel. address.  */ -+#define R_PARISC_GPREL21L	26	/* GP-relative, left 21 bits.  */ -+#define R_PARISC_GPREL14R	30	/* GP-relative, right 14 bits.  */ -+#define R_PARISC_LTOFF21L	34	/* LT-relative, left 21 bits.  */ -+#define R_PARISC_LTOFF14R	38	/* LT-relative, right 14 bits.  */ -+#define R_PARISC_SECREL32	41	/* 32 bits section rel. address.  */ -+#define R_PARISC_SEGBASE	48	/* No relocation, set segment base.  */ -+#define R_PARISC_SEGREL32	49	/* 32 bits segment rel. address.  */ -+#define R_PARISC_PLTOFF21L	50	/* PLT rel. address, left 21 bits.  */ -+#define R_PARISC_PLTOFF14R	54	/* PLT rel. address, right 14 bits.  */ -+#define R_PARISC_LTOFF_FPTR32	57	/* 32 bits LT-rel. function pointer. */ -+#define R_PARISC_LTOFF_FPTR21L	58	/* LT-rel. fct ptr, left 21 bits. */ -+#define R_PARISC_LTOFF_FPTR14R	62	/* LT-rel. fct ptr, right 14 bits. */ -+#define R_PARISC_FPTR64		64	/* 64 bits function address.  */ -+#define R_PARISC_PLABEL32	65	/* 32 bits function address.  */ -+#define R_PARISC_PCREL64	72	/* 64 bits PC-rel. address.  */ -+#define R_PARISC_PCREL22F	74	/* 22 bits PC-rel. address.  */ -+#define R_PARISC_PCREL14WR	75	/* PC-rel. address, right 14 bits.  */ -+#define R_PARISC_PCREL14DR	76	/* PC rel. address, right 14 bits.  */ -+#define R_PARISC_PCREL16F	77	/* 16 bits PC-rel. address.  */ -+#define R_PARISC_PCREL16WF	78	/* 16 bits PC-rel. address.  */ -+#define R_PARISC_PCREL16DF	79	/* 16 bits PC-rel. address.  */ -+#define R_PARISC_DIR64		80	/* 64 bits of eff. address.  */ -+#define R_PARISC_DIR14WR	83	/* 14 bits of eff. address.  */ -+#define R_PARISC_DIR14DR	84	/* 14 bits of eff. address.  */ -+#define R_PARISC_DIR16F		85	/* 16 bits of eff. address.  */ -+#define R_PARISC_DIR16WF	86	/* 16 bits of eff. address.  */ -+#define R_PARISC_DIR16DF	87	/* 16 bits of eff. address.  */ -+#define R_PARISC_GPREL64	88	/* 64 bits of GP-rel. address.  */ -+#define R_PARISC_GPREL14WR	91	/* GP-rel. address, right 14 bits.  */ -+#define R_PARISC_GPREL14DR	92	/* GP-rel. address, right 14 bits.  */ -+#define R_PARISC_GPREL16F	93	/* 16 bits GP-rel. address.  */ -+#define R_PARISC_GPREL16WF	94	/* 16 bits GP-rel. address.  */ -+#define R_PARISC_GPREL16DF	95	/* 16 bits GP-rel. address.  */ -+#define R_PARISC_LTOFF64	96	/* 64 bits LT-rel. address.  */ -+#define R_PARISC_LTOFF14WR	99	/* LT-rel. address, right 14 bits.  */ -+#define R_PARISC_LTOFF14DR	100	/* LT-rel. address, right 14 bits.  */ -+#define R_PARISC_LTOFF16F	101	/* 16 bits LT-rel. address.  */ -+#define R_PARISC_LTOFF16WF	102	/* 16 bits LT-rel. address.  */ -+#define R_PARISC_LTOFF16DF	103	/* 16 bits LT-rel. address.  */ -+#define R_PARISC_SECREL64	104	/* 64 bits section rel. address.  */ -+#define R_PARISC_SEGREL64	112	/* 64 bits segment rel. address.  */ -+#define R_PARISC_PLTOFF14WR	115	/* PLT-rel. address, right 14 bits.  */ -+#define R_PARISC_PLTOFF14DR	116	/* PLT-rel. address, right 14 bits.  */ -+#define R_PARISC_PLTOFF16F	117	/* 16 bits LT-rel. address.  */ -+#define R_PARISC_PLTOFF16WF	118	/* 16 bits PLT-rel. address.  */ -+#define R_PARISC_PLTOFF16DF	119	/* 16 bits PLT-rel. address.  */ -+#define R_PARISC_LTOFF_FPTR64	120	/* 64 bits LT-rel. function ptr.  */ -+#define R_PARISC_LTOFF_FPTR14WR	123	/* LT-rel. fct. ptr., right 14 bits. */ -+#define R_PARISC_LTOFF_FPTR14DR	124	/* LT-rel. fct. ptr., right 14 bits. */ -+#define R_PARISC_LTOFF_FPTR16F	125	/* 16 bits LT-rel. function ptr.  */ -+#define R_PARISC_LTOFF_FPTR16WF	126	/* 16 bits LT-rel. function ptr.  */ -+#define R_PARISC_LTOFF_FPTR16DF	127	/* 16 bits LT-rel. function ptr.  */ -+#define R_PARISC_LORESERVE	128 -+#define R_PARISC_COPY		128	/* Copy relocation.  */ -+#define R_PARISC_IPLT		129	/* Dynamic reloc, imported PLT */ -+#define R_PARISC_EPLT		130	/* Dynamic reloc, exported PLT */ -+#define R_PARISC_TPREL32	153	/* 32 bits TP-rel. address.  */ -+#define R_PARISC_TPREL21L	154	/* TP-rel. address, left 21 bits.  */ -+#define R_PARISC_TPREL14R	158	/* TP-rel. address, right 14 bits.  */ -+#define R_PARISC_LTOFF_TP21L	162	/* LT-TP-rel. address, left 21 bits. */ -+#define R_PARISC_LTOFF_TP14R	166	/* LT-TP-rel. address, right 14 bits.*/ -+#define R_PARISC_LTOFF_TP14F	167	/* 14 bits LT-TP-rel. address.  */ -+#define R_PARISC_TPREL64	216	/* 64 bits TP-rel. address.  */ -+#define R_PARISC_TPREL14WR	219	/* TP-rel. address, right 14 bits.  */ -+#define R_PARISC_TPREL14DR	220	/* TP-rel. address, right 14 bits.  */ -+#define R_PARISC_TPREL16F	221	/* 16 bits TP-rel. address.  */ -+#define R_PARISC_TPREL16WF	222	/* 16 bits TP-rel. address.  */ -+#define R_PARISC_TPREL16DF	223	/* 16 bits TP-rel. address.  */ -+#define R_PARISC_LTOFF_TP64	224	/* 64 bits LT-TP-rel. address.  */ -+#define R_PARISC_LTOFF_TP14WR	227	/* LT-TP-rel. address, right 14 bits.*/ -+#define R_PARISC_LTOFF_TP14DR	228	/* LT-TP-rel. address, right 14 bits.*/ -+#define R_PARISC_LTOFF_TP16F	229	/* 16 bits LT-TP-rel. address.  */ -+#define R_PARISC_LTOFF_TP16WF	230	/* 16 bits LT-TP-rel. address.  */ -+#define R_PARISC_LTOFF_TP16DF	231	/* 16 bits LT-TP-rel. address.  */ -+#define R_PARISC_HIRESERVE	255 -+ -+/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr.  */ -+ -+#define PT_HP_TLS		(PT_LOOS + 0x0) -+#define PT_HP_CORE_NONE		(PT_LOOS + 0x1) -+#define PT_HP_CORE_VERSION	(PT_LOOS + 0x2) -+#define PT_HP_CORE_KERNEL	(PT_LOOS + 0x3) -+#define PT_HP_CORE_COMM		(PT_LOOS + 0x4) -+#define PT_HP_CORE_PROC		(PT_LOOS + 0x5) -+#define PT_HP_CORE_LOADABLE	(PT_LOOS + 0x6) -+#define PT_HP_CORE_STACK	(PT_LOOS + 0x7) -+#define PT_HP_CORE_SHM		(PT_LOOS + 0x8) -+#define PT_HP_CORE_MMF		(PT_LOOS + 0x9) -+#define PT_HP_PARALLEL		(PT_LOOS + 0x10) -+#define PT_HP_FASTBIND		(PT_LOOS + 0x11) -+#define PT_HP_OPT_ANNOT		(PT_LOOS + 0x12) -+#define PT_HP_HSL_ANNOT		(PT_LOOS + 0x13) -+#define PT_HP_STACK		(PT_LOOS + 0x14) -+ -+#define PT_PARISC_ARCHEXT	0x70000000 -+#define PT_PARISC_UNWIND	0x70000001 -+ -+/* Legal values for p_flags field of Elf32_Phdr/Elf64_Phdr.  */ -+ -+#define PF_PARISC_SBP		0x08000000 -+ -+#define PF_HP_PAGE_SIZE		0x00100000 -+#define PF_HP_FAR_SHARED	0x00200000 -+#define PF_HP_NEAR_SHARED	0x00400000 -+#define PF_HP_CODE		0x01000000 -+#define PF_HP_MODIFY		0x02000000 -+#define PF_HP_LAZYSWAP		0x04000000 -+#define PF_HP_SBP		0x08000000 -+ -+ -+/* Alpha specific definitions.  */ -+ -+/* Legal values for e_flags field of Elf64_Ehdr.  */ -+ -+#define EF_ALPHA_32BIT		1	/* All addresses must be < 2GB.  */ -+#define EF_ALPHA_CANRELAX	2	/* Relocations for relaxing exist.  */ -+ -+/* Legal values for sh_type field of Elf64_Shdr.  */ -+ -+/* These two are primerily concerned with ECOFF debugging info.  */ -+#define SHT_ALPHA_DEBUG		0x70000001 -+#define SHT_ALPHA_REGINFO	0x70000002 -+ -+/* Legal values for sh_flags field of Elf64_Shdr.  */ -+ -+#define SHF_ALPHA_GPREL		0x10000000 -+ -+/* Legal values for st_other field of Elf64_Sym.  */ -+#define STO_ALPHA_NOPV		0x80	/* No PV required.  */ -+#define STO_ALPHA_STD_GPLOAD	0x88	/* PV only used for initial ldgp.  */ -+ -+/* Alpha relocs.  */ -+ -+#define R_ALPHA_NONE		0	/* No reloc */ -+#define R_ALPHA_REFLONG		1	/* Direct 32 bit */ -+#define R_ALPHA_REFQUAD		2	/* Direct 64 bit */ -+#define R_ALPHA_GPREL32		3	/* GP relative 32 bit */ -+#define R_ALPHA_LITERAL		4	/* GP relative 16 bit w/optimization */ -+#define R_ALPHA_LITUSE		5	/* Optimization hint for LITERAL */ -+#define R_ALPHA_GPDISP		6	/* Add displacement to GP */ -+#define R_ALPHA_BRADDR		7	/* PC+4 relative 23 bit shifted */ -+#define R_ALPHA_HINT		8	/* PC+4 relative 16 bit shifted */ -+#define R_ALPHA_SREL16		9	/* PC relative 16 bit */ -+#define R_ALPHA_SREL32		10	/* PC relative 32 bit */ -+#define R_ALPHA_SREL64		11	/* PC relative 64 bit */ -+#define R_ALPHA_GPRELHIGH	17	/* GP relative 32 bit, high 16 bits */ -+#define R_ALPHA_GPRELLOW	18	/* GP relative 32 bit, low 16 bits */ -+#define R_ALPHA_GPREL16		19	/* GP relative 16 bit */ -+#define R_ALPHA_COPY		24	/* Copy symbol at runtime */ -+#define R_ALPHA_GLOB_DAT	25	/* Create GOT entry */ -+#define R_ALPHA_JMP_SLOT	26	/* Create PLT entry */ -+#define R_ALPHA_RELATIVE	27	/* Adjust by program base */ -+#define R_ALPHA_TLS_GD_HI	28 -+#define R_ALPHA_TLSGD		29 -+#define R_ALPHA_TLS_LDM		30 -+#define R_ALPHA_DTPMOD64	31 -+#define R_ALPHA_GOTDTPREL	32 -+#define R_ALPHA_DTPREL64	33 -+#define R_ALPHA_DTPRELHI	34 -+#define R_ALPHA_DTPRELLO	35 -+#define R_ALPHA_DTPREL16	36 -+#define R_ALPHA_GOTTPREL	37 -+#define R_ALPHA_TPREL64		38 -+#define R_ALPHA_TPRELHI		39 -+#define R_ALPHA_TPRELLO		40 -+#define R_ALPHA_TPREL16		41 -+/* Keep this the last entry.  */ -+#define R_ALPHA_NUM		46 -+ -+/* Magic values of the LITUSE relocation addend.  */ -+#define LITUSE_ALPHA_ADDR	0 -+#define LITUSE_ALPHA_BASE	1 -+#define LITUSE_ALPHA_BYTOFF	2 -+#define LITUSE_ALPHA_JSR	3 -+#define LITUSE_ALPHA_TLS_GD	4 -+#define LITUSE_ALPHA_TLS_LDM	5 -+ -+ -+/* PowerPC specific declarations */ -+ -+/* Values for Elf32/64_Ehdr.e_flags.  */ -+#define EF_PPC_EMB		0x80000000	/* PowerPC embedded flag */ -+ -+/* Cygnus local bits below */ -+#define EF_PPC_RELOCATABLE	0x00010000	/* PowerPC -mrelocatable flag*/ -+#define EF_PPC_RELOCATABLE_LIB	0x00008000	/* PowerPC -mrelocatable-lib -+						   flag */ -+ -+/* PowerPC relocations defined by the ABIs */ -+#define R_PPC_NONE		0 -+#define R_PPC_ADDR32		1	/* 32bit absolute address */ -+#define R_PPC_ADDR24		2	/* 26bit address, 2 bits ignored.  */ -+#define R_PPC_ADDR16		3	/* 16bit absolute address */ -+#define R_PPC_ADDR16_LO		4	/* lower 16bit of absolute address */ -+#define R_PPC_ADDR16_HI		5	/* high 16bit of absolute address */ -+#define R_PPC_ADDR16_HA		6	/* adjusted high 16bit */ -+#define R_PPC_ADDR14		7	/* 16bit address, 2 bits ignored */ -+#define R_PPC_ADDR14_BRTAKEN	8 -+#define R_PPC_ADDR14_BRNTAKEN	9 -+#define R_PPC_REL24		10	/* PC relative 26 bit */ -+#define R_PPC_REL14		11	/* PC relative 16 bit */ -+#define R_PPC_REL14_BRTAKEN	12 -+#define R_PPC_REL14_BRNTAKEN	13 -+#define R_PPC_GOT16		14 -+#define R_PPC_GOT16_LO		15 -+#define R_PPC_GOT16_HI		16 -+#define R_PPC_GOT16_HA		17 -+#define R_PPC_PLTREL24		18 -+#define R_PPC_COPY		19 -+#define R_PPC_GLOB_DAT		20 -+#define R_PPC_JMP_SLOT		21 -+#define R_PPC_RELATIVE		22 -+#define R_PPC_LOCAL24PC		23 -+#define R_PPC_UADDR32		24 -+#define R_PPC_UADDR16		25 -+#define R_PPC_REL32		26 -+#define R_PPC_PLT32		27 -+#define R_PPC_PLTREL32		28 -+#define R_PPC_PLT16_LO		29 -+#define R_PPC_PLT16_HI		30 -+#define R_PPC_PLT16_HA		31 -+#define R_PPC_SDAREL16		32 -+#define R_PPC_SECTOFF		33 -+#define R_PPC_SECTOFF_LO	34 -+#define R_PPC_SECTOFF_HI	35 -+#define R_PPC_SECTOFF_HA	36 -+ -+/* PowerPC relocations defined for the TLS access ABI.  */ -+#define R_PPC_TLS		67 /* none	(sym+add)@tls */ -+#define R_PPC_DTPMOD32		68 /* word32	(sym+add)@dtpmod */ -+#define R_PPC_TPREL16		69 /* half16*	(sym+add)@tprel */ -+#define R_PPC_TPREL16_LO	70 /* half16	(sym+add)@tprel@l */ -+#define R_PPC_TPREL16_HI	71 /* half16	(sym+add)@tprel@h */ -+#define R_PPC_TPREL16_HA	72 /* half16	(sym+add)@tprel@ha */ -+#define R_PPC_TPREL32		73 /* word32	(sym+add)@tprel */ -+#define R_PPC_DTPREL16		74 /* half16*	(sym+add)@dtprel */ -+#define R_PPC_DTPREL16_LO	75 /* half16	(sym+add)@dtprel@l */ -+#define R_PPC_DTPREL16_HI	76 /* half16	(sym+add)@dtprel@h */ -+#define R_PPC_DTPREL16_HA	77 /* half16	(sym+add)@dtprel@ha */ -+#define R_PPC_DTPREL32		78 /* word32	(sym+add)@dtprel */ -+#define R_PPC_GOT_TLSGD16	79 /* half16*	(sym+add)@got@tlsgd */ -+#define R_PPC_GOT_TLSGD16_LO	80 /* half16	(sym+add)@got@tlsgd@l */ -+#define R_PPC_GOT_TLSGD16_HI	81 /* half16	(sym+add)@got@tlsgd@h */ -+#define R_PPC_GOT_TLSGD16_HA	82 /* half16	(sym+add)@got@tlsgd@ha */ -+#define R_PPC_GOT_TLSLD16	83 /* half16*	(sym+add)@got@tlsld */ -+#define R_PPC_GOT_TLSLD16_LO	84 /* half16	(sym+add)@got@tlsld@l */ -+#define R_PPC_GOT_TLSLD16_HI	85 /* half16	(sym+add)@got@tlsld@h */ -+#define R_PPC_GOT_TLSLD16_HA	86 /* half16	(sym+add)@got@tlsld@ha */ -+#define R_PPC_GOT_TPREL16	87 /* half16*	(sym+add)@got@tprel */ -+#define R_PPC_GOT_TPREL16_LO	88 /* half16	(sym+add)@got@tprel@l */ -+#define R_PPC_GOT_TPREL16_HI	89 /* half16	(sym+add)@got@tprel@h */ -+#define R_PPC_GOT_TPREL16_HA	90 /* half16	(sym+add)@got@tprel@ha */ -+#define R_PPC_GOT_DTPREL16	91 /* half16*	(sym+add)@got@dtprel */ -+#define R_PPC_GOT_DTPREL16_LO	92 /* half16*	(sym+add)@got@dtprel@l */ -+#define R_PPC_GOT_DTPREL16_HI	93 /* half16*	(sym+add)@got@dtprel@h */ -+#define R_PPC_GOT_DTPREL16_HA	94 /* half16*	(sym+add)@got@dtprel@ha */ -+ -+/* Keep this the last entry.  */ -+#define R_PPC_NUM		95 -+ -+/* The remaining relocs are from the Embedded ELF ABI, and are not -+   in the SVR4 ELF ABI.  */ -+#define R_PPC_EMB_NADDR32	101 -+#define R_PPC_EMB_NADDR16	102 -+#define R_PPC_EMB_NADDR16_LO	103 -+#define R_PPC_EMB_NADDR16_HI	104 -+#define R_PPC_EMB_NADDR16_HA	105 -+#define R_PPC_EMB_SDAI16	106 -+#define R_PPC_EMB_SDA2I16	107 -+#define R_PPC_EMB_SDA2REL	108 -+#define R_PPC_EMB_SDA21		109	/* 16 bit offset in SDA */ -+#define R_PPC_EMB_MRKREF	110 -+#define R_PPC_EMB_RELSEC16	111 -+#define R_PPC_EMB_RELST_LO	112 -+#define R_PPC_EMB_RELST_HI	113 -+#define R_PPC_EMB_RELST_HA	114 -+#define R_PPC_EMB_BIT_FLD	115 -+#define R_PPC_EMB_RELSDA	116	/* 16 bit relative offset in SDA */ -+ -+/* Diab tool relocations.  */ -+#define R_PPC_DIAB_SDA21_LO	180	/* like EMB_SDA21, but lower 16 bit */ -+#define R_PPC_DIAB_SDA21_HI	181	/* like EMB_SDA21, but high 16 bit */ -+#define R_PPC_DIAB_SDA21_HA	182	/* like EMB_SDA21, adjusted high 16 */ -+#define R_PPC_DIAB_RELSDA_LO	183	/* like EMB_RELSDA, but lower 16 bit */ -+#define R_PPC_DIAB_RELSDA_HI	184	/* like EMB_RELSDA, but high 16 bit */ -+#define R_PPC_DIAB_RELSDA_HA	185	/* like EMB_RELSDA, adjusted high 16 */ -+ -+/* This is a phony reloc to handle any old fashioned TOC16 references -+   that may still be in object files.  */ -+#define R_PPC_TOC16		255 -+ -+ -+/* PowerPC64 relocations defined by the ABIs */ -+#define R_PPC64_NONE		R_PPC_NONE -+#define R_PPC64_ADDR32		R_PPC_ADDR32 /* 32bit absolute address */ -+#define R_PPC64_ADDR24		R_PPC_ADDR24 /* 26bit address, word aligned */ -+#define R_PPC64_ADDR16		R_PPC_ADDR16 /* 16bit absolute address */ -+#define R_PPC64_ADDR16_LO	R_PPC_ADDR16_LO	/* lower 16bits of address */ -+#define R_PPC64_ADDR16_HI	R_PPC_ADDR16_HI	/* high 16bits of address. */ -+#define R_PPC64_ADDR16_HA	R_PPC_ADDR16_HA /* adjusted high 16bits.  */ -+#define R_PPC64_ADDR14		R_PPC_ADDR14 /* 16bit address, word aligned */ -+#define R_PPC64_ADDR14_BRTAKEN	R_PPC_ADDR14_BRTAKEN -+#define R_PPC64_ADDR14_BRNTAKEN	R_PPC_ADDR14_BRNTAKEN -+#define R_PPC64_REL24		R_PPC_REL24 /* PC-rel. 26 bit, word aligned */ -+#define R_PPC64_REL14		R_PPC_REL14 /* PC relative 16 bit */ -+#define R_PPC64_REL14_BRTAKEN	R_PPC_REL14_BRTAKEN -+#define R_PPC64_REL14_BRNTAKEN	R_PPC_REL14_BRNTAKEN -+#define R_PPC64_GOT16		R_PPC_GOT16 -+#define R_PPC64_GOT16_LO	R_PPC_GOT16_LO -+#define R_PPC64_GOT16_HI	R_PPC_GOT16_HI -+#define R_PPC64_GOT16_HA	R_PPC_GOT16_HA -+ -+#define R_PPC64_COPY		R_PPC_COPY -+#define R_PPC64_GLOB_DAT	R_PPC_GLOB_DAT -+#define R_PPC64_JMP_SLOT	R_PPC_JMP_SLOT -+#define R_PPC64_RELATIVE	R_PPC_RELATIVE -+ -+#define R_PPC64_UADDR32		R_PPC_UADDR32 -+#define R_PPC64_UADDR16		R_PPC_UADDR16 -+#define R_PPC64_REL32		R_PPC_REL32 -+#define R_PPC64_PLT32		R_PPC_PLT32 -+#define R_PPC64_PLTREL32	R_PPC_PLTREL32 -+#define R_PPC64_PLT16_LO	R_PPC_PLT16_LO -+#define R_PPC64_PLT16_HI	R_PPC_PLT16_HI -+#define R_PPC64_PLT16_HA	R_PPC_PLT16_HA -+ -+#define R_PPC64_SECTOFF		R_PPC_SECTOFF -+#define R_PPC64_SECTOFF_LO	R_PPC_SECTOFF_LO -+#define R_PPC64_SECTOFF_HI	R_PPC_SECTOFF_HI -+#define R_PPC64_SECTOFF_HA	R_PPC_SECTOFF_HA -+#define R_PPC64_ADDR30		37 /* word30 (S + A - P) >> 2 */ -+#define R_PPC64_ADDR64		38 /* doubleword64 S + A */ -+#define R_PPC64_ADDR16_HIGHER	39 /* half16 #higher(S + A) */ -+#define R_PPC64_ADDR16_HIGHERA	40 /* half16 #highera(S + A) */ -+#define R_PPC64_ADDR16_HIGHEST	41 /* half16 #highest(S + A) */ -+#define R_PPC64_ADDR16_HIGHESTA	42 /* half16 #highesta(S + A) */ -+#define R_PPC64_UADDR64		43 /* doubleword64 S + A */ -+#define R_PPC64_REL64		44 /* doubleword64 S + A - P */ -+#define R_PPC64_PLT64		45 /* doubleword64 L + A */ -+#define R_PPC64_PLTREL64	46 /* doubleword64 L + A - P */ -+#define R_PPC64_TOC16		47 /* half16* S + A - .TOC */ -+#define R_PPC64_TOC16_LO	48 /* half16 #lo(S + A - .TOC.) */ -+#define R_PPC64_TOC16_HI	49 /* half16 #hi(S + A - .TOC.) */ -+#define R_PPC64_TOC16_HA	50 /* half16 #ha(S + A - .TOC.) */ -+#define R_PPC64_TOC		51 /* doubleword64 .TOC */ -+#define R_PPC64_PLTGOT16	52 /* half16* M + A */ -+#define R_PPC64_PLTGOT16_LO	53 /* half16 #lo(M + A) */ -+#define R_PPC64_PLTGOT16_HI	54 /* half16 #hi(M + A) */ -+#define R_PPC64_PLTGOT16_HA	55 /* half16 #ha(M + A) */ -+ -+#define R_PPC64_ADDR16_DS	56 /* half16ds* (S + A) >> 2 */ -+#define R_PPC64_ADDR16_LO_DS	57 /* half16ds  #lo(S + A) >> 2 */ -+#define R_PPC64_GOT16_DS	58 /* half16ds* (G + A) >> 2 */ -+#define R_PPC64_GOT16_LO_DS	59 /* half16ds  #lo(G + A) >> 2 */ -+#define R_PPC64_PLT16_LO_DS	60 /* half16ds  #lo(L + A) >> 2 */ -+#define R_PPC64_SECTOFF_DS	61 /* half16ds* (R + A) >> 2 */ -+#define R_PPC64_SECTOFF_LO_DS	62 /* half16ds  #lo(R + A) >> 2 */ -+#define R_PPC64_TOC16_DS	63 /* half16ds* (S + A - .TOC.) >> 2 */ -+#define R_PPC64_TOC16_LO_DS	64 /* half16ds  #lo(S + A - .TOC.) >> 2 */ -+#define R_PPC64_PLTGOT16_DS	65 /* half16ds* (M + A) >> 2 */ -+#define R_PPC64_PLTGOT16_LO_DS	66 /* half16ds  #lo(M + A) >> 2 */ -+ -+/* PowerPC64 relocations defined for the TLS access ABI.  */ -+#define R_PPC64_TLS		67 /* none	(sym+add)@tls */ -+#define R_PPC64_DTPMOD64	68 /* doubleword64 (sym+add)@dtpmod */ -+#define R_PPC64_TPREL16		69 /* half16*	(sym+add)@tprel */ -+#define R_PPC64_TPREL16_LO	70 /* half16	(sym+add)@tprel@l */ -+#define R_PPC64_TPREL16_HI	71 /* half16	(sym+add)@tprel@h */ -+#define R_PPC64_TPREL16_HA	72 /* half16	(sym+add)@tprel@ha */ -+#define R_PPC64_TPREL64		73 /* doubleword64 (sym+add)@tprel */ -+#define R_PPC64_DTPREL16	74 /* half16*	(sym+add)@dtprel */ -+#define R_PPC64_DTPREL16_LO	75 /* half16	(sym+add)@dtprel@l */ -+#define R_PPC64_DTPREL16_HI	76 /* half16	(sym+add)@dtprel@h */ -+#define R_PPC64_DTPREL16_HA	77 /* half16	(sym+add)@dtprel@ha */ -+#define R_PPC64_DTPREL64	78 /* doubleword64 (sym+add)@dtprel */ -+#define R_PPC64_GOT_TLSGD16	79 /* half16*	(sym+add)@got@tlsgd */ -+#define R_PPC64_GOT_TLSGD16_LO	80 /* half16	(sym+add)@got@tlsgd@l */ -+#define R_PPC64_GOT_TLSGD16_HI	81 /* half16	(sym+add)@got@tlsgd@h */ -+#define R_PPC64_GOT_TLSGD16_HA	82 /* half16	(sym+add)@got@tlsgd@ha */ -+#define R_PPC64_GOT_TLSLD16	83 /* half16*	(sym+add)@got@tlsld */ -+#define R_PPC64_GOT_TLSLD16_LO	84 /* half16	(sym+add)@got@tlsld@l */ -+#define R_PPC64_GOT_TLSLD16_HI	85 /* half16	(sym+add)@got@tlsld@h */ -+#define R_PPC64_GOT_TLSLD16_HA	86 /* half16	(sym+add)@got@tlsld@ha */ -+#define R_PPC64_GOT_TPREL16_DS	87 /* half16ds*	(sym+add)@got@tprel */ -+#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l */ -+#define R_PPC64_GOT_TPREL16_HI	89 /* half16	(sym+add)@got@tprel@h */ -+#define R_PPC64_GOT_TPREL16_HA	90 /* half16	(sym+add)@got@tprel@ha */ -+#define R_PPC64_GOT_DTPREL16_DS	91 /* half16ds*	(sym+add)@got@dtprel */ -+#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l */ -+#define R_PPC64_GOT_DTPREL16_HI	93 /* half16	(sym+add)@got@dtprel@h */ -+#define R_PPC64_GOT_DTPREL16_HA	94 /* half16	(sym+add)@got@dtprel@ha */ -+#define R_PPC64_TPREL16_DS	95 /* half16ds*	(sym+add)@tprel */ -+#define R_PPC64_TPREL16_LO_DS	96 /* half16ds	(sym+add)@tprel@l */ -+#define R_PPC64_TPREL16_HIGHER	97 /* half16	(sym+add)@tprel@higher */ -+#define R_PPC64_TPREL16_HIGHERA	98 /* half16	(sym+add)@tprel@highera */ -+#define R_PPC64_TPREL16_HIGHEST	99 /* half16	(sym+add)@tprel@highest */ -+#define R_PPC64_TPREL16_HIGHESTA 100 /* half16	(sym+add)@tprel@highesta */ -+#define R_PPC64_DTPREL16_DS	101 /* half16ds* (sym+add)@dtprel */ -+#define R_PPC64_DTPREL16_LO_DS	102 /* half16ds	(sym+add)@dtprel@l */ -+#define R_PPC64_DTPREL16_HIGHER	103 /* half16	(sym+add)@dtprel@higher */ -+#define R_PPC64_DTPREL16_HIGHERA 104 /* half16	(sym+add)@dtprel@highera */ -+#define R_PPC64_DTPREL16_HIGHEST 105 /* half16	(sym+add)@dtprel@highest */ -+#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16	(sym+add)@dtprel@highesta */ -+ -+/* Keep this the last entry.  */ -+#define R_PPC64_NUM		107 -+ -+/* PowerPC64 specific values for the Dyn d_tag field.  */ -+#define DT_PPC64_GLINK  (DT_LOPROC + 0) -+#define DT_PPC64_NUM    1 -+ -+ -+/* ARM specific declarations */ -+ -+/* Processor specific flags for the ELF header e_flags field.  */ -+#define EF_ARM_RELEXEC     0x01 -+#define EF_ARM_HASENTRY    0x02 -+#define EF_ARM_INTERWORK   0x04 -+#define EF_ARM_APCS_26     0x08 -+#define EF_ARM_APCS_FLOAT  0x10 -+#define EF_ARM_PIC         0x20 -+#define EF_ARM_ALIGN8      0x40		/* 8-bit structure alignment is in use */ -+#define EF_ARM_NEW_ABI     0x80 -+#define EF_ARM_OLD_ABI     0x100 -+ -+/* Other constants defined in the ARM ELF spec. version B-01.  */ -+/* NB. These conflict with values defined above.  */ -+#define EF_ARM_SYMSARESORTED	0x04 -+#define EF_ARM_DYNSYMSUSESEGIDX 0x08 -+#define EF_ARM_MAPSYMSFIRST	0x10 -+#define EF_ARM_EABIMASK		0XFF000000 -+ -+#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) -+#define EF_ARM_EABI_UNKNOWN  0x00000000 -+#define EF_ARM_EABI_VER1     0x01000000 -+#define EF_ARM_EABI_VER2     0x02000000 -+ -+/* Additional symbol types for Thumb */ -+#define STT_ARM_TFUNC      0xd -+ -+/* ARM-specific values for sh_flags */ -+#define SHF_ARM_ENTRYSECT  0x10000000   /* Section contains an entry point */ -+#define SHF_ARM_COMDEF     0x80000000   /* Section may be multiply defined -+					   in the input to a link step */ -+ -+/* ARM-specific program header flags */ -+#define PF_ARM_SB          0x10000000   /* Segment contains the location -+					   addressed by the static base */ -+ -+/* ARM relocs.  */ -+#define R_ARM_NONE		0	/* No reloc */ -+#define R_ARM_PC24		1	/* PC relative 26 bit branch */ -+#define R_ARM_ABS32		2	/* Direct 32 bit  */ -+#define R_ARM_REL32		3	/* PC relative 32 bit */ -+#define R_ARM_PC13		4 -+#define R_ARM_ABS16		5	/* Direct 16 bit */ -+#define R_ARM_ABS12		6	/* Direct 12 bit */ -+#define R_ARM_THM_ABS5		7 -+#define R_ARM_ABS8		8	/* Direct 8 bit */ -+#define R_ARM_SBREL32		9 -+#define R_ARM_THM_PC22		10 -+#define R_ARM_THM_PC8		11 -+#define R_ARM_AMP_VCALL9	12 -+#define R_ARM_SWI24		13 -+#define R_ARM_THM_SWI8		14 -+#define R_ARM_XPC25		15 -+#define R_ARM_THM_XPC22		16 -+#define R_ARM_COPY		20	/* Copy symbol at runtime */ -+#define R_ARM_GLOB_DAT		21	/* Create GOT entry */ -+#define R_ARM_JUMP_SLOT		22	/* Create PLT entry */ -+#define R_ARM_RELATIVE		23	/* Adjust by program base */ -+#define R_ARM_GOTOFF		24	/* 32 bit offset to GOT */ -+#define R_ARM_GOTPC		25	/* 32 bit PC relative offset to GOT */ -+#define R_ARM_GOT32		26	/* 32 bit GOT entry */ -+#define R_ARM_PLT32		27	/* 32 bit PLT address */ -+#define R_ARM_ALU_PCREL_7_0	32 -+#define R_ARM_ALU_PCREL_15_8	33 -+#define R_ARM_ALU_PCREL_23_15	34 -+#define R_ARM_LDR_SBREL_11_0	35 -+#define R_ARM_ALU_SBREL_19_12	36 -+#define R_ARM_ALU_SBREL_27_20	37 -+#define R_ARM_GNU_VTENTRY	100 -+#define R_ARM_GNU_VTINHERIT	101 -+#define R_ARM_THM_PC11		102	/* thumb unconditional branch */ -+#define R_ARM_THM_PC9		103	/* thumb conditional branch */ -+#define R_ARM_RXPC25		249 -+#define R_ARM_RSBREL32		250 -+#define R_ARM_THM_RPC22		251 -+#define R_ARM_RREL32		252 -+#define R_ARM_RABS22		253 -+#define R_ARM_RPC24		254 -+#define R_ARM_RBASE		255 -+/* Keep this the last entry.  */ -+#define R_ARM_NUM		256 -+ -+/* IA-64 specific declarations.  */ -+ -+/* Processor specific flags for the Ehdr e_flags field.  */ -+#define EF_IA_64_MASKOS		0x0000000f	/* os-specific flags */ -+#define EF_IA_64_ABI64		0x00000010	/* 64-bit ABI */ -+#define EF_IA_64_ARCH		0xff000000	/* arch. version mask */ -+ -+/* Processor specific values for the Phdr p_type field.  */ -+#define PT_IA_64_ARCHEXT	(PT_LOPROC + 0)	/* arch extension bits */ -+#define PT_IA_64_UNWIND		(PT_LOPROC + 1)	/* ia64 unwind bits */ -+ -+/* Processor specific flags for the Phdr p_flags field.  */ -+#define PF_IA_64_NORECOV	0x80000000	/* spec insns w/o recovery */ -+ -+/* Processor specific values for the Shdr sh_type field.  */ -+#define SHT_IA_64_EXT		(SHT_LOPROC + 0) /* extension bits */ -+#define SHT_IA_64_UNWIND	(SHT_LOPROC + 1) /* unwind bits */ -+ -+/* Processor specific flags for the Shdr sh_flags field.  */ -+#define SHF_IA_64_SHORT		0x10000000	/* section near gp */ -+#define SHF_IA_64_NORECOV	0x20000000	/* spec insns w/o recovery */ -+ -+/* Processor specific values for the Dyn d_tag field.  */ -+#define DT_IA_64_PLT_RESERVE	(DT_LOPROC + 0) -+#define DT_IA_64_NUM		1 -+ -+/* IA-64 relocations.  */ -+#define R_IA64_NONE		0x00	/* none */ -+#define R_IA64_IMM14		0x21	/* symbol + addend, add imm14 */ -+#define R_IA64_IMM22		0x22	/* symbol + addend, add imm22 */ -+#define R_IA64_IMM64		0x23	/* symbol + addend, mov imm64 */ -+#define R_IA64_DIR32MSB		0x24	/* symbol + addend, data4 MSB */ -+#define R_IA64_DIR32LSB		0x25	/* symbol + addend, data4 LSB */ -+#define R_IA64_DIR64MSB		0x26	/* symbol + addend, data8 MSB */ -+#define R_IA64_DIR64LSB		0x27	/* symbol + addend, data8 LSB */ -+#define R_IA64_GPREL22		0x2a	/* @gprel(sym + add), add imm22 */ -+#define R_IA64_GPREL64I		0x2b	/* @gprel(sym + add), mov imm64 */ -+#define R_IA64_GPREL32MSB	0x2c	/* @gprel(sym + add), data4 MSB */ -+#define R_IA64_GPREL32LSB	0x2d	/* @gprel(sym + add), data4 LSB */ -+#define R_IA64_GPREL64MSB	0x2e	/* @gprel(sym + add), data8 MSB */ -+#define R_IA64_GPREL64LSB	0x2f	/* @gprel(sym + add), data8 LSB */ -+#define R_IA64_LTOFF22		0x32	/* @ltoff(sym + add), add imm22 */ -+#define R_IA64_LTOFF64I		0x33	/* @ltoff(sym + add), mov imm64 */ -+#define R_IA64_PLTOFF22		0x3a	/* @pltoff(sym + add), add imm22 */ -+#define R_IA64_PLTOFF64I	0x3b	/* @pltoff(sym + add), mov imm64 */ -+#define R_IA64_PLTOFF64MSB	0x3e	/* @pltoff(sym + add), data8 MSB */ -+#define R_IA64_PLTOFF64LSB	0x3f	/* @pltoff(sym + add), data8 LSB */ -+#define R_IA64_FPTR64I		0x43	/* @fptr(sym + add), mov imm64 */ -+#define R_IA64_FPTR32MSB	0x44	/* @fptr(sym + add), data4 MSB */ -+#define R_IA64_FPTR32LSB	0x45	/* @fptr(sym + add), data4 LSB */ -+#define R_IA64_FPTR64MSB	0x46	/* @fptr(sym + add), data8 MSB */ -+#define R_IA64_FPTR64LSB	0x47	/* @fptr(sym + add), data8 LSB */ -+#define R_IA64_PCREL60B		0x48	/* @pcrel(sym + add), brl */ -+#define R_IA64_PCREL21B		0x49	/* @pcrel(sym + add), ptb, call */ -+#define R_IA64_PCREL21M		0x4a	/* @pcrel(sym + add), chk.s */ -+#define R_IA64_PCREL21F		0x4b	/* @pcrel(sym + add), fchkf */ -+#define R_IA64_PCREL32MSB	0x4c	/* @pcrel(sym + add), data4 MSB */ -+#define R_IA64_PCREL32LSB	0x4d	/* @pcrel(sym + add), data4 LSB */ -+#define R_IA64_PCREL64MSB	0x4e	/* @pcrel(sym + add), data8 MSB */ -+#define R_IA64_PCREL64LSB	0x4f	/* @pcrel(sym + add), data8 LSB */ -+#define R_IA64_LTOFF_FPTR22	0x52	/* @ltoff(@fptr(s+a)), imm22 */ -+#define R_IA64_LTOFF_FPTR64I	0x53	/* @ltoff(@fptr(s+a)), imm64 */ -+#define R_IA64_LTOFF_FPTR32MSB	0x54	/* @ltoff(@fptr(s+a)), data4 MSB */ -+#define R_IA64_LTOFF_FPTR32LSB	0x55	/* @ltoff(@fptr(s+a)), data4 LSB */ -+#define R_IA64_LTOFF_FPTR64MSB	0x56	/* @ltoff(@fptr(s+a)), data8 MSB */ -+#define R_IA64_LTOFF_FPTR64LSB	0x57	/* @ltoff(@fptr(s+a)), data8 LSB */ -+#define R_IA64_SEGREL32MSB	0x5c	/* @segrel(sym + add), data4 MSB */ -+#define R_IA64_SEGREL32LSB	0x5d	/* @segrel(sym + add), data4 LSB */ -+#define R_IA64_SEGREL64MSB	0x5e	/* @segrel(sym + add), data8 MSB */ -+#define R_IA64_SEGREL64LSB	0x5f	/* @segrel(sym + add), data8 LSB */ -+#define R_IA64_SECREL32MSB	0x64	/* @secrel(sym + add), data4 MSB */ -+#define R_IA64_SECREL32LSB	0x65	/* @secrel(sym + add), data4 LSB */ -+#define R_IA64_SECREL64MSB	0x66	/* @secrel(sym + add), data8 MSB */ -+#define R_IA64_SECREL64LSB	0x67	/* @secrel(sym + add), data8 LSB */ -+#define R_IA64_REL32MSB		0x6c	/* data 4 + REL */ -+#define R_IA64_REL32LSB		0x6d	/* data 4 + REL */ -+#define R_IA64_REL64MSB		0x6e	/* data 8 + REL */ -+#define R_IA64_REL64LSB		0x6f	/* data 8 + REL */ -+#define R_IA64_LTV32MSB		0x74	/* symbol + addend, data4 MSB */ -+#define R_IA64_LTV32LSB		0x75	/* symbol + addend, data4 LSB */ -+#define R_IA64_LTV64MSB		0x76	/* symbol + addend, data8 MSB */ -+#define R_IA64_LTV64LSB		0x77	/* symbol + addend, data8 LSB */ -+#define R_IA64_PCREL21BI	0x79	/* @pcrel(sym + add), 21bit inst */ -+#define R_IA64_PCREL22		0x7a	/* @pcrel(sym + add), 22bit inst */ -+#define R_IA64_PCREL64I		0x7b	/* @pcrel(sym + add), 64bit inst */ -+#define R_IA64_IPLTMSB		0x80	/* dynamic reloc, imported PLT, MSB */ -+#define R_IA64_IPLTLSB		0x81	/* dynamic reloc, imported PLT, LSB */ -+#define R_IA64_COPY		0x84	/* copy relocation */ -+#define R_IA64_SUB		0x85	/* Addend and symbol difference */ -+#define R_IA64_LTOFF22X		0x86	/* LTOFF22, relaxable.  */ -+#define R_IA64_LDXMOV		0x87	/* Use of LTOFF22X.  */ -+#define R_IA64_TPREL14		0x91	/* @tprel(sym + add), imm14 */ -+#define R_IA64_TPREL22		0x92	/* @tprel(sym + add), imm22 */ -+#define R_IA64_TPREL64I		0x93	/* @tprel(sym + add), imm64 */ -+#define R_IA64_TPREL64MSB	0x96	/* @tprel(sym + add), data8 MSB */ -+#define R_IA64_TPREL64LSB	0x97	/* @tprel(sym + add), data8 LSB */ -+#define R_IA64_LTOFF_TPREL22	0x9a	/* @ltoff(@tprel(s+a)), imm2 */ -+#define R_IA64_DTPMOD64MSB	0xa6	/* @dtpmod(sym + add), data8 MSB */ -+#define R_IA64_DTPMOD64LSB	0xa7	/* @dtpmod(sym + add), data8 LSB */ -+#define R_IA64_LTOFF_DTPMOD22	0xaa	/* @ltoff(@dtpmod(sym + add)), imm22 */ -+#define R_IA64_DTPREL14		0xb1	/* @dtprel(sym + add), imm14 */ -+#define R_IA64_DTPREL22		0xb2	/* @dtprel(sym + add), imm22 */ -+#define R_IA64_DTPREL64I	0xb3	/* @dtprel(sym + add), imm64 */ -+#define R_IA64_DTPREL32MSB	0xb4	/* @dtprel(sym + add), data4 MSB */ -+#define R_IA64_DTPREL32LSB	0xb5	/* @dtprel(sym + add), data4 LSB */ -+#define R_IA64_DTPREL64MSB	0xb6	/* @dtprel(sym + add), data8 MSB */ -+#define R_IA64_DTPREL64LSB	0xb7	/* @dtprel(sym + add), data8 LSB */ -+#define R_IA64_LTOFF_DTPREL22	0xba	/* @ltoff(@dtprel(s+a)), imm22 */ -+ -+/* SH specific declarations */ -+ -+/* SH relocs.  */ -+#define	R_SH_NONE		0 -+#define	R_SH_DIR32		1 -+#define	R_SH_REL32		2 -+#define	R_SH_DIR8WPN		3 -+#define	R_SH_IND12W		4 -+#define	R_SH_DIR8WPL		5 -+#define	R_SH_DIR8WPZ		6 -+#define	R_SH_DIR8BP		7 -+#define	R_SH_DIR8W		8 -+#define	R_SH_DIR8L		9 -+#define	R_SH_SWITCH16		25 -+#define	R_SH_SWITCH32		26 -+#define	R_SH_USES		27 -+#define	R_SH_COUNT		28 -+#define	R_SH_ALIGN		29 -+#define	R_SH_CODE		30 -+#define	R_SH_DATA		31 -+#define	R_SH_LABEL		32 -+#define	R_SH_SWITCH8		33 -+#define	R_SH_GNU_VTINHERIT	34 -+#define	R_SH_GNU_VTENTRY	35 -+#define	R_SH_TLS_GD_32		144 -+#define	R_SH_TLS_LD_32		145 -+#define	R_SH_TLS_LDO_32		146 -+#define	R_SH_TLS_IE_32		147 -+#define	R_SH_TLS_LE_32		148 -+#define	R_SH_TLS_DTPMOD32	149 -+#define	R_SH_TLS_DTPOFF32	150 -+#define	R_SH_TLS_TPOFF32	151 -+#define	R_SH_GOT32		160 -+#define	R_SH_PLT32		161 -+#define	R_SH_COPY		162 -+#define	R_SH_GLOB_DAT		163 -+#define	R_SH_JMP_SLOT		164 -+#define	R_SH_RELATIVE		165 -+#define	R_SH_GOTOFF		166 -+#define	R_SH_GOTPC		167 -+/* Keep this the last entry.  */ -+#define	R_SH_NUM		256 -+ -+/* Additional s390 relocs */ -+ -+#define R_390_NONE		0	/* No reloc.  */ -+#define R_390_8			1	/* Direct 8 bit.  */ -+#define R_390_12		2	/* Direct 12 bit.  */ -+#define R_390_16		3	/* Direct 16 bit.  */ -+#define R_390_32		4	/* Direct 32 bit.  */ -+#define R_390_PC32		5	/* PC relative 32 bit.	*/ -+#define R_390_GOT12		6	/* 12 bit GOT offset.  */ -+#define R_390_GOT32		7	/* 32 bit GOT offset.  */ -+#define R_390_PLT32		8	/* 32 bit PC relative PLT address.  */ -+#define R_390_COPY		9	/* Copy symbol at runtime.  */ -+#define R_390_GLOB_DAT		10	/* Create GOT entry.  */ -+#define R_390_JMP_SLOT		11	/* Create PLT entry.  */ -+#define R_390_RELATIVE		12	/* Adjust by program base.  */ -+#define R_390_GOTOFF32		13	/* 32 bit offset to GOT.	 */ -+#define R_390_GOTPC		14	/* 32 bit PC relative offset to GOT.  */ -+#define R_390_GOT16		15	/* 16 bit GOT offset.  */ -+#define R_390_PC16		16	/* PC relative 16 bit.	*/ -+#define R_390_PC16DBL		17	/* PC relative 16 bit shifted by 1.  */ -+#define R_390_PLT16DBL		18	/* 16 bit PC rel. PLT shifted by 1.  */ -+#define R_390_PC32DBL		19	/* PC relative 32 bit shifted by 1.  */ -+#define R_390_PLT32DBL		20	/* 32 bit PC rel. PLT shifted by 1.  */ -+#define R_390_GOTPCDBL		21	/* 32 bit PC rel. GOT shifted by 1.  */ -+#define R_390_64		22	/* Direct 64 bit.  */ -+#define R_390_PC64		23	/* PC relative 64 bit.	*/ -+#define R_390_GOT64		24	/* 64 bit GOT offset.  */ -+#define R_390_PLT64		25	/* 64 bit PC relative PLT address.  */ -+#define R_390_GOTENT		26	/* 32 bit PC rel. to GOT entry >> 1. */ -+#define R_390_GOTOFF16		27	/* 16 bit offset to GOT. */ -+#define R_390_GOTOFF64		28	/* 64 bit offset to GOT. */ -+#define R_390_GOTPLT12		29	/* 12 bit offset to jump slot.	*/ -+#define R_390_GOTPLT16		30	/* 16 bit offset to jump slot.	*/ -+#define R_390_GOTPLT32		31	/* 32 bit offset to jump slot.	*/ -+#define R_390_GOTPLT64		32	/* 64 bit offset to jump slot.	*/ -+#define R_390_GOTPLTENT		33	/* 32 bit rel. offset to jump slot.  */ -+#define R_390_PLTOFF16		34	/* 16 bit offset from GOT to PLT. */ -+#define R_390_PLTOFF32		35	/* 32 bit offset from GOT to PLT. */ -+#define R_390_PLTOFF64		36	/* 16 bit offset from GOT to PLT. */ -+#define R_390_TLS_LOAD		37	/* Tag for load insn in TLS code.  */ -+#define R_390_TLS_GDCALL	38	/* Tag for function call in general -+					   dynamic TLS code. */ -+#define R_390_TLS_LDCALL	39	/* Tag for function call in local -+					   dynamic TLS code. */ -+#define R_390_TLS_GD32		40	/* Direct 32 bit for general dynamic -+					   thread local data.  */ -+#define R_390_TLS_GD64		41	/* Direct 64 bit for general dynamic -+					  thread local data.  */ -+#define R_390_TLS_GOTIE12	42	/* 12 bit GOT offset for static TLS -+					   block offset.  */ -+#define R_390_TLS_GOTIE32	43	/* 32 bit GOT offset for static TLS -+					   block offset.  */ -+#define R_390_TLS_GOTIE64	44	/* 64 bit GOT offset for static TLS -+					   block offset. */ -+#define R_390_TLS_LDM32		45	/* Direct 32 bit for local dynamic -+					   thread local data in LE code.  */ -+#define R_390_TLS_LDM64		46	/* Direct 64 bit for local dynamic -+					   thread local data in LE code.  */ -+#define R_390_TLS_IE32		47	/* 32 bit address of GOT entry for -+					   negated static TLS block offset.  */ -+#define R_390_TLS_IE64		48	/* 64 bit address of GOT entry for -+					   negated static TLS block offset.  */ -+#define R_390_TLS_IEENT		49	/* 32 bit rel. offset to GOT entry for -+					   negated static TLS block offset.  */ -+#define R_390_TLS_LE32		50	/* 32 bit negated offset relative to -+					   static TLS block.  */ -+#define R_390_TLS_LE64		51	/* 64 bit negated offset relative to -+					   static TLS block.  */ -+#define R_390_TLS_LDO32		52	/* 32 bit offset relative to TLS -+					   block.  */ -+#define R_390_TLS_LDO64		53	/* 64 bit offset relative to TLS -+					   block.  */ -+#define R_390_TLS_DTPMOD	54	/* ID of module containing symbol.  */ -+#define R_390_TLS_DTPOFF	55	/* Offset in TLS block.	 */ -+#define R_390_TLS_TPOFF		56	/* Negated offset in static TLS -+					   block.  */ -+ -+/* Keep this the last entry.  */ -+#define R_390_NUM		57 -+ -+/* CRIS relocations.  */ -+#define R_CRIS_NONE		0 -+#define R_CRIS_8		1 -+#define R_CRIS_16		2 -+#define R_CRIS_32		3 -+#define R_CRIS_8_PCREL		4 -+#define R_CRIS_16_PCREL		5 -+#define R_CRIS_32_PCREL		6 -+#define R_CRIS_GNU_VTINHERIT	7 -+#define R_CRIS_GNU_VTENTRY	8 -+#define R_CRIS_COPY		9 -+#define R_CRIS_GLOB_DAT		10 -+#define R_CRIS_JUMP_SLOT	11 -+#define R_CRIS_RELATIVE		12 -+#define R_CRIS_16_GOT		13 -+#define R_CRIS_32_GOT		14 -+#define R_CRIS_16_GOTPLT	15 -+#define R_CRIS_32_GOTPLT	16 -+#define R_CRIS_32_GOTREL	17 -+#define R_CRIS_32_PLT_GOTREL	18 -+#define R_CRIS_32_PLT_PCREL	19 -+ -+#define R_CRIS_NUM		20 -+ -+/* AMD x86-64 relocations.  */ -+#define R_X86_64_NONE		0	/* No reloc */ -+#define R_X86_64_64		1	/* Direct 64 bit  */ -+#define R_X86_64_PC32		2	/* PC relative 32 bit signed */ -+#define R_X86_64_GOT32		3	/* 32 bit GOT entry */ -+#define R_X86_64_PLT32		4	/* 32 bit PLT address */ -+#define R_X86_64_COPY		5	/* Copy symbol at runtime */ -+#define R_X86_64_GLOB_DAT	6	/* Create GOT entry */ -+#define R_X86_64_JUMP_SLOT	7	/* Create PLT entry */ -+#define R_X86_64_RELATIVE	8	/* Adjust by program base */ -+#define R_X86_64_GOTPCREL	9	/* 32 bit signed PC relative -+					   offset to GOT */ -+#define R_X86_64_32		10	/* Direct 32 bit zero extended */ -+#define R_X86_64_32S		11	/* Direct 32 bit sign extended */ -+#define R_X86_64_16		12	/* Direct 16 bit zero extended */ -+#define R_X86_64_PC16		13	/* 16 bit sign extended pc relative */ -+#define R_X86_64_8		14	/* Direct 8 bit sign extended  */ -+#define R_X86_64_PC8		15	/* 8 bit sign extended pc relative */ -+#define R_X86_64_DTPMOD64	16	/* ID of module containing symbol */ -+#define R_X86_64_DTPOFF64	17	/* Offset in module's TLS block */ -+#define R_X86_64_TPOFF64	18	/* Offset in initial TLS block */ -+#define R_X86_64_TLSGD		19	/* 32 bit signed PC relative offset -+					   to two GOT entries for GD symbol */ -+#define R_X86_64_TLSLD		20	/* 32 bit signed PC relative offset -+					   to two GOT entries for LD symbol */ -+#define R_X86_64_DTPOFF32	21	/* Offset in TLS block */ -+#define R_X86_64_GOTTPOFF	22	/* 32 bit signed PC relative offset -+					   to GOT entry for IE symbol */ -+#define R_X86_64_TPOFF32	23	/* Offset in initial TLS block */ -+ -+#define R_X86_64_NUM		24 -+ -+__END_DECLS -+ -+#endif	/* elf.h */ -  - #include "elfconfig.h" -  -@@ -185,3 +2631,4 @@ - void fatal(const char *fmt, ...); - void warn(const char *fmt, ...); - void merror(const char *fmt, ...); -+ -diff -Nur linux-3.11.5.orig/scripts/mod/sumversion.c linux-3.11.5/scripts/mod/sumversion.c ---- linux-3.11.5.orig/scripts/mod/sumversion.c	2013-10-14 03:14:45.000000000 +0200 -+++ linux-3.11.5/scripts/mod/sumversion.c	2013-10-16 18:09:31.000000000 +0200 -@@ -1,4 +1,4 @@ --#include <netinet/in.h> -+/* #include <netinet/in.h> */ - #ifdef __sun__ - #include <inttypes.h> - #else -diff -Nur linux-3.11.5.orig/tools/include/tools/linux_types.h linux-3.11.5/tools/include/tools/linux_types.h ---- linux-3.11.5.orig/tools/include/tools/linux_types.h	1970-01-01 01:00:00.000000000 +0100 -+++ linux-3.11.5/tools/include/tools/linux_types.h	2013-10-16 18:09:31.000000000 +0200 -@@ -0,0 +1,22 @@ -+#ifndef __LINUX_TYPES_H -+#define __LINUX_TYPES_H -+ -+#include <stdint.h> -+ -+typedef uint8_t __u8; -+typedef uint8_t __be8; -+typedef uint8_t __le8; -+ -+typedef uint16_t __u16; -+typedef uint16_t __be16; -+typedef uint16_t __le16; -+ -+typedef uint32_t __u32; -+typedef uint32_t __be32; -+typedef uint32_t __le32; -+ -+typedef uint64_t __u64; -+typedef uint64_t __be64; -+typedef uint64_t __le64; -+ -+#endif diff --git a/target/linux/patches/3.4.112/bsd-compatibility.patch b/target/linux/patches/3.4.112/bsd-compatibility.patch deleted file mode 100644 index 9e91a62de..000000000 --- a/target/linux/patches/3.4.112/bsd-compatibility.patch +++ /dev/null @@ -1,2512 +0,0 @@ -diff -Nur linux-2.6.36.orig/scripts/Makefile.lib linux-2.6.36/scripts/Makefile.lib ---- linux-2.6.36.orig/scripts/Makefile.lib	2010-10-20 22:30:22.000000000 +0200 -+++ linux-2.6.36/scripts/Makefile.lib	2010-11-28 18:34:22.000000000 +0100 -@@ -216,7 +216,12 @@ - size_append = printf $(shell						\ - dec_size=0;								\ - for F in $1; do								\ --	fsize=$$(stat -c "%s" $$F);					\ -+	if stat -qs .>/dev/null 2>&1; then				\ -+		statcmd='stat -f %z';					\ -+	else								\ -+		statcmd='stat -c %s';					\ -+	fi;								\ -+	fsize=$$($$statcmd $$F);					\ - 	dec_size=$$(expr $$dec_size + $$fsize);				\ - done;									\ - printf "%08x\n" $$dec_size |						\ -diff -Nur linux-2.6.36.orig/scripts/mod/mk_elfconfig.c linux-2.6.36/scripts/mod/mk_elfconfig.c ---- linux-2.6.36.orig/scripts/mod/mk_elfconfig.c	2010-10-20 22:30:22.000000000 +0200 -+++ linux-2.6.36/scripts/mod/mk_elfconfig.c	2010-11-28 18:33:24.000000000 +0100 -@@ -1,7 +1,18 @@ - #include <stdio.h> - #include <stdlib.h> - #include <string.h> --#include <elf.h> -+ -+#define EI_NIDENT (16) -+#define ELFMAG          "\177ELF" -+ -+#define SELFMAG         4 -+#define EI_CLASS        4 -+#define ELFCLASS32      1               /* 32-bit objects */ -+#define ELFCLASS64      2               /* 64-bit objects */ -+ -+#define EI_DATA         5               /* Data encoding byte index */ -+#define ELFDATA2LSB     1               /* 2's complement, little endian */ -+#define ELFDATA2MSB     2               /* 2's complement, big endian */ -  - int - main(int argc, char **argv) -diff -Nur linux-2.6.36.orig/scripts/mod/modpost.h linux-2.6.36/scripts/mod/modpost.h ---- linux-2.6.36.orig/scripts/mod/modpost.h	2010-10-20 22:30:22.000000000 +0200 -+++ linux-2.6.36/scripts/mod/modpost.h	2010-11-28 18:33:24.000000000 +0100 -@@ -7,7 +7,2453 @@ - #include <sys/mman.h> - #include <fcntl.h> - #include <unistd.h> --#include <elf.h> -+ -+ -+/* This file defines standard ELF types, structures, and macros. -+   Copyright (C) 1995-1999,2000,2001,2002,2003 Free Software Foundation, Inc. -+   This file is part of the GNU C Library. -+ -+   The GNU C Library is free software; you can redistribute it and/or -+   modify it under the terms of the GNU Lesser General Public -+   License as published by the Free Software Foundation; either -+   version 2.1 of the License, or (at your option) any later version. -+ -+   The GNU C Library is distributed in the hope that it will be useful, -+   but WITHOUT ANY WARRANTY; without even the implied warranty of -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -+   Lesser General Public License for more details. -+ -+   You should have received a copy of the GNU Lesser General Public -+   License along with the GNU C Library; if not, write to the Free -+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+   02111-1307 USA.  */ -+ -+#ifndef _ELF_H -+#define	_ELF_H 1 -+ -+__BEGIN_DECLS -+ -+/* Standard ELF types.  */ -+ -+#include <stdint.h> -+ -+/* Type for a 16-bit quantity.  */ -+typedef uint16_t Elf32_Half; -+typedef uint16_t Elf64_Half; -+ -+/* Types for signed and unsigned 32-bit quantities.  */ -+typedef uint32_t Elf32_Word; -+typedef	int32_t  Elf32_Sword; -+typedef uint32_t Elf64_Word; -+typedef	int32_t  Elf64_Sword; -+ -+/* Types for signed and unsigned 64-bit quantities.  */ -+typedef uint64_t Elf32_Xword; -+typedef	int64_t  Elf32_Sxword; -+typedef uint64_t Elf64_Xword; -+typedef	int64_t  Elf64_Sxword; -+ -+/* Type of addresses.  */ -+typedef uint32_t Elf32_Addr; -+typedef uint64_t Elf64_Addr; -+ -+/* Type of file offsets.  */ -+typedef uint32_t Elf32_Off; -+typedef uint64_t Elf64_Off; -+ -+/* Type for section indices, which are 16-bit quantities.  */ -+typedef uint16_t Elf32_Section; -+typedef uint16_t Elf64_Section; -+ -+/* Type for version symbol information.  */ -+typedef Elf32_Half Elf32_Versym; -+typedef Elf64_Half Elf64_Versym; -+ -+ -+/* The ELF file header.  This appears at the start of every ELF file.  */ -+ -+#define EI_NIDENT (16) -+ -+typedef struct -+{ -+  unsigned char	e_ident[EI_NIDENT];	/* Magic number and other info */ -+  Elf32_Half	e_type;			/* Object file type */ -+  Elf32_Half	e_machine;		/* Architecture */ -+  Elf32_Word	e_version;		/* Object file version */ -+  Elf32_Addr	e_entry;		/* Entry point virtual address */ -+  Elf32_Off	e_phoff;		/* Program header table file offset */ -+  Elf32_Off	e_shoff;		/* Section header table file offset */ -+  Elf32_Word	e_flags;		/* Processor-specific flags */ -+  Elf32_Half	e_ehsize;		/* ELF header size in bytes */ -+  Elf32_Half	e_phentsize;		/* Program header table entry size */ -+  Elf32_Half	e_phnum;		/* Program header table entry count */ -+  Elf32_Half	e_shentsize;		/* Section header table entry size */ -+  Elf32_Half	e_shnum;		/* Section header table entry count */ -+  Elf32_Half	e_shstrndx;		/* Section header string table index */ -+} Elf32_Ehdr; -+ -+typedef struct -+{ -+  unsigned char	e_ident[EI_NIDENT];	/* Magic number and other info */ -+  Elf64_Half	e_type;			/* Object file type */ -+  Elf64_Half	e_machine;		/* Architecture */ -+  Elf64_Word	e_version;		/* Object file version */ -+  Elf64_Addr	e_entry;		/* Entry point virtual address */ -+  Elf64_Off	e_phoff;		/* Program header table file offset */ -+  Elf64_Off	e_shoff;		/* Section header table file offset */ -+  Elf64_Word	e_flags;		/* Processor-specific flags */ -+  Elf64_Half	e_ehsize;		/* ELF header size in bytes */ -+  Elf64_Half	e_phentsize;		/* Program header table entry size */ -+  Elf64_Half	e_phnum;		/* Program header table entry count */ -+  Elf64_Half	e_shentsize;		/* Section header table entry size */ -+  Elf64_Half	e_shnum;		/* Section header table entry count */ -+  Elf64_Half	e_shstrndx;		/* Section header string table index */ -+} Elf64_Ehdr; -+ -+/* Fields in the e_ident array.  The EI_* macros are indices into the -+   array.  The macros under each EI_* macro are the values the byte -+   may have.  */ -+ -+#define EI_MAG0		0		/* File identification byte 0 index */ -+#define ELFMAG0		0x7f		/* Magic number byte 0 */ -+ -+#define EI_MAG1		1		/* File identification byte 1 index */ -+#define ELFMAG1		'E'		/* Magic number byte 1 */ -+ -+#define EI_MAG2		2		/* File identification byte 2 index */ -+#define ELFMAG2		'L'		/* Magic number byte 2 */ -+ -+#define EI_MAG3		3		/* File identification byte 3 index */ -+#define ELFMAG3		'F'		/* Magic number byte 3 */ -+ -+/* Conglomeration of the identification bytes, for easy testing as a word.  */ -+#define	ELFMAG		"\177ELF" -+#define	SELFMAG		4 -+ -+#define EI_CLASS	4		/* File class byte index */ -+#define ELFCLASSNONE	0		/* Invalid class */ -+#define ELFCLASS32	1		/* 32-bit objects */ -+#define ELFCLASS64	2		/* 64-bit objects */ -+#define ELFCLASSNUM	3 -+ -+#define EI_DATA		5		/* Data encoding byte index */ -+#define ELFDATANONE	0		/* Invalid data encoding */ -+#define ELFDATA2LSB	1		/* 2's complement, little endian */ -+#define ELFDATA2MSB	2		/* 2's complement, big endian */ -+#define ELFDATANUM	3 -+ -+#define EI_VERSION	6		/* File version byte index */ -+					/* Value must be EV_CURRENT */ -+ -+#define EI_OSABI	7		/* OS ABI identification */ -+#define ELFOSABI_NONE		0	/* UNIX System V ABI */ -+#define ELFOSABI_SYSV		0	/* Alias.  */ -+#define ELFOSABI_HPUX		1	/* HP-UX */ -+#define ELFOSABI_NETBSD		2	/* NetBSD.  */ -+#define ELFOSABI_LINUX		3	/* Linux.  */ -+#define ELFOSABI_SOLARIS	6	/* Sun Solaris.  */ -+#define ELFOSABI_AIX		7	/* IBM AIX.  */ -+#define ELFOSABI_IRIX		8	/* SGI Irix.  */ -+#define ELFOSABI_FREEBSD	9	/* FreeBSD.  */ -+#define ELFOSABI_TRU64		10	/* Compaq TRU64 UNIX.  */ -+#define ELFOSABI_MODESTO	11	/* Novell Modesto.  */ -+#define ELFOSABI_OPENBSD	12	/* OpenBSD.  */ -+#define ELFOSABI_ARM		97	/* ARM */ -+#define ELFOSABI_STANDALONE	255	/* Standalone (embedded) application */ -+ -+#define EI_ABIVERSION	8		/* ABI version */ -+ -+#define EI_PAD		9		/* Byte index of padding bytes */ -+ -+/* Legal values for e_type (object file type).  */ -+ -+#define ET_NONE		0		/* No file type */ -+#define ET_REL		1		/* Relocatable file */ -+#define ET_EXEC		2		/* Executable file */ -+#define ET_DYN		3		/* Shared object file */ -+#define ET_CORE		4		/* Core file */ -+#define	ET_NUM		5		/* Number of defined types */ -+#define ET_LOOS		0xfe00		/* OS-specific range start */ -+#define ET_HIOS		0xfeff		/* OS-specific range end */ -+#define ET_LOPROC	0xff00		/* Processor-specific range start */ -+#define ET_HIPROC	0xffff		/* Processor-specific range end */ -+ -+/* Legal values for e_machine (architecture).  */ -+ -+#define EM_NONE		 0		/* No machine */ -+#define EM_M32		 1		/* AT&T WE 32100 */ -+#define EM_SPARC	 2		/* SUN SPARC */ -+#define EM_386		 3		/* Intel 80386 */ -+#define EM_68K		 4		/* Motorola m68k family */ -+#define EM_88K		 5		/* Motorola m88k family */ -+#define EM_860		 7		/* Intel 80860 */ -+#define EM_MIPS		 8		/* MIPS R3000 big-endian */ -+#define EM_S370		 9		/* IBM System/370 */ -+#define EM_MIPS_RS3_LE	10		/* MIPS R3000 little-endian */ -+ -+#define EM_PARISC	15		/* HPPA */ -+#define EM_VPP500	17		/* Fujitsu VPP500 */ -+#define EM_SPARC32PLUS	18		/* Sun's "v8plus" */ -+#define EM_960		19		/* Intel 80960 */ -+#define EM_PPC		20		/* PowerPC */ -+#define EM_PPC64	21		/* PowerPC 64-bit */ -+#define EM_S390		22		/* IBM S390 */ -+ -+#define EM_V800		36		/* NEC V800 series */ -+#define EM_FR20		37		/* Fujitsu FR20 */ -+#define EM_RH32		38		/* TRW RH-32 */ -+#define EM_RCE		39		/* Motorola RCE */ -+#define EM_ARM		40		/* ARM */ -+#define EM_FAKE_ALPHA	41		/* Digital Alpha */ -+#define EM_SH		42		/* Hitachi SH */ -+#define EM_SPARCV9	43		/* SPARC v9 64-bit */ -+#define EM_TRICORE	44		/* Siemens Tricore */ -+#define EM_ARC		45		/* Argonaut RISC Core */ -+#define EM_H8_300	46		/* Hitachi H8/300 */ -+#define EM_H8_300H	47		/* Hitachi H8/300H */ -+#define EM_H8S		48		/* Hitachi H8S */ -+#define EM_H8_500	49		/* Hitachi H8/500 */ -+#define EM_IA_64	50		/* Intel Merced */ -+#define EM_MIPS_X	51		/* Stanford MIPS-X */ -+#define EM_COLDFIRE	52		/* Motorola Coldfire */ -+#define EM_68HC12	53		/* Motorola M68HC12 */ -+#define EM_MMA		54		/* Fujitsu MMA Multimedia Accelerator*/ -+#define EM_PCP		55		/* Siemens PCP */ -+#define EM_NCPU		56		/* Sony nCPU embeeded RISC */ -+#define EM_NDR1		57		/* Denso NDR1 microprocessor */ -+#define EM_STARCORE	58		/* Motorola Start*Core processor */ -+#define EM_ME16		59		/* Toyota ME16 processor */ -+#define EM_ST100	60		/* STMicroelectronic ST100 processor */ -+#define EM_TINYJ	61		/* Advanced Logic Corp. Tinyj emb.fam*/ -+#define EM_X86_64	62		/* AMD x86-64 architecture */ -+#define EM_PDSP		63		/* Sony DSP Processor */ -+ -+#define EM_FX66		66		/* Siemens FX66 microcontroller */ -+#define EM_ST9PLUS	67		/* STMicroelectronics ST9+ 8/16 mc */ -+#define EM_ST7		68		/* STmicroelectronics ST7 8 bit mc */ -+#define EM_68HC16	69		/* Motorola MC68HC16 microcontroller */ -+#define EM_68HC11	70		/* Motorola MC68HC11 microcontroller */ -+#define EM_68HC08	71		/* Motorola MC68HC08 microcontroller */ -+#define EM_68HC05	72		/* Motorola MC68HC05 microcontroller */ -+#define EM_SVX		73		/* Silicon Graphics SVx */ -+#define EM_ST19		74		/* STMicroelectronics ST19 8 bit mc */ -+#define EM_VAX		75		/* Digital VAX */ -+#define EM_CRIS		76		/* Axis Communications 32-bit embedded processor */ -+#define EM_JAVELIN	77		/* Infineon Technologies 32-bit embedded processor */ -+#define EM_FIREPATH	78		/* Element 14 64-bit DSP Processor */ -+#define EM_ZSP		79		/* LSI Logic 16-bit DSP Processor */ -+#define EM_MMIX		80		/* Donald Knuth's educational 64-bit processor */ -+#define EM_HUANY	81		/* Harvard University machine-independent object files */ -+#define EM_PRISM	82		/* SiTera Prism */ -+#define EM_AVR		83		/* Atmel AVR 8-bit microcontroller */ -+#define EM_FR30		84		/* Fujitsu FR30 */ -+#define EM_D10V		85		/* Mitsubishi D10V */ -+#define EM_D30V		86		/* Mitsubishi D30V */ -+#define EM_V850		87		/* NEC v850 */ -+#define EM_M32R		88		/* Mitsubishi M32R */ -+#define EM_MN10300	89		/* Matsushita MN10300 */ -+#define EM_MN10200	90		/* Matsushita MN10200 */ -+#define EM_PJ		91		/* picoJava */ -+#define EM_OPENRISC	92		/* OpenRISC 32-bit embedded processor */ -+#define EM_ARC_A5	93		/* ARC Cores Tangent-A5 */ -+#define EM_XTENSA	94		/* Tensilica Xtensa Architecture */ -+#define EM_NUM		95 -+ -+/* If it is necessary to assign new unofficial EM_* values, please -+   pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the -+   chances of collision with official or non-GNU unofficial values.  */ -+ -+#define EM_ALPHA	0x9026 -+ -+/* Legal values for e_version (version).  */ -+ -+#define EV_NONE		0		/* Invalid ELF version */ -+#define EV_CURRENT	1		/* Current version */ -+#define EV_NUM		2 -+ -+/* Section header.  */ -+ -+typedef struct -+{ -+  Elf32_Word	sh_name;		/* Section name (string tbl index) */ -+  Elf32_Word	sh_type;		/* Section type */ -+  Elf32_Word	sh_flags;		/* Section flags */ -+  Elf32_Addr	sh_addr;		/* Section virtual addr at execution */ -+  Elf32_Off	sh_offset;		/* Section file offset */ -+  Elf32_Word	sh_size;		/* Section size in bytes */ -+  Elf32_Word	sh_link;		/* Link to another section */ -+  Elf32_Word	sh_info;		/* Additional section information */ -+  Elf32_Word	sh_addralign;		/* Section alignment */ -+  Elf32_Word	sh_entsize;		/* Entry size if section holds table */ -+} Elf32_Shdr; -+ -+typedef struct -+{ -+  Elf64_Word	sh_name;		/* Section name (string tbl index) */ -+  Elf64_Word	sh_type;		/* Section type */ -+  Elf64_Xword	sh_flags;		/* Section flags */ -+  Elf64_Addr	sh_addr;		/* Section virtual addr at execution */ -+  Elf64_Off	sh_offset;		/* Section file offset */ -+  Elf64_Xword	sh_size;		/* Section size in bytes */ -+  Elf64_Word	sh_link;		/* Link to another section */ -+  Elf64_Word	sh_info;		/* Additional section information */ -+  Elf64_Xword	sh_addralign;		/* Section alignment */ -+  Elf64_Xword	sh_entsize;		/* Entry size if section holds table */ -+} Elf64_Shdr; -+ -+/* Special section indices.  */ -+ -+#define SHN_UNDEF	0		/* Undefined section */ -+#define SHN_LORESERVE	0xff00		/* Start of reserved indices */ -+#define SHN_LOPROC	0xff00		/* Start of processor-specific */ -+#define SHN_HIPROC	0xff1f		/* End of processor-specific */ -+#define SHN_LOOS	0xff20		/* Start of OS-specific */ -+#define SHN_HIOS	0xff3f		/* End of OS-specific */ -+#define SHN_ABS		0xfff1		/* Associated symbol is absolute */ -+#define SHN_COMMON	0xfff2		/* Associated symbol is common */ -+#define SHN_XINDEX	0xffff		/* Index is in extra table.  */ -+#define SHN_HIRESERVE	0xffff		/* End of reserved indices */ -+ -+/* Legal values for sh_type (section type).  */ -+ -+#define SHT_NULL	  0		/* Section header table entry unused */ -+#define SHT_PROGBITS	  1		/* Program data */ -+#define SHT_SYMTAB	  2		/* Symbol table */ -+#define SHT_STRTAB	  3		/* String table */ -+#define SHT_RELA	  4		/* Relocation entries with addends */ -+#define SHT_HASH	  5		/* Symbol hash table */ -+#define SHT_DYNAMIC	  6		/* Dynamic linking information */ -+#define SHT_NOTE	  7		/* Notes */ -+#define SHT_NOBITS	  8		/* Program space with no data (bss) */ -+#define SHT_REL		  9		/* Relocation entries, no addends */ -+#define SHT_SHLIB	  10		/* Reserved */ -+#define SHT_DYNSYM	  11		/* Dynamic linker symbol table */ -+#define SHT_INIT_ARRAY	  14		/* Array of constructors */ -+#define SHT_FINI_ARRAY	  15		/* Array of destructors */ -+#define SHT_PREINIT_ARRAY 16		/* Array of pre-constructors */ -+#define SHT_GROUP	  17		/* Section group */ -+#define SHT_SYMTAB_SHNDX  18		/* Extended section indeces */ -+#define	SHT_NUM		  19		/* Number of defined types.  */ -+#define SHT_LOOS	  0x60000000	/* Start OS-specific */ -+#define SHT_GNU_LIBLIST	  0x6ffffff7	/* Prelink library list */ -+#define SHT_CHECKSUM	  0x6ffffff8	/* Checksum for DSO content.  */ -+#define SHT_LOSUNW	  0x6ffffffa	/* Sun-specific low bound.  */ -+#define SHT_SUNW_move	  0x6ffffffa -+#define SHT_SUNW_COMDAT   0x6ffffffb -+#define SHT_SUNW_syminfo  0x6ffffffc -+#define SHT_GNU_verdef	  0x6ffffffd	/* Version definition section.  */ -+#define SHT_GNU_verneed	  0x6ffffffe	/* Version needs section.  */ -+#define SHT_GNU_versym	  0x6fffffff	/* Version symbol table.  */ -+#define SHT_HISUNW	  0x6fffffff	/* Sun-specific high bound.  */ -+#define SHT_HIOS	  0x6fffffff	/* End OS-specific type */ -+#define SHT_LOPROC	  0x70000000	/* Start of processor-specific */ -+#define SHT_HIPROC	  0x7fffffff	/* End of processor-specific */ -+#define SHT_LOUSER	  0x80000000	/* Start of application-specific */ -+#define SHT_HIUSER	  0x8fffffff	/* End of application-specific */ -+ -+/* Legal values for sh_flags (section flags).  */ -+ -+#define SHF_WRITE	     (1 << 0)	/* Writable */ -+#define SHF_ALLOC	     (1 << 1)	/* Occupies memory during execution */ -+#define SHF_EXECINSTR	     (1 << 2)	/* Executable */ -+#define SHF_MERGE	     (1 << 4)	/* Might be merged */ -+#define SHF_STRINGS	     (1 << 5)	/* Contains nul-terminated strings */ -+#define SHF_INFO_LINK	     (1 << 6)	/* `sh_info' contains SHT index */ -+#define SHF_LINK_ORDER	     (1 << 7)	/* Preserve order after combining */ -+#define SHF_OS_NONCONFORMING (1 << 8)	/* Non-standard OS specific handling -+					   required */ -+#define SHF_GROUP	     (1 << 9)	/* Section is member of a group.  */ -+#define SHF_TLS		     (1 << 10)	/* Section hold thread-local data.  */ -+#define SHF_MASKOS	     0x0ff00000	/* OS-specific.  */ -+#define SHF_MASKPROC	     0xf0000000	/* Processor-specific */ -+ -+/* Section group handling.  */ -+#define GRP_COMDAT	0x1		/* Mark group as COMDAT.  */ -+ -+/* Symbol table entry.  */ -+ -+typedef struct -+{ -+  Elf32_Word	st_name;		/* Symbol name (string tbl index) */ -+  Elf32_Addr	st_value;		/* Symbol value */ -+  Elf32_Word	st_size;		/* Symbol size */ -+  unsigned char	st_info;		/* Symbol type and binding */ -+  unsigned char	st_other;		/* Symbol visibility */ -+  Elf32_Section	st_shndx;		/* Section index */ -+} Elf32_Sym; -+ -+typedef struct -+{ -+  Elf64_Word	st_name;		/* Symbol name (string tbl index) */ -+  unsigned char	st_info;		/* Symbol type and binding */ -+  unsigned char st_other;		/* Symbol visibility */ -+  Elf64_Section	st_shndx;		/* Section index */ -+  Elf64_Addr	st_value;		/* Symbol value */ -+  Elf64_Xword	st_size;		/* Symbol size */ -+} Elf64_Sym; -+ -+/* The syminfo section if available contains additional information about -+   every dynamic symbol.  */ -+ -+typedef struct -+{ -+  Elf32_Half si_boundto;		/* Direct bindings, symbol bound to */ -+  Elf32_Half si_flags;			/* Per symbol flags */ -+} Elf32_Syminfo; -+ -+typedef struct -+{ -+  Elf64_Half si_boundto;		/* Direct bindings, symbol bound to */ -+  Elf64_Half si_flags;			/* Per symbol flags */ -+} Elf64_Syminfo; -+ -+/* Possible values for si_boundto.  */ -+#define SYMINFO_BT_SELF		0xffff	/* Symbol bound to self */ -+#define SYMINFO_BT_PARENT	0xfffe	/* Symbol bound to parent */ -+#define SYMINFO_BT_LOWRESERVE	0xff00	/* Beginning of reserved entries */ -+ -+/* Possible bitmasks for si_flags.  */ -+#define SYMINFO_FLG_DIRECT	0x0001	/* Direct bound symbol */ -+#define SYMINFO_FLG_PASSTHRU	0x0002	/* Pass-thru symbol for translator */ -+#define SYMINFO_FLG_COPY	0x0004	/* Symbol is a copy-reloc */ -+#define SYMINFO_FLG_LAZYLOAD	0x0008	/* Symbol bound to object to be lazy -+					   loaded */ -+/* Syminfo version values.  */ -+#define SYMINFO_NONE		0 -+#define SYMINFO_CURRENT		1 -+#define SYMINFO_NUM		2 -+ -+ -+/* How to extract and insert information held in the st_info field.  */ -+ -+#define ELF32_ST_BIND(val)		(((unsigned char) (val)) >> 4) -+#define ELF32_ST_TYPE(val)		((val) & 0xf) -+#define ELF32_ST_INFO(bind, type)	(((bind) << 4) + ((type) & 0xf)) -+ -+/* Both Elf32_Sym and Elf64_Sym use the same one-byte st_info field.  */ -+#define ELF64_ST_BIND(val)		ELF32_ST_BIND (val) -+#define ELF64_ST_TYPE(val)		ELF32_ST_TYPE (val) -+#define ELF64_ST_INFO(bind, type)	ELF32_ST_INFO ((bind), (type)) -+ -+/* Legal values for ST_BIND subfield of st_info (symbol binding).  */ -+ -+#define STB_LOCAL	0		/* Local symbol */ -+#define STB_GLOBAL	1		/* Global symbol */ -+#define STB_WEAK	2		/* Weak symbol */ -+#define	STB_NUM		3		/* Number of defined types.  */ -+#define STB_LOOS	10		/* Start of OS-specific */ -+#define STB_HIOS	12		/* End of OS-specific */ -+#define STB_LOPROC	13		/* Start of processor-specific */ -+#define STB_HIPROC	15		/* End of processor-specific */ -+ -+/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ -+ -+#define STT_NOTYPE	0		/* Symbol type is unspecified */ -+#define STT_OBJECT	1		/* Symbol is a data object */ -+#define STT_FUNC	2		/* Symbol is a code object */ -+#define STT_SECTION	3		/* Symbol associated with a section */ -+#define STT_FILE	4		/* Symbol's name is file name */ -+#define STT_COMMON	5		/* Symbol is a common data object */ -+#define STT_TLS		6		/* Symbol is thread-local data object*/ -+#define	STT_NUM		7		/* Number of defined types.  */ -+#define STT_LOOS	10		/* Start of OS-specific */ -+#define STT_HIOS	12		/* End of OS-specific */ -+#define STT_LOPROC	13		/* Start of processor-specific */ -+#define STT_HIPROC	15		/* End of processor-specific */ -+ -+ -+/* Symbol table indices are found in the hash buckets and chain table -+   of a symbol hash table section.  This special index value indicates -+   the end of a chain, meaning no further symbols are found in that bucket.  */ -+ -+#define STN_UNDEF	0		/* End of a chain.  */ -+ -+ -+/* How to extract and insert information held in the st_other field.  */ -+ -+#define ELF32_ST_VISIBILITY(o)	((o) & 0x03) -+ -+/* For ELF64 the definitions are the same.  */ -+#define ELF64_ST_VISIBILITY(o)	ELF32_ST_VISIBILITY (o) -+ -+/* Symbol visibility specification encoded in the st_other field.  */ -+#define STV_DEFAULT	0		/* Default symbol visibility rules */ -+#define STV_INTERNAL	1		/* Processor specific hidden class */ -+#define STV_HIDDEN	2		/* Sym unavailable in other modules */ -+#define STV_PROTECTED	3		/* Not preemptible, not exported */ -+ -+ -+/* Relocation table entry without addend (in section of type SHT_REL).  */ -+ -+typedef struct -+{ -+  Elf32_Addr	r_offset;		/* Address */ -+  Elf32_Word	r_info;			/* Relocation type and symbol index */ -+} Elf32_Rel; -+ -+/* I have seen two different definitions of the Elf64_Rel and -+   Elf64_Rela structures, so we'll leave them out until Novell (or -+   whoever) gets their act together.  */ -+/* The following, at least, is used on Sparc v9, MIPS, and Alpha.  */ -+ -+typedef struct -+{ -+  Elf64_Addr	r_offset;		/* Address */ -+  Elf64_Xword	r_info;			/* Relocation type and symbol index */ -+} Elf64_Rel; -+ -+/* Relocation table entry with addend (in section of type SHT_RELA).  */ -+ -+typedef struct -+{ -+  Elf32_Addr	r_offset;		/* Address */ -+  Elf32_Word	r_info;			/* Relocation type and symbol index */ -+  Elf32_Sword	r_addend;		/* Addend */ -+} Elf32_Rela; -+ -+typedef struct -+{ -+  Elf64_Addr	r_offset;		/* Address */ -+  Elf64_Xword	r_info;			/* Relocation type and symbol index */ -+  Elf64_Sxword	r_addend;		/* Addend */ -+} Elf64_Rela; -+ -+/* How to extract and insert information held in the r_info field.  */ -+ -+#define ELF32_R_SYM(val)		((val) >> 8) -+#define ELF32_R_TYPE(val)		((val) & 0xff) -+#define ELF32_R_INFO(sym, type)		(((sym) << 8) + ((type) & 0xff)) -+ -+#define ELF64_R_SYM(i)			((i) >> 32) -+#define ELF64_R_TYPE(i)			((i) & 0xffffffff) -+#define ELF64_R_INFO(sym,type)		((((Elf64_Xword) (sym)) << 32) + (type)) -+ -+/* Program segment header.  */ -+ -+typedef struct -+{ -+  Elf32_Word	p_type;			/* Segment type */ -+  Elf32_Off	p_offset;		/* Segment file offset */ -+  Elf32_Addr	p_vaddr;		/* Segment virtual address */ -+  Elf32_Addr	p_paddr;		/* Segment physical address */ -+  Elf32_Word	p_filesz;		/* Segment size in file */ -+  Elf32_Word	p_memsz;		/* Segment size in memory */ -+  Elf32_Word	p_flags;		/* Segment flags */ -+  Elf32_Word	p_align;		/* Segment alignment */ -+} Elf32_Phdr; -+ -+typedef struct -+{ -+  Elf64_Word	p_type;			/* Segment type */ -+  Elf64_Word	p_flags;		/* Segment flags */ -+  Elf64_Off	p_offset;		/* Segment file offset */ -+  Elf64_Addr	p_vaddr;		/* Segment virtual address */ -+  Elf64_Addr	p_paddr;		/* Segment physical address */ -+  Elf64_Xword	p_filesz;		/* Segment size in file */ -+  Elf64_Xword	p_memsz;		/* Segment size in memory */ -+  Elf64_Xword	p_align;		/* Segment alignment */ -+} Elf64_Phdr; -+ -+/* Legal values for p_type (segment type).  */ -+ -+#define	PT_NULL		0		/* Program header table entry unused */ -+#define PT_LOAD		1		/* Loadable program segment */ -+#define PT_DYNAMIC	2		/* Dynamic linking information */ -+#define PT_INTERP	3		/* Program interpreter */ -+#define PT_NOTE		4		/* Auxiliary information */ -+#define PT_SHLIB	5		/* Reserved */ -+#define PT_PHDR		6		/* Entry for header table itself */ -+#define PT_TLS		7		/* Thread-local storage segment */ -+#define	PT_NUM		8		/* Number of defined types */ -+#define PT_LOOS		0x60000000	/* Start of OS-specific */ -+#define PT_GNU_EH_FRAME	0x6474e550	/* GCC .eh_frame_hdr segment */ -+#define PT_GNU_STACK	0x6474e551	/* Indicates stack executability */ -+#define PT_LOSUNW	0x6ffffffa -+#define PT_SUNWBSS	0x6ffffffa	/* Sun Specific segment */ -+#define PT_SUNWSTACK	0x6ffffffb	/* Stack segment */ -+#define PT_HISUNW	0x6fffffff -+#define PT_HIOS		0x6fffffff	/* End of OS-specific */ -+#define PT_LOPROC	0x70000000	/* Start of processor-specific */ -+#define PT_HIPROC	0x7fffffff	/* End of processor-specific */ -+ -+/* Legal values for p_flags (segment flags).  */ -+ -+#define PF_X		(1 << 0)	/* Segment is executable */ -+#define PF_W		(1 << 1)	/* Segment is writable */ -+#define PF_R		(1 << 2)	/* Segment is readable */ -+#define PF_MASKOS	0x0ff00000	/* OS-specific */ -+#define PF_MASKPROC	0xf0000000	/* Processor-specific */ -+ -+/* Legal values for note segment descriptor types for core files. */ -+ -+#define NT_PRSTATUS	1		/* Contains copy of prstatus struct */ -+#define NT_FPREGSET	2		/* Contains copy of fpregset struct */ -+#define NT_PRPSINFO	3		/* Contains copy of prpsinfo struct */ -+#define NT_PRXREG	4		/* Contains copy of prxregset struct */ -+#define NT_TASKSTRUCT	4		/* Contains copy of task structure */ -+#define NT_PLATFORM	5		/* String from sysinfo(SI_PLATFORM) */ -+#define NT_AUXV		6		/* Contains copy of auxv array */ -+#define NT_GWINDOWS	7		/* Contains copy of gwindows struct */ -+#define NT_ASRS		8		/* Contains copy of asrset struct */ -+#define NT_PSTATUS	10		/* Contains copy of pstatus struct */ -+#define NT_PSINFO	13		/* Contains copy of psinfo struct */ -+#define NT_PRCRED	14		/* Contains copy of prcred struct */ -+#define NT_UTSNAME	15		/* Contains copy of utsname struct */ -+#define NT_LWPSTATUS	16		/* Contains copy of lwpstatus struct */ -+#define NT_LWPSINFO	17		/* Contains copy of lwpinfo struct */ -+#define NT_PRFPXREG	20		/* Contains copy of fprxregset struct*/ -+ -+/* Legal values for the note segment descriptor types for object files.  */ -+ -+#define NT_VERSION	1		/* Contains a version string.  */ -+ -+ -+/* Dynamic section entry.  */ -+ -+typedef struct -+{ -+  Elf32_Sword	d_tag;			/* Dynamic entry type */ -+  union -+    { -+      Elf32_Word d_val;			/* Integer value */ -+      Elf32_Addr d_ptr;			/* Address value */ -+    } d_un; -+} Elf32_Dyn; -+ -+typedef struct -+{ -+  Elf64_Sxword	d_tag;			/* Dynamic entry type */ -+  union -+    { -+      Elf64_Xword d_val;		/* Integer value */ -+      Elf64_Addr d_ptr;			/* Address value */ -+    } d_un; -+} Elf64_Dyn; -+ -+/* Legal values for d_tag (dynamic entry type).  */ -+ -+#define DT_NULL		0		/* Marks end of dynamic section */ -+#define DT_NEEDED	1		/* Name of needed library */ -+#define DT_PLTRELSZ	2		/* Size in bytes of PLT relocs */ -+#define DT_PLTGOT	3		/* Processor defined value */ -+#define DT_HASH		4		/* Address of symbol hash table */ -+#define DT_STRTAB	5		/* Address of string table */ -+#define DT_SYMTAB	6		/* Address of symbol table */ -+#define DT_RELA		7		/* Address of Rela relocs */ -+#define DT_RELASZ	8		/* Total size of Rela relocs */ -+#define DT_RELAENT	9		/* Size of one Rela reloc */ -+#define DT_STRSZ	10		/* Size of string table */ -+#define DT_SYMENT	11		/* Size of one symbol table entry */ -+#define DT_INIT		12		/* Address of init function */ -+#define DT_FINI		13		/* Address of termination function */ -+#define DT_SONAME	14		/* Name of shared object */ -+#define DT_RPATH	15		/* Library search path (deprecated) */ -+#define DT_SYMBOLIC	16		/* Start symbol search here */ -+#define DT_REL		17		/* Address of Rel relocs */ -+#define DT_RELSZ	18		/* Total size of Rel relocs */ -+#define DT_RELENT	19		/* Size of one Rel reloc */ -+#define DT_PLTREL	20		/* Type of reloc in PLT */ -+#define DT_DEBUG	21		/* For debugging; unspecified */ -+#define DT_TEXTREL	22		/* Reloc might modify .text */ -+#define DT_JMPREL	23		/* Address of PLT relocs */ -+#define	DT_BIND_NOW	24		/* Process relocations of object */ -+#define	DT_INIT_ARRAY	25		/* Array with addresses of init fct */ -+#define	DT_FINI_ARRAY	26		/* Array with addresses of fini fct */ -+#define	DT_INIT_ARRAYSZ	27		/* Size in bytes of DT_INIT_ARRAY */ -+#define	DT_FINI_ARRAYSZ	28		/* Size in bytes of DT_FINI_ARRAY */ -+#define DT_RUNPATH	29		/* Library search path */ -+#define DT_FLAGS	30		/* Flags for the object being loaded */ -+#define DT_ENCODING	32		/* Start of encoded range */ -+#define DT_PREINIT_ARRAY 32		/* Array with addresses of preinit fct*/ -+#define DT_PREINIT_ARRAYSZ 33		/* size in bytes of DT_PREINIT_ARRAY */ -+#define	DT_NUM		34		/* Number used */ -+#define DT_LOOS		0x6000000d	/* Start of OS-specific */ -+#define DT_HIOS		0x6ffff000	/* End of OS-specific */ -+#define DT_LOPROC	0x70000000	/* Start of processor-specific */ -+#define DT_HIPROC	0x7fffffff	/* End of processor-specific */ -+#define	DT_PROCNUM	DT_MIPS_NUM	/* Most used by any processor */ -+ -+/* DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the -+   Dyn.d_un.d_val field of the Elf*_Dyn structure.  This follows Sun's -+   approach.  */ -+#define DT_VALRNGLO	0x6ffffd00 -+#define DT_GNU_PRELINKED 0x6ffffdf5	/* Prelinking timestamp */ -+#define DT_GNU_CONFLICTSZ 0x6ffffdf6	/* Size of conflict section */ -+#define DT_GNU_LIBLISTSZ 0x6ffffdf7	/* Size of library list */ -+#define DT_CHECKSUM	0x6ffffdf8 -+#define DT_PLTPADSZ	0x6ffffdf9 -+#define DT_MOVEENT	0x6ffffdfa -+#define DT_MOVESZ	0x6ffffdfb -+#define DT_FEATURE_1	0x6ffffdfc	/* Feature selection (DTF_*).  */ -+#define DT_POSFLAG_1	0x6ffffdfd	/* Flags for DT_* entries, effecting -+					   the following DT_* entry.  */ -+#define DT_SYMINSZ	0x6ffffdfe	/* Size of syminfo table (in bytes) */ -+#define DT_SYMINENT	0x6ffffdff	/* Entry size of syminfo */ -+#define DT_VALRNGHI	0x6ffffdff -+#define DT_VALTAGIDX(tag)	(DT_VALRNGHI - (tag))	/* Reverse order! */ -+#define DT_VALNUM 12 -+ -+/* DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the -+   Dyn.d_un.d_ptr field of the Elf*_Dyn structure. -+ -+   If any adjustment is made to the ELF object after it has been -+   built these entries will need to be adjusted.  */ -+#define DT_ADDRRNGLO	0x6ffffe00 -+#define DT_GNU_CONFLICT	0x6ffffef8	/* Start of conflict section */ -+#define DT_GNU_LIBLIST	0x6ffffef9	/* Library list */ -+#define DT_CONFIG	0x6ffffefa	/* Configuration information.  */ -+#define DT_DEPAUDIT	0x6ffffefb	/* Dependency auditing.  */ -+#define DT_AUDIT	0x6ffffefc	/* Object auditing.  */ -+#define	DT_PLTPAD	0x6ffffefd	/* PLT padding.  */ -+#define	DT_MOVETAB	0x6ffffefe	/* Move table.  */ -+#define DT_SYMINFO	0x6ffffeff	/* Syminfo table.  */ -+#define DT_ADDRRNGHI	0x6ffffeff -+#define DT_ADDRTAGIDX(tag)	(DT_ADDRRNGHI - (tag))	/* Reverse order! */ -+#define DT_ADDRNUM 10 -+ -+/* The versioning entry types.  The next are defined as part of the -+   GNU extension.  */ -+#define DT_VERSYM	0x6ffffff0 -+ -+#define DT_RELACOUNT	0x6ffffff9 -+#define DT_RELCOUNT	0x6ffffffa -+ -+/* These were chosen by Sun.  */ -+#define DT_FLAGS_1	0x6ffffffb	/* State flags, see DF_1_* below.  */ -+#define	DT_VERDEF	0x6ffffffc	/* Address of version definition -+					   table */ -+#define	DT_VERDEFNUM	0x6ffffffd	/* Number of version definitions */ -+#define	DT_VERNEED	0x6ffffffe	/* Address of table with needed -+					   versions */ -+#define	DT_VERNEEDNUM	0x6fffffff	/* Number of needed versions */ -+#define DT_VERSIONTAGIDX(tag)	(DT_VERNEEDNUM - (tag))	/* Reverse order! */ -+#define DT_VERSIONTAGNUM 16 -+ -+/* Sun added these machine-independent extensions in the "processor-specific" -+   range.  Be compatible.  */ -+#define DT_AUXILIARY    0x7ffffffd      /* Shared object to load before self */ -+#define DT_FILTER       0x7fffffff      /* Shared object to get values from */ -+#define DT_EXTRATAGIDX(tag)	((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) -+#define DT_EXTRANUM	3 -+ -+/* Values of `d_un.d_val' in the DT_FLAGS entry.  */ -+#define DF_ORIGIN	0x00000001	/* Object may use DF_ORIGIN */ -+#define DF_SYMBOLIC	0x00000002	/* Symbol resolutions starts here */ -+#define DF_TEXTREL	0x00000004	/* Object contains text relocations */ -+#define DF_BIND_NOW	0x00000008	/* No lazy binding for this object */ -+#define DF_STATIC_TLS	0x00000010	/* Module uses the static TLS model */ -+ -+/* State flags selectable in the `d_un.d_val' element of the DT_FLAGS_1 -+   entry in the dynamic section.  */ -+#define DF_1_NOW	0x00000001	/* Set RTLD_NOW for this object.  */ -+#define DF_1_GLOBAL	0x00000002	/* Set RTLD_GLOBAL for this object.  */ -+#define DF_1_GROUP	0x00000004	/* Set RTLD_GROUP for this object.  */ -+#define DF_1_NODELETE	0x00000008	/* Set RTLD_NODELETE for this object.*/ -+#define DF_1_LOADFLTR	0x00000010	/* Trigger filtee loading at runtime.*/ -+#define DF_1_INITFIRST	0x00000020	/* Set RTLD_INITFIRST for this object*/ -+#define DF_1_NOOPEN	0x00000040	/* Set RTLD_NOOPEN for this object.  */ -+#define DF_1_ORIGIN	0x00000080	/* $ORIGIN must be handled.  */ -+#define DF_1_DIRECT	0x00000100	/* Direct binding enabled.  */ -+#define DF_1_TRANS	0x00000200 -+#define DF_1_INTERPOSE	0x00000400	/* Object is used to interpose.  */ -+#define DF_1_NODEFLIB	0x00000800	/* Ignore default lib search path.  */ -+#define DF_1_NODUMP	0x00001000	/* Object can't be dldump'ed.  */ -+#define DF_1_CONFALT	0x00002000	/* Configuration alternative created.*/ -+#define DF_1_ENDFILTEE	0x00004000	/* Filtee terminates filters search. */ -+#define	DF_1_DISPRELDNE	0x00008000	/* Disp reloc applied at build time. */ -+#define	DF_1_DISPRELPND	0x00010000	/* Disp reloc applied at run-time.  */ -+ -+/* Flags for the feature selection in DT_FEATURE_1.  */ -+#define DTF_1_PARINIT	0x00000001 -+#define DTF_1_CONFEXP	0x00000002 -+ -+/* Flags in the DT_POSFLAG_1 entry effecting only the next DT_* entry.  */ -+#define DF_P1_LAZYLOAD	0x00000001	/* Lazyload following object.  */ -+#define DF_P1_GROUPPERM	0x00000002	/* Symbols from next object are not -+					   generally available.  */ -+ -+/* Version definition sections.  */ -+ -+typedef struct -+{ -+  Elf32_Half	vd_version;		/* Version revision */ -+  Elf32_Half	vd_flags;		/* Version information */ -+  Elf32_Half	vd_ndx;			/* Version Index */ -+  Elf32_Half	vd_cnt;			/* Number of associated aux entries */ -+  Elf32_Word	vd_hash;		/* Version name hash value */ -+  Elf32_Word	vd_aux;			/* Offset in bytes to verdaux array */ -+  Elf32_Word	vd_next;		/* Offset in bytes to next verdef -+					   entry */ -+} Elf32_Verdef; -+ -+typedef struct -+{ -+  Elf64_Half	vd_version;		/* Version revision */ -+  Elf64_Half	vd_flags;		/* Version information */ -+  Elf64_Half	vd_ndx;			/* Version Index */ -+  Elf64_Half	vd_cnt;			/* Number of associated aux entries */ -+  Elf64_Word	vd_hash;		/* Version name hash value */ -+  Elf64_Word	vd_aux;			/* Offset in bytes to verdaux array */ -+  Elf64_Word	vd_next;		/* Offset in bytes to next verdef -+					   entry */ -+} Elf64_Verdef; -+ -+ -+/* Legal values for vd_version (version revision).  */ -+#define VER_DEF_NONE	0		/* No version */ -+#define VER_DEF_CURRENT	1		/* Current version */ -+#define VER_DEF_NUM	2		/* Given version number */ -+ -+/* Legal values for vd_flags (version information flags).  */ -+#define VER_FLG_BASE	0x1		/* Version definition of file itself */ -+#define VER_FLG_WEAK	0x2		/* Weak version identifier */ -+ -+/* Versym symbol index values.  */ -+#define	VER_NDX_LOCAL		0	/* Symbol is local.  */ -+#define	VER_NDX_GLOBAL		1	/* Symbol is global.  */ -+#define	VER_NDX_LORESERVE	0xff00	/* Beginning of reserved entries.  */ -+#define	VER_NDX_ELIMINATE	0xff01	/* Symbol is to be eliminated.  */ -+ -+/* Auxialiary version information.  */ -+ -+typedef struct -+{ -+  Elf32_Word	vda_name;		/* Version or dependency names */ -+  Elf32_Word	vda_next;		/* Offset in bytes to next verdaux -+					   entry */ -+} Elf32_Verdaux; -+ -+typedef struct -+{ -+  Elf64_Word	vda_name;		/* Version or dependency names */ -+  Elf64_Word	vda_next;		/* Offset in bytes to next verdaux -+					   entry */ -+} Elf64_Verdaux; -+ -+ -+/* Version dependency section.  */ -+ -+typedef struct -+{ -+  Elf32_Half	vn_version;		/* Version of structure */ -+  Elf32_Half	vn_cnt;			/* Number of associated aux entries */ -+  Elf32_Word	vn_file;		/* Offset of filename for this -+					   dependency */ -+  Elf32_Word	vn_aux;			/* Offset in bytes to vernaux array */ -+  Elf32_Word	vn_next;		/* Offset in bytes to next verneed -+					   entry */ -+} Elf32_Verneed; -+ -+typedef struct -+{ -+  Elf64_Half	vn_version;		/* Version of structure */ -+  Elf64_Half	vn_cnt;			/* Number of associated aux entries */ -+  Elf64_Word	vn_file;		/* Offset of filename for this -+					   dependency */ -+  Elf64_Word	vn_aux;			/* Offset in bytes to vernaux array */ -+  Elf64_Word	vn_next;		/* Offset in bytes to next verneed -+					   entry */ -+} Elf64_Verneed; -+ -+ -+/* Legal values for vn_version (version revision).  */ -+#define VER_NEED_NONE	 0		/* No version */ -+#define VER_NEED_CURRENT 1		/* Current version */ -+#define VER_NEED_NUM	 2		/* Given version number */ -+ -+/* Auxiliary needed version information.  */ -+ -+typedef struct -+{ -+  Elf32_Word	vna_hash;		/* Hash value of dependency name */ -+  Elf32_Half	vna_flags;		/* Dependency specific information */ -+  Elf32_Half	vna_other;		/* Unused */ -+  Elf32_Word	vna_name;		/* Dependency name string offset */ -+  Elf32_Word	vna_next;		/* Offset in bytes to next vernaux -+					   entry */ -+} Elf32_Vernaux; -+ -+typedef struct -+{ -+  Elf64_Word	vna_hash;		/* Hash value of dependency name */ -+  Elf64_Half	vna_flags;		/* Dependency specific information */ -+  Elf64_Half	vna_other;		/* Unused */ -+  Elf64_Word	vna_name;		/* Dependency name string offset */ -+  Elf64_Word	vna_next;		/* Offset in bytes to next vernaux -+					   entry */ -+} Elf64_Vernaux; -+ -+ -+/* Legal values for vna_flags.  */ -+#define VER_FLG_WEAK	0x2		/* Weak version identifier */ -+ -+ -+/* Auxiliary vector.  */ -+ -+/* This vector is normally only used by the program interpreter.  The -+   usual definition in an ABI supplement uses the name auxv_t.  The -+   vector is not usually defined in a standard <elf.h> file, but it -+   can't hurt.  We rename it to avoid conflicts.  The sizes of these -+   types are an arrangement between the exec server and the program -+   interpreter, so we don't fully specify them here.  */ -+ -+typedef struct -+{ -+  int a_type;			/* Entry type */ -+  union -+    { -+      long int a_val;		/* Integer value */ -+      void *a_ptr;		/* Pointer value */ -+      void (*a_fcn) (void);	/* Function pointer value */ -+    } a_un; -+} Elf32_auxv_t; -+ -+typedef struct -+{ -+  long int a_type;		/* Entry type */ -+  union -+    { -+      long int a_val;		/* Integer value */ -+      void *a_ptr;		/* Pointer value */ -+      void (*a_fcn) (void);	/* Function pointer value */ -+    } a_un; -+} Elf64_auxv_t; -+ -+/* Legal values for a_type (entry type).  */ -+ -+#define AT_NULL		0		/* End of vector */ -+#define AT_IGNORE	1		/* Entry should be ignored */ -+#define AT_EXECFD	2		/* File descriptor of program */ -+#define AT_PHDR		3		/* Program headers for program */ -+#define AT_PHENT	4		/* Size of program header entry */ -+#define AT_PHNUM	5		/* Number of program headers */ -+#define AT_PAGESZ	6		/* System page size */ -+#define AT_BASE		7		/* Base address of interpreter */ -+#define AT_FLAGS	8		/* Flags */ -+#define AT_ENTRY	9		/* Entry point of program */ -+#define AT_NOTELF	10		/* Program is not ELF */ -+#define AT_UID		11		/* Real uid */ -+#define AT_EUID		12		/* Effective uid */ -+#define AT_GID		13		/* Real gid */ -+#define AT_EGID		14		/* Effective gid */ -+#define AT_CLKTCK	17		/* Frequency of times() */ -+ -+/* Some more special a_type values describing the hardware.  */ -+#define AT_PLATFORM	15		/* String identifying platform.  */ -+#define AT_HWCAP	16		/* Machine dependent hints about -+					   processor capabilities.  */ -+ -+/* This entry gives some information about the FPU initialization -+   performed by the kernel.  */ -+#define AT_FPUCW	18		/* Used FPU control word.  */ -+ -+/* Cache block sizes.  */ -+#define AT_DCACHEBSIZE	19		/* Data cache block size.  */ -+#define AT_ICACHEBSIZE	20		/* Instruction cache block size.  */ -+#define AT_UCACHEBSIZE	21		/* Unified cache block size.  */ -+ -+/* A special ignored value for PPC, used by the kernel to control the -+   interpretation of the AUXV. Must be > 16.  */ -+#define AT_IGNOREPPC	22		/* Entry should be ignored.  */ -+ -+#define	AT_SECURE	23		/* Boolean, was exec setuid-like?  */ -+ -+/* Pointer to the global system page used for system calls and other -+   nice things.  */ -+#define AT_SYSINFO	32 -+#define AT_SYSINFO_EHDR	33 -+ -+ -+/* Note section contents.  Each entry in the note section begins with -+   a header of a fixed form.  */ -+ -+typedef struct -+{ -+  Elf32_Word n_namesz;			/* Length of the note's name.  */ -+  Elf32_Word n_descsz;			/* Length of the note's descriptor.  */ -+  Elf32_Word n_type;			/* Type of the note.  */ -+} Elf32_Nhdr; -+ -+typedef struct -+{ -+  Elf64_Word n_namesz;			/* Length of the note's name.  */ -+  Elf64_Word n_descsz;			/* Length of the note's descriptor.  */ -+  Elf64_Word n_type;			/* Type of the note.  */ -+} Elf64_Nhdr; -+ -+/* Known names of notes.  */ -+ -+/* Solaris entries in the note section have this name.  */ -+#define ELF_NOTE_SOLARIS	"SUNW Solaris" -+ -+/* Note entries for GNU systems have this name.  */ -+#define ELF_NOTE_GNU		"GNU" -+ -+ -+/* Defined types of notes for Solaris.  */ -+ -+/* Value of descriptor (one word) is desired pagesize for the binary.  */ -+#define ELF_NOTE_PAGESIZE_HINT	1 -+ -+ -+/* Defined note types for GNU systems.  */ -+ -+/* ABI information.  The descriptor consists of words: -+   word 0: OS descriptor -+   word 1: major version of the ABI -+   word 2: minor version of the ABI -+   word 3: subminor version of the ABI -+*/ -+#define ELF_NOTE_ABI		1 -+ -+/* Known OSes.  These value can appear in word 0 of an ELF_NOTE_ABI -+   note section entry.  */ -+#define ELF_NOTE_OS_LINUX	0 -+#define ELF_NOTE_OS_GNU		1 -+#define ELF_NOTE_OS_SOLARIS2	2 -+#define ELF_NOTE_OS_FREEBSD	3 -+ -+ -+/* Move records.  */ -+typedef struct -+{ -+  Elf32_Xword m_value;		/* Symbol value.  */ -+  Elf32_Word m_info;		/* Size and index.  */ -+  Elf32_Word m_poffset;		/* Symbol offset.  */ -+  Elf32_Half m_repeat;		/* Repeat count.  */ -+  Elf32_Half m_stride;		/* Stride info.  */ -+} Elf32_Move; -+ -+typedef struct -+{ -+  Elf64_Xword m_value;		/* Symbol value.  */ -+  Elf64_Xword m_info;		/* Size and index.  */ -+  Elf64_Xword m_poffset;	/* Symbol offset.  */ -+  Elf64_Half m_repeat;		/* Repeat count.  */ -+  Elf64_Half m_stride;		/* Stride info.  */ -+} Elf64_Move; -+ -+/* Macro to construct move records.  */ -+#define ELF32_M_SYM(info)	((info) >> 8) -+#define ELF32_M_SIZE(info)	((unsigned char) (info)) -+#define ELF32_M_INFO(sym, size)	(((sym) << 8) + (unsigned char) (size)) -+ -+#define ELF64_M_SYM(info)	ELF32_M_SYM (info) -+#define ELF64_M_SIZE(info)	ELF32_M_SIZE (info) -+#define ELF64_M_INFO(sym, size)	ELF32_M_INFO (sym, size) -+ -+ -+/* Motorola 68k specific definitions.  */ -+ -+/* Values for Elf32_Ehdr.e_flags.  */ -+#define EF_CPU32	0x00810000 -+ -+/* m68k relocs.  */ -+ -+#define R_68K_NONE	0		/* No reloc */ -+#define R_68K_32	1		/* Direct 32 bit  */ -+#define R_68K_16	2		/* Direct 16 bit  */ -+#define R_68K_8		3		/* Direct 8 bit  */ -+#define R_68K_PC32	4		/* PC relative 32 bit */ -+#define R_68K_PC16	5		/* PC relative 16 bit */ -+#define R_68K_PC8	6		/* PC relative 8 bit */ -+#define R_68K_GOT32	7		/* 32 bit PC relative GOT entry */ -+#define R_68K_GOT16	8		/* 16 bit PC relative GOT entry */ -+#define R_68K_GOT8	9		/* 8 bit PC relative GOT entry */ -+#define R_68K_GOT32O	10		/* 32 bit GOT offset */ -+#define R_68K_GOT16O	11		/* 16 bit GOT offset */ -+#define R_68K_GOT8O	12		/* 8 bit GOT offset */ -+#define R_68K_PLT32	13		/* 32 bit PC relative PLT address */ -+#define R_68K_PLT16	14		/* 16 bit PC relative PLT address */ -+#define R_68K_PLT8	15		/* 8 bit PC relative PLT address */ -+#define R_68K_PLT32O	16		/* 32 bit PLT offset */ -+#define R_68K_PLT16O	17		/* 16 bit PLT offset */ -+#define R_68K_PLT8O	18		/* 8 bit PLT offset */ -+#define R_68K_COPY	19		/* Copy symbol at runtime */ -+#define R_68K_GLOB_DAT	20		/* Create GOT entry */ -+#define R_68K_JMP_SLOT	21		/* Create PLT entry */ -+#define R_68K_RELATIVE	22		/* Adjust by program base */ -+/* Keep this the last entry.  */ -+#define R_68K_NUM	23 -+ -+/* Intel 80386 specific definitions.  */ -+ -+/* i386 relocs.  */ -+ -+#define R_386_NONE	   0		/* No reloc */ -+#define R_386_32	   1		/* Direct 32 bit  */ -+#define R_386_PC32	   2		/* PC relative 32 bit */ -+#define R_386_GOT32	   3		/* 32 bit GOT entry */ -+#define R_386_PLT32	   4		/* 32 bit PLT address */ -+#define R_386_COPY	   5		/* Copy symbol at runtime */ -+#define R_386_GLOB_DAT	   6		/* Create GOT entry */ -+#define R_386_JMP_SLOT	   7		/* Create PLT entry */ -+#define R_386_RELATIVE	   8		/* Adjust by program base */ -+#define R_386_GOTOFF	   9		/* 32 bit offset to GOT */ -+#define R_386_GOTPC	   10		/* 32 bit PC relative offset to GOT */ -+#define R_386_32PLT	   11 -+#define R_386_TLS_TPOFF	   14		/* Offset in static TLS block */ -+#define R_386_TLS_IE	   15		/* Address of GOT entry for static TLS -+					   block offset */ -+#define R_386_TLS_GOTIE	   16		/* GOT entry for static TLS block -+					   offset */ -+#define R_386_TLS_LE	   17		/* Offset relative to static TLS -+					   block */ -+#define R_386_TLS_GD	   18		/* Direct 32 bit for GNU version of -+					   general dynamic thread local data */ -+#define R_386_TLS_LDM	   19		/* Direct 32 bit for GNU version of -+					   local dynamic thread local data -+					   in LE code */ -+#define R_386_16	   20 -+#define R_386_PC16	   21 -+#define R_386_8		   22 -+#define R_386_PC8	   23 -+#define R_386_TLS_GD_32	   24		/* Direct 32 bit for general dynamic -+					   thread local data */ -+#define R_386_TLS_GD_PUSH  25		/* Tag for pushl in GD TLS code */ -+#define R_386_TLS_GD_CALL  26		/* Relocation for call to -+					   __tls_get_addr() */ -+#define R_386_TLS_GD_POP   27		/* Tag for popl in GD TLS code */ -+#define R_386_TLS_LDM_32   28		/* Direct 32 bit for local dynamic -+					   thread local data in LE code */ -+#define R_386_TLS_LDM_PUSH 29		/* Tag for pushl in LDM TLS code */ -+#define R_386_TLS_LDM_CALL 30		/* Relocation for call to -+					   __tls_get_addr() in LDM code */ -+#define R_386_TLS_LDM_POP  31		/* Tag for popl in LDM TLS code */ -+#define R_386_TLS_LDO_32   32		/* Offset relative to TLS block */ -+#define R_386_TLS_IE_32	   33		/* GOT entry for negated static TLS -+					   block offset */ -+#define R_386_TLS_LE_32	   34		/* Negated offset relative to static -+					   TLS block */ -+#define R_386_TLS_DTPMOD32 35		/* ID of module containing symbol */ -+#define R_386_TLS_DTPOFF32 36		/* Offset in TLS block */ -+#define R_386_TLS_TPOFF32  37		/* Negated offset in static TLS block */ -+/* Keep this the last entry.  */ -+#define R_386_NUM	   38 -+ -+/* SUN SPARC specific definitions.  */ -+ -+/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ -+ -+#define STT_REGISTER	13		/* Global register reserved to app. */ -+ -+/* Values for Elf64_Ehdr.e_flags.  */ -+ -+#define EF_SPARCV9_MM		3 -+#define EF_SPARCV9_TSO		0 -+#define EF_SPARCV9_PSO		1 -+#define EF_SPARCV9_RMO		2 -+#define EF_SPARC_LEDATA		0x800000 /* little endian data */ -+#define EF_SPARC_EXT_MASK	0xFFFF00 -+#define EF_SPARC_32PLUS		0x000100 /* generic V8+ features */ -+#define EF_SPARC_SUN_US1	0x000200 /* Sun UltraSPARC1 extensions */ -+#define EF_SPARC_HAL_R1		0x000400 /* HAL R1 extensions */ -+#define EF_SPARC_SUN_US3	0x000800 /* Sun UltraSPARCIII extensions */ -+ -+/* SPARC relocs.  */ -+ -+#define R_SPARC_NONE		0	/* No reloc */ -+#define R_SPARC_8		1	/* Direct 8 bit */ -+#define R_SPARC_16		2	/* Direct 16 bit */ -+#define R_SPARC_32		3	/* Direct 32 bit */ -+#define R_SPARC_DISP8		4	/* PC relative 8 bit */ -+#define R_SPARC_DISP16		5	/* PC relative 16 bit */ -+#define R_SPARC_DISP32		6	/* PC relative 32 bit */ -+#define R_SPARC_WDISP30		7	/* PC relative 30 bit shifted */ -+#define R_SPARC_WDISP22		8	/* PC relative 22 bit shifted */ -+#define R_SPARC_HI22		9	/* High 22 bit */ -+#define R_SPARC_22		10	/* Direct 22 bit */ -+#define R_SPARC_13		11	/* Direct 13 bit */ -+#define R_SPARC_LO10		12	/* Truncated 10 bit */ -+#define R_SPARC_GOT10		13	/* Truncated 10 bit GOT entry */ -+#define R_SPARC_GOT13		14	/* 13 bit GOT entry */ -+#define R_SPARC_GOT22		15	/* 22 bit GOT entry shifted */ -+#define R_SPARC_PC10		16	/* PC relative 10 bit truncated */ -+#define R_SPARC_PC22		17	/* PC relative 22 bit shifted */ -+#define R_SPARC_WPLT30		18	/* 30 bit PC relative PLT address */ -+#define R_SPARC_COPY		19	/* Copy symbol at runtime */ -+#define R_SPARC_GLOB_DAT	20	/* Create GOT entry */ -+#define R_SPARC_JMP_SLOT	21	/* Create PLT entry */ -+#define R_SPARC_RELATIVE	22	/* Adjust by program base */ -+#define R_SPARC_UA32		23	/* Direct 32 bit unaligned */ -+ -+/* Additional Sparc64 relocs.  */ -+ -+#define R_SPARC_PLT32		24	/* Direct 32 bit ref to PLT entry */ -+#define R_SPARC_HIPLT22		25	/* High 22 bit PLT entry */ -+#define R_SPARC_LOPLT10		26	/* Truncated 10 bit PLT entry */ -+#define R_SPARC_PCPLT32		27	/* PC rel 32 bit ref to PLT entry */ -+#define R_SPARC_PCPLT22		28	/* PC rel high 22 bit PLT entry */ -+#define R_SPARC_PCPLT10		29	/* PC rel trunc 10 bit PLT entry */ -+#define R_SPARC_10		30	/* Direct 10 bit */ -+#define R_SPARC_11		31	/* Direct 11 bit */ -+#define R_SPARC_64		32	/* Direct 64 bit */ -+#define R_SPARC_OLO10		33	/* 10bit with secondary 13bit addend */ -+#define R_SPARC_HH22		34	/* Top 22 bits of direct 64 bit */ -+#define R_SPARC_HM10		35	/* High middle 10 bits of ... */ -+#define R_SPARC_LM22		36	/* Low middle 22 bits of ... */ -+#define R_SPARC_PC_HH22		37	/* Top 22 bits of pc rel 64 bit */ -+#define R_SPARC_PC_HM10		38	/* High middle 10 bit of ... */ -+#define R_SPARC_PC_LM22		39	/* Low miggle 22 bits of ... */ -+#define R_SPARC_WDISP16		40	/* PC relative 16 bit shifted */ -+#define R_SPARC_WDISP19		41	/* PC relative 19 bit shifted */ -+#define R_SPARC_7		43	/* Direct 7 bit */ -+#define R_SPARC_5		44	/* Direct 5 bit */ -+#define R_SPARC_6		45	/* Direct 6 bit */ -+#define R_SPARC_DISP64		46	/* PC relative 64 bit */ -+#define R_SPARC_PLT64		47	/* Direct 64 bit ref to PLT entry */ -+#define R_SPARC_HIX22		48	/* High 22 bit complemented */ -+#define R_SPARC_LOX10		49	/* Truncated 11 bit complemented */ -+#define R_SPARC_H44		50	/* Direct high 12 of 44 bit */ -+#define R_SPARC_M44		51	/* Direct mid 22 of 44 bit */ -+#define R_SPARC_L44		52	/* Direct low 10 of 44 bit */ -+#define R_SPARC_REGISTER	53	/* Global register usage */ -+#define R_SPARC_UA64		54	/* Direct 64 bit unaligned */ -+#define R_SPARC_UA16		55	/* Direct 16 bit unaligned */ -+#define R_SPARC_TLS_GD_HI22	56 -+#define R_SPARC_TLS_GD_LO10	57 -+#define R_SPARC_TLS_GD_ADD	58 -+#define R_SPARC_TLS_GD_CALL	59 -+#define R_SPARC_TLS_LDM_HI22	60 -+#define R_SPARC_TLS_LDM_LO10	61 -+#define R_SPARC_TLS_LDM_ADD	62 -+#define R_SPARC_TLS_LDM_CALL	63 -+#define R_SPARC_TLS_LDO_HIX22	64 -+#define R_SPARC_TLS_LDO_LOX10	65 -+#define R_SPARC_TLS_LDO_ADD	66 -+#define R_SPARC_TLS_IE_HI22	67 -+#define R_SPARC_TLS_IE_LO10	68 -+#define R_SPARC_TLS_IE_LD	69 -+#define R_SPARC_TLS_IE_LDX	70 -+#define R_SPARC_TLS_IE_ADD	71 -+#define R_SPARC_TLS_LE_HIX22	72 -+#define R_SPARC_TLS_LE_LOX10	73 -+#define R_SPARC_TLS_DTPMOD32	74 -+#define R_SPARC_TLS_DTPMOD64	75 -+#define R_SPARC_TLS_DTPOFF32	76 -+#define R_SPARC_TLS_DTPOFF64	77 -+#define R_SPARC_TLS_TPOFF32	78 -+#define R_SPARC_TLS_TPOFF64	79 -+/* Keep this the last entry.  */ -+#define R_SPARC_NUM		80 -+ -+/* For Sparc64, legal values for d_tag of Elf64_Dyn.  */ -+ -+#define DT_SPARC_REGISTER 0x70000001 -+#define DT_SPARC_NUM	2 -+ -+/* Bits present in AT_HWCAP, primarily for Sparc32.  */ -+ -+#define HWCAP_SPARC_FLUSH	1	/* The cpu supports flush insn.  */ -+#define HWCAP_SPARC_STBAR	2 -+#define HWCAP_SPARC_SWAP	4 -+#define HWCAP_SPARC_MULDIV	8 -+#define HWCAP_SPARC_V9		16	/* The cpu is v9, so v8plus is ok.  */ -+#define HWCAP_SPARC_ULTRA3	32 -+ -+/* MIPS R3000 specific definitions.  */ -+ -+/* Legal values for e_flags field of Elf32_Ehdr.  */ -+ -+#define EF_MIPS_NOREORDER   1		/* A .noreorder directive was used */ -+#define EF_MIPS_PIC	    2		/* Contains PIC code */ -+#define EF_MIPS_CPIC	    4		/* Uses PIC calling sequence */ -+#define EF_MIPS_XGOT	    8 -+#define EF_MIPS_64BIT_WHIRL 16 -+#define EF_MIPS_ABI2	    32 -+#define EF_MIPS_ABI_ON32    64 -+#define EF_MIPS_ARCH	    0xf0000000	/* MIPS architecture level */ -+ -+/* Legal values for MIPS architecture level.  */ -+ -+#define EF_MIPS_ARCH_1	    0x00000000	/* -mips1 code.  */ -+#define EF_MIPS_ARCH_2	    0x10000000	/* -mips2 code.  */ -+#define EF_MIPS_ARCH_3	    0x20000000	/* -mips3 code.  */ -+#define EF_MIPS_ARCH_4	    0x30000000	/* -mips4 code.  */ -+#define EF_MIPS_ARCH_5	    0x40000000	/* -mips5 code.  */ -+#define EF_MIPS_ARCH_32	    0x60000000	/* MIPS32 code.  */ -+#define EF_MIPS_ARCH_64	    0x70000000	/* MIPS64 code.  */ -+ -+/* The following are non-official names and should not be used.  */ -+ -+#define E_MIPS_ARCH_1	  0x00000000	/* -mips1 code.  */ -+#define E_MIPS_ARCH_2	  0x10000000	/* -mips2 code.  */ -+#define E_MIPS_ARCH_3	  0x20000000	/* -mips3 code.  */ -+#define E_MIPS_ARCH_4	  0x30000000	/* -mips4 code.  */ -+#define E_MIPS_ARCH_5	  0x40000000	/* -mips5 code.  */ -+#define E_MIPS_ARCH_32	  0x60000000	/* MIPS32 code.  */ -+#define E_MIPS_ARCH_64	  0x70000000	/* MIPS64 code.  */ -+ -+/* Special section indices.  */ -+ -+#define SHN_MIPS_ACOMMON    0xff00	/* Allocated common symbols */ -+#define SHN_MIPS_TEXT	    0xff01	/* Allocated test symbols.  */ -+#define SHN_MIPS_DATA	    0xff02	/* Allocated data symbols.  */ -+#define SHN_MIPS_SCOMMON    0xff03	/* Small common symbols */ -+#define SHN_MIPS_SUNDEFINED 0xff04	/* Small undefined symbols */ -+ -+/* Legal values for sh_type field of Elf32_Shdr.  */ -+ -+#define SHT_MIPS_LIBLIST       0x70000000 /* Shared objects used in link */ -+#define SHT_MIPS_MSYM	       0x70000001 -+#define SHT_MIPS_CONFLICT      0x70000002 /* Conflicting symbols */ -+#define SHT_MIPS_GPTAB	       0x70000003 /* Global data area sizes */ -+#define SHT_MIPS_UCODE	       0x70000004 /* Reserved for SGI/MIPS compilers */ -+#define SHT_MIPS_DEBUG	       0x70000005 /* MIPS ECOFF debugging information*/ -+#define SHT_MIPS_REGINFO       0x70000006 /* Register usage information */ -+#define SHT_MIPS_PACKAGE       0x70000007 -+#define SHT_MIPS_PACKSYM       0x70000008 -+#define SHT_MIPS_RELD	       0x70000009 -+#define SHT_MIPS_IFACE         0x7000000b -+#define SHT_MIPS_CONTENT       0x7000000c -+#define SHT_MIPS_OPTIONS       0x7000000d /* Miscellaneous options.  */ -+#define SHT_MIPS_SHDR	       0x70000010 -+#define SHT_MIPS_FDESC	       0x70000011 -+#define SHT_MIPS_EXTSYM	       0x70000012 -+#define SHT_MIPS_DENSE	       0x70000013 -+#define SHT_MIPS_PDESC	       0x70000014 -+#define SHT_MIPS_LOCSYM	       0x70000015 -+#define SHT_MIPS_AUXSYM	       0x70000016 -+#define SHT_MIPS_OPTSYM	       0x70000017 -+#define SHT_MIPS_LOCSTR	       0x70000018 -+#define SHT_MIPS_LINE	       0x70000019 -+#define SHT_MIPS_RFDESC	       0x7000001a -+#define SHT_MIPS_DELTASYM      0x7000001b -+#define SHT_MIPS_DELTAINST     0x7000001c -+#define SHT_MIPS_DELTACLASS    0x7000001d -+#define SHT_MIPS_DWARF         0x7000001e /* DWARF debugging information.  */ -+#define SHT_MIPS_DELTADECL     0x7000001f -+#define SHT_MIPS_SYMBOL_LIB    0x70000020 -+#define SHT_MIPS_EVENTS	       0x70000021 /* Event section.  */ -+#define SHT_MIPS_TRANSLATE     0x70000022 -+#define SHT_MIPS_PIXIE	       0x70000023 -+#define SHT_MIPS_XLATE	       0x70000024 -+#define SHT_MIPS_XLATE_DEBUG   0x70000025 -+#define SHT_MIPS_WHIRL	       0x70000026 -+#define SHT_MIPS_EH_REGION     0x70000027 -+#define SHT_MIPS_XLATE_OLD     0x70000028 -+#define SHT_MIPS_PDR_EXCEPTION 0x70000029 -+ -+/* Legal values for sh_flags field of Elf32_Shdr.  */ -+ -+#define SHF_MIPS_GPREL	 0x10000000	/* Must be part of global data area */ -+#define SHF_MIPS_MERGE	 0x20000000 -+#define SHF_MIPS_ADDR	 0x40000000 -+#define SHF_MIPS_STRINGS 0x80000000 -+#define SHF_MIPS_NOSTRIP 0x08000000 -+#define SHF_MIPS_LOCAL	 0x04000000 -+#define SHF_MIPS_NAMES	 0x02000000 -+#define SHF_MIPS_NODUPE	 0x01000000 -+ -+ -+/* Symbol tables.  */ -+ -+/* MIPS specific values for `st_other'.  */ -+#define STO_MIPS_DEFAULT		0x0 -+#define STO_MIPS_INTERNAL		0x1 -+#define STO_MIPS_HIDDEN			0x2 -+#define STO_MIPS_PROTECTED		0x3 -+#define STO_MIPS_SC_ALIGN_UNUSED	0xff -+ -+/* MIPS specific values for `st_info'.  */ -+#define STB_MIPS_SPLIT_COMMON		13 -+ -+/* Entries found in sections of type SHT_MIPS_GPTAB.  */ -+ -+typedef union -+{ -+  struct -+    { -+      Elf32_Word gt_current_g_value;	/* -G value used for compilation */ -+      Elf32_Word gt_unused;		/* Not used */ -+    } gt_header;			/* First entry in section */ -+  struct -+    { -+      Elf32_Word gt_g_value;		/* If this value were used for -G */ -+      Elf32_Word gt_bytes;		/* This many bytes would be used */ -+    } gt_entry;				/* Subsequent entries in section */ -+} Elf32_gptab; -+ -+/* Entry found in sections of type SHT_MIPS_REGINFO.  */ -+ -+typedef struct -+{ -+  Elf32_Word	ri_gprmask;		/* General registers used */ -+  Elf32_Word	ri_cprmask[4];		/* Coprocessor registers used */ -+  Elf32_Sword	ri_gp_value;		/* $gp register value */ -+} Elf32_RegInfo; -+ -+/* Entries found in sections of type SHT_MIPS_OPTIONS.  */ -+ -+typedef struct -+{ -+  unsigned char kind;		/* Determines interpretation of the -+				   variable part of descriptor.  */ -+  unsigned char size;		/* Size of descriptor, including header.  */ -+  Elf32_Section section;	/* Section header index of section affected, -+				   0 for global options.  */ -+  Elf32_Word info;		/* Kind-specific information.  */ -+} Elf_Options; -+ -+/* Values for `kind' field in Elf_Options.  */ -+ -+#define ODK_NULL	0	/* Undefined.  */ -+#define ODK_REGINFO	1	/* Register usage information.  */ -+#define ODK_EXCEPTIONS	2	/* Exception processing options.  */ -+#define ODK_PAD		3	/* Section padding options.  */ -+#define ODK_HWPATCH	4	/* Hardware workarounds performed */ -+#define ODK_FILL	5	/* record the fill value used by the linker. */ -+#define ODK_TAGS	6	/* reserve space for desktop tools to write. */ -+#define ODK_HWAND	7	/* HW workarounds.  'AND' bits when merging. */ -+#define ODK_HWOR	8	/* HW workarounds.  'OR' bits when merging.  */ -+ -+/* Values for `info' in Elf_Options for ODK_EXCEPTIONS entries.  */ -+ -+#define OEX_FPU_MIN	0x1f	/* FPE's which MUST be enabled.  */ -+#define OEX_FPU_MAX	0x1f00	/* FPE's which MAY be enabled.  */ -+#define OEX_PAGE0	0x10000	/* page zero must be mapped.  */ -+#define OEX_SMM		0x20000	/* Force sequential memory mode?  */ -+#define OEX_FPDBUG	0x40000	/* Force floating point debug mode?  */ -+#define OEX_PRECISEFP	OEX_FPDBUG -+#define OEX_DISMISS	0x80000	/* Dismiss invalid address faults?  */ -+ -+#define OEX_FPU_INVAL	0x10 -+#define OEX_FPU_DIV0	0x08 -+#define OEX_FPU_OFLO	0x04 -+#define OEX_FPU_UFLO	0x02 -+#define OEX_FPU_INEX	0x01 -+ -+/* Masks for `info' in Elf_Options for an ODK_HWPATCH entry.  */ -+ -+#define OHW_R4KEOP	0x1	/* R4000 end-of-page patch.  */ -+#define OHW_R8KPFETCH	0x2	/* may need R8000 prefetch patch.  */ -+#define OHW_R5KEOP	0x4	/* R5000 end-of-page patch.  */ -+#define OHW_R5KCVTL	0x8	/* R5000 cvt.[ds].l bug.  clean=1.  */ -+ -+#define OPAD_PREFIX	0x1 -+#define OPAD_POSTFIX	0x2 -+#define OPAD_SYMBOL	0x4 -+ -+/* Entry found in `.options' section.  */ -+ -+typedef struct -+{ -+  Elf32_Word hwp_flags1;	/* Extra flags.  */ -+  Elf32_Word hwp_flags2;	/* Extra flags.  */ -+} Elf_Options_Hw; -+ -+/* Masks for `info' in ElfOptions for ODK_HWAND and ODK_HWOR entries.  */ -+ -+#define OHWA0_R4KEOP_CHECKED	0x00000001 -+#define OHWA1_R4KEOP_CLEAN	0x00000002 -+ -+/* MIPS relocs.  */ -+ -+#define R_MIPS_NONE		0	/* No reloc */ -+#define R_MIPS_16		1	/* Direct 16 bit */ -+#define R_MIPS_32		2	/* Direct 32 bit */ -+#define R_MIPS_REL32		3	/* PC relative 32 bit */ -+#define R_MIPS_26		4	/* Direct 26 bit shifted */ -+#define R_MIPS_HI16		5	/* High 16 bit */ -+#define R_MIPS_LO16		6	/* Low 16 bit */ -+#define R_MIPS_GPREL16		7	/* GP relative 16 bit */ -+#define R_MIPS_LITERAL		8	/* 16 bit literal entry */ -+#define R_MIPS_GOT16		9	/* 16 bit GOT entry */ -+#define R_MIPS_PC16		10	/* PC relative 16 bit */ -+#define R_MIPS_CALL16		11	/* 16 bit GOT entry for function */ -+#define R_MIPS_GPREL32		12	/* GP relative 32 bit */ -+ -+#define R_MIPS_SHIFT5		16 -+#define R_MIPS_SHIFT6		17 -+#define R_MIPS_64		18 -+#define R_MIPS_GOT_DISP		19 -+#define R_MIPS_GOT_PAGE		20 -+#define R_MIPS_GOT_OFST		21 -+#define R_MIPS_GOT_HI16		22 -+#define R_MIPS_GOT_LO16		23 -+#define R_MIPS_SUB		24 -+#define R_MIPS_INSERT_A		25 -+#define R_MIPS_INSERT_B		26 -+#define R_MIPS_DELETE		27 -+#define R_MIPS_HIGHER		28 -+#define R_MIPS_HIGHEST		29 -+#define R_MIPS_CALL_HI16	30 -+#define R_MIPS_CALL_LO16	31 -+#define R_MIPS_SCN_DISP		32 -+#define R_MIPS_REL16		33 -+#define R_MIPS_ADD_IMMEDIATE	34 -+#define R_MIPS_PJUMP		35 -+#define R_MIPS_RELGOT		36 -+#define R_MIPS_JALR		37 -+/* Keep this the last entry.  */ -+#define R_MIPS_NUM		38 -+ -+/* Legal values for p_type field of Elf32_Phdr.  */ -+ -+#define PT_MIPS_REGINFO	0x70000000	/* Register usage information */ -+#define PT_MIPS_RTPROC  0x70000001	/* Runtime procedure table. */ -+#define PT_MIPS_OPTIONS 0x70000002 -+ -+/* Special program header types.  */ -+ -+#define PF_MIPS_LOCAL	0x10000000 -+ -+/* Legal values for d_tag field of Elf32_Dyn.  */ -+ -+#define DT_MIPS_RLD_VERSION  0x70000001	/* Runtime linker interface version */ -+#define DT_MIPS_TIME_STAMP   0x70000002	/* Timestamp */ -+#define DT_MIPS_ICHECKSUM    0x70000003	/* Checksum */ -+#define DT_MIPS_IVERSION     0x70000004	/* Version string (string tbl index) */ -+#define DT_MIPS_FLAGS	     0x70000005	/* Flags */ -+#define DT_MIPS_BASE_ADDRESS 0x70000006	/* Base address */ -+#define DT_MIPS_MSYM	     0x70000007 -+#define DT_MIPS_CONFLICT     0x70000008	/* Address of CONFLICT section */ -+#define DT_MIPS_LIBLIST	     0x70000009	/* Address of LIBLIST section */ -+#define DT_MIPS_LOCAL_GOTNO  0x7000000a	/* Number of local GOT entries */ -+#define DT_MIPS_CONFLICTNO   0x7000000b	/* Number of CONFLICT entries */ -+#define DT_MIPS_LIBLISTNO    0x70000010	/* Number of LIBLIST entries */ -+#define DT_MIPS_SYMTABNO     0x70000011	/* Number of DYNSYM entries */ -+#define DT_MIPS_UNREFEXTNO   0x70000012	/* First external DYNSYM */ -+#define DT_MIPS_GOTSYM	     0x70000013	/* First GOT entry in DYNSYM */ -+#define DT_MIPS_HIPAGENO     0x70000014	/* Number of GOT page table entries */ -+#define DT_MIPS_RLD_MAP	     0x70000016	/* Address of run time loader map.  */ -+#define DT_MIPS_DELTA_CLASS  0x70000017	/* Delta C++ class definition.  */ -+#define DT_MIPS_DELTA_CLASS_NO    0x70000018 /* Number of entries in -+						DT_MIPS_DELTA_CLASS.  */ -+#define DT_MIPS_DELTA_INSTANCE    0x70000019 /* Delta C++ class instances.  */ -+#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a /* Number of entries in -+						DT_MIPS_DELTA_INSTANCE.  */ -+#define DT_MIPS_DELTA_RELOC  0x7000001b /* Delta relocations.  */ -+#define DT_MIPS_DELTA_RELOC_NO 0x7000001c /* Number of entries in -+					     DT_MIPS_DELTA_RELOC.  */ -+#define DT_MIPS_DELTA_SYM    0x7000001d /* Delta symbols that Delta -+					   relocations refer to.  */ -+#define DT_MIPS_DELTA_SYM_NO 0x7000001e /* Number of entries in -+					   DT_MIPS_DELTA_SYM.  */ -+#define DT_MIPS_DELTA_CLASSSYM 0x70000020 /* Delta symbols that hold the -+					     class declaration.  */ -+#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 /* Number of entries in -+						DT_MIPS_DELTA_CLASSSYM.  */ -+#define DT_MIPS_CXX_FLAGS    0x70000022 /* Flags indicating for C++ flavor.  */ -+#define DT_MIPS_PIXIE_INIT   0x70000023 -+#define DT_MIPS_SYMBOL_LIB   0x70000024 -+#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 -+#define DT_MIPS_LOCAL_GOTIDX 0x70000026 -+#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 -+#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 -+#define DT_MIPS_OPTIONS	     0x70000029 /* Address of .options.  */ -+#define DT_MIPS_INTERFACE    0x7000002a /* Address of .interface.  */ -+#define DT_MIPS_DYNSTR_ALIGN 0x7000002b -+#define DT_MIPS_INTERFACE_SIZE 0x7000002c /* Size of the .interface section. */ -+#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d /* Address of rld_text_rsolve -+						    function stored in GOT.  */ -+#define DT_MIPS_PERF_SUFFIX  0x7000002e /* Default suffix of dso to be added -+					   by rld on dlopen() calls.  */ -+#define DT_MIPS_COMPACT_SIZE 0x7000002f /* (O32)Size of compact rel section. */ -+#define DT_MIPS_GP_VALUE     0x70000030 /* GP value for aux GOTs.  */ -+#define DT_MIPS_AUX_DYNAMIC  0x70000031 /* Address of aux .dynamic.  */ -+#define DT_MIPS_NUM	     0x32 -+ -+/* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry.  */ -+ -+#define RHF_NONE		   0		/* No flags */ -+#define RHF_QUICKSTART		   (1 << 0)	/* Use quickstart */ -+#define RHF_NOTPOT		   (1 << 1)	/* Hash size not power of 2 */ -+#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2)	/* Ignore LD_LIBRARY_PATH */ -+#define RHF_NO_MOVE		   (1 << 3) -+#define RHF_SGI_ONLY		   (1 << 4) -+#define RHF_GUARANTEE_INIT	   (1 << 5) -+#define RHF_DELTA_C_PLUS_PLUS	   (1 << 6) -+#define RHF_GUARANTEE_START_INIT   (1 << 7) -+#define RHF_PIXIE		   (1 << 8) -+#define RHF_DEFAULT_DELAY_LOAD	   (1 << 9) -+#define RHF_REQUICKSTART	   (1 << 10) -+#define RHF_REQUICKSTARTED	   (1 << 11) -+#define RHF_CORD		   (1 << 12) -+#define RHF_NO_UNRES_UNDEF	   (1 << 13) -+#define RHF_RLD_ORDER_SAFE	   (1 << 14) -+ -+/* Entries found in sections of type SHT_MIPS_LIBLIST.  */ -+ -+typedef struct -+{ -+  Elf32_Word l_name;		/* Name (string table index) */ -+  Elf32_Word l_time_stamp;	/* Timestamp */ -+  Elf32_Word l_checksum;	/* Checksum */ -+  Elf32_Word l_version;		/* Interface version */ -+  Elf32_Word l_flags;		/* Flags */ -+} Elf32_Lib; -+ -+typedef struct -+{ -+  Elf64_Word l_name;		/* Name (string table index) */ -+  Elf64_Word l_time_stamp;	/* Timestamp */ -+  Elf64_Word l_checksum;	/* Checksum */ -+  Elf64_Word l_version;		/* Interface version */ -+  Elf64_Word l_flags;		/* Flags */ -+} Elf64_Lib; -+ -+ -+/* Legal values for l_flags.  */ -+ -+#define LL_NONE		  0 -+#define LL_EXACT_MATCH	  (1 << 0)	/* Require exact match */ -+#define LL_IGNORE_INT_VER (1 << 1)	/* Ignore interface version */ -+#define LL_REQUIRE_MINOR  (1 << 2) -+#define LL_EXPORTS	  (1 << 3) -+#define LL_DELAY_LOAD	  (1 << 4) -+#define LL_DELTA	  (1 << 5) -+ -+/* Entries found in sections of type SHT_MIPS_CONFLICT.  */ -+ -+typedef Elf32_Addr Elf32_Conflict; -+ -+ -+/* HPPA specific definitions.  */ -+ -+/* Legal values for e_flags field of Elf32_Ehdr.  */ -+ -+#define EF_PARISC_TRAPNIL	0x00010000 /* Trap nil pointer dereference.  */ -+#define EF_PARISC_EXT		0x00020000 /* Program uses arch. extensions. */ -+#define EF_PARISC_LSB		0x00040000 /* Program expects little endian. */ -+#define EF_PARISC_WIDE		0x00080000 /* Program expects wide mode.  */ -+#define EF_PARISC_NO_KABP	0x00100000 /* No kernel assisted branch -+					      prediction.  */ -+#define EF_PARISC_LAZYSWAP	0x00400000 /* Allow lazy swapping.  */ -+#define EF_PARISC_ARCH		0x0000ffff /* Architecture version.  */ -+ -+/* Defined values for `e_flags & EF_PARISC_ARCH' are:  */ -+ -+#define EFA_PARISC_1_0		    0x020b /* PA-RISC 1.0 big-endian.  */ -+#define EFA_PARISC_1_1		    0x0210 /* PA-RISC 1.1 big-endian.  */ -+#define EFA_PARISC_2_0		    0x0214 /* PA-RISC 2.0 big-endian.  */ -+ -+/* Additional section indeces.  */ -+ -+#define SHN_PARISC_ANSI_COMMON	0xff00	   /* Section for tenatively declared -+					      symbols in ANSI C.  */ -+#define SHN_PARISC_HUGE_COMMON	0xff01	   /* Common blocks in huge model.  */ -+ -+/* Legal values for sh_type field of Elf32_Shdr.  */ -+ -+#define SHT_PARISC_EXT		0x70000000 /* Contains product specific ext. */ -+#define SHT_PARISC_UNWIND	0x70000001 /* Unwind information.  */ -+#define SHT_PARISC_DOC		0x70000002 /* Debug info for optimized code. */ -+ -+/* Legal values for sh_flags field of Elf32_Shdr.  */ -+ -+#define SHF_PARISC_SHORT	0x20000000 /* Section with short addressing. */ -+#define SHF_PARISC_HUGE		0x40000000 /* Section far from gp.  */ -+#define SHF_PARISC_SBP		0x80000000 /* Static branch prediction code. */ -+ -+/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ -+ -+#define STT_PARISC_MILLICODE	13	/* Millicode function entry point.  */ -+ -+#define STT_HP_OPAQUE		(STT_LOOS + 0x1) -+#define STT_HP_STUB		(STT_LOOS + 0x2) -+ -+/* HPPA relocs.  */ -+ -+#define R_PARISC_NONE		0	/* No reloc.  */ -+#define R_PARISC_DIR32		1	/* Direct 32-bit reference.  */ -+#define R_PARISC_DIR21L		2	/* Left 21 bits of eff. address.  */ -+#define R_PARISC_DIR17R		3	/* Right 17 bits of eff. address.  */ -+#define R_PARISC_DIR17F		4	/* 17 bits of eff. address.  */ -+#define R_PARISC_DIR14R		6	/* Right 14 bits of eff. address.  */ -+#define R_PARISC_PCREL32	9	/* 32-bit rel. address.  */ -+#define R_PARISC_PCREL21L	10	/* Left 21 bits of rel. address.  */ -+#define R_PARISC_PCREL17R	11	/* Right 17 bits of rel. address.  */ -+#define R_PARISC_PCREL17F	12	/* 17 bits of rel. address.  */ -+#define R_PARISC_PCREL14R	14	/* Right 14 bits of rel. address.  */ -+#define R_PARISC_DPREL21L	18	/* Left 21 bits of rel. address.  */ -+#define R_PARISC_DPREL14R	22	/* Right 14 bits of rel. address.  */ -+#define R_PARISC_GPREL21L	26	/* GP-relative, left 21 bits.  */ -+#define R_PARISC_GPREL14R	30	/* GP-relative, right 14 bits.  */ -+#define R_PARISC_LTOFF21L	34	/* LT-relative, left 21 bits.  */ -+#define R_PARISC_LTOFF14R	38	/* LT-relative, right 14 bits.  */ -+#define R_PARISC_SECREL32	41	/* 32 bits section rel. address.  */ -+#define R_PARISC_SEGBASE	48	/* No relocation, set segment base.  */ -+#define R_PARISC_SEGREL32	49	/* 32 bits segment rel. address.  */ -+#define R_PARISC_PLTOFF21L	50	/* PLT rel. address, left 21 bits.  */ -+#define R_PARISC_PLTOFF14R	54	/* PLT rel. address, right 14 bits.  */ -+#define R_PARISC_LTOFF_FPTR32	57	/* 32 bits LT-rel. function pointer. */ -+#define R_PARISC_LTOFF_FPTR21L	58	/* LT-rel. fct ptr, left 21 bits. */ -+#define R_PARISC_LTOFF_FPTR14R	62	/* LT-rel. fct ptr, right 14 bits. */ -+#define R_PARISC_FPTR64		64	/* 64 bits function address.  */ -+#define R_PARISC_PLABEL32	65	/* 32 bits function address.  */ -+#define R_PARISC_PCREL64	72	/* 64 bits PC-rel. address.  */ -+#define R_PARISC_PCREL22F	74	/* 22 bits PC-rel. address.  */ -+#define R_PARISC_PCREL14WR	75	/* PC-rel. address, right 14 bits.  */ -+#define R_PARISC_PCREL14DR	76	/* PC rel. address, right 14 bits.  */ -+#define R_PARISC_PCREL16F	77	/* 16 bits PC-rel. address.  */ -+#define R_PARISC_PCREL16WF	78	/* 16 bits PC-rel. address.  */ -+#define R_PARISC_PCREL16DF	79	/* 16 bits PC-rel. address.  */ -+#define R_PARISC_DIR64		80	/* 64 bits of eff. address.  */ -+#define R_PARISC_DIR14WR	83	/* 14 bits of eff. address.  */ -+#define R_PARISC_DIR14DR	84	/* 14 bits of eff. address.  */ -+#define R_PARISC_DIR16F		85	/* 16 bits of eff. address.  */ -+#define R_PARISC_DIR16WF	86	/* 16 bits of eff. address.  */ -+#define R_PARISC_DIR16DF	87	/* 16 bits of eff. address.  */ -+#define R_PARISC_GPREL64	88	/* 64 bits of GP-rel. address.  */ -+#define R_PARISC_GPREL14WR	91	/* GP-rel. address, right 14 bits.  */ -+#define R_PARISC_GPREL14DR	92	/* GP-rel. address, right 14 bits.  */ -+#define R_PARISC_GPREL16F	93	/* 16 bits GP-rel. address.  */ -+#define R_PARISC_GPREL16WF	94	/* 16 bits GP-rel. address.  */ -+#define R_PARISC_GPREL16DF	95	/* 16 bits GP-rel. address.  */ -+#define R_PARISC_LTOFF64	96	/* 64 bits LT-rel. address.  */ -+#define R_PARISC_LTOFF14WR	99	/* LT-rel. address, right 14 bits.  */ -+#define R_PARISC_LTOFF14DR	100	/* LT-rel. address, right 14 bits.  */ -+#define R_PARISC_LTOFF16F	101	/* 16 bits LT-rel. address.  */ -+#define R_PARISC_LTOFF16WF	102	/* 16 bits LT-rel. address.  */ -+#define R_PARISC_LTOFF16DF	103	/* 16 bits LT-rel. address.  */ -+#define R_PARISC_SECREL64	104	/* 64 bits section rel. address.  */ -+#define R_PARISC_SEGREL64	112	/* 64 bits segment rel. address.  */ -+#define R_PARISC_PLTOFF14WR	115	/* PLT-rel. address, right 14 bits.  */ -+#define R_PARISC_PLTOFF14DR	116	/* PLT-rel. address, right 14 bits.  */ -+#define R_PARISC_PLTOFF16F	117	/* 16 bits LT-rel. address.  */ -+#define R_PARISC_PLTOFF16WF	118	/* 16 bits PLT-rel. address.  */ -+#define R_PARISC_PLTOFF16DF	119	/* 16 bits PLT-rel. address.  */ -+#define R_PARISC_LTOFF_FPTR64	120	/* 64 bits LT-rel. function ptr.  */ -+#define R_PARISC_LTOFF_FPTR14WR	123	/* LT-rel. fct. ptr., right 14 bits. */ -+#define R_PARISC_LTOFF_FPTR14DR	124	/* LT-rel. fct. ptr., right 14 bits. */ -+#define R_PARISC_LTOFF_FPTR16F	125	/* 16 bits LT-rel. function ptr.  */ -+#define R_PARISC_LTOFF_FPTR16WF	126	/* 16 bits LT-rel. function ptr.  */ -+#define R_PARISC_LTOFF_FPTR16DF	127	/* 16 bits LT-rel. function ptr.  */ -+#define R_PARISC_LORESERVE	128 -+#define R_PARISC_COPY		128	/* Copy relocation.  */ -+#define R_PARISC_IPLT		129	/* Dynamic reloc, imported PLT */ -+#define R_PARISC_EPLT		130	/* Dynamic reloc, exported PLT */ -+#define R_PARISC_TPREL32	153	/* 32 bits TP-rel. address.  */ -+#define R_PARISC_TPREL21L	154	/* TP-rel. address, left 21 bits.  */ -+#define R_PARISC_TPREL14R	158	/* TP-rel. address, right 14 bits.  */ -+#define R_PARISC_LTOFF_TP21L	162	/* LT-TP-rel. address, left 21 bits. */ -+#define R_PARISC_LTOFF_TP14R	166	/* LT-TP-rel. address, right 14 bits.*/ -+#define R_PARISC_LTOFF_TP14F	167	/* 14 bits LT-TP-rel. address.  */ -+#define R_PARISC_TPREL64	216	/* 64 bits TP-rel. address.  */ -+#define R_PARISC_TPREL14WR	219	/* TP-rel. address, right 14 bits.  */ -+#define R_PARISC_TPREL14DR	220	/* TP-rel. address, right 14 bits.  */ -+#define R_PARISC_TPREL16F	221	/* 16 bits TP-rel. address.  */ -+#define R_PARISC_TPREL16WF	222	/* 16 bits TP-rel. address.  */ -+#define R_PARISC_TPREL16DF	223	/* 16 bits TP-rel. address.  */ -+#define R_PARISC_LTOFF_TP64	224	/* 64 bits LT-TP-rel. address.  */ -+#define R_PARISC_LTOFF_TP14WR	227	/* LT-TP-rel. address, right 14 bits.*/ -+#define R_PARISC_LTOFF_TP14DR	228	/* LT-TP-rel. address, right 14 bits.*/ -+#define R_PARISC_LTOFF_TP16F	229	/* 16 bits LT-TP-rel. address.  */ -+#define R_PARISC_LTOFF_TP16WF	230	/* 16 bits LT-TP-rel. address.  */ -+#define R_PARISC_LTOFF_TP16DF	231	/* 16 bits LT-TP-rel. address.  */ -+#define R_PARISC_HIRESERVE	255 -+ -+/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr.  */ -+ -+#define PT_HP_TLS		(PT_LOOS + 0x0) -+#define PT_HP_CORE_NONE		(PT_LOOS + 0x1) -+#define PT_HP_CORE_VERSION	(PT_LOOS + 0x2) -+#define PT_HP_CORE_KERNEL	(PT_LOOS + 0x3) -+#define PT_HP_CORE_COMM		(PT_LOOS + 0x4) -+#define PT_HP_CORE_PROC		(PT_LOOS + 0x5) -+#define PT_HP_CORE_LOADABLE	(PT_LOOS + 0x6) -+#define PT_HP_CORE_STACK	(PT_LOOS + 0x7) -+#define PT_HP_CORE_SHM		(PT_LOOS + 0x8) -+#define PT_HP_CORE_MMF		(PT_LOOS + 0x9) -+#define PT_HP_PARALLEL		(PT_LOOS + 0x10) -+#define PT_HP_FASTBIND		(PT_LOOS + 0x11) -+#define PT_HP_OPT_ANNOT		(PT_LOOS + 0x12) -+#define PT_HP_HSL_ANNOT		(PT_LOOS + 0x13) -+#define PT_HP_STACK		(PT_LOOS + 0x14) -+ -+#define PT_PARISC_ARCHEXT	0x70000000 -+#define PT_PARISC_UNWIND	0x70000001 -+ -+/* Legal values for p_flags field of Elf32_Phdr/Elf64_Phdr.  */ -+ -+#define PF_PARISC_SBP		0x08000000 -+ -+#define PF_HP_PAGE_SIZE		0x00100000 -+#define PF_HP_FAR_SHARED	0x00200000 -+#define PF_HP_NEAR_SHARED	0x00400000 -+#define PF_HP_CODE		0x01000000 -+#define PF_HP_MODIFY		0x02000000 -+#define PF_HP_LAZYSWAP		0x04000000 -+#define PF_HP_SBP		0x08000000 -+ -+ -+/* Alpha specific definitions.  */ -+ -+/* Legal values for e_flags field of Elf64_Ehdr.  */ -+ -+#define EF_ALPHA_32BIT		1	/* All addresses must be < 2GB.  */ -+#define EF_ALPHA_CANRELAX	2	/* Relocations for relaxing exist.  */ -+ -+/* Legal values for sh_type field of Elf64_Shdr.  */ -+ -+/* These two are primerily concerned with ECOFF debugging info.  */ -+#define SHT_ALPHA_DEBUG		0x70000001 -+#define SHT_ALPHA_REGINFO	0x70000002 -+ -+/* Legal values for sh_flags field of Elf64_Shdr.  */ -+ -+#define SHF_ALPHA_GPREL		0x10000000 -+ -+/* Legal values for st_other field of Elf64_Sym.  */ -+#define STO_ALPHA_NOPV		0x80	/* No PV required.  */ -+#define STO_ALPHA_STD_GPLOAD	0x88	/* PV only used for initial ldgp.  */ -+ -+/* Alpha relocs.  */ -+ -+#define R_ALPHA_NONE		0	/* No reloc */ -+#define R_ALPHA_REFLONG		1	/* Direct 32 bit */ -+#define R_ALPHA_REFQUAD		2	/* Direct 64 bit */ -+#define R_ALPHA_GPREL32		3	/* GP relative 32 bit */ -+#define R_ALPHA_LITERAL		4	/* GP relative 16 bit w/optimization */ -+#define R_ALPHA_LITUSE		5	/* Optimization hint for LITERAL */ -+#define R_ALPHA_GPDISP		6	/* Add displacement to GP */ -+#define R_ALPHA_BRADDR		7	/* PC+4 relative 23 bit shifted */ -+#define R_ALPHA_HINT		8	/* PC+4 relative 16 bit shifted */ -+#define R_ALPHA_SREL16		9	/* PC relative 16 bit */ -+#define R_ALPHA_SREL32		10	/* PC relative 32 bit */ -+#define R_ALPHA_SREL64		11	/* PC relative 64 bit */ -+#define R_ALPHA_GPRELHIGH	17	/* GP relative 32 bit, high 16 bits */ -+#define R_ALPHA_GPRELLOW	18	/* GP relative 32 bit, low 16 bits */ -+#define R_ALPHA_GPREL16		19	/* GP relative 16 bit */ -+#define R_ALPHA_COPY		24	/* Copy symbol at runtime */ -+#define R_ALPHA_GLOB_DAT	25	/* Create GOT entry */ -+#define R_ALPHA_JMP_SLOT	26	/* Create PLT entry */ -+#define R_ALPHA_RELATIVE	27	/* Adjust by program base */ -+#define R_ALPHA_TLS_GD_HI	28 -+#define R_ALPHA_TLSGD		29 -+#define R_ALPHA_TLS_LDM		30 -+#define R_ALPHA_DTPMOD64	31 -+#define R_ALPHA_GOTDTPREL	32 -+#define R_ALPHA_DTPREL64	33 -+#define R_ALPHA_DTPRELHI	34 -+#define R_ALPHA_DTPRELLO	35 -+#define R_ALPHA_DTPREL16	36 -+#define R_ALPHA_GOTTPREL	37 -+#define R_ALPHA_TPREL64		38 -+#define R_ALPHA_TPRELHI		39 -+#define R_ALPHA_TPRELLO		40 -+#define R_ALPHA_TPREL16		41 -+/* Keep this the last entry.  */ -+#define R_ALPHA_NUM		46 -+ -+/* Magic values of the LITUSE relocation addend.  */ -+#define LITUSE_ALPHA_ADDR	0 -+#define LITUSE_ALPHA_BASE	1 -+#define LITUSE_ALPHA_BYTOFF	2 -+#define LITUSE_ALPHA_JSR	3 -+#define LITUSE_ALPHA_TLS_GD	4 -+#define LITUSE_ALPHA_TLS_LDM	5 -+ -+ -+/* PowerPC specific declarations */ -+ -+/* Values for Elf32/64_Ehdr.e_flags.  */ -+#define EF_PPC_EMB		0x80000000	/* PowerPC embedded flag */ -+ -+/* Cygnus local bits below */ -+#define EF_PPC_RELOCATABLE	0x00010000	/* PowerPC -mrelocatable flag*/ -+#define EF_PPC_RELOCATABLE_LIB	0x00008000	/* PowerPC -mrelocatable-lib -+						   flag */ -+ -+/* PowerPC relocations defined by the ABIs */ -+#define R_PPC_NONE		0 -+#define R_PPC_ADDR32		1	/* 32bit absolute address */ -+#define R_PPC_ADDR24		2	/* 26bit address, 2 bits ignored.  */ -+#define R_PPC_ADDR16		3	/* 16bit absolute address */ -+#define R_PPC_ADDR16_LO		4	/* lower 16bit of absolute address */ -+#define R_PPC_ADDR16_HI		5	/* high 16bit of absolute address */ -+#define R_PPC_ADDR16_HA		6	/* adjusted high 16bit */ -+#define R_PPC_ADDR14		7	/* 16bit address, 2 bits ignored */ -+#define R_PPC_ADDR14_BRTAKEN	8 -+#define R_PPC_ADDR14_BRNTAKEN	9 -+#define R_PPC_REL24		10	/* PC relative 26 bit */ -+#define R_PPC_REL14		11	/* PC relative 16 bit */ -+#define R_PPC_REL14_BRTAKEN	12 -+#define R_PPC_REL14_BRNTAKEN	13 -+#define R_PPC_GOT16		14 -+#define R_PPC_GOT16_LO		15 -+#define R_PPC_GOT16_HI		16 -+#define R_PPC_GOT16_HA		17 -+#define R_PPC_PLTREL24		18 -+#define R_PPC_COPY		19 -+#define R_PPC_GLOB_DAT		20 -+#define R_PPC_JMP_SLOT		21 -+#define R_PPC_RELATIVE		22 -+#define R_PPC_LOCAL24PC		23 -+#define R_PPC_UADDR32		24 -+#define R_PPC_UADDR16		25 -+#define R_PPC_REL32		26 -+#define R_PPC_PLT32		27 -+#define R_PPC_PLTREL32		28 -+#define R_PPC_PLT16_LO		29 -+#define R_PPC_PLT16_HI		30 -+#define R_PPC_PLT16_HA		31 -+#define R_PPC_SDAREL16		32 -+#define R_PPC_SECTOFF		33 -+#define R_PPC_SECTOFF_LO	34 -+#define R_PPC_SECTOFF_HI	35 -+#define R_PPC_SECTOFF_HA	36 -+ -+/* PowerPC relocations defined for the TLS access ABI.  */ -+#define R_PPC_TLS		67 /* none	(sym+add)@tls */ -+#define R_PPC_DTPMOD32		68 /* word32	(sym+add)@dtpmod */ -+#define R_PPC_TPREL16		69 /* half16*	(sym+add)@tprel */ -+#define R_PPC_TPREL16_LO	70 /* half16	(sym+add)@tprel@l */ -+#define R_PPC_TPREL16_HI	71 /* half16	(sym+add)@tprel@h */ -+#define R_PPC_TPREL16_HA	72 /* half16	(sym+add)@tprel@ha */ -+#define R_PPC_TPREL32		73 /* word32	(sym+add)@tprel */ -+#define R_PPC_DTPREL16		74 /* half16*	(sym+add)@dtprel */ -+#define R_PPC_DTPREL16_LO	75 /* half16	(sym+add)@dtprel@l */ -+#define R_PPC_DTPREL16_HI	76 /* half16	(sym+add)@dtprel@h */ -+#define R_PPC_DTPREL16_HA	77 /* half16	(sym+add)@dtprel@ha */ -+#define R_PPC_DTPREL32		78 /* word32	(sym+add)@dtprel */ -+#define R_PPC_GOT_TLSGD16	79 /* half16*	(sym+add)@got@tlsgd */ -+#define R_PPC_GOT_TLSGD16_LO	80 /* half16	(sym+add)@got@tlsgd@l */ -+#define R_PPC_GOT_TLSGD16_HI	81 /* half16	(sym+add)@got@tlsgd@h */ -+#define R_PPC_GOT_TLSGD16_HA	82 /* half16	(sym+add)@got@tlsgd@ha */ -+#define R_PPC_GOT_TLSLD16	83 /* half16*	(sym+add)@got@tlsld */ -+#define R_PPC_GOT_TLSLD16_LO	84 /* half16	(sym+add)@got@tlsld@l */ -+#define R_PPC_GOT_TLSLD16_HI	85 /* half16	(sym+add)@got@tlsld@h */ -+#define R_PPC_GOT_TLSLD16_HA	86 /* half16	(sym+add)@got@tlsld@ha */ -+#define R_PPC_GOT_TPREL16	87 /* half16*	(sym+add)@got@tprel */ -+#define R_PPC_GOT_TPREL16_LO	88 /* half16	(sym+add)@got@tprel@l */ -+#define R_PPC_GOT_TPREL16_HI	89 /* half16	(sym+add)@got@tprel@h */ -+#define R_PPC_GOT_TPREL16_HA	90 /* half16	(sym+add)@got@tprel@ha */ -+#define R_PPC_GOT_DTPREL16	91 /* half16*	(sym+add)@got@dtprel */ -+#define R_PPC_GOT_DTPREL16_LO	92 /* half16*	(sym+add)@got@dtprel@l */ -+#define R_PPC_GOT_DTPREL16_HI	93 /* half16*	(sym+add)@got@dtprel@h */ -+#define R_PPC_GOT_DTPREL16_HA	94 /* half16*	(sym+add)@got@dtprel@ha */ -+ -+/* Keep this the last entry.  */ -+#define R_PPC_NUM		95 -+ -+/* The remaining relocs are from the Embedded ELF ABI, and are not -+   in the SVR4 ELF ABI.  */ -+#define R_PPC_EMB_NADDR32	101 -+#define R_PPC_EMB_NADDR16	102 -+#define R_PPC_EMB_NADDR16_LO	103 -+#define R_PPC_EMB_NADDR16_HI	104 -+#define R_PPC_EMB_NADDR16_HA	105 -+#define R_PPC_EMB_SDAI16	106 -+#define R_PPC_EMB_SDA2I16	107 -+#define R_PPC_EMB_SDA2REL	108 -+#define R_PPC_EMB_SDA21		109	/* 16 bit offset in SDA */ -+#define R_PPC_EMB_MRKREF	110 -+#define R_PPC_EMB_RELSEC16	111 -+#define R_PPC_EMB_RELST_LO	112 -+#define R_PPC_EMB_RELST_HI	113 -+#define R_PPC_EMB_RELST_HA	114 -+#define R_PPC_EMB_BIT_FLD	115 -+#define R_PPC_EMB_RELSDA	116	/* 16 bit relative offset in SDA */ -+ -+/* Diab tool relocations.  */ -+#define R_PPC_DIAB_SDA21_LO	180	/* like EMB_SDA21, but lower 16 bit */ -+#define R_PPC_DIAB_SDA21_HI	181	/* like EMB_SDA21, but high 16 bit */ -+#define R_PPC_DIAB_SDA21_HA	182	/* like EMB_SDA21, adjusted high 16 */ -+#define R_PPC_DIAB_RELSDA_LO	183	/* like EMB_RELSDA, but lower 16 bit */ -+#define R_PPC_DIAB_RELSDA_HI	184	/* like EMB_RELSDA, but high 16 bit */ -+#define R_PPC_DIAB_RELSDA_HA	185	/* like EMB_RELSDA, adjusted high 16 */ -+ -+/* This is a phony reloc to handle any old fashioned TOC16 references -+   that may still be in object files.  */ -+#define R_PPC_TOC16		255 -+ -+ -+/* PowerPC64 relocations defined by the ABIs */ -+#define R_PPC64_NONE		R_PPC_NONE -+#define R_PPC64_ADDR32		R_PPC_ADDR32 /* 32bit absolute address */ -+#define R_PPC64_ADDR24		R_PPC_ADDR24 /* 26bit address, word aligned */ -+#define R_PPC64_ADDR16		R_PPC_ADDR16 /* 16bit absolute address */ -+#define R_PPC64_ADDR16_LO	R_PPC_ADDR16_LO	/* lower 16bits of address */ -+#define R_PPC64_ADDR16_HI	R_PPC_ADDR16_HI	/* high 16bits of address. */ -+#define R_PPC64_ADDR16_HA	R_PPC_ADDR16_HA /* adjusted high 16bits.  */ -+#define R_PPC64_ADDR14		R_PPC_ADDR14 /* 16bit address, word aligned */ -+#define R_PPC64_ADDR14_BRTAKEN	R_PPC_ADDR14_BRTAKEN -+#define R_PPC64_ADDR14_BRNTAKEN	R_PPC_ADDR14_BRNTAKEN -+#define R_PPC64_REL24		R_PPC_REL24 /* PC-rel. 26 bit, word aligned */ -+#define R_PPC64_REL14		R_PPC_REL14 /* PC relative 16 bit */ -+#define R_PPC64_REL14_BRTAKEN	R_PPC_REL14_BRTAKEN -+#define R_PPC64_REL14_BRNTAKEN	R_PPC_REL14_BRNTAKEN -+#define R_PPC64_GOT16		R_PPC_GOT16 -+#define R_PPC64_GOT16_LO	R_PPC_GOT16_LO -+#define R_PPC64_GOT16_HI	R_PPC_GOT16_HI -+#define R_PPC64_GOT16_HA	R_PPC_GOT16_HA -+ -+#define R_PPC64_COPY		R_PPC_COPY -+#define R_PPC64_GLOB_DAT	R_PPC_GLOB_DAT -+#define R_PPC64_JMP_SLOT	R_PPC_JMP_SLOT -+#define R_PPC64_RELATIVE	R_PPC_RELATIVE -+ -+#define R_PPC64_UADDR32		R_PPC_UADDR32 -+#define R_PPC64_UADDR16		R_PPC_UADDR16 -+#define R_PPC64_REL32		R_PPC_REL32 -+#define R_PPC64_PLT32		R_PPC_PLT32 -+#define R_PPC64_PLTREL32	R_PPC_PLTREL32 -+#define R_PPC64_PLT16_LO	R_PPC_PLT16_LO -+#define R_PPC64_PLT16_HI	R_PPC_PLT16_HI -+#define R_PPC64_PLT16_HA	R_PPC_PLT16_HA -+ -+#define R_PPC64_SECTOFF		R_PPC_SECTOFF -+#define R_PPC64_SECTOFF_LO	R_PPC_SECTOFF_LO -+#define R_PPC64_SECTOFF_HI	R_PPC_SECTOFF_HI -+#define R_PPC64_SECTOFF_HA	R_PPC_SECTOFF_HA -+#define R_PPC64_ADDR30		37 /* word30 (S + A - P) >> 2 */ -+#define R_PPC64_ADDR64		38 /* doubleword64 S + A */ -+#define R_PPC64_ADDR16_HIGHER	39 /* half16 #higher(S + A) */ -+#define R_PPC64_ADDR16_HIGHERA	40 /* half16 #highera(S + A) */ -+#define R_PPC64_ADDR16_HIGHEST	41 /* half16 #highest(S + A) */ -+#define R_PPC64_ADDR16_HIGHESTA	42 /* half16 #highesta(S + A) */ -+#define R_PPC64_UADDR64		43 /* doubleword64 S + A */ -+#define R_PPC64_REL64		44 /* doubleword64 S + A - P */ -+#define R_PPC64_PLT64		45 /* doubleword64 L + A */ -+#define R_PPC64_PLTREL64	46 /* doubleword64 L + A - P */ -+#define R_PPC64_TOC16		47 /* half16* S + A - .TOC */ -+#define R_PPC64_TOC16_LO	48 /* half16 #lo(S + A - .TOC.) */ -+#define R_PPC64_TOC16_HI	49 /* half16 #hi(S + A - .TOC.) */ -+#define R_PPC64_TOC16_HA	50 /* half16 #ha(S + A - .TOC.) */ -+#define R_PPC64_TOC		51 /* doubleword64 .TOC */ -+#define R_PPC64_PLTGOT16	52 /* half16* M + A */ -+#define R_PPC64_PLTGOT16_LO	53 /* half16 #lo(M + A) */ -+#define R_PPC64_PLTGOT16_HI	54 /* half16 #hi(M + A) */ -+#define R_PPC64_PLTGOT16_HA	55 /* half16 #ha(M + A) */ -+ -+#define R_PPC64_ADDR16_DS	56 /* half16ds* (S + A) >> 2 */ -+#define R_PPC64_ADDR16_LO_DS	57 /* half16ds  #lo(S + A) >> 2 */ -+#define R_PPC64_GOT16_DS	58 /* half16ds* (G + A) >> 2 */ -+#define R_PPC64_GOT16_LO_DS	59 /* half16ds  #lo(G + A) >> 2 */ -+#define R_PPC64_PLT16_LO_DS	60 /* half16ds  #lo(L + A) >> 2 */ -+#define R_PPC64_SECTOFF_DS	61 /* half16ds* (R + A) >> 2 */ -+#define R_PPC64_SECTOFF_LO_DS	62 /* half16ds  #lo(R + A) >> 2 */ -+#define R_PPC64_TOC16_DS	63 /* half16ds* (S + A - .TOC.) >> 2 */ -+#define R_PPC64_TOC16_LO_DS	64 /* half16ds  #lo(S + A - .TOC.) >> 2 */ -+#define R_PPC64_PLTGOT16_DS	65 /* half16ds* (M + A) >> 2 */ -+#define R_PPC64_PLTGOT16_LO_DS	66 /* half16ds  #lo(M + A) >> 2 */ -+ -+/* PowerPC64 relocations defined for the TLS access ABI.  */ -+#define R_PPC64_TLS		67 /* none	(sym+add)@tls */ -+#define R_PPC64_DTPMOD64	68 /* doubleword64 (sym+add)@dtpmod */ -+#define R_PPC64_TPREL16		69 /* half16*	(sym+add)@tprel */ -+#define R_PPC64_TPREL16_LO	70 /* half16	(sym+add)@tprel@l */ -+#define R_PPC64_TPREL16_HI	71 /* half16	(sym+add)@tprel@h */ -+#define R_PPC64_TPREL16_HA	72 /* half16	(sym+add)@tprel@ha */ -+#define R_PPC64_TPREL64		73 /* doubleword64 (sym+add)@tprel */ -+#define R_PPC64_DTPREL16	74 /* half16*	(sym+add)@dtprel */ -+#define R_PPC64_DTPREL16_LO	75 /* half16	(sym+add)@dtprel@l */ -+#define R_PPC64_DTPREL16_HI	76 /* half16	(sym+add)@dtprel@h */ -+#define R_PPC64_DTPREL16_HA	77 /* half16	(sym+add)@dtprel@ha */ -+#define R_PPC64_DTPREL64	78 /* doubleword64 (sym+add)@dtprel */ -+#define R_PPC64_GOT_TLSGD16	79 /* half16*	(sym+add)@got@tlsgd */ -+#define R_PPC64_GOT_TLSGD16_LO	80 /* half16	(sym+add)@got@tlsgd@l */ -+#define R_PPC64_GOT_TLSGD16_HI	81 /* half16	(sym+add)@got@tlsgd@h */ -+#define R_PPC64_GOT_TLSGD16_HA	82 /* half16	(sym+add)@got@tlsgd@ha */ -+#define R_PPC64_GOT_TLSLD16	83 /* half16*	(sym+add)@got@tlsld */ -+#define R_PPC64_GOT_TLSLD16_LO	84 /* half16	(sym+add)@got@tlsld@l */ -+#define R_PPC64_GOT_TLSLD16_HI	85 /* half16	(sym+add)@got@tlsld@h */ -+#define R_PPC64_GOT_TLSLD16_HA	86 /* half16	(sym+add)@got@tlsld@ha */ -+#define R_PPC64_GOT_TPREL16_DS	87 /* half16ds*	(sym+add)@got@tprel */ -+#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l */ -+#define R_PPC64_GOT_TPREL16_HI	89 /* half16	(sym+add)@got@tprel@h */ -+#define R_PPC64_GOT_TPREL16_HA	90 /* half16	(sym+add)@got@tprel@ha */ -+#define R_PPC64_GOT_DTPREL16_DS	91 /* half16ds*	(sym+add)@got@dtprel */ -+#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l */ -+#define R_PPC64_GOT_DTPREL16_HI	93 /* half16	(sym+add)@got@dtprel@h */ -+#define R_PPC64_GOT_DTPREL16_HA	94 /* half16	(sym+add)@got@dtprel@ha */ -+#define R_PPC64_TPREL16_DS	95 /* half16ds*	(sym+add)@tprel */ -+#define R_PPC64_TPREL16_LO_DS	96 /* half16ds	(sym+add)@tprel@l */ -+#define R_PPC64_TPREL16_HIGHER	97 /* half16	(sym+add)@tprel@higher */ -+#define R_PPC64_TPREL16_HIGHERA	98 /* half16	(sym+add)@tprel@highera */ -+#define R_PPC64_TPREL16_HIGHEST	99 /* half16	(sym+add)@tprel@highest */ -+#define R_PPC64_TPREL16_HIGHESTA 100 /* half16	(sym+add)@tprel@highesta */ -+#define R_PPC64_DTPREL16_DS	101 /* half16ds* (sym+add)@dtprel */ -+#define R_PPC64_DTPREL16_LO_DS	102 /* half16ds	(sym+add)@dtprel@l */ -+#define R_PPC64_DTPREL16_HIGHER	103 /* half16	(sym+add)@dtprel@higher */ -+#define R_PPC64_DTPREL16_HIGHERA 104 /* half16	(sym+add)@dtprel@highera */ -+#define R_PPC64_DTPREL16_HIGHEST 105 /* half16	(sym+add)@dtprel@highest */ -+#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16	(sym+add)@dtprel@highesta */ -+ -+/* Keep this the last entry.  */ -+#define R_PPC64_NUM		107 -+ -+/* PowerPC64 specific values for the Dyn d_tag field.  */ -+#define DT_PPC64_GLINK  (DT_LOPROC + 0) -+#define DT_PPC64_NUM    1 -+ -+ -+/* ARM specific declarations */ -+ -+/* Processor specific flags for the ELF header e_flags field.  */ -+#define EF_ARM_RELEXEC     0x01 -+#define EF_ARM_HASENTRY    0x02 -+#define EF_ARM_INTERWORK   0x04 -+#define EF_ARM_APCS_26     0x08 -+#define EF_ARM_APCS_FLOAT  0x10 -+#define EF_ARM_PIC         0x20 -+#define EF_ARM_ALIGN8      0x40		/* 8-bit structure alignment is in use */ -+#define EF_ARM_NEW_ABI     0x80 -+#define EF_ARM_OLD_ABI     0x100 -+ -+/* Other constants defined in the ARM ELF spec. version B-01.  */ -+/* NB. These conflict with values defined above.  */ -+#define EF_ARM_SYMSARESORTED	0x04 -+#define EF_ARM_DYNSYMSUSESEGIDX 0x08 -+#define EF_ARM_MAPSYMSFIRST	0x10 -+#define EF_ARM_EABIMASK		0XFF000000 -+ -+#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) -+#define EF_ARM_EABI_UNKNOWN  0x00000000 -+#define EF_ARM_EABI_VER1     0x01000000 -+#define EF_ARM_EABI_VER2     0x02000000 -+ -+/* Additional symbol types for Thumb */ -+#define STT_ARM_TFUNC      0xd -+ -+/* ARM-specific values for sh_flags */ -+#define SHF_ARM_ENTRYSECT  0x10000000   /* Section contains an entry point */ -+#define SHF_ARM_COMDEF     0x80000000   /* Section may be multiply defined -+					   in the input to a link step */ -+ -+/* ARM-specific program header flags */ -+#define PF_ARM_SB          0x10000000   /* Segment contains the location -+					   addressed by the static base */ -+ -+/* ARM relocs.  */ -+#define R_ARM_NONE		0	/* No reloc */ -+#define R_ARM_PC24		1	/* PC relative 26 bit branch */ -+#define R_ARM_ABS32		2	/* Direct 32 bit  */ -+#define R_ARM_REL32		3	/* PC relative 32 bit */ -+#define R_ARM_PC13		4 -+#define R_ARM_ABS16		5	/* Direct 16 bit */ -+#define R_ARM_ABS12		6	/* Direct 12 bit */ -+#define R_ARM_THM_ABS5		7 -+#define R_ARM_ABS8		8	/* Direct 8 bit */ -+#define R_ARM_SBREL32		9 -+#define R_ARM_THM_PC22		10 -+#define R_ARM_THM_PC8		11 -+#define R_ARM_AMP_VCALL9	12 -+#define R_ARM_SWI24		13 -+#define R_ARM_THM_SWI8		14 -+#define R_ARM_XPC25		15 -+#define R_ARM_THM_XPC22		16 -+#define R_ARM_COPY		20	/* Copy symbol at runtime */ -+#define R_ARM_GLOB_DAT		21	/* Create GOT entry */ -+#define R_ARM_JUMP_SLOT		22	/* Create PLT entry */ -+#define R_ARM_RELATIVE		23	/* Adjust by program base */ -+#define R_ARM_GOTOFF		24	/* 32 bit offset to GOT */ -+#define R_ARM_GOTPC		25	/* 32 bit PC relative offset to GOT */ -+#define R_ARM_GOT32		26	/* 32 bit GOT entry */ -+#define R_ARM_PLT32		27	/* 32 bit PLT address */ -+#define R_ARM_ALU_PCREL_7_0	32 -+#define R_ARM_ALU_PCREL_15_8	33 -+#define R_ARM_ALU_PCREL_23_15	34 -+#define R_ARM_LDR_SBREL_11_0	35 -+#define R_ARM_ALU_SBREL_19_12	36 -+#define R_ARM_ALU_SBREL_27_20	37 -+#define R_ARM_GNU_VTENTRY	100 -+#define R_ARM_GNU_VTINHERIT	101 -+#define R_ARM_THM_PC11		102	/* thumb unconditional branch */ -+#define R_ARM_THM_PC9		103	/* thumb conditional branch */ -+#define R_ARM_RXPC25		249 -+#define R_ARM_RSBREL32		250 -+#define R_ARM_THM_RPC22		251 -+#define R_ARM_RREL32		252 -+#define R_ARM_RABS22		253 -+#define R_ARM_RPC24		254 -+#define R_ARM_RBASE		255 -+/* Keep this the last entry.  */ -+#define R_ARM_NUM		256 -+ -+/* IA-64 specific declarations.  */ -+ -+/* Processor specific flags for the Ehdr e_flags field.  */ -+#define EF_IA_64_MASKOS		0x0000000f	/* os-specific flags */ -+#define EF_IA_64_ABI64		0x00000010	/* 64-bit ABI */ -+#define EF_IA_64_ARCH		0xff000000	/* arch. version mask */ -+ -+/* Processor specific values for the Phdr p_type field.  */ -+#define PT_IA_64_ARCHEXT	(PT_LOPROC + 0)	/* arch extension bits */ -+#define PT_IA_64_UNWIND		(PT_LOPROC + 1)	/* ia64 unwind bits */ -+ -+/* Processor specific flags for the Phdr p_flags field.  */ -+#define PF_IA_64_NORECOV	0x80000000	/* spec insns w/o recovery */ -+ -+/* Processor specific values for the Shdr sh_type field.  */ -+#define SHT_IA_64_EXT		(SHT_LOPROC + 0) /* extension bits */ -+#define SHT_IA_64_UNWIND	(SHT_LOPROC + 1) /* unwind bits */ -+ -+/* Processor specific flags for the Shdr sh_flags field.  */ -+#define SHF_IA_64_SHORT		0x10000000	/* section near gp */ -+#define SHF_IA_64_NORECOV	0x20000000	/* spec insns w/o recovery */ -+ -+/* Processor specific values for the Dyn d_tag field.  */ -+#define DT_IA_64_PLT_RESERVE	(DT_LOPROC + 0) -+#define DT_IA_64_NUM		1 -+ -+/* IA-64 relocations.  */ -+#define R_IA64_NONE		0x00	/* none */ -+#define R_IA64_IMM14		0x21	/* symbol + addend, add imm14 */ -+#define R_IA64_IMM22		0x22	/* symbol + addend, add imm22 */ -+#define R_IA64_IMM64		0x23	/* symbol + addend, mov imm64 */ -+#define R_IA64_DIR32MSB		0x24	/* symbol + addend, data4 MSB */ -+#define R_IA64_DIR32LSB		0x25	/* symbol + addend, data4 LSB */ -+#define R_IA64_DIR64MSB		0x26	/* symbol + addend, data8 MSB */ -+#define R_IA64_DIR64LSB		0x27	/* symbol + addend, data8 LSB */ -+#define R_IA64_GPREL22		0x2a	/* @gprel(sym + add), add imm22 */ -+#define R_IA64_GPREL64I		0x2b	/* @gprel(sym + add), mov imm64 */ -+#define R_IA64_GPREL32MSB	0x2c	/* @gprel(sym + add), data4 MSB */ -+#define R_IA64_GPREL32LSB	0x2d	/* @gprel(sym + add), data4 LSB */ -+#define R_IA64_GPREL64MSB	0x2e	/* @gprel(sym + add), data8 MSB */ -+#define R_IA64_GPREL64LSB	0x2f	/* @gprel(sym + add), data8 LSB */ -+#define R_IA64_LTOFF22		0x32	/* @ltoff(sym + add), add imm22 */ -+#define R_IA64_LTOFF64I		0x33	/* @ltoff(sym + add), mov imm64 */ -+#define R_IA64_PLTOFF22		0x3a	/* @pltoff(sym + add), add imm22 */ -+#define R_IA64_PLTOFF64I	0x3b	/* @pltoff(sym + add), mov imm64 */ -+#define R_IA64_PLTOFF64MSB	0x3e	/* @pltoff(sym + add), data8 MSB */ -+#define R_IA64_PLTOFF64LSB	0x3f	/* @pltoff(sym + add), data8 LSB */ -+#define R_IA64_FPTR64I		0x43	/* @fptr(sym + add), mov imm64 */ -+#define R_IA64_FPTR32MSB	0x44	/* @fptr(sym + add), data4 MSB */ -+#define R_IA64_FPTR32LSB	0x45	/* @fptr(sym + add), data4 LSB */ -+#define R_IA64_FPTR64MSB	0x46	/* @fptr(sym + add), data8 MSB */ -+#define R_IA64_FPTR64LSB	0x47	/* @fptr(sym + add), data8 LSB */ -+#define R_IA64_PCREL60B		0x48	/* @pcrel(sym + add), brl */ -+#define R_IA64_PCREL21B		0x49	/* @pcrel(sym + add), ptb, call */ -+#define R_IA64_PCREL21M		0x4a	/* @pcrel(sym + add), chk.s */ -+#define R_IA64_PCREL21F		0x4b	/* @pcrel(sym + add), fchkf */ -+#define R_IA64_PCREL32MSB	0x4c	/* @pcrel(sym + add), data4 MSB */ -+#define R_IA64_PCREL32LSB	0x4d	/* @pcrel(sym + add), data4 LSB */ -+#define R_IA64_PCREL64MSB	0x4e	/* @pcrel(sym + add), data8 MSB */ -+#define R_IA64_PCREL64LSB	0x4f	/* @pcrel(sym + add), data8 LSB */ -+#define R_IA64_LTOFF_FPTR22	0x52	/* @ltoff(@fptr(s+a)), imm22 */ -+#define R_IA64_LTOFF_FPTR64I	0x53	/* @ltoff(@fptr(s+a)), imm64 */ -+#define R_IA64_LTOFF_FPTR32MSB	0x54	/* @ltoff(@fptr(s+a)), data4 MSB */ -+#define R_IA64_LTOFF_FPTR32LSB	0x55	/* @ltoff(@fptr(s+a)), data4 LSB */ -+#define R_IA64_LTOFF_FPTR64MSB	0x56	/* @ltoff(@fptr(s+a)), data8 MSB */ -+#define R_IA64_LTOFF_FPTR64LSB	0x57	/* @ltoff(@fptr(s+a)), data8 LSB */ -+#define R_IA64_SEGREL32MSB	0x5c	/* @segrel(sym + add), data4 MSB */ -+#define R_IA64_SEGREL32LSB	0x5d	/* @segrel(sym + add), data4 LSB */ -+#define R_IA64_SEGREL64MSB	0x5e	/* @segrel(sym + add), data8 MSB */ -+#define R_IA64_SEGREL64LSB	0x5f	/* @segrel(sym + add), data8 LSB */ -+#define R_IA64_SECREL32MSB	0x64	/* @secrel(sym + add), data4 MSB */ -+#define R_IA64_SECREL32LSB	0x65	/* @secrel(sym + add), data4 LSB */ -+#define R_IA64_SECREL64MSB	0x66	/* @secrel(sym + add), data8 MSB */ -+#define R_IA64_SECREL64LSB	0x67	/* @secrel(sym + add), data8 LSB */ -+#define R_IA64_REL32MSB		0x6c	/* data 4 + REL */ -+#define R_IA64_REL32LSB		0x6d	/* data 4 + REL */ -+#define R_IA64_REL64MSB		0x6e	/* data 8 + REL */ -+#define R_IA64_REL64LSB		0x6f	/* data 8 + REL */ -+#define R_IA64_LTV32MSB		0x74	/* symbol + addend, data4 MSB */ -+#define R_IA64_LTV32LSB		0x75	/* symbol + addend, data4 LSB */ -+#define R_IA64_LTV64MSB		0x76	/* symbol + addend, data8 MSB */ -+#define R_IA64_LTV64LSB		0x77	/* symbol + addend, data8 LSB */ -+#define R_IA64_PCREL21BI	0x79	/* @pcrel(sym + add), 21bit inst */ -+#define R_IA64_PCREL22		0x7a	/* @pcrel(sym + add), 22bit inst */ -+#define R_IA64_PCREL64I		0x7b	/* @pcrel(sym + add), 64bit inst */ -+#define R_IA64_IPLTMSB		0x80	/* dynamic reloc, imported PLT, MSB */ -+#define R_IA64_IPLTLSB		0x81	/* dynamic reloc, imported PLT, LSB */ -+#define R_IA64_COPY		0x84	/* copy relocation */ -+#define R_IA64_SUB		0x85	/* Addend and symbol difference */ -+#define R_IA64_LTOFF22X		0x86	/* LTOFF22, relaxable.  */ -+#define R_IA64_LDXMOV		0x87	/* Use of LTOFF22X.  */ -+#define R_IA64_TPREL14		0x91	/* @tprel(sym + add), imm14 */ -+#define R_IA64_TPREL22		0x92	/* @tprel(sym + add), imm22 */ -+#define R_IA64_TPREL64I		0x93	/* @tprel(sym + add), imm64 */ -+#define R_IA64_TPREL64MSB	0x96	/* @tprel(sym + add), data8 MSB */ -+#define R_IA64_TPREL64LSB	0x97	/* @tprel(sym + add), data8 LSB */ -+#define R_IA64_LTOFF_TPREL22	0x9a	/* @ltoff(@tprel(s+a)), imm2 */ -+#define R_IA64_DTPMOD64MSB	0xa6	/* @dtpmod(sym + add), data8 MSB */ -+#define R_IA64_DTPMOD64LSB	0xa7	/* @dtpmod(sym + add), data8 LSB */ -+#define R_IA64_LTOFF_DTPMOD22	0xaa	/* @ltoff(@dtpmod(sym + add)), imm22 */ -+#define R_IA64_DTPREL14		0xb1	/* @dtprel(sym + add), imm14 */ -+#define R_IA64_DTPREL22		0xb2	/* @dtprel(sym + add), imm22 */ -+#define R_IA64_DTPREL64I	0xb3	/* @dtprel(sym + add), imm64 */ -+#define R_IA64_DTPREL32MSB	0xb4	/* @dtprel(sym + add), data4 MSB */ -+#define R_IA64_DTPREL32LSB	0xb5	/* @dtprel(sym + add), data4 LSB */ -+#define R_IA64_DTPREL64MSB	0xb6	/* @dtprel(sym + add), data8 MSB */ -+#define R_IA64_DTPREL64LSB	0xb7	/* @dtprel(sym + add), data8 LSB */ -+#define R_IA64_LTOFF_DTPREL22	0xba	/* @ltoff(@dtprel(s+a)), imm22 */ -+ -+/* SH specific declarations */ -+ -+/* SH relocs.  */ -+#define	R_SH_NONE		0 -+#define	R_SH_DIR32		1 -+#define	R_SH_REL32		2 -+#define	R_SH_DIR8WPN		3 -+#define	R_SH_IND12W		4 -+#define	R_SH_DIR8WPL		5 -+#define	R_SH_DIR8WPZ		6 -+#define	R_SH_DIR8BP		7 -+#define	R_SH_DIR8W		8 -+#define	R_SH_DIR8L		9 -+#define	R_SH_SWITCH16		25 -+#define	R_SH_SWITCH32		26 -+#define	R_SH_USES		27 -+#define	R_SH_COUNT		28 -+#define	R_SH_ALIGN		29 -+#define	R_SH_CODE		30 -+#define	R_SH_DATA		31 -+#define	R_SH_LABEL		32 -+#define	R_SH_SWITCH8		33 -+#define	R_SH_GNU_VTINHERIT	34 -+#define	R_SH_GNU_VTENTRY	35 -+#define	R_SH_TLS_GD_32		144 -+#define	R_SH_TLS_LD_32		145 -+#define	R_SH_TLS_LDO_32		146 -+#define	R_SH_TLS_IE_32		147 -+#define	R_SH_TLS_LE_32		148 -+#define	R_SH_TLS_DTPMOD32	149 -+#define	R_SH_TLS_DTPOFF32	150 -+#define	R_SH_TLS_TPOFF32	151 -+#define	R_SH_GOT32		160 -+#define	R_SH_PLT32		161 -+#define	R_SH_COPY		162 -+#define	R_SH_GLOB_DAT		163 -+#define	R_SH_JMP_SLOT		164 -+#define	R_SH_RELATIVE		165 -+#define	R_SH_GOTOFF		166 -+#define	R_SH_GOTPC		167 -+/* Keep this the last entry.  */ -+#define	R_SH_NUM		256 -+ -+/* Additional s390 relocs */ -+ -+#define R_390_NONE		0	/* No reloc.  */ -+#define R_390_8			1	/* Direct 8 bit.  */ -+#define R_390_12		2	/* Direct 12 bit.  */ -+#define R_390_16		3	/* Direct 16 bit.  */ -+#define R_390_32		4	/* Direct 32 bit.  */ -+#define R_390_PC32		5	/* PC relative 32 bit.	*/ -+#define R_390_GOT12		6	/* 12 bit GOT offset.  */ -+#define R_390_GOT32		7	/* 32 bit GOT offset.  */ -+#define R_390_PLT32		8	/* 32 bit PC relative PLT address.  */ -+#define R_390_COPY		9	/* Copy symbol at runtime.  */ -+#define R_390_GLOB_DAT		10	/* Create GOT entry.  */ -+#define R_390_JMP_SLOT		11	/* Create PLT entry.  */ -+#define R_390_RELATIVE		12	/* Adjust by program base.  */ -+#define R_390_GOTOFF32		13	/* 32 bit offset to GOT.	 */ -+#define R_390_GOTPC		14	/* 32 bit PC relative offset to GOT.  */ -+#define R_390_GOT16		15	/* 16 bit GOT offset.  */ -+#define R_390_PC16		16	/* PC relative 16 bit.	*/ -+#define R_390_PC16DBL		17	/* PC relative 16 bit shifted by 1.  */ -+#define R_390_PLT16DBL		18	/* 16 bit PC rel. PLT shifted by 1.  */ -+#define R_390_PC32DBL		19	/* PC relative 32 bit shifted by 1.  */ -+#define R_390_PLT32DBL		20	/* 32 bit PC rel. PLT shifted by 1.  */ -+#define R_390_GOTPCDBL		21	/* 32 bit PC rel. GOT shifted by 1.  */ -+#define R_390_64		22	/* Direct 64 bit.  */ -+#define R_390_PC64		23	/* PC relative 64 bit.	*/ -+#define R_390_GOT64		24	/* 64 bit GOT offset.  */ -+#define R_390_PLT64		25	/* 64 bit PC relative PLT address.  */ -+#define R_390_GOTENT		26	/* 32 bit PC rel. to GOT entry >> 1. */ -+#define R_390_GOTOFF16		27	/* 16 bit offset to GOT. */ -+#define R_390_GOTOFF64		28	/* 64 bit offset to GOT. */ -+#define R_390_GOTPLT12		29	/* 12 bit offset to jump slot.	*/ -+#define R_390_GOTPLT16		30	/* 16 bit offset to jump slot.	*/ -+#define R_390_GOTPLT32		31	/* 32 bit offset to jump slot.	*/ -+#define R_390_GOTPLT64		32	/* 64 bit offset to jump slot.	*/ -+#define R_390_GOTPLTENT		33	/* 32 bit rel. offset to jump slot.  */ -+#define R_390_PLTOFF16		34	/* 16 bit offset from GOT to PLT. */ -+#define R_390_PLTOFF32		35	/* 32 bit offset from GOT to PLT. */ -+#define R_390_PLTOFF64		36	/* 16 bit offset from GOT to PLT. */ -+#define R_390_TLS_LOAD		37	/* Tag for load insn in TLS code.  */ -+#define R_390_TLS_GDCALL	38	/* Tag for function call in general -+					   dynamic TLS code. */ -+#define R_390_TLS_LDCALL	39	/* Tag for function call in local -+					   dynamic TLS code. */ -+#define R_390_TLS_GD32		40	/* Direct 32 bit for general dynamic -+					   thread local data.  */ -+#define R_390_TLS_GD64		41	/* Direct 64 bit for general dynamic -+					  thread local data.  */ -+#define R_390_TLS_GOTIE12	42	/* 12 bit GOT offset for static TLS -+					   block offset.  */ -+#define R_390_TLS_GOTIE32	43	/* 32 bit GOT offset for static TLS -+					   block offset.  */ -+#define R_390_TLS_GOTIE64	44	/* 64 bit GOT offset for static TLS -+					   block offset. */ -+#define R_390_TLS_LDM32		45	/* Direct 32 bit for local dynamic -+					   thread local data in LE code.  */ -+#define R_390_TLS_LDM64		46	/* Direct 64 bit for local dynamic -+					   thread local data in LE code.  */ -+#define R_390_TLS_IE32		47	/* 32 bit address of GOT entry for -+					   negated static TLS block offset.  */ -+#define R_390_TLS_IE64		48	/* 64 bit address of GOT entry for -+					   negated static TLS block offset.  */ -+#define R_390_TLS_IEENT		49	/* 32 bit rel. offset to GOT entry for -+					   negated static TLS block offset.  */ -+#define R_390_TLS_LE32		50	/* 32 bit negated offset relative to -+					   static TLS block.  */ -+#define R_390_TLS_LE64		51	/* 64 bit negated offset relative to -+					   static TLS block.  */ -+#define R_390_TLS_LDO32		52	/* 32 bit offset relative to TLS -+					   block.  */ -+#define R_390_TLS_LDO64		53	/* 64 bit offset relative to TLS -+					   block.  */ -+#define R_390_TLS_DTPMOD	54	/* ID of module containing symbol.  */ -+#define R_390_TLS_DTPOFF	55	/* Offset in TLS block.	 */ -+#define R_390_TLS_TPOFF		56	/* Negated offset in static TLS -+					   block.  */ -+ -+/* Keep this the last entry.  */ -+#define R_390_NUM		57 -+ -+/* CRIS relocations.  */ -+#define R_CRIS_NONE		0 -+#define R_CRIS_8		1 -+#define R_CRIS_16		2 -+#define R_CRIS_32		3 -+#define R_CRIS_8_PCREL		4 -+#define R_CRIS_16_PCREL		5 -+#define R_CRIS_32_PCREL		6 -+#define R_CRIS_GNU_VTINHERIT	7 -+#define R_CRIS_GNU_VTENTRY	8 -+#define R_CRIS_COPY		9 -+#define R_CRIS_GLOB_DAT		10 -+#define R_CRIS_JUMP_SLOT	11 -+#define R_CRIS_RELATIVE		12 -+#define R_CRIS_16_GOT		13 -+#define R_CRIS_32_GOT		14 -+#define R_CRIS_16_GOTPLT	15 -+#define R_CRIS_32_GOTPLT	16 -+#define R_CRIS_32_GOTREL	17 -+#define R_CRIS_32_PLT_GOTREL	18 -+#define R_CRIS_32_PLT_PCREL	19 -+ -+#define R_CRIS_NUM		20 -+ -+/* AMD x86-64 relocations.  */ -+#define R_X86_64_NONE		0	/* No reloc */ -+#define R_X86_64_64		1	/* Direct 64 bit  */ -+#define R_X86_64_PC32		2	/* PC relative 32 bit signed */ -+#define R_X86_64_GOT32		3	/* 32 bit GOT entry */ -+#define R_X86_64_PLT32		4	/* 32 bit PLT address */ -+#define R_X86_64_COPY		5	/* Copy symbol at runtime */ -+#define R_X86_64_GLOB_DAT	6	/* Create GOT entry */ -+#define R_X86_64_JUMP_SLOT	7	/* Create PLT entry */ -+#define R_X86_64_RELATIVE	8	/* Adjust by program base */ -+#define R_X86_64_GOTPCREL	9	/* 32 bit signed PC relative -+					   offset to GOT */ -+#define R_X86_64_32		10	/* Direct 32 bit zero extended */ -+#define R_X86_64_32S		11	/* Direct 32 bit sign extended */ -+#define R_X86_64_16		12	/* Direct 16 bit zero extended */ -+#define R_X86_64_PC16		13	/* 16 bit sign extended pc relative */ -+#define R_X86_64_8		14	/* Direct 8 bit sign extended  */ -+#define R_X86_64_PC8		15	/* 8 bit sign extended pc relative */ -+#define R_X86_64_DTPMOD64	16	/* ID of module containing symbol */ -+#define R_X86_64_DTPOFF64	17	/* Offset in module's TLS block */ -+#define R_X86_64_TPOFF64	18	/* Offset in initial TLS block */ -+#define R_X86_64_TLSGD		19	/* 32 bit signed PC relative offset -+					   to two GOT entries for GD symbol */ -+#define R_X86_64_TLSLD		20	/* 32 bit signed PC relative offset -+					   to two GOT entries for LD symbol */ -+#define R_X86_64_DTPOFF32	21	/* Offset in TLS block */ -+#define R_X86_64_GOTTPOFF	22	/* 32 bit signed PC relative offset -+					   to GOT entry for IE symbol */ -+#define R_X86_64_TPOFF32	23	/* Offset in initial TLS block */ -+ -+#define R_X86_64_NUM		24 -+ -+__END_DECLS -+ -+#endif	/* elf.h */ -  - #include "elfconfig.h" -  -@@ -195,3 +2641,4 @@ - void fatal(const char *fmt, ...); - void warn(const char *fmt, ...); - void merror(const char *fmt, ...); -+ -diff -Nur linux-2.6.36.orig/scripts/mod/sumversion.c linux-2.6.36/scripts/mod/sumversion.c ---- linux-2.6.36.orig/scripts/mod/sumversion.c	2010-10-20 22:30:22.000000000 +0200 -+++ linux-2.6.36/scripts/mod/sumversion.c	2010-11-28 18:33:24.000000000 +0100 -@@ -1,4 +1,4 @@ --#include <netinet/in.h> -+/* #include <netinet/in.h> */ - #ifdef __sun__ - #include <inttypes.h> - #else diff --git a/target/linux/patches/4.19.320/darwin-file2alias.patch b/target/linux/patches/4.19.320/darwin-file2alias.patch deleted file mode 100644 index fdbc598a8..000000000 --- a/target/linux/patches/4.19.320/darwin-file2alias.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -Nur linux-5.4.42.orig/scripts/mod/file2alias.c linux-5.4.42/scripts/mod/file2alias.c ---- linux-5.4.42.orig/scripts/mod/file2alias.c	2020-05-20 08:20:41.000000000 +0200 -+++ linux-5.4.42/scripts/mod/file2alias.c	2020-06-06 20:14:59.000000000 +0200 -@@ -10,6 +10,10 @@ -  * of the GNU General Public License, incorporated herein by reference. -  */ -  -+/* workaround for Darwin */ -+#define _UUID_T -+#define __GETHOSTUUID_H -+ - #include "modpost.h" - #include "devicetable-offsets.h" -  diff --git a/target/linux/patches/5.10.234/darwin-file2alias.patch b/target/linux/patches/5.10.234/darwin-file2alias.patch deleted file mode 100644 index fdbc598a8..000000000 --- a/target/linux/patches/5.10.234/darwin-file2alias.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -Nur linux-5.4.42.orig/scripts/mod/file2alias.c linux-5.4.42/scripts/mod/file2alias.c ---- linux-5.4.42.orig/scripts/mod/file2alias.c	2020-05-20 08:20:41.000000000 +0200 -+++ linux-5.4.42/scripts/mod/file2alias.c	2020-06-06 20:14:59.000000000 +0200 -@@ -10,6 +10,10 @@ -  * of the GNU General Public License, incorporated herein by reference. -  */ -  -+/* workaround for Darwin */ -+#define _UUID_T -+#define __GETHOSTUUID_H -+ - #include "modpost.h" - #include "devicetable-offsets.h" -  diff --git a/target/linux/patches/5.10.234/arc.patch b/target/linux/patches/5.10.236/arc.patch index 20810ce64..20810ce64 100644 --- a/target/linux/patches/5.10.234/arc.patch +++ b/target/linux/patches/5.10.236/arc.patch diff --git a/target/linux/patches/5.10.234/darwin-dtc.patch b/target/linux/patches/5.10.236/darwin-dtc.patch index 0cdc23ab4..0cdc23ab4 100644 --- a/target/linux/patches/5.10.234/darwin-dtc.patch +++ b/target/linux/patches/5.10.236/darwin-dtc.patch diff --git a/target/linux/patches/5.10.234/dtc-noyaml.patch b/target/linux/patches/5.10.236/dtc-noyaml.patch index 759bb01f7..759bb01f7 100644 --- a/target/linux/patches/5.10.234/dtc-noyaml.patch +++ b/target/linux/patches/5.10.236/dtc-noyaml.patch diff --git a/target/linux/patches/5.10.234/nds32-ag101p.patch b/target/linux/patches/5.10.236/nds32-ag101p.patch index a8beea478..a8beea478 100644 --- a/target/linux/patches/5.10.234/nds32-ag101p.patch +++ b/target/linux/patches/5.10.236/nds32-ag101p.patch diff --git a/target/linux/patches/5.10.234/or1k-more-ram.patch b/target/linux/patches/5.10.236/or1k-more-ram.patch index de848c838..de848c838 100644 --- a/target/linux/patches/5.10.234/or1k-more-ram.patch +++ b/target/linux/patches/5.10.236/or1k-more-ram.patch diff --git a/target/linux/patches/5.10.234/relocs.patch b/target/linux/patches/5.10.236/relocs.patch index 5bcd974c7..5bcd974c7 100644 --- a/target/linux/patches/5.10.234/relocs.patch +++ b/target/linux/patches/5.10.236/relocs.patch diff --git a/target/linux/patches/5.10.234/startup.patch b/target/linux/patches/5.10.236/startup.patch index eef481021..eef481021 100644 --- a/target/linux/patches/5.10.234/startup.patch +++ b/target/linux/patches/5.10.236/startup.patch diff --git a/target/linux/patches/5.15.178/darwin-file2alias.patch b/target/linux/patches/5.15.178/darwin-file2alias.patch deleted file mode 100644 index fdbc598a8..000000000 --- a/target/linux/patches/5.15.178/darwin-file2alias.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -Nur linux-5.4.42.orig/scripts/mod/file2alias.c linux-5.4.42/scripts/mod/file2alias.c ---- linux-5.4.42.orig/scripts/mod/file2alias.c	2020-05-20 08:20:41.000000000 +0200 -+++ linux-5.4.42/scripts/mod/file2alias.c	2020-06-06 20:14:59.000000000 +0200 -@@ -10,6 +10,10 @@ -  * of the GNU General Public License, incorporated herein by reference. -  */ -  -+/* workaround for Darwin */ -+#define _UUID_T -+#define __GETHOSTUUID_H -+ - #include "modpost.h" - #include "devicetable-offsets.h" -  diff --git a/target/linux/patches/5.15.178/darwin-dtc.patch b/target/linux/patches/5.15.180/darwin-dtc.patch index 0cdc23ab4..0cdc23ab4 100644 --- a/target/linux/patches/5.15.178/darwin-dtc.patch +++ b/target/linux/patches/5.15.180/darwin-dtc.patch diff --git a/target/linux/patches/5.15.178/dtc-noyaml.patch b/target/linux/patches/5.15.180/dtc-noyaml.patch index 759bb01f7..759bb01f7 100644 --- a/target/linux/patches/5.15.178/dtc-noyaml.patch +++ b/target/linux/patches/5.15.180/dtc-noyaml.patch diff --git a/target/linux/patches/5.15.178/enable-ethernet-bpi-m2-plus.patch b/target/linux/patches/5.15.180/enable-ethernet-bpi-m2-plus.patch index 7e9abd9ce..7e9abd9ce 100644 --- a/target/linux/patches/5.15.178/enable-ethernet-bpi-m2-plus.patch +++ b/target/linux/patches/5.15.180/enable-ethernet-bpi-m2-plus.patch diff --git a/target/linux/patches/5.15.178/nds32-ag101p.patch b/target/linux/patches/5.15.180/nds32-ag101p.patch index a8beea478..a8beea478 100644 --- a/target/linux/patches/5.15.178/nds32-ag101p.patch +++ b/target/linux/patches/5.15.180/nds32-ag101p.patch diff --git a/target/linux/patches/5.15.178/or1k-more-ram.patch b/target/linux/patches/5.15.180/or1k-more-ram.patch index de848c838..de848c838 100644 --- a/target/linux/patches/5.15.178/or1k-more-ram.patch +++ b/target/linux/patches/5.15.180/or1k-more-ram.patch diff --git a/target/linux/patches/5.15.178/relocs.patch b/target/linux/patches/5.15.180/relocs.patch index 5bcd974c7..5bcd974c7 100644 --- a/target/linux/patches/5.15.178/relocs.patch +++ b/target/linux/patches/5.15.180/relocs.patch diff --git a/target/linux/patches/5.15.178/rockchip-115200.patch b/target/linux/patches/5.15.180/rockchip-115200.patch index ad8a2d7a7..ad8a2d7a7 100644 --- a/target/linux/patches/5.15.178/rockchip-115200.patch +++ b/target/linux/patches/5.15.180/rockchip-115200.patch diff --git a/target/linux/patches/5.15.178/startup.patch b/target/linux/patches/5.15.180/startup.patch index eef481021..eef481021 100644 --- a/target/linux/patches/5.15.178/startup.patch +++ b/target/linux/patches/5.15.180/startup.patch diff --git a/target/linux/patches/5.4.289/darwin-file2alias.patch b/target/linux/patches/5.4.289/darwin-file2alias.patch deleted file mode 100644 index fdbc598a8..000000000 --- a/target/linux/patches/5.4.289/darwin-file2alias.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -Nur linux-5.4.42.orig/scripts/mod/file2alias.c linux-5.4.42/scripts/mod/file2alias.c ---- linux-5.4.42.orig/scripts/mod/file2alias.c	2020-05-20 08:20:41.000000000 +0200 -+++ linux-5.4.42/scripts/mod/file2alias.c	2020-06-06 20:14:59.000000000 +0200 -@@ -10,6 +10,10 @@ -  * of the GNU General Public License, incorporated herein by reference. -  */ -  -+/* workaround for Darwin */ -+#define _UUID_T -+#define __GETHOSTUUID_H -+ - #include "modpost.h" - #include "devicetable-offsets.h" -  diff --git a/target/linux/patches/5.4.289/arc.patch b/target/linux/patches/5.4.292/arc.patch index 20810ce64..20810ce64 100644 --- a/target/linux/patches/5.4.289/arc.patch +++ b/target/linux/patches/5.4.292/arc.patch diff --git a/target/linux/patches/5.4.289/arm-nommu.patch b/target/linux/patches/5.4.292/arm-nommu.patch index fdcec3f09..fdcec3f09 100644 --- a/target/linux/patches/5.4.289/arm-nommu.patch +++ b/target/linux/patches/5.4.292/arm-nommu.patch diff --git a/target/linux/patches/5.4.289/darwin-dtc.patch b/target/linux/patches/5.4.292/darwin-dtc.patch index 0cdc23ab4..0cdc23ab4 100644 --- a/target/linux/patches/5.4.289/darwin-dtc.patch +++ b/target/linux/patches/5.4.292/darwin-dtc.patch diff --git a/target/linux/patches/5.4.289/dtc-noyaml.patch b/target/linux/patches/5.4.292/dtc-noyaml.patch index 759bb01f7..759bb01f7 100644 --- a/target/linux/patches/5.4.289/dtc-noyaml.patch +++ b/target/linux/patches/5.4.292/dtc-noyaml.patch diff --git a/target/linux/patches/5.4.289/macsonic.patch b/target/linux/patches/5.4.292/macsonic.patch index 75a6fcad2..75a6fcad2 100644 --- a/target/linux/patches/5.4.289/macsonic.patch +++ b/target/linux/patches/5.4.292/macsonic.patch diff --git a/target/linux/patches/5.4.289/or1k-more-ram.patch b/target/linux/patches/5.4.292/or1k-more-ram.patch index 540dc43b5..540dc43b5 100644 --- a/target/linux/patches/5.4.289/or1k-more-ram.patch +++ b/target/linux/patches/5.4.292/or1k-more-ram.patch diff --git a/target/linux/patches/5.4.289/relocs.patch b/target/linux/patches/5.4.292/relocs.patch index 5bcd974c7..5bcd974c7 100644 --- a/target/linux/patches/5.4.289/relocs.patch +++ b/target/linux/patches/5.4.292/relocs.patch diff --git a/target/linux/patches/5.4.289/sh4.patch b/target/linux/patches/5.4.292/sh4.patch index 8ae79d49d..8ae79d49d 100644 --- a/target/linux/patches/5.4.289/sh4.patch +++ b/target/linux/patches/5.4.292/sh4.patch diff --git a/target/linux/patches/5.4.289/startup.patch b/target/linux/patches/5.4.292/startup.patch index 081aa103a..081aa103a 100644 --- a/target/linux/patches/5.4.289/startup.patch +++ b/target/linux/patches/5.4.292/startup.patch diff --git a/target/linux/patches/6.1.130/armnommu-fix-thread-registers.patch b/target/linux/patches/6.1.135/armnommu-fix-thread-registers.patch index 8ab2196dc..8ab2196dc 100644 --- a/target/linux/patches/6.1.130/armnommu-fix-thread-registers.patch +++ b/target/linux/patches/6.1.135/armnommu-fix-thread-registers.patch diff --git a/target/linux/patches/6.1.130/armnommu-versatile.patch b/target/linux/patches/6.1.135/armnommu-versatile.patch index f8f10f50b..f8f10f50b 100644 --- a/target/linux/patches/6.1.130/armnommu-versatile.patch +++ b/target/linux/patches/6.1.135/armnommu-versatile.patch diff --git a/target/linux/patches/6.1.130/board-rockpi4-0003-arm64-dts-pcie.patch b/target/linux/patches/6.1.135/board-rockpi4-0003-arm64-dts-pcie.patch index 1777e7a86..1777e7a86 100644 --- a/target/linux/patches/6.1.130/board-rockpi4-0003-arm64-dts-pcie.patch +++ b/target/linux/patches/6.1.135/board-rockpi4-0003-arm64-dts-pcie.patch diff --git a/target/linux/patches/6.1.130/enable-ethernet-bpi-m2-plus.patch b/target/linux/patches/6.1.135/enable-ethernet-bpi-m2-plus.patch index 7e9abd9ce..7e9abd9ce 100644 --- a/target/linux/patches/6.1.130/enable-ethernet-bpi-m2-plus.patch +++ b/target/linux/patches/6.1.135/enable-ethernet-bpi-m2-plus.patch diff --git a/target/linux/patches/6.1.130/hppa-cross-compile.patch b/target/linux/patches/6.1.135/hppa-cross-compile.patch index 5400e87a0..5400e87a0 100644 --- a/target/linux/patches/6.1.130/hppa-cross-compile.patch +++ b/target/linux/patches/6.1.135/hppa-cross-compile.patch diff --git a/target/linux/patches/6.1.130/macsonic.patch b/target/linux/patches/6.1.135/macsonic.patch index 177397221..177397221 100644 --- a/target/linux/patches/6.1.130/macsonic.patch +++ b/target/linux/patches/6.1.135/macsonic.patch diff --git a/target/linux/patches/6.1.130/nios2.patch b/target/linux/patches/6.1.135/nios2.patch index 43631971e..43631971e 100644 --- a/target/linux/patches/6.1.130/nios2.patch +++ b/target/linux/patches/6.1.135/nios2.patch diff --git a/target/linux/patches/6.1.130/or1k-more-ram.patch b/target/linux/patches/6.1.135/or1k-more-ram.patch index 6397f8445..6397f8445 100644 --- a/target/linux/patches/6.1.130/or1k-more-ram.patch +++ b/target/linux/patches/6.1.135/or1k-more-ram.patch diff --git a/target/linux/patches/6.1.130/riscv32.patch b/target/linux/patches/6.1.135/riscv32.patch index 648b0de4d..648b0de4d 100644 --- a/target/linux/patches/6.1.130/riscv32.patch +++ b/target/linux/patches/6.1.135/riscv32.patch diff --git a/target/linux/patches/6.1.130/riscv64-flat.patch b/target/linux/patches/6.1.135/riscv64-flat.patch index ee70ea915..ee70ea915 100644 --- a/target/linux/patches/6.1.130/riscv64-flat.patch +++ b/target/linux/patches/6.1.135/riscv64-flat.patch diff --git a/target/linux/patches/6.1.130/rockchip-115200.patch b/target/linux/patches/6.1.135/rockchip-115200.patch index ad8a2d7a7..ad8a2d7a7 100644 --- a/target/linux/patches/6.1.130/rockchip-115200.patch +++ b/target/linux/patches/6.1.135/rockchip-115200.patch diff --git a/target/linux/patches/6.1.130/rockchip-pcie-timeout.patch b/target/linux/patches/6.1.135/rockchip-pcie-timeout.patch index 2ef7df2da..2ef7df2da 100644 --- a/target/linux/patches/6.1.130/rockchip-pcie-timeout.patch +++ b/target/linux/patches/6.1.135/rockchip-pcie-timeout.patch diff --git a/target/linux/patches/6.12.18/armnommu-versatile.patch b/target/linux/patches/6.12.52/armnommu-versatile.patch index f8f10f50b..f8f10f50b 100644 --- a/target/linux/patches/6.12.18/armnommu-versatile.patch +++ b/target/linux/patches/6.12.52/armnommu-versatile.patch diff --git a/target/linux/patches/6.12.18/hppa-cross-compile.patch b/target/linux/patches/6.12.52/hppa-cross-compile.patch index 51c24fff2..51c24fff2 100644 --- a/target/linux/patches/6.12.18/hppa-cross-compile.patch +++ b/target/linux/patches/6.12.52/hppa-cross-compile.patch diff --git a/target/linux/patches/6.12.18/macsonic.patch b/target/linux/patches/6.12.52/macsonic.patch index 51e76113b..51e76113b 100644 --- a/target/linux/patches/6.12.18/macsonic.patch +++ b/target/linux/patches/6.12.52/macsonic.patch diff --git a/target/linux/patches/6.12.52/mips-vdso-gcc15.patch b/target/linux/patches/6.12.52/mips-vdso-gcc15.patch new file mode 100644 index 000000000..c18bc6c92 --- /dev/null +++ b/target/linux/patches/6.12.52/mips-vdso-gcc15.patch @@ -0,0 +1,12 @@ +diff -Nur linux-6.12.25.orig/arch/mips/vdso/Makefile linux-6.12.25/arch/mips/vdso/Makefile +--- linux-6.12.25.orig/arch/mips/vdso/Makefile	2025-04-25 10:48:08.000000000 +0200 ++++ linux-6.12.25/arch/mips/vdso/Makefile	2025-04-30 19:42:08.538362252 +0200 +@@ -30,7 +30,7 @@ + 	-O3 -g -fPIC -fno-strict-aliasing -fno-common -fno-builtin -G 0 \ + 	-mrelax-pic-calls $(call cc-option, -mexplicit-relocs) \ + 	-fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \ +-	$(call cc-option, -fno-asynchronous-unwind-tables) ++	$(call cc-option, -fno-asynchronous-unwind-tables) -std=gnu11 + aflags-vdso := $(ccflags-vdso) \ + 	-D__ASSEMBLY__ -Wa,-gdwarf-2 +  diff --git a/target/linux/patches/6.17.2/0001-pcmcia-Add-Hitachi-HD6446x-PCMCIA-socket-support.patch b/target/linux/patches/6.17.2/0001-pcmcia-Add-Hitachi-HD6446x-PCMCIA-socket-support.patch new file mode 100644 index 000000000..5c46fe5e4 --- /dev/null +++ b/target/linux/patches/6.17.2/0001-pcmcia-Add-Hitachi-HD6446x-PCMCIA-socket-support.patch @@ -0,0 +1,720 @@ +From b6ffbcb525539139a9b2255b992622f92757ea37 Mon Sep 17 00:00:00 2001 +From: Artur Rojek <contact@artur-rojek.eu> +Date: Fri, 1 Aug 2025 22:52:22 +0200 +Subject: [PATCH] pcmcia: Add Hitachi HD6446x PCMCIA socket support + +Introduce support for the PC Card Controller part of the Hitachi HD6446x +series of Intelligent Peripheral Controllers. + +WIP code. DO NOT UPSTREAM! +--- + arch/sh/boards/mach-hp6xx/setup.c |  45 ++- + arch/sh/cchips/hd6446x/hd64461.c  |  56 +++- + arch/sh/include/asm/hd64461.h     |   6 +- + drivers/pcmcia/Kconfig            |   7 + + drivers/pcmcia/Makefile           |   1 + + drivers/pcmcia/hd6446x_pcc.c      | 453 ++++++++++++++++++++++++++++++ + include/pcmcia/hd6446x_pcc.h      |   9 + + 7 files changed, 569 insertions(+), 8 deletions(-) + create mode 100644 drivers/pcmcia/hd6446x_pcc.c + create mode 100644 include/pcmcia/hd6446x_pcc.h + +diff --git a/arch/sh/boards/mach-hp6xx/setup.c b/arch/sh/boards/mach-hp6xx/setup.c +index 2ceead68d7bf..c697b8e1f5ac 100644 +--- a/arch/sh/boards/mach-hp6xx/setup.c ++++ b/arch/sh/boards/mach-hp6xx/setup.c +@@ -18,19 +18,23 @@ + #include <mach/hp6xx.h> + #include <cpu/dac.h> +  ++#include <pcmcia/hd6446x_pcc.h> ++ + #define	SCPCR	0xa4000116 + #define	SCPDR	0xa4000136 +  ++#define CF_MEM_ATTR (0x15000000 - 0) ++ + /* CF Slot */ + static struct resource cf_ide_resources[] = { + 	[0] = { +-		.start = 0x15000000 + 0x1f0, +-		.end   = 0x15000000 + 0x1f0 + 0x08 - 0x01, ++		.start = CF_MEM_ATTR + 0x1f0, ++		.end   = CF_MEM_ATTR + 0x1f0 + 0x08 - 0x01, + 		.flags = IORESOURCE_MEM, + 	}, + 	[1] = { +-		.start = 0x15000000 + 0x1fe, +-		.end   = 0x15000000 + 0x1fe + 0x01, ++		.start = CF_MEM_ATTR + 0x1fe, ++		.end   = CF_MEM_ATTR + 0x1fe + 0x01, + 		.flags = IORESOURCE_MEM, + 	}, + 	[2] = { +@@ -51,6 +55,36 @@ static struct platform_device jornadakbd_device = { + 	.id		= -1, + }; +  ++static struct resource hd6446x_pcc_resources[] = { ++	[0] = { ++		.start = HD64461_PCC0ISR, ++		.end   = HD64461_PCC0ISR + 0x10, ++		.flags = IORESOURCE_MEM, ++	}, ++	[1] = { ++		.start = HD64461_PCC0_BASE, ++		.end   = HD64461_PCC0_BASE + 0x4000000, ++		.flags = IORESOURCE_MEM, ++	}, ++	[2] = { ++		.start = HD64461_IRQ_PCC0, ++		.flags = IORESOURCE_IRQ, ++	}, ++}; ++ ++static struct hd6446x_pcc_plat_data hd6446x_pcc_platform_data = { ++	.slot_id = 1, ++	.io_support = true, ++}; ++ ++static struct platform_device hp6446x_pcc_device = { ++	.name			= "hd6446x_pcc", ++	.id			= -1, ++	.num_resources		= ARRAY_SIZE(hd6446x_pcc_resources), ++	.resource		= hd6446x_pcc_resources, ++	.dev.platform_data	= &hd6446x_pcc_platform_data, ++}; ++ + static void dac_audio_start(struct dac_audio_pdata *pdata) + { + 	u16 v; +@@ -108,6 +142,7 @@ static struct platform_device *hp6xx_devices[] __initdata = { + 	&cf_ide_device, + 	&jornadakbd_device, + 	&dac_audio_device, ++	&hp6446x_pcc_device, + }; +  + static void __init hp6xx_init_irq(void) +@@ -126,6 +161,8 @@ static void __init hp6xx_setup(char **cmdline_p) + 	u8 v8; + 	u16 v; +  ++	__set_io_port_base(0); ++ + 	v = inw(HD64461_STBCR); + 	v |=	HD64461_STBCR_SURTST | HD64461_STBCR_SIRST	| + 		HD64461_STBCR_STM1ST | HD64461_STBCR_STM0ST	| +diff --git a/arch/sh/cchips/hd6446x/hd64461.c b/arch/sh/cchips/hd6446x/hd64461.c +index 81764882d87d..965486584ee5 100644 +--- a/arch/sh/cchips/hd6446x/hd64461.c ++++ b/arch/sh/cchips/hd6446x/hd64461.c +@@ -4,7 +4,9 @@ +  *	Hitachi HD64461 companion chip support +  */ +  ++#include <linux/clkdev.h> + #include <linux/sched.h> ++#include <linux/sh_clk.h> + #include <linux/module.h> + #include <linux/kernel.h> + #include <linux/param.h> +@@ -45,7 +47,7 @@ static void hd64461_mask_and_ack_irq(struct irq_data *data) + 	hd64461_mask_irq(data); +  + #ifdef CONFIG_HD64461_ENABLER +-	if (data->irq == HD64461_IRQBASE + 13) ++	if (data->irq == HD64461_IRQ_PCC1) + 		__raw_writeb(0x00, HD64461_PCC1CSCR); + #endif + } +@@ -72,6 +74,51 @@ static void hd64461_irq_demux(struct irq_desc *desc) + 	} + } +  ++static int hd64461_clk_enable(struct clk *clk) ++{ ++	u16 reg = __raw_readw(HD64461_STBCR); ++ ++	printk("clk enable: %d\n", clk->enable_bit); ++ ++	__raw_writew(reg & ~(1 << clk->enable_bit), HD64461_STBCR); ++ ++	return 0; ++} ++ ++static void hd64461_clk_disable(struct clk *clk) ++{ ++	u16 reg = __raw_readw(HD64461_STBCR); ++ ++	printk("clk disable: %d\n", clk->enable_bit); ++	//panic("clk disable: %d\n", clk->enable_bit); ++ ++ ++	__raw_writew(reg | (1 << clk->enable_bit), HD64461_STBCR); ++} ++ ++static struct sh_clk_ops hd64461_clk_ops = { ++	.enable = hd64461_clk_enable, ++	.disable = hd64461_clk_disable, ++}; ++ ++static struct clk hd64461_clk[] = { ++	{ ++		.enable_bit = 5, ++		.ops = &hd64461_clk_ops, ++		.flags = CLK_ENABLE_ON_INIT, ++	}, ++	{ ++		.enable_bit = 6, ++		.ops = &hd64461_clk_ops, ++		.flags = CLK_ENABLE_ON_INIT, ++	}, ++}; ++ ++static struct clk_lookup hd64461_clk_lookup[] = { ++	CLKDEV_CON_ID("pcc1", &hd64461_clk[0]), ++	CLKDEV_CON_ID("pcc0", &hd64461_clk[1]), ++}; ++ + static int __init setup_hd64461(void) + { + 	int irq_base, i; +@@ -106,6 +153,13 @@ static int __init setup_hd64461(void) + 	__raw_writeb(0x00, HD64461_PCC1CSCR); + #endif +  ++//	for (i = 0; i < ARRAY_SIZE(hd64461_clk); i++) ++//		clk_register(&hd64461_clk[i]); ++		clk_register(&hd64461_clk[1]); ++	clkdev_add_table(hd64461_clk_lookup, ARRAY_SIZE(hd64461_clk_lookup)); ++ ++	printk("done with clk setup\n"); ++ + 	return 0; + } +  +diff --git a/arch/sh/include/asm/hd64461.h b/arch/sh/include/asm/hd64461.h +index d2c485fa333b..91823ec07f79 100644 +--- a/arch/sh/include/asm/hd64461.h ++++ b/arch/sh/include/asm/hd64461.h +@@ -17,9 +17,9 @@ + #define HD64461_IOBASE		0xb0000000 + #define HD64461_IO_OFFSET(x)	(HD64461_IOBASE + (x)) + #define	HD64461_PCC0_BASE	HD64461_IO_OFFSET(0x8000000) +-#define	HD64461_PCC0_ATTR	(HD64461_PCC0_BASE)				/* 0xb80000000 */ +-#define	HD64461_PCC0_COMM	(HD64461_PCC0_BASE+HD64461_PCC_WINDOW)		/* 0xb90000000 */ +-#define	HD64461_PCC0_IO		(HD64461_PCC0_BASE+2*HD64461_PCC_WINDOW)	/* 0xba0000000 */ ++#define	HD64461_PCC0_ATTR	(HD64461_PCC0_BASE)				/* 0xb8000000 */ ++#define	HD64461_PCC0_COMM	(HD64461_PCC0_BASE+HD64461_PCC_WINDOW)		/* 0xb9000000 */ ++#define	HD64461_PCC0_IO		(HD64461_PCC0_BASE+2*HD64461_PCC_WINDOW)	/* 0xba000000 */ +  + /* Area 5 - Slot 1 - memory card only */ + #define	HD64461_PCC1_BASE	HD64461_IO_OFFSET(0x4000000) +diff --git a/drivers/pcmcia/Kconfig b/drivers/pcmcia/Kconfig +index dddb235dd020..f2434ca15c8e 100644 +--- a/drivers/pcmcia/Kconfig ++++ b/drivers/pcmcia/Kconfig +@@ -159,6 +159,13 @@ config PCMCIA_ALCHEMY_DEVBOARD +  + 	  This driver is also available as a module called db1xxx_ss.ko +  ++config PCMCIA_HD6446X_PCC ++	tristate "Hitachi HD6446x PCMCIA socket support" ++	depends on PCMCIA && HD6446X_SERIES ++	help ++	  Say Y here to include support for the PC Card Controller part of ++	  the Hitachi HD6446x series of Intelligent Peripheral Controllers. ++ + config PCMCIA_XXS1500 + 	tristate "MyCable XXS1500 PCMCIA socket support" + 	depends on PCMCIA && MIPS_XXS1500 +diff --git a/drivers/pcmcia/Makefile b/drivers/pcmcia/Makefile +index c9d51b150682..764df19be544 100644 +--- a/drivers/pcmcia/Makefile ++++ b/drivers/pcmcia/Makefile +@@ -33,6 +33,7 @@ obj-$(CONFIG_OMAP_CF)				+= omap_cf.o + obj-$(CONFIG_ELECTRA_CF)			+= electra_cf.o + obj-$(CONFIG_PCMCIA_ALCHEMY_DEVBOARD)		+= db1xxx_ss.o + obj-$(CONFIG_PCMCIA_MAX1600)			+= max1600.o ++obj-$(CONFIG_PCMCIA_HD6446X_PCC)		+= hd6446x_pcc.o +  + sa1111_cs-y					+= sa1111_generic.o + sa1111_cs-$(CONFIG_ASSABET_NEPONSET)		+= sa1111_neponset.o +diff --git a/drivers/pcmcia/hd6446x_pcc.c b/drivers/pcmcia/hd6446x_pcc.c +new file mode 100644 +index 000000000000..31074f93b55b +--- /dev/null ++++ b/drivers/pcmcia/hd6446x_pcc.c +@@ -0,0 +1,453 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * PC Card Controller driver for the Hitachi HD6446x series of Intelligent ++ * Peripheral Controllers. ++ * ++ * Copyright (c) 2023 - 2024 Artur Rojek <contact@artur-rojek.eu> ++ */ ++ ++#include <linux/clk.h> ++#include <linux/interrupt.h> ++#include <linux/of.h> ++#include <linux/platform_device.h> ++#include <pcmcia/hd6446x_pcc.h> ++#include <pcmcia/ss.h> ++#include <asm/hd64461.h> ++ ++#include "mach-common/mach/hp6xx.h" ++ ++#define	HD6446X_PCC_ISR				0x00 ++#define	HD6446X_PCC_GCR				0x02 ++#define	HD6446X_PCC_CSCR			0x04 ++#define	HD6446X_PCC_CSCIER			0x06 ++#define	HD6446X_PCC_SCR				0x08 ++ ++#define	HD6446X_PCC_ISR_CD			(BIT(2) | BIT(3)) ++#define	HD6446X_PCC_ISR_VS1			BIT(4) ++#define	HD6446X_PCC_ISR_VS2			BIT(5) ++#define	HD6446X_PCC_ISR_MWP			BIT(6) ++#define	HD6446X_PCC_ISR_READY			BIT(7) ++ ++#define	HD6446X_PCC_GCR_PMMOD			BIT(3) ++#define	HD6446X_PCC_GCR_VCC0			BIT(4) ++#define	HD6446X_PCC_GCR_PCCT			BIT(5) ++#define	HD6446X_PCC_GCR_PCCR			BIT(6) ++#define	HD6446X_PCC_GCR_DRV			BIT(7) ++ ++#define HD6446X_PCC_CSCR_BD			BIT(0) ++#define HD6446X_PCC_CSCR_BW			BIT(1) ++#define HD6446X_PCC_CSCR_RC			BIT(2) ++#define HD6446X_PCC_CSCR_CDC			BIT(3) ++#define HD6446X_PCC_CSCR_SC			BIT(4) ++#define HD6446X_PCC_CSCR_IREQ			BIT(5) ++#define HD6446X_PCC_CSCR_SCDI			BIT(7) ++ ++#define	HD6446X_PCC_CSCIER_BDE			BIT(0) ++#define	HD6446X_PCC_CSCIER_BWE			BIT(1) ++#define	HD6446X_PCC_CSCIER_RE			BIT(2) ++#define	HD6446X_PCC_CSCIER_CDE			BIT(3) ++#define	HD6446X_PCC_CSCIER_SCE			BIT(4) ++#define	HD6446X_PCC_CSCIER_IREQE_FALLING	BIT(6) ++ ++#define	HD6446X_PCC_SCR_VCC1			BIT(1) ++ ++#define	HD6446X_PCC_WINDOW			0x1000000 /* 16 MiB */ ++ ++struct hd6446x_pcc { ++	const struct hd6446x_pcc_plat_data *pdata; ++	void __iomem *reg; ++	void __iomem *base; ++	struct clk *clk; ++	struct pcmcia_socket socket; ++	struct socket_state_t state; ++	bool memory_card; ++}; ++ ++static int hd64461_pcmcia_socket_set_voltage(struct hd6446x_pcc *pcc, int Vcc) ++{ ++	int gcr, scr, stbcr; ++ ++	gcr = readb(pcc->reg + HD6446X_PCC_GCR); ++	scr = readb(pcc->reg + HD6446X_PCC_SCR); ++ ++	switch (Vcc) { ++	case 0: ++		gcr |= HD6446X_PCC_GCR_VCC0; ++		scr |= HD6446X_PCC_SCR_VCC1; ++		break; ++	case 33: ++		gcr |= HD6446X_PCC_GCR_VCC0; ++		scr &= ~HD6446X_PCC_SCR_VCC1; ++		break; ++	case 50: ++		gcr &= ~HD6446X_PCC_GCR_VCC0; ++		scr &= ~HD6446X_PCC_SCR_VCC1; ++		break; ++	default: ++		printk("Unsupported voltage: %d\n", Vcc); ++		return -EINVAL; ++	} ++ ++	writeb(gcr, pcc->reg + HD6446X_PCC_GCR); ++	writeb(scr, pcc->reg + HD6446X_PCC_SCR); ++ ++//	stbcr = readw(HD64461_STBCR); ++ ++	if (Vcc > 0) ++		clk_enable(pcc->clk); ++//		stbcr &= ~HD64461_STBCR_SPC0ST; ++	else ++		clk_disable(pcc->clk); ++//		stbcr |= HD64461_STBCR_SPC0ST; ++ ++//	writew(stbcr, HD64461_STBCR); ++ ++	return 0; ++} ++ ++static int hd64461_pcmcia_socket_init(struct pcmcia_socket *sock) ++{ ++	struct hd6446x_pcc *pcc = sock->driver_data; ++	int reg; ++ ++	printk("socket_init\n"); ++ ++//	printk("init BCR1: %04x\n", readw(0xffffff60)); ++ ++	(void)hd64461_pcmcia_socket_set_voltage(pcc, 0); ++ ++	reg = readb(HD64461_GPADR); ++	reg &= ~HD64461_GPADR_PCMCIA0; ++	writeb(reg, HD64461_GPADR); ++ ++	return 0; ++} ++ ++static int hd64461_pcmcia_socket_get_status(struct pcmcia_socket *sock, ++					    unsigned int *value) ++{ ++//	struct hd64461_pcmcia_socket *socket = sock->driver_data; ++	struct hd6446x_pcc *pcc = sock->driver_data; ++	unsigned int status = 0; ++	int reg; ++ ++	printk("get_status\n"); ++ ++	reg = readb(pcc->reg + HD6446X_PCC_ISR); ++ ++//	printk("PCC0ISR: %02x\n", reg); ++ ++	if (reg & HD6446X_PCC_ISR_CD) ++		goto end; /* No card detected. */ ++	status |= SS_DETECT; ++ ++	if (pcc->memory_card) { ++		if (reg & HD6446X_PCC_ISR_READY) ++			status |= SS_READY; ++ ++		if (reg & HD6446X_PCC_ISR_MWP) ++			status |= SS_WRPROT; ++	} else ++		status |= SS_STSCHG; ++ ++	if (!(reg & HD6446X_PCC_ISR_VS1)) { ++		status |= SS_3VCARD; ++		printk("3v3 card\n"); ++	} ++ ++	if (!(reg & HD6446X_PCC_ISR_VS2)) { ++		status |= SS_XVCARD; ++		printk("X.Xv card\n"); ++	} ++ ++	if (pcc->state.Vcc || pcc->state.Vpp) ++		status |= SS_POWERON; ++ ++end: ++	*value = status; ++//	printk("status: %x, memory: %d\n", status, socket->memory_card); ++ ++	return 0; ++} ++ ++static int hd64461_pcmcia_socket_configure(struct pcmcia_socket *sock, ++					   struct socket_state_t *state) ++{ ++//	struct hd64461_pcmcia_socket *socket = sock->driver_data; ++	struct hd6446x_pcc *pcc = sock->driver_data; ++	int reg = 0; ++//	unsigned long flags; ++ ++	writeb(0x0, pcc->reg + HD6446X_PCC_CSCIER); ++ ++//	local_irq_save(flags); ++ ++//	printk("socket_configure, flags: %x, csc_mask: %x, Vcc: %d, Vpp: %d, io_irq: %x\n", ++//	       state->flags, state->csc_mask, state->Vcc, state->Vpp, state->io_irq); ++ ++	if (state->Vcc != pcc->state.Vcc || state->Vpp != pcc->state.Vpp) ++		if (hd64461_pcmcia_socket_set_voltage(pcc, state->Vcc)) { ++//			local_irq_restore(flags); ++			return -EINVAL; ++		} ++ ++	//reg = readb(HD64461_PCC0CSCIER) & HD64461_PCCCSCIER_IREQE_MASK; ++	reg = HD6446X_PCC_CSCIER_IREQE_FALLING; ++//	reg = 0; ++ ++	if (state->csc_mask & SS_DETECT) ++		reg |= HD6446X_PCC_CSCIER_CDE; ++	if (state->csc_mask & SS_READY) ++		reg |= HD6446X_PCC_CSCIER_RE; ++	if (state->csc_mask & SS_BATDEAD) ++		reg |= HD6446X_PCC_CSCIER_BDE; ++	if (state->csc_mask & SS_BATWARN) ++		reg |= HD6446X_PCC_CSCIER_BWE; ++	if (state->csc_mask & SS_STSCHG) ++		reg |= HD6446X_PCC_CSCIER_SCE; ++//	if (state->flags & SS_IOCARD) ++//		reg = HD64461_PCCCSCIER_IREQE_FALLING; ++ ++ ++	writeb(reg, pcc->reg + HD6446X_PCC_CSCIER); ++ ++//	reg = readb(HD64461_PCC0GCR); ++//	reg = 0; ++//	reg = HD6446X_PCC_GCR_PMMOD; ++	reg = readb(pcc->reg + HD6446X_PCC_GCR) & ~(HD6446X_PCC_GCR_PCCT | ++						    HD6446X_PCC_GCR_PCCR | ++						    HD6446X_PCC_GCR_DRV); ++ ++	pcc->memory_card = !(state->flags & SS_IOCARD); ++	if (!pcc->memory_card) ++		reg |= HD6446X_PCC_GCR_PCCT; ++	if (state->flags & SS_RESET) ++		reg |= HD6446X_PCC_GCR_PCCR; ++	if (state->flags & SS_OUTPUT_ENA) ++		reg |= HD6446X_PCC_GCR_DRV; ++ ++#if 0 ++	if (socket->memory_card) ++		reg &= ~HD64461_PCCGCR_PCCT; ++	else ++		reg |= HD64461_PCCGCR_PCCT; ++	if (state->flags & SS_RESET) ++		reg |= HD64461_PCCGCR_PCCR; ++	else ++		reg &= ~HD64461_PCCGCR_PCCR; ++	if (state->flags & SS_OUTPUT_ENA) ++		reg |= HD64461_PCCGCR_DRVE; ++	else ++		reg &= ~HD64461_PCCGCR_DRVE; ++#endif ++ ++	writeb(reg, pcc->reg + HD6446X_PCC_GCR); ++ ++	pcc->state = *state; ++ ++//	local_irq_restore(flags); ++ ++//	printk("Configured: %x\n", state->flags); ++//	printk("config BCR1: %04x\n", readw(0xffffff60)); ++ ++	return 0; ++} ++ ++static int hd6446x_pcc_set_io_map(struct pcmcia_socket *socket, ++				  struct pccard_io_map *io) ++{ ++	/* We use a static map. */ ++	printk("hd6446x_pcc_set_io_map\n"); ++	return 0; ++} ++ ++static int hd64461_pcmcia_socket_set_mem_map(struct pcmcia_socket *sock, ++					     struct pccard_mem_map *map) ++{ ++	struct hd6446x_pcc *pcc = sock->driver_data; ++//	printk("set_mem_map\n"); ++ ++	if (map->map >= MAX_WIN) ++		return -EINVAL; ++ ++	map->static_start = (uintptr_t)pcc->base + map->card_start; ++//	map->static_start = HD64461_PCC0_BASE + map->card_start; ++//	map->static_start = 0x8000000 + map->card_start; ++ ++//	printk("map->flags %d: %x\n", map->map, map->flags); ++ ++	if (!(map->flags & MAP_ATTRIB)) ++		map->static_start += HD6446X_PCC_WINDOW; ++ ++	return 0; ++} ++ ++static struct pccard_operations hd64461_pcmcia_socket_ops = { ++	.init = hd64461_pcmcia_socket_init, ++	.get_status = hd64461_pcmcia_socket_get_status, ++	.set_socket = hd64461_pcmcia_socket_configure, ++	.set_io_map = hd6446x_pcc_set_io_map, ++	.set_mem_map = hd64461_pcmcia_socket_set_mem_map, ++}; ++ ++static irqreturn_t hd64461_pcmcia_socket_irq(int irq, void *data) ++{ ++	struct hd6446x_pcc *pcc = data; ++	int reg = readb(pcc->reg + HD6446X_PCC_CSCR) & ~HD6446X_PCC_CSCR_SCDI; ++	unsigned int events = 0; ++ ++	if (reg & HD6446X_PCC_CSCR_IREQ) { ++		reg &= ~HD6446X_PCC_CSCR_IREQ; ++		writeb(reg, pcc->reg + HD6446X_PCC_CSCR); ++ ++		return IRQ_NONE; ++	} ++ ++	if (reg & HD6446X_PCC_CSCR_CDC) { ++		reg &= ~HD6446X_PCC_CSCR_CDC; ++		events |= SS_DETECT; ++ ++		/* Card has been ejected. */ ++		if (readb(pcc->reg + HD6446X_PCC_ISR) & HD6446X_PCC_ISR_CD) ++			reg &= ~(HD6446X_PCC_CSCR_RC | HD6446X_PCC_CSCR_BW | ++				 HD6446X_PCC_CSCR_BD | HD6446X_PCC_CSCR_SC); ++	} ++ ++	if (pcc->memory_card) { ++		if (reg & HD6446X_PCC_CSCR_RC) { ++			reg &= ~HD6446X_PCC_CSCR_RC; ++			events |= SS_READY; ++		} ++ ++		if (reg & HD6446X_PCC_CSCR_BW) { ++			reg &= ~HD6446X_PCC_CSCR_BW; ++			events |= SS_BATWARN; ++		} ++ ++		if (reg & HD6446X_PCC_CSCR_BD) { ++			reg &= ~HD6446X_PCC_CSCR_BD; ++			events |= SS_BATDEAD; ++		} ++	} else if (reg & HD6446X_PCC_CSCR_SC) { ++		reg &= ~HD6446X_PCC_CSCR_SC; ++		events |= SS_STSCHG; ++	} ++ ++	writeb(reg, pcc->reg + HD6446X_PCC_CSCR); ++ ++	if (events) ++		pcmcia_parse_events(&pcc->socket, events); ++ ++//	writeb(reg, HD64461_PCC0CSCR); ++ ++	return IRQ_HANDLED; ++} ++ ++static int hd64461_pcmcia_socket_probe(struct platform_device *pdev) ++{ ++	struct hd6446x_pcc *pcc; ++	struct device *dev = &pdev->dev; ++	struct pcmcia_socket *sock; ++	int irq; ++	int reg, ret; ++ ++	printk("pcc probe\n"); ++ ++//	pcc = dev.platform_data; ++//	socket = platform_get_drvdata(pdev); ++ ++	pcc = devm_kzalloc(dev, sizeof(*pcc), GFP_KERNEL); ++	if (!pcc) ++		return -ENOMEM; ++ ++	pcc->pdata = dev_get_platdata(dev); ++	if (!pcc->pdata) { ++		dev_err(dev, "Unable to get platform data\n"); ++		return -EINVAL; ++	} ++ ++	pcc->memory_card = true; ++	irq = platform_get_irq(pdev, 0); ++ ++	pcc->reg = devm_platform_ioremap_resource(pdev, 0); ++	if (IS_ERR(pcc->reg)) { ++		return PTR_ERR(pcc->reg); ++	} ++ ++	pcc->base = devm_platform_ioremap_resource(pdev, 1); ++	if (IS_ERR(pcc->base)) { ++		return PTR_ERR(pcc->base); ++	} ++ ++//	pcc->reg = platform_get_resource(pdev, IORESOURCE_MEM, 0); ++//	pcc->base = platform_get_resource(pdev, IORESOURCE_MEM, 1); ++ ++	sock = &pcc->socket; ++	sock->driver_data = pcc; ++	sock->resource_ops = &pccard_static_ops; ++	sock->ops = &hd64461_pcmcia_socket_ops; ++	sock->owner = THIS_MODULE; ++	sock->dev.parent = &pdev->dev; ++	sock->features = SS_CAP_STATIC_MAP | SS_CAP_PCCARD | SS_CAP_PAGE_REGS; ++	sock->pci_irq = irq; ++	sock->irq_mask = 0xffde; ++ ++	sock->map_size = HD6446X_PCC_WINDOW; ++	sock->io_offset = (uintptr_t)pcc->base + sock->map_size * 2; ++//	sock->io_offset = HD6446X_PCC_IO; ++//	sock->io_offset = 0x8000000 + HD64461_PCC_WINDOW * 2; ++ ++	printk("sh_io_port_base: %lx\n", sh_io_port_base); ++ ++	ret = pcmcia_register_socket(sock); ++	if (ret) { ++		dev_err(dev, "Unable to register socket\n"); ++		return ret; ++	} ++ ++	/* Put the hardware in a known state. */ ++//	printk("CSCIER: %x\n", readb(pcc->reg + HD6446X_PCC_CSCIER)); ++	writeb(HD6446X_PCC_CSCIER_IREQE_FALLING | HD6446X_PCC_CSCIER_CDE, ++	       pcc->reg + HD6446X_PCC_CSCIER); ++	writeb(0x0, pcc->reg + HD6446X_PCC_CSCR); ++	writeb(HD6446X_PCC_GCR_PMMOD | HD6446X_PCC_GCR_DRV, pcc->reg + HD6446X_PCC_GCR); ++ ++	ret = devm_request_irq(dev, irq, hd64461_pcmcia_socket_irq, ++			       IRQF_SHARED, dev_name(dev), pcc); ++	if (ret < 0) { ++		dev_err(dev, "Failed to request irq: %d\n", ret); ++		return ret; ++	} ++ ++	pcc->clk = devm_clk_get_prepared(dev, ++					 pcc->pdata->slot_id ? "pcc0" : "pcc1"); ++	if (IS_ERR(pcc->clk)) { ++		dev_err(dev, "Unable to get clock\n"); ++		return PTR_ERR(pcc->clk); ++	} ++//	clk_disable(pcc->clk); ++ ++	printk("reg: %lx, base: %lx, basep: %lx\n", ++	       (uintptr_t)pcc->reg, ++	       (uintptr_t)pcc->base, ++	       virt_to_phys(pcc->base)); ++ ++	return 0; ++} ++ ++static void hd64461_pcmcia_socket_remove(struct platform_device *pdev) ++{ ++	struct hd6446x_pcc *pcc = platform_get_drvdata(pdev); ++ ++	pcmcia_unregister_socket(&pcc->socket); ++} ++ ++static struct platform_driver hd64461_pcmcia_socket_driver = { ++	.driver = { ++		.name = "hd6446x_pcc", ++	}, ++	.probe = hd64461_pcmcia_socket_probe, ++	.remove = hd64461_pcmcia_socket_remove, ++}; ++ ++module_platform_driver(hd64461_pcmcia_socket_driver); +diff --git a/include/pcmcia/hd6446x_pcc.h b/include/pcmcia/hd6446x_pcc.h +new file mode 100644 +index 000000000000..d1fe98f0a701 +--- /dev/null ++++ b/include/pcmcia/hd6446x_pcc.h +@@ -0,0 +1,9 @@ ++#ifndef _HD6446X_PCC_ ++#define _HD6446X_PCC_ ++ ++struct hd6446x_pcc_plat_data { ++	int slot_id; ++	bool io_support; ++}; ++ ++#endif /* _HD6446X_PCC_ */ +--  +2.50.1 + diff --git a/target/linux/patches/6.17.2/orinoco.patch b/target/linux/patches/6.17.2/orinoco.patch new file mode 100644 index 000000000..6401013fd --- /dev/null +++ b/target/linux/patches/6.17.2/orinoco.patch @@ -0,0 +1,12933 @@ +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/Kconfig linux-6.15.6/drivers/net/wireless/intersil/Kconfig +--- linux-6.15.6.orig/drivers/net/wireless/intersil/Kconfig	2025-07-10 16:08:55.000000000 +0200 ++++ linux-6.15.6/drivers/net/wireless/intersil/Kconfig	2025-08-03 00:20:27.566744589 +0200 +@@ -12,6 +12,7 @@ +  + if WLAN_VENDOR_INTERSIL +  ++source "drivers/net/wireless/intersil/orinoco/Kconfig" + source "drivers/net/wireless/intersil/p54/Kconfig" +  + endif # WLAN_VENDOR_INTERSIL +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/Makefile linux-6.15.6/drivers/net/wireless/intersil/Makefile +--- linux-6.15.6.orig/drivers/net/wireless/intersil/Makefile	2025-07-10 16:08:55.000000000 +0200 ++++ linux-6.15.6/drivers/net/wireless/intersil/Makefile	2025-08-03 00:20:54.161967083 +0200 +@@ -1,2 +1,3 @@ + # SPDX-License-Identifier: GPL-2.0-only ++obj-$(CONFIG_HERMES)		+= orinoco/ + obj-$(CONFIG_P54_COMMON)	+= p54/ +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/airport.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/airport.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/airport.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/airport.c	2025-08-03 15:01:59.313131673 +0200 +@@ -0,0 +1,268 @@ ++/* airport.c ++ * ++ * A driver for "Hermes" chipset based Apple Airport wireless ++ * card. ++ * ++ * Copyright notice & release notes in file main.c ++ * ++ * Note specific to airport stub: ++ * ++ *  0.05 : first version of the new split driver ++ *  0.06 : fix possible hang on powerup, add sleep support ++ */ ++ ++#define DRIVER_NAME "airport" ++#define PFX DRIVER_NAME ": " ++ ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/delay.h> ++#include <linux/mod_devicetable.h> ++#include <asm/pmac_feature.h> ++ ++#include "orinoco.h" ++ ++#define AIRPORT_IO_LEN	(0x1000)	/* one page */ ++ ++struct airport { ++	struct macio_dev *mdev; ++	void __iomem *vaddr; ++	unsigned int irq; ++	int irq_requested; ++	int ndev_registered; ++}; ++ ++static int ++airport_suspend(struct macio_dev *mdev, pm_message_t state) ++{ ++	struct orinoco_private *priv = dev_get_drvdata(&mdev->ofdev.dev); ++	struct net_device *dev = priv->ndev; ++	struct airport *card = priv->card; ++	unsigned long flags; ++	int err; ++ ++	printk(KERN_DEBUG "%s: Airport entering sleep mode\n", dev->name); ++ ++	err = orinoco_lock(priv, &flags); ++	if (err) { ++		printk(KERN_ERR "%s: hw_unavailable on PBOOK_SLEEP_NOW\n", ++		       dev->name); ++		return 0; ++	} ++ ++	orinoco_down(priv); ++	orinoco_unlock(priv, &flags); ++ ++	disable_irq(card->irq); ++	pmac_call_feature(PMAC_FTR_AIRPORT_ENABLE, ++			  macio_get_of_node(mdev), 0, 0); ++ ++	return 0; ++} ++ ++static int ++airport_resume(struct macio_dev *mdev) ++{ ++	struct orinoco_private *priv = dev_get_drvdata(&mdev->ofdev.dev); ++	struct net_device *dev = priv->ndev; ++	struct airport *card = priv->card; ++	unsigned long flags; ++	int err; ++ ++	printk(KERN_DEBUG "%s: Airport waking up\n", dev->name); ++ ++	pmac_call_feature(PMAC_FTR_AIRPORT_ENABLE, ++			  macio_get_of_node(mdev), 0, 1); ++	msleep(200); ++ ++	enable_irq(card->irq); ++ ++	priv->hw.ops->lock_irqsave(&priv->lock, &flags); ++	err = orinoco_up(priv); ++	priv->hw.ops->unlock_irqrestore(&priv->lock, &flags); ++ ++	return err; ++} ++ ++static int ++airport_detach(struct macio_dev *mdev) ++{ ++	struct orinoco_private *priv = dev_get_drvdata(&mdev->ofdev.dev); ++	struct airport *card = priv->card; ++ ++	if (card->ndev_registered) ++		orinoco_if_del(priv); ++	card->ndev_registered = 0; ++ ++	if (card->irq_requested) ++		free_irq(card->irq, priv); ++	card->irq_requested = 0; ++ ++	if (card->vaddr) ++		iounmap(card->vaddr); ++	card->vaddr = NULL; ++ ++	macio_release_resource(mdev, 0); ++ ++	pmac_call_feature(PMAC_FTR_AIRPORT_ENABLE, ++			  macio_get_of_node(mdev), 0, 0); ++	ssleep(1); ++ ++	macio_set_drvdata(mdev, NULL); ++	free_orinocodev(priv); ++ ++	return 0; ++} ++ ++static int airport_hard_reset(struct orinoco_private *priv) ++{ ++	/* It would be nice to power cycle the Airport for a real hard ++	 * reset, but for some reason although it appears to ++	 * re-initialize properly, it falls in a screaming heap ++	 * shortly afterwards. */ ++#if 0 ++	struct airport *card = priv->card; ++ ++	/* Vitally important.  If we don't do this it seems we get an ++	 * interrupt somewhere during the power cycle, since ++	 * hw_unavailable is already set it doesn't get ACKed, we get ++	 * into an interrupt loop and the PMU decides to turn us ++	 * off. */ ++	disable_irq(card->irq); ++ ++	pmac_call_feature(PMAC_FTR_AIRPORT_ENABLE, ++			  macio_get_of_node(card->mdev), 0, 0); ++	ssleep(1); ++	pmac_call_feature(PMAC_FTR_AIRPORT_ENABLE, ++			  macio_get_of_node(card->mdev), 0, 1); ++	ssleep(1); ++ ++	enable_irq(card->irq); ++	ssleep(1); ++#endif ++ ++	return 0; ++} ++ ++static int ++airport_attach(struct macio_dev *mdev, const struct of_device_id *match) ++{ ++	struct orinoco_private *priv; ++	struct airport *card; ++	unsigned long phys_addr; ++	struct hermes *hw; ++ ++	if (macio_resource_count(mdev) < 1 || macio_irq_count(mdev) < 1) { ++		printk(KERN_ERR PFX "Wrong interrupt/addresses in OF tree\n"); ++		return -ENODEV; ++	} ++ ++	/* Allocate space for private device-specific data */ ++	priv = alloc_orinocodev(sizeof(*card), &mdev->ofdev.dev, ++				airport_hard_reset, NULL); ++	if (!priv) { ++		printk(KERN_ERR PFX "Cannot allocate network device\n"); ++		return -ENODEV; ++	} ++	card = priv->card; ++ ++	hw = &priv->hw; ++	card->mdev = mdev; ++ ++	if (macio_request_resource(mdev, 0, DRIVER_NAME)) { ++		printk(KERN_ERR PFX "can't request IO resource !\n"); ++		free_orinocodev(priv); ++		return -EBUSY; ++	} ++ ++	macio_set_drvdata(mdev, priv); ++ ++	/* Setup interrupts & base address */ ++	card->irq = macio_irq(mdev, 0); ++	phys_addr = macio_resource_start(mdev, 0);  /* Physical address */ ++	printk(KERN_DEBUG PFX "Physical address %lx\n", phys_addr); ++	card->vaddr = ioremap(phys_addr, AIRPORT_IO_LEN); ++	if (!card->vaddr) { ++		printk(KERN_ERR PFX "ioremap() failed\n"); ++		goto failed; ++	} ++ ++	hermes_struct_init(hw, card->vaddr, HERMES_16BIT_REGSPACING); ++ ++	/* Power up card */ ++	pmac_call_feature(PMAC_FTR_AIRPORT_ENABLE, ++			  macio_get_of_node(mdev), 0, 1); ++	ssleep(1); ++ ++	/* Reset it before we get the interrupt */ ++	hw->ops->init(hw); ++ ++	if (request_irq(card->irq, orinoco_interrupt, 0, DRIVER_NAME, priv)) { ++		printk(KERN_ERR PFX "Couldn't get IRQ %d\n", card->irq); ++		goto failed; ++	} ++	card->irq_requested = 1; ++ ++	/* Initialise the main driver */ ++	if (orinoco_init(priv) != 0) { ++		printk(KERN_ERR PFX "orinoco_init() failed\n"); ++		goto failed; ++	} ++ ++	/* Register an interface with the stack */ ++	if (orinoco_if_add(priv, phys_addr, card->irq, NULL) != 0) { ++		printk(KERN_ERR PFX "orinoco_if_add() failed\n"); ++		goto failed; ++	} ++	card->ndev_registered = 1; ++	return 0; ++ failed: ++	airport_detach(mdev); ++	return -ENODEV; ++}				/* airport_attach */ ++ ++ ++static char version[] __initdata = DRIVER_NAME " " DRIVER_VERSION ++	" (Benjamin Herrenschmidt <benh@kernel.crashing.org>)"; ++MODULE_AUTHOR("Benjamin Herrenschmidt <benh@kernel.crashing.org>"); ++MODULE_DESCRIPTION("Driver for the Apple Airport wireless card."); ++MODULE_LICENSE("Dual MPL/GPL"); ++ ++static const struct of_device_id airport_match[] = { ++	{ ++	.name		= "radio", ++	}, ++	{}, ++}; ++ ++MODULE_DEVICE_TABLE(of, airport_match); ++ ++static struct macio_driver airport_driver = { ++	.driver = { ++		.name		= DRIVER_NAME, ++		.owner		= THIS_MODULE, ++		.of_match_table	= airport_match, ++	}, ++	.probe		= airport_attach, ++	.remove		= airport_detach, ++	.suspend	= airport_suspend, ++	.resume		= airport_resume, ++}; ++ ++static int __init ++init_airport(void) ++{ ++	printk(KERN_DEBUG "%s\n", version); ++ ++	return macio_register_driver(&airport_driver); ++} ++ ++static void __exit ++exit_airport(void) ++{ ++	macio_unregister_driver(&airport_driver); ++} ++ ++module_init(init_airport); ++module_exit(exit_airport); +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/cfg.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/cfg.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/cfg.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/cfg.c	2025-08-03 16:35:08.118093622 +0200 +@@ -0,0 +1,292 @@ ++/* cfg80211 support ++ * ++ * See copyright notice in main.c ++ */ ++#include <linux/ieee80211.h> ++#include <net/cfg80211.h> ++#include "hw.h" ++#include "main.h" ++#include "orinoco.h" ++ ++#include "cfg.h" ++ ++/* Supported bitrates. Must agree with hw.c */ ++static struct ieee80211_rate orinoco_rates[] = { ++	{ .bitrate = 10 }, ++	{ .bitrate = 20 }, ++	{ .bitrate = 55 }, ++	{ .bitrate = 110 }, ++}; ++ ++static const void * const orinoco_wiphy_privid = &orinoco_wiphy_privid; ++ ++/* Called after orinoco_private is allocated. */ ++void orinoco_wiphy_init(struct wiphy *wiphy) ++{ ++	struct orinoco_private *priv = wiphy_priv(wiphy); ++ ++	wiphy->privid = orinoco_wiphy_privid; ++ ++	set_wiphy_dev(wiphy, priv->dev); ++} ++ ++/* Called after firmware is initialised */ ++int orinoco_wiphy_register(struct wiphy *wiphy) ++{ ++	struct orinoco_private *priv = wiphy_priv(wiphy); ++	int i, channels = 0; ++ ++	if (priv->firmware_type == FIRMWARE_TYPE_AGERE) ++		wiphy->max_scan_ssids = 1; ++	else ++		wiphy->max_scan_ssids = 0; ++ ++	wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION); ++ ++	/* TODO: should we set if we only have demo ad-hoc? ++	 *       (priv->has_port3) ++	 */ ++	if (priv->has_ibss) ++		wiphy->interface_modes |= BIT(NL80211_IFTYPE_ADHOC); ++ ++	if (!priv->broken_monitor || force_monitor) ++		wiphy->interface_modes |= BIT(NL80211_IFTYPE_MONITOR); ++ ++	priv->band.bitrates = orinoco_rates; ++	priv->band.n_bitrates = ARRAY_SIZE(orinoco_rates); ++ ++	/* Only support channels allowed by the card EEPROM */ ++	for (i = 0; i < NUM_CHANNELS; i++) { ++		if (priv->channel_mask & (1 << i)) { ++			priv->channels[i].center_freq = ++				ieee80211_channel_to_frequency(i + 1, ++							   NL80211_BAND_2GHZ); ++			channels++; ++		} ++	} ++	priv->band.channels = priv->channels; ++	priv->band.n_channels = channels; ++ ++	wiphy->bands[NL80211_BAND_2GHZ] = &priv->band; ++	wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM; ++ ++	i = 0; ++	if (priv->has_wep) { ++		priv->cipher_suites[i] = WLAN_CIPHER_SUITE_WEP40; ++		i++; ++ ++		if (priv->has_big_wep) { ++			priv->cipher_suites[i] = WLAN_CIPHER_SUITE_WEP104; ++			i++; ++		} ++	} ++	if (priv->has_wpa) { ++		priv->cipher_suites[i] = WLAN_CIPHER_SUITE_TKIP; ++		i++; ++	} ++	wiphy->cipher_suites = priv->cipher_suites; ++	wiphy->n_cipher_suites = i; ++ ++	wiphy->rts_threshold = priv->rts_thresh; ++	if (!priv->has_mwo) ++		wiphy->frag_threshold = priv->frag_thresh + 1; ++	wiphy->retry_short = priv->short_retry_limit; ++	wiphy->retry_long = priv->long_retry_limit; ++ ++	return wiphy_register(wiphy); ++} ++ ++static int orinoco_change_vif(struct wiphy *wiphy, struct net_device *dev, ++			      enum nl80211_iftype type, ++			      struct vif_params *params) ++{ ++	struct orinoco_private *priv = wiphy_priv(wiphy); ++	int err = 0; ++	unsigned long lock; ++ ++	if (orinoco_lock(priv, &lock) != 0) ++		return -EBUSY; ++ ++	switch (type) { ++	case NL80211_IFTYPE_ADHOC: ++		if (!priv->has_ibss && !priv->has_port3) ++			err = -EINVAL; ++		break; ++ ++	case NL80211_IFTYPE_STATION: ++		break; ++ ++	case NL80211_IFTYPE_MONITOR: ++		if (priv->broken_monitor && !force_monitor) { ++			wiphy_warn(wiphy, ++				   "Monitor mode support is buggy in this firmware, not enabling\n"); ++			err = -EINVAL; ++		} ++		break; ++ ++	default: ++		err = -EINVAL; ++	} ++ ++	if (!err) { ++		priv->iw_mode = type; ++		set_port_type(priv); ++		err = orinoco_commit(priv); ++	} ++ ++	orinoco_unlock(priv, &lock); ++ ++	return err; ++} ++ ++static int orinoco_scan(struct wiphy *wiphy, ++			struct cfg80211_scan_request *request) ++{ ++	struct orinoco_private *priv = wiphy_priv(wiphy); ++	int err; ++ ++	if (!request) ++		return -EINVAL; ++ ++	if (priv->scan_request && priv->scan_request != request) ++		return -EBUSY; ++ ++	priv->scan_request = request; ++ ++	err = orinoco_hw_trigger_scan(priv, request->ssids); ++	/* On error the we aren't processing the request */ ++	if (err) ++		priv->scan_request = NULL; ++ ++	return err; ++} ++ ++static int orinoco_set_monitor_channel(struct wiphy *wiphy, ++				       struct net_device *dev, ++				       struct cfg80211_chan_def *chandef) ++{ ++	struct orinoco_private *priv = wiphy_priv(wiphy); ++	int err = 0; ++	unsigned long flags; ++	int channel; ++ ++	if (!chandef->chan) ++		return -EINVAL; ++ ++	if (cfg80211_get_chandef_type(chandef) != NL80211_CHAN_NO_HT) ++		return -EINVAL; ++ ++	if (chandef->chan->band != NL80211_BAND_2GHZ) ++		return -EINVAL; ++ ++	channel = ieee80211_frequency_to_channel(chandef->chan->center_freq); ++ ++	if ((channel < 1) || (channel > NUM_CHANNELS) || ++	     !(priv->channel_mask & (1 << (channel - 1)))) ++		return -EINVAL; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	priv->channel = channel; ++	if (priv->iw_mode == NL80211_IFTYPE_MONITOR) { ++		/* Fast channel change - no commit if successful */ ++		struct hermes *hw = &priv->hw; ++		err = hw->ops->cmd_wait(hw, HERMES_CMD_TEST | ++					    HERMES_TEST_SET_CHANNEL, ++					channel, NULL); ++	} ++	orinoco_unlock(priv, &flags); ++ ++	return err; ++} ++ ++static int orinoco_set_wiphy_params(struct wiphy *wiphy, u32 changed) ++{ ++	struct orinoco_private *priv = wiphy_priv(wiphy); ++	int frag_value = -1; ++	int rts_value = -1; ++	int err = 0; ++ ++	if (changed & WIPHY_PARAM_RETRY_SHORT) { ++		/* Setting short retry not supported */ ++		err = -EINVAL; ++	} ++ ++	if (changed & WIPHY_PARAM_RETRY_LONG) { ++		/* Setting long retry not supported */ ++		err = -EINVAL; ++	} ++ ++	if (changed & WIPHY_PARAM_FRAG_THRESHOLD) { ++		/* Set fragmentation */ ++		if (priv->has_mwo) { ++			if (wiphy->frag_threshold == -1) ++				frag_value = 0; ++			else { ++				printk(KERN_WARNING "%s: Fixed fragmentation " ++				       "is not supported on this firmware. " ++				       "Using MWO robust instead.\n", ++				       priv->ndev->name); ++				frag_value = 1; ++			} ++		} else { ++			if (wiphy->frag_threshold == -1) ++				frag_value = 2346; ++			else if ((wiphy->frag_threshold < 257) || ++				 (wiphy->frag_threshold > 2347)) ++				err = -EINVAL; ++			else ++				/* cfg80211 value is 257-2347 (odd only) ++				 * orinoco rid has range 256-2346 (even only) */ ++				frag_value = wiphy->frag_threshold & ~0x1; ++		} ++	} ++ ++	if (changed & WIPHY_PARAM_RTS_THRESHOLD) { ++		/* Set RTS. ++		 * ++		 * Prism documentation suggests default of 2432, ++		 * and a range of 0-3000. ++		 * ++		 * Current implementation uses 2347 as the default and ++		 * the upper limit. ++		 */ ++ ++		if (wiphy->rts_threshold == -1) ++			rts_value = 2347; ++		else if (wiphy->rts_threshold > 2347) ++			err = -EINVAL; ++		else ++			rts_value = wiphy->rts_threshold; ++	} ++ ++	if (!err) { ++		unsigned long flags; ++ ++		if (orinoco_lock(priv, &flags) != 0) ++			return -EBUSY; ++ ++		if (frag_value >= 0) { ++			if (priv->has_mwo) ++				priv->mwo_robust = frag_value; ++			else ++				priv->frag_thresh = frag_value; ++		} ++		if (rts_value >= 0) ++			priv->rts_thresh = rts_value; ++ ++		err = orinoco_commit(priv); ++ ++		orinoco_unlock(priv, &flags); ++	} ++ ++	return err; ++} ++ ++const struct cfg80211_ops orinoco_cfg_ops = { ++	.change_virtual_intf = orinoco_change_vif, ++	.set_monitor_channel = orinoco_set_monitor_channel, ++	.scan = orinoco_scan, ++	.set_wiphy_params = orinoco_set_wiphy_params, ++}; +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/cfg.h linux-6.15.6/drivers/net/wireless/intersil/orinoco/cfg.h +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/cfg.h	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/cfg.h	2025-08-03 15:01:59.313131673 +0200 +@@ -0,0 +1,15 @@ ++/* cfg80211 support. ++ * ++ * See copyright notice in main.c ++ */ ++#ifndef ORINOCO_CFG_H ++#define ORINOCO_CFG_H ++ ++#include <net/cfg80211.h> ++ ++extern const struct cfg80211_ops orinoco_cfg_ops; ++ ++void orinoco_wiphy_init(struct wiphy *wiphy); ++int orinoco_wiphy_register(struct wiphy *wiphy); ++ ++#endif /* ORINOCO_CFG_H */ +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/fw.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/fw.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/fw.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/fw.c	2025-08-03 15:01:59.313131673 +0200 +@@ -0,0 +1,387 @@ ++/* Firmware file reading and download helpers ++ * ++ * See copyright notice in main.c ++ */ ++#include <linux/kernel.h> ++#include <linux/slab.h> ++#include <linux/firmware.h> ++#include <linux/device.h> ++#include <linux/module.h> ++ ++#include "hermes.h" ++#include "hermes_dld.h" ++#include "orinoco.h" ++ ++#include "fw.h" ++ ++/* End markers (for Symbol firmware only) */ ++#define TEXT_END	0x1A		/* End of text header */ ++ ++struct fw_info { ++	char *pri_fw; ++	char *sta_fw; ++	char *ap_fw; ++	u32 pda_addr; ++	u16 pda_size; ++}; ++ ++static const struct fw_info orinoco_fw[] = { ++	{ NULL, "agere_sta_fw.bin", "agere_ap_fw.bin", 0x00390000, 1000 }, ++	{ NULL, "prism_sta_fw.bin", "prism_ap_fw.bin", 0, 1024 }, ++	{ "symbol_sp24t_prim_fw", "symbol_sp24t_sec_fw", NULL, 0x00003100, 512 } ++}; ++MODULE_FIRMWARE("agere_sta_fw.bin"); ++MODULE_FIRMWARE("agere_ap_fw.bin"); ++MODULE_FIRMWARE("prism_sta_fw.bin"); ++MODULE_FIRMWARE("prism_ap_fw.bin"); ++MODULE_FIRMWARE("symbol_sp24t_prim_fw"); ++MODULE_FIRMWARE("symbol_sp24t_sec_fw"); ++ ++/* Structure used to access fields in FW ++ * Make sure LE decoding macros are used ++ */ ++struct orinoco_fw_header { ++	char hdr_vers[6];       /* ASCII string for header version */ ++	__le16 headersize;      /* Total length of header */ ++	__le32 entry_point;     /* NIC entry point */ ++	__le32 blocks;          /* Number of blocks to program */ ++	__le32 block_offset;    /* Offset of block data from eof header */ ++	__le32 pdr_offset;      /* Offset to PDR data from eof header */ ++	__le32 pri_offset;      /* Offset to primary plug data */ ++	__le32 compat_offset;   /* Offset to compatibility data*/ ++	char signature[];      /* FW signature length headersize-20 */ ++} __packed; ++ ++/* Check the range of various header entries. Return a pointer to a ++ * description of the problem, or NULL if everything checks out. */ ++static const char *validate_fw(const struct orinoco_fw_header *hdr, size_t len) ++{ ++	u16 hdrsize; ++ ++	if (len < sizeof(*hdr)) ++		return "image too small"; ++	if (memcmp(hdr->hdr_vers, "HFW", 3) != 0) ++		return "format not recognised"; ++ ++	hdrsize = le16_to_cpu(hdr->headersize); ++	if (hdrsize > len) ++		return "bad headersize"; ++	if ((hdrsize + le32_to_cpu(hdr->block_offset)) > len) ++		return "bad block offset"; ++	if ((hdrsize + le32_to_cpu(hdr->pdr_offset)) > len) ++		return "bad PDR offset"; ++	if ((hdrsize + le32_to_cpu(hdr->pri_offset)) > len) ++		return "bad PRI offset"; ++	if ((hdrsize + le32_to_cpu(hdr->compat_offset)) > len) ++		return "bad compat offset"; ++ ++	/* TODO: consider adding a checksum or CRC to the firmware format */ ++	return NULL; ++} ++ ++#if defined(CONFIG_HERMES_CACHE_FW_ON_INIT) || defined(CONFIG_PM_SLEEP) ++static inline const struct firmware * ++orinoco_cached_fw_get(struct orinoco_private *priv, bool primary) ++{ ++	if (primary) ++		return priv->cached_pri_fw; ++	else ++		return priv->cached_fw; ++} ++#else ++#define orinoco_cached_fw_get(priv, primary) (NULL) ++#endif ++ ++/* Download either STA or AP firmware into the card. */ ++static int ++orinoco_dl_firmware(struct orinoco_private *priv, ++		    const struct fw_info *fw, ++		    int ap) ++{ ++	/* Plug Data Area (PDA) */ ++	__le16 *pda; ++ ++	struct hermes *hw = &priv->hw; ++	const struct firmware *fw_entry; ++	const struct orinoco_fw_header *hdr; ++	const unsigned char *first_block; ++	const void *end; ++	const char *firmware; ++	const char *fw_err; ++	struct device *dev = priv->dev; ++	int err = 0; ++ ++	pda = kzalloc(fw->pda_size, GFP_KERNEL); ++	if (!pda) ++		return -ENOMEM; ++ ++	if (ap) ++		firmware = fw->ap_fw; ++	else ++		firmware = fw->sta_fw; ++ ++	dev_dbg(dev, "Attempting to download firmware %s\n", firmware); ++ ++	/* Read current plug data */ ++	err = hw->ops->read_pda(hw, pda, fw->pda_addr, fw->pda_size); ++	dev_dbg(dev, "Read PDA returned %d\n", err); ++	if (err) ++		goto free; ++ ++	if (!orinoco_cached_fw_get(priv, false)) { ++		err = request_firmware(&fw_entry, firmware, priv->dev); ++ ++		if (err) { ++			dev_err(dev, "Cannot find firmware %s\n", firmware); ++			err = -ENOENT; ++			goto free; ++		} ++	} else ++		fw_entry = orinoco_cached_fw_get(priv, false); ++ ++	hdr = (const struct orinoco_fw_header *) fw_entry->data; ++ ++	fw_err = validate_fw(hdr, fw_entry->size); ++	if (fw_err) { ++		dev_warn(dev, "Invalid firmware image detected (%s). " ++			 "Aborting download\n", fw_err); ++		err = -EINVAL; ++		goto abort; ++	} ++ ++	/* Enable aux port to allow programming */ ++	err = hw->ops->program_init(hw, le32_to_cpu(hdr->entry_point)); ++	dev_dbg(dev, "Program init returned %d\n", err); ++	if (err != 0) ++		goto abort; ++ ++	/* Program data */ ++	first_block = (fw_entry->data + ++		       le16_to_cpu(hdr->headersize) + ++		       le32_to_cpu(hdr->block_offset)); ++	end = fw_entry->data + fw_entry->size; ++ ++	err = hermes_program(hw, first_block, end); ++	dev_dbg(dev, "Program returned %d\n", err); ++	if (err != 0) ++		goto abort; ++ ++	/* Update production data */ ++	first_block = (fw_entry->data + ++		       le16_to_cpu(hdr->headersize) + ++		       le32_to_cpu(hdr->pdr_offset)); ++ ++	err = hermes_apply_pda_with_defaults(hw, first_block, end, pda, ++					     &pda[fw->pda_size / sizeof(*pda)]); ++	dev_dbg(dev, "Apply PDA returned %d\n", err); ++	if (err) ++		goto abort; ++ ++	/* Tell card we've finished */ ++	err = hw->ops->program_end(hw); ++	dev_dbg(dev, "Program end returned %d\n", err); ++	if (err != 0) ++		goto abort; ++ ++	/* Check if we're running */ ++	dev_dbg(dev, "hermes_present returned %d\n", hermes_present(hw)); ++ ++abort: ++	/* If we requested the firmware, release it. */ ++	if (!orinoco_cached_fw_get(priv, false)) ++		release_firmware(fw_entry); ++ ++free: ++	kfree(pda); ++	return err; ++} ++ ++/* ++ * Process a firmware image - stop the card, load the firmware, reset ++ * the card and make sure it responds.  For the secondary firmware take ++ * care of the PDA - read it and then write it on top of the firmware. ++ */ ++static int ++symbol_dl_image(struct orinoco_private *priv, const struct fw_info *fw, ++		const unsigned char *image, const void *end, ++		int secondary) ++{ ++	struct hermes *hw = &priv->hw; ++	int ret = 0; ++	const unsigned char *ptr; ++	const unsigned char *first_block; ++ ++	/* Plug Data Area (PDA) */ ++	__le16 *pda = NULL; ++ ++	/* Binary block begins after the 0x1A marker */ ++	ptr = image; ++	while (*ptr++ != TEXT_END); ++	first_block = ptr; ++ ++	/* Read the PDA from EEPROM */ ++	if (secondary) { ++		pda = kzalloc(fw->pda_size, GFP_KERNEL); ++		if (!pda) ++			return -ENOMEM; ++ ++		ret = hw->ops->read_pda(hw, pda, fw->pda_addr, fw->pda_size); ++		if (ret) ++			goto free; ++	} ++ ++	/* Stop the firmware, so that it can be safely rewritten */ ++	if (priv->stop_fw) { ++		ret = priv->stop_fw(priv, 1); ++		if (ret) ++			goto free; ++	} ++ ++	/* Program the adapter with new firmware */ ++	ret = hermes_program(hw, first_block, end); ++	if (ret) ++		goto free; ++ ++	/* Write the PDA to the adapter */ ++	if (secondary) { ++		size_t len = hermes_blocks_length(first_block, end); ++		ptr = first_block + len; ++		ret = hermes_apply_pda(hw, ptr, end, pda, ++				       &pda[fw->pda_size / sizeof(*pda)]); ++		kfree(pda); ++		if (ret) ++			return ret; ++	} ++ ++	/* Run the firmware */ ++	if (priv->stop_fw) { ++		ret = priv->stop_fw(priv, 0); ++		if (ret) ++			return ret; ++	} ++ ++	/* Reset hermes chip and make sure it responds */ ++	ret = hw->ops->init(hw); ++ ++	/* hermes_reset() should return 0 with the secondary firmware */ ++	if (secondary && ret != 0) ++		return -ENODEV; ++ ++	/* And this should work with any firmware */ ++	if (!hermes_present(hw)) ++		return -ENODEV; ++ ++	return 0; ++ ++free: ++	kfree(pda); ++	return ret; ++} ++ ++ ++/* ++ * Download the firmware into the card, this also does a PCMCIA soft ++ * reset on the card, to make sure it's in a sane state. ++ */ ++static int ++symbol_dl_firmware(struct orinoco_private *priv, ++		   const struct fw_info *fw) ++{ ++	struct device *dev = priv->dev; ++	int ret; ++	const struct firmware *fw_entry; ++ ++	if (!orinoco_cached_fw_get(priv, true)) { ++		if (request_firmware(&fw_entry, fw->pri_fw, priv->dev) != 0) { ++			dev_err(dev, "Cannot find firmware: %s\n", fw->pri_fw); ++			return -ENOENT; ++		} ++	} else ++		fw_entry = orinoco_cached_fw_get(priv, true); ++ ++	/* Load primary firmware */ ++	ret = symbol_dl_image(priv, fw, fw_entry->data, ++			      fw_entry->data + fw_entry->size, 0); ++ ++	if (!orinoco_cached_fw_get(priv, true)) ++		release_firmware(fw_entry); ++	if (ret) { ++		dev_err(dev, "Primary firmware download failed\n"); ++		return ret; ++	} ++ ++	if (!orinoco_cached_fw_get(priv, false)) { ++		if (request_firmware(&fw_entry, fw->sta_fw, priv->dev) != 0) { ++			dev_err(dev, "Cannot find firmware: %s\n", fw->sta_fw); ++			return -ENOENT; ++		} ++	} else ++		fw_entry = orinoco_cached_fw_get(priv, false); ++ ++	/* Load secondary firmware */ ++	ret = symbol_dl_image(priv, fw, fw_entry->data, ++			      fw_entry->data + fw_entry->size, 1); ++	if (!orinoco_cached_fw_get(priv, false)) ++		release_firmware(fw_entry); ++	if (ret) ++		dev_err(dev, "Secondary firmware download failed\n"); ++ ++	return ret; ++} ++ ++int orinoco_download(struct orinoco_private *priv) ++{ ++	int err = 0; ++	/* Reload firmware */ ++	switch (priv->firmware_type) { ++	case FIRMWARE_TYPE_AGERE: ++		/* case FIRMWARE_TYPE_INTERSIL: */ ++		err = orinoco_dl_firmware(priv, ++					  &orinoco_fw[priv->firmware_type], 0); ++		break; ++ ++	case FIRMWARE_TYPE_SYMBOL: ++		err = symbol_dl_firmware(priv, ++					 &orinoco_fw[priv->firmware_type]); ++		break; ++	case FIRMWARE_TYPE_INTERSIL: ++		break; ++	} ++	/* TODO: if we fail we probably need to reinitialise ++	 * the driver */ ++ ++	return err; ++} ++ ++#if defined(CONFIG_HERMES_CACHE_FW_ON_INIT) || defined(CONFIG_PM_SLEEP) ++void orinoco_cache_fw(struct orinoco_private *priv, int ap) ++{ ++	const struct firmware *fw_entry = NULL; ++	const char *pri_fw; ++	const char *fw; ++ ++	pri_fw = orinoco_fw[priv->firmware_type].pri_fw; ++	if (ap) ++		fw = orinoco_fw[priv->firmware_type].ap_fw; ++	else ++		fw = orinoco_fw[priv->firmware_type].sta_fw; ++ ++	if (pri_fw) { ++		if (request_firmware(&fw_entry, pri_fw, priv->dev) == 0) ++			priv->cached_pri_fw = fw_entry; ++	} ++ ++	if (fw) { ++		if (request_firmware(&fw_entry, fw, priv->dev) == 0) ++			priv->cached_fw = fw_entry; ++	} ++} ++ ++void orinoco_uncache_fw(struct orinoco_private *priv) ++{ ++	release_firmware(priv->cached_pri_fw); ++	release_firmware(priv->cached_fw); ++	priv->cached_pri_fw = NULL; ++	priv->cached_fw = NULL; ++} ++#endif +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/fw.h linux-6.15.6/drivers/net/wireless/intersil/orinoco/fw.h +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/fw.h	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/fw.h	2025-08-03 15:01:59.313131673 +0200 +@@ -0,0 +1,21 @@ ++/* Firmware file reading and download helpers ++ * ++ * See copyright notice in main.c ++ */ ++#ifndef _ORINOCO_FW_H_ ++#define _ORINOCO_FW_H_ ++ ++/* Forward declations */ ++struct orinoco_private; ++ ++int orinoco_download(struct orinoco_private *priv); ++ ++#if defined(CONFIG_HERMES_CACHE_FW_ON_INIT) || defined(CONFIG_PM_SLEEP) ++void orinoco_cache_fw(struct orinoco_private *priv, int ap); ++void orinoco_uncache_fw(struct orinoco_private *priv); ++#else ++#define orinoco_cache_fw(priv, ap) do { } while (0) ++#define orinoco_uncache_fw(priv) do { } while (0) ++#endif ++ ++#endif /* _ORINOCO_FW_H_ */ +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/hermes.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/hermes.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/hermes.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/hermes.c	2025-08-03 22:42:47.279513981 +0200 +@@ -0,0 +1,778 @@ ++/* hermes.c ++ * ++ * Driver core for the "Hermes" wireless MAC controller, as used in ++ * the Lucent Orinoco and Cabletron RoamAbout cards. It should also ++ * work on the hfa3841 and hfa3842 MAC controller chips used in the ++ * Prism II chipsets. ++ * ++ * This is not a complete driver, just low-level access routines for ++ * the MAC controller itself. ++ * ++ * Based on the prism2 driver from Absolute Value Systems' linux-wlan ++ * project, the Linux wvlan_cs driver, Lucent's HCF-Light ++ * (wvlan_hcf.c) library, and the NetBSD wireless driver (in no ++ * particular order). ++ * ++ * Copyright (C) 2000, David Gibson, Linuxcare Australia. ++ * (C) Copyright David Gibson, IBM Corp. 2001-2003. ++ * ++ * The contents of this file are subject to the Mozilla Public License ++ * Version 1.1 (the "License"); you may not use this file except in ++ * compliance with the License. You may obtain a copy of the License ++ * at http://www.mozilla.org/MPL/ ++ * ++ * Software distributed under the License is distributed on an "AS IS" ++ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See ++ * the License for the specific language governing rights and ++ * limitations under the License. ++ * ++ * Alternatively, the contents of this file may be used under the ++ * terms of the GNU General Public License version 2 (the "GPL"), in ++ * which case the provisions of the GPL are applicable instead of the ++ * above.  If you wish to allow the use of your version of this file ++ * only under the terms of the GPL and not to allow others to use your ++ * version of this file under the MPL, indicate your decision by ++ * deleting the provisions above and replace them with the notice and ++ * other provisions required by the GPL.  If you do not delete the ++ * provisions above, a recipient may use your version of this file ++ * under either the MPL or the GPL. ++ */ ++ ++#include <linux/net.h> ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/delay.h> ++ ++#include "hermes.h" ++ ++/* These are maximum timeouts. Most often, card wil react much faster */ ++#define CMD_BUSY_TIMEOUT (100) /* In iterations of ~1us */ ++#define CMD_INIT_TIMEOUT (50000) /* in iterations of ~10us */ ++#define CMD_COMPL_TIMEOUT (20000) /* in iterations of ~10us */ ++#define ALLOC_COMPL_TIMEOUT (1000) /* in iterations of ~10us */ ++ ++/* ++ * AUX port access.  To unlock the AUX port write the access keys to the ++ * PARAM0-2 registers, then write HERMES_AUX_ENABLE to the HERMES_CONTROL ++ * register.  Then read it and make sure it's HERMES_AUX_ENABLED. ++ */ ++#define HERMES_AUX_ENABLE	0x8000	/* Enable auxiliary port access */ ++#define HERMES_AUX_DISABLE	0x4000	/* Disable to auxiliary port access */ ++#define HERMES_AUX_ENABLED	0xC000	/* Auxiliary port is open */ ++#define HERMES_AUX_DISABLED	0x0000	/* Auxiliary port is closed */ ++ ++#define HERMES_AUX_PW0	0xFE01 ++#define HERMES_AUX_PW1	0xDC23 ++#define HERMES_AUX_PW2	0xBA45 ++ ++/* HERMES_CMD_DOWNLD */ ++#define HERMES_PROGRAM_DISABLE             (0x0000 | HERMES_CMD_DOWNLD) ++#define HERMES_PROGRAM_ENABLE_VOLATILE     (0x0100 | HERMES_CMD_DOWNLD) ++#define HERMES_PROGRAM_ENABLE_NON_VOLATILE (0x0200 | HERMES_CMD_DOWNLD) ++#define HERMES_PROGRAM_NON_VOLATILE        (0x0300 | HERMES_CMD_DOWNLD) ++ ++/* ++ * Debugging helpers ++ */ ++ ++#define DMSG(stuff...) do {printk(KERN_DEBUG "hermes @ %p: " , hw->iobase); \ ++			printk(stuff); } while (0) ++ ++#undef HERMES_DEBUG ++#ifdef HERMES_DEBUG ++ ++#define DEBUG(lvl, stuff...) if ((lvl) <= HERMES_DEBUG) DMSG(stuff) ++ ++#else /* ! HERMES_DEBUG */ ++ ++#define DEBUG(lvl, stuff...) do { } while (0) ++ ++#endif /* ! HERMES_DEBUG */ ++ ++static const struct hermes_ops hermes_ops_local; ++ ++/* ++ * Internal functions ++ */ ++ ++/* Issue a command to the chip. Waiting for it to complete is the caller's ++   problem. ++ ++   Returns -EBUSY if the command register is busy, 0 on success. ++ ++   Callable from any context. ++*/ ++static int hermes_issue_cmd(struct hermes *hw, u16 cmd, u16 param0, ++			    u16 param1, u16 param2) ++{ ++	int k = CMD_BUSY_TIMEOUT; ++	u16 reg; ++ ++	/* First wait for the command register to unbusy */ ++	reg = hermes_read_regn(hw, CMD); ++	while ((reg & HERMES_CMD_BUSY) && k) { ++		k--; ++		udelay(1); ++		reg = hermes_read_regn(hw, CMD); ++	} ++	if (reg & HERMES_CMD_BUSY) ++		return -EBUSY; ++ ++	hermes_write_regn(hw, PARAM2, param2); ++	hermes_write_regn(hw, PARAM1, param1); ++	hermes_write_regn(hw, PARAM0, param0); ++	hermes_write_regn(hw, CMD, cmd); ++ ++	return 0; ++} ++ ++/* ++ * Function definitions ++ */ ++ ++/* For doing cmds that wipe the magic constant in SWSUPPORT0 */ ++static int hermes_doicmd_wait(struct hermes *hw, u16 cmd, ++			      u16 parm0, u16 parm1, u16 parm2, ++			      struct hermes_response *resp) ++{ ++	int err = 0; ++	int k; ++	u16 status, reg; ++ ++	err = hermes_issue_cmd(hw, cmd, parm0, parm1, parm2); ++	if (err) ++		return err; ++ ++	reg = hermes_read_regn(hw, EVSTAT); ++	k = CMD_INIT_TIMEOUT; ++	while ((!(reg & HERMES_EV_CMD)) && k) { ++		k--; ++		udelay(10); ++		reg = hermes_read_regn(hw, EVSTAT); ++	} ++ ++	hermes_write_regn(hw, SWSUPPORT0, HERMES_MAGIC); ++ ++	if (!hermes_present(hw)) { ++		DEBUG(0, "hermes @ 0x%x: Card removed during reset.\n", ++		       hw->iobase); ++		err = -ENODEV; ++		goto out; ++	} ++ ++	if (!(reg & HERMES_EV_CMD)) { ++		printk(KERN_ERR "hermes @ %p: " ++		       "Timeout waiting for card to reset (reg=0x%04x)!\n", ++		       hw->iobase, reg); ++		err = -ETIMEDOUT; ++		goto out; ++	} ++ ++	status = hermes_read_regn(hw, STATUS); ++	if (resp) { ++		resp->status = status; ++		resp->resp0 = hermes_read_regn(hw, RESP0); ++		resp->resp1 = hermes_read_regn(hw, RESP1); ++		resp->resp2 = hermes_read_regn(hw, RESP2); ++	} ++ ++	hermes_write_regn(hw, EVACK, HERMES_EV_CMD); ++ ++	if (status & HERMES_STATUS_RESULT) ++		err = -EIO; ++out: ++	return err; ++} ++ ++void hermes_struct_init(struct hermes *hw, void __iomem *address, ++			int reg_spacing) ++{ ++	hw->iobase = address; ++	hw->reg_spacing = reg_spacing; ++	hw->inten = 0x0; ++	hw->eeprom_pda = false; ++	hw->ops = &hermes_ops_local; ++} ++EXPORT_SYMBOL(hermes_struct_init); ++ ++static int hermes_init(struct hermes *hw) ++{ ++	u16 reg; ++	int err = 0; ++	int k; ++ ++	/* We don't want to be interrupted while resetting the chipset */ ++	hw->inten = 0x0; ++	hermes_write_regn(hw, INTEN, 0); ++	hermes_write_regn(hw, EVACK, 0xffff); ++ ++	/* Normally it's a "can't happen" for the command register to ++	   be busy when we go to issue a command because we are ++	   serializing all commands.  However we want to have some ++	   chance of resetting the card even if it gets into a stupid ++	   state, so we actually wait to see if the command register ++	   will unbusy itself here. */ ++	k = CMD_BUSY_TIMEOUT; ++	reg = hermes_read_regn(hw, CMD); ++	while (k && (reg & HERMES_CMD_BUSY)) { ++		if (reg == 0xffff) /* Special case - the card has probably been ++				      removed, so don't wait for the timeout */ ++			return -ENODEV; ++ ++		k--; ++		udelay(1); ++		reg = hermes_read_regn(hw, CMD); ++	} ++ ++	/* No need to explicitly handle the timeout - if we've timed ++	   out hermes_issue_cmd() will probably return -EBUSY below */ ++ ++	/* According to the documentation, EVSTAT may contain ++	   obsolete event occurrence information.  We have to acknowledge ++	   it by writing EVACK. */ ++	reg = hermes_read_regn(hw, EVSTAT); ++	hermes_write_regn(hw, EVACK, reg); ++ ++	/* We don't use hermes_docmd_wait here, because the reset wipes ++	   the magic constant in SWSUPPORT0 away, and it gets confused */ ++	err = hermes_doicmd_wait(hw, HERMES_CMD_INIT, 0, 0, 0, NULL); ++ ++	return err; ++} ++ ++/* Issue a command to the chip, and (busy!) wait for it to ++ * complete. ++ * ++ * Returns: ++ *     < 0 on internal error ++ *       0 on success ++ *     > 0 on error returned by the firmware ++ * ++ * Callable from any context, but locking is your problem. */ ++static int hermes_docmd_wait(struct hermes *hw, u16 cmd, u16 parm0, ++			     struct hermes_response *resp) ++{ ++	int err; ++	int k; ++	u16 reg; ++	u16 status; ++ ++	err = hermes_issue_cmd(hw, cmd, parm0, 0, 0); ++	if (err) { ++		if (!hermes_present(hw)) { ++			if (net_ratelimit()) ++				printk(KERN_WARNING "hermes @ %p: " ++				       "Card removed while issuing command " ++				       "0x%04x.\n", hw->iobase, cmd); ++			err = -ENODEV; ++		} else ++			if (net_ratelimit()) ++				printk(KERN_ERR "hermes @ %p: " ++				       "Error %d issuing command 0x%04x.\n", ++				       hw->iobase, err, cmd); ++		goto out; ++	} ++ ++	reg = hermes_read_regn(hw, EVSTAT); ++	k = CMD_COMPL_TIMEOUT; ++	while ((!(reg & HERMES_EV_CMD)) && k) { ++		k--; ++		udelay(10); ++		reg = hermes_read_regn(hw, EVSTAT); ++	} ++ ++	if (!hermes_present(hw)) { ++		printk(KERN_WARNING "hermes @ %p: Card removed " ++		       "while waiting for command 0x%04x completion.\n", ++		       hw->iobase, cmd); ++		err = -ENODEV; ++		goto out; ++	} ++ ++	if (!(reg & HERMES_EV_CMD)) { ++		printk(KERN_ERR "hermes @ %p: Timeout waiting for " ++		       "command 0x%04x completion.\n", hw->iobase, cmd); ++		err = -ETIMEDOUT; ++		goto out; ++	} ++ ++	status = hermes_read_regn(hw, STATUS); ++	if (resp) { ++		resp->status = status; ++		resp->resp0 = hermes_read_regn(hw, RESP0); ++		resp->resp1 = hermes_read_regn(hw, RESP1); ++		resp->resp2 = hermes_read_regn(hw, RESP2); ++	} ++ ++	hermes_write_regn(hw, EVACK, HERMES_EV_CMD); ++ ++	if (status & HERMES_STATUS_RESULT) ++		err = -EIO; ++ ++ out: ++	return err; ++} ++ ++static int hermes_allocate(struct hermes *hw, u16 size, u16 *fid) ++{ ++	int err = 0; ++	int k; ++	u16 reg; ++ ++	if ((size < HERMES_ALLOC_LEN_MIN) || (size > HERMES_ALLOC_LEN_MAX)) ++		return -EINVAL; ++ ++	err = hermes_docmd_wait(hw, HERMES_CMD_ALLOC, size, NULL); ++	if (err) ++		return err; ++ ++	reg = hermes_read_regn(hw, EVSTAT); ++	k = ALLOC_COMPL_TIMEOUT; ++	while ((!(reg & HERMES_EV_ALLOC)) && k) { ++		k--; ++		udelay(10); ++		reg = hermes_read_regn(hw, EVSTAT); ++	} ++ ++	if (!hermes_present(hw)) { ++		printk(KERN_WARNING "hermes @ %p: " ++		       "Card removed waiting for frame allocation.\n", ++		       hw->iobase); ++		return -ENODEV; ++	} ++ ++	if (!(reg & HERMES_EV_ALLOC)) { ++		printk(KERN_ERR "hermes @ %p: " ++		       "Timeout waiting for frame allocation\n", ++		       hw->iobase); ++		return -ETIMEDOUT; ++	} ++ ++	*fid = hermes_read_regn(hw, ALLOCFID); ++	hermes_write_regn(hw, EVACK, HERMES_EV_ALLOC); ++ ++	return 0; ++} ++ ++/* Set up a BAP to read a particular chunk of data from card's internal buffer. ++ * ++ * Returns: ++ *     < 0 on internal failure (errno) ++ *       0 on success ++ *     > 0 on error ++ * from firmware ++ * ++ * Callable from any context */ ++static int hermes_bap_seek(struct hermes *hw, int bap, u16 id, u16 offset) ++{ ++	int sreg = bap ? HERMES_SELECT1 : HERMES_SELECT0; ++	int oreg = bap ? HERMES_OFFSET1 : HERMES_OFFSET0; ++	int k; ++	u16 reg; ++ ++	/* Paranoia.. */ ++	if ((offset > HERMES_BAP_OFFSET_MAX) || (offset % 2)) ++		return -EINVAL; ++ ++	k = HERMES_BAP_BUSY_TIMEOUT; ++	reg = hermes_read_reg(hw, oreg); ++	while ((reg & HERMES_OFFSET_BUSY) && k) { ++		k--; ++		udelay(1); ++		reg = hermes_read_reg(hw, oreg); ++	} ++ ++	if (reg & HERMES_OFFSET_BUSY) ++		return -ETIMEDOUT; ++ ++	/* Now we actually set up the transfer */ ++	hermes_write_reg(hw, sreg, id); ++	hermes_write_reg(hw, oreg, offset); ++ ++	/* Wait for the BAP to be ready */ ++	k = HERMES_BAP_BUSY_TIMEOUT; ++	reg = hermes_read_reg(hw, oreg); ++	while ((reg & (HERMES_OFFSET_BUSY | HERMES_OFFSET_ERR)) && k) { ++		k--; ++		udelay(1); ++		reg = hermes_read_reg(hw, oreg); ++	} ++ ++	if (reg != offset) { ++		printk(KERN_ERR "hermes @ %p: BAP%d offset %s: " ++		       "reg=0x%x id=0x%x offset=0x%x\n", hw->iobase, bap, ++		       (reg & HERMES_OFFSET_BUSY) ? "timeout" : "error", ++		       reg, id, offset); ++ ++		if (reg & HERMES_OFFSET_BUSY) ++			return -ETIMEDOUT; ++ ++		return -EIO;		/* error or wrong offset */ ++	} ++ ++	return 0; ++} ++ ++/* Read a block of data from the chip's buffer, via the ++ * BAP. Synchronization/serialization is the caller's problem.  len ++ * must be even. ++ * ++ * Returns: ++ *     < 0 on internal failure (errno) ++ *       0 on success ++ *     > 0 on error from firmware ++ */ ++static int hermes_bap_pread(struct hermes *hw, int bap, void *buf, int len, ++			    u16 id, u16 offset) ++{ ++	int dreg = bap ? HERMES_DATA1 : HERMES_DATA0; ++	int err = 0; ++ ++	if ((len < 0) || (len % 2)) ++		return -EINVAL; ++ ++	err = hermes_bap_seek(hw, bap, id, offset); ++	if (err) ++		goto out; ++ ++	/* Actually do the transfer */ ++	hermes_read_words(hw, dreg, buf, len / 2); ++ ++ out: ++	return err; ++} ++ ++/* Write a block of data to the chip's buffer, via the ++ * BAP. Synchronization/serialization is the caller's problem. ++ * ++ * Returns: ++ *     < 0 on internal failure (errno) ++ *       0 on success ++ *     > 0 on error from firmware ++ */ ++static int hermes_bap_pwrite(struct hermes *hw, int bap, const void *buf, ++			     int len, u16 id, u16 offset) ++{ ++	int dreg = bap ? HERMES_DATA1 : HERMES_DATA0; ++	int err = 0; ++ ++	if (len < 0) ++		return -EINVAL; ++ ++	err = hermes_bap_seek(hw, bap, id, offset); ++	if (err) ++		goto out; ++ ++	/* Actually do the transfer */ ++	hermes_write_bytes(hw, dreg, buf, len); ++ ++ out: ++	return err; ++} ++ ++/* Read a Length-Type-Value record from the card. ++ * ++ * If length is NULL, we ignore the length read from the card, and ++ * read the entire buffer regardless. This is useful because some of ++ * the configuration records appear to have incorrect lengths in ++ * practice. ++ * ++ * Callable from user or bh context.  */ ++static int hermes_read_ltv(struct hermes *hw, int bap, u16 rid, ++			   unsigned bufsize, u16 *length, void *buf) ++{ ++	int err = 0; ++	int dreg = bap ? HERMES_DATA1 : HERMES_DATA0; ++	u16 rlength, rtype; ++	unsigned nwords; ++ ++	if (bufsize % 2) ++		return -EINVAL; ++ ++	err = hermes_docmd_wait(hw, HERMES_CMD_ACCESS, rid, NULL); ++	if (err) ++		return err; ++ ++	err = hermes_bap_seek(hw, bap, rid, 0); ++	if (err) ++		return err; ++ ++	rlength = hermes_read_reg(hw, dreg); ++ ++	if (!rlength) ++		return -ENODATA; ++ ++	rtype = hermes_read_reg(hw, dreg); ++ ++	if (length) ++		*length = rlength; ++ ++	if (rtype != rid) ++		printk(KERN_WARNING "hermes @ %p: %s(): " ++		       "rid (0x%04x) does not match type (0x%04x)\n", ++		       hw->iobase, __func__, rid, rtype); ++	if (HERMES_RECLEN_TO_BYTES(rlength) > bufsize) ++		printk(KERN_WARNING "hermes @ %p: " ++		       "Truncating LTV record from %d to %d bytes. " ++		       "(rid=0x%04x, len=0x%04x)\n", hw->iobase, ++		       HERMES_RECLEN_TO_BYTES(rlength), bufsize, rid, rlength); ++ ++	nwords = min((unsigned)rlength - 1, bufsize / 2); ++	hermes_read_words(hw, dreg, buf, nwords); ++ ++	return 0; ++} ++ ++static int hermes_write_ltv(struct hermes *hw, int bap, u16 rid, ++			    u16 length, const void *value) ++{ ++	int dreg = bap ? HERMES_DATA1 : HERMES_DATA0; ++	int err = 0; ++	unsigned count; ++ ++	if (length == 0) ++		return -EINVAL; ++ ++	err = hermes_bap_seek(hw, bap, rid, 0); ++	if (err) ++		return err; ++ ++	hermes_write_reg(hw, dreg, length); ++	hermes_write_reg(hw, dreg, rid); ++ ++	count = length - 1; ++ ++	hermes_write_bytes(hw, dreg, value, count << 1); ++ ++	err = hermes_docmd_wait(hw, HERMES_CMD_ACCESS | HERMES_CMD_WRITE, ++				rid, NULL); ++ ++	return err; ++} ++ ++/*** Hermes AUX control ***/ ++ ++static inline void ++hermes_aux_setaddr(struct hermes *hw, u32 addr) ++{ ++	hermes_write_reg(hw, HERMES_AUXPAGE, (u16) (addr >> 7)); ++	hermes_write_reg(hw, HERMES_AUXOFFSET, (u16) (addr & 0x7F)); ++} ++ ++static inline int ++hermes_aux_control(struct hermes *hw, int enabled) ++{ ++	int desired_state = enabled ? HERMES_AUX_ENABLED : HERMES_AUX_DISABLED; ++	int action = enabled ? HERMES_AUX_ENABLE : HERMES_AUX_DISABLE; ++	int i; ++ ++	/* Already open? */ ++	if (hermes_read_reg(hw, HERMES_CONTROL) == desired_state) ++		return 0; ++ ++	hermes_write_reg(hw, HERMES_PARAM0, HERMES_AUX_PW0); ++	hermes_write_reg(hw, HERMES_PARAM1, HERMES_AUX_PW1); ++	hermes_write_reg(hw, HERMES_PARAM2, HERMES_AUX_PW2); ++	hermes_write_reg(hw, HERMES_CONTROL, action); ++ ++	for (i = 0; i < 20; i++) { ++		udelay(10); ++		if (hermes_read_reg(hw, HERMES_CONTROL) == ++		    desired_state) ++			return 0; ++	} ++ ++	return -EBUSY; ++} ++ ++/*** Hermes programming ***/ ++ ++/* About to start programming data (Hermes I) ++ * offset is the entry point ++ * ++ * Spectrum_cs' Symbol fw does not require this ++ * wl_lkm Agere fw does ++ * Don't know about intersil ++ */ ++static int hermesi_program_init(struct hermes *hw, u32 offset) ++{ ++	int err; ++ ++	/* Disable interrupts?*/ ++	/*hw->inten = 0x0;*/ ++	/*hermes_write_regn(hw, INTEN, 0);*/ ++	/*hermes_set_irqmask(hw, 0);*/ ++ ++	/* Acknowledge any outstanding command */ ++	hermes_write_regn(hw, EVACK, 0xFFFF); ++ ++	/* Using init_cmd_wait rather than cmd_wait */ ++	err = hw->ops->init_cmd_wait(hw, ++				     0x0100 | HERMES_CMD_INIT, ++				     0, 0, 0, NULL); ++	if (err) ++		return err; ++ ++	err = hw->ops->init_cmd_wait(hw, ++				     0x0000 | HERMES_CMD_INIT, ++				     0, 0, 0, NULL); ++	if (err) ++		return err; ++ ++	err = hermes_aux_control(hw, 1); ++	pr_debug("AUX enable returned %d\n", err); ++ ++	if (err) ++		return err; ++ ++	pr_debug("Enabling volatile, EP 0x%08x\n", offset); ++	err = hw->ops->init_cmd_wait(hw, ++				     HERMES_PROGRAM_ENABLE_VOLATILE, ++				     offset & 0xFFFFu, ++				     offset >> 16, ++				     0, ++				     NULL); ++	pr_debug("PROGRAM_ENABLE returned %d\n", err); ++ ++	return err; ++} ++ ++/* Done programming data (Hermes I) ++ * ++ * Spectrum_cs' Symbol fw does not require this ++ * wl_lkm Agere fw does ++ * Don't know about intersil ++ */ ++static int hermesi_program_end(struct hermes *hw) ++{ ++	struct hermes_response resp; ++	int rc = 0; ++	int err; ++ ++	rc = hw->ops->cmd_wait(hw, HERMES_PROGRAM_DISABLE, 0, &resp); ++ ++	pr_debug("PROGRAM_DISABLE returned %d, " ++		 "r0 0x%04x, r1 0x%04x, r2 0x%04x\n", ++		 rc, resp.resp0, resp.resp1, resp.resp2); ++ ++	if ((rc == 0) && ++	    ((resp.status & HERMES_STATUS_CMDCODE) != HERMES_CMD_DOWNLD)) ++		rc = -EIO; ++ ++	err = hermes_aux_control(hw, 0); ++	pr_debug("AUX disable returned %d\n", err); ++ ++	/* Acknowledge any outstanding command */ ++	hermes_write_regn(hw, EVACK, 0xFFFF); ++ ++	/* Reinitialise, ignoring return */ ++	(void) hw->ops->init_cmd_wait(hw, 0x0000 | HERMES_CMD_INIT, ++				      0, 0, 0, NULL); ++ ++	return rc ? rc : err; ++} ++ ++static int hermes_program_bytes(struct hermes *hw, const char *data, ++				u32 addr, u32 len) ++{ ++	/* wl lkm splits the programming into chunks of 2000 bytes. ++	 * This restriction appears to come from USB. The PCMCIA ++	 * adapters can program the whole lot in one go */ ++	hermes_aux_setaddr(hw, addr); ++	hermes_write_bytes(hw, HERMES_AUXDATA, data, len); ++	return 0; ++} ++ ++/* Read PDA from the adapter */ ++static int hermes_read_pda(struct hermes *hw, __le16 *pda, u32 pda_addr, ++			   u16 pda_len) ++{ ++	int ret; ++	u16 pda_size; ++	u16 data_len = pda_len; ++	__le16 *data = pda; ++ ++	if (hw->eeprom_pda) { ++		/* PDA of spectrum symbol is in eeprom */ ++ ++		/* Issue command to read EEPROM */ ++		ret = hw->ops->cmd_wait(hw, HERMES_CMD_READMIF, 0, NULL); ++		if (ret) ++			return ret; ++	} else { ++		/* wl_lkm does not include PDA size in the PDA area. ++		 * We will pad the information into pda, so other routines ++		 * don't have to be modified */ ++		pda[0] = cpu_to_le16(pda_len - 2); ++			/* Includes CFG_PROD_DATA but not itself */ ++		pda[1] = cpu_to_le16(0x0800); /* CFG_PROD_DATA */ ++		data_len = pda_len - 4; ++		data = pda + 2; ++	} ++ ++	/* Open auxiliary port */ ++	ret = hermes_aux_control(hw, 1); ++	pr_debug("AUX enable returned %d\n", ret); ++	if (ret) ++		return ret; ++ ++	/* Read PDA */ ++	hermes_aux_setaddr(hw, pda_addr); ++	hermes_read_words(hw, HERMES_AUXDATA, data, data_len / 2); ++ ++	/* Close aux port */ ++	ret = hermes_aux_control(hw, 0); ++	pr_debug("AUX disable returned %d\n", ret); ++ ++	/* Check PDA length */ ++	pda_size = le16_to_cpu(pda[0]); ++	pr_debug("Actual PDA length %d, Max allowed %d\n", ++		 pda_size, pda_len); ++	if (pda_size > pda_len) ++		return -EINVAL; ++ ++	return 0; ++} ++ ++static void hermes_lock_irqsave(spinlock_t *lock, ++				unsigned long *flags) __acquires(lock) ++{ ++	spin_lock_irqsave(lock, *flags); ++} ++ ++static void hermes_unlock_irqrestore(spinlock_t *lock, ++				     unsigned long *flags) __releases(lock) ++{ ++	spin_unlock_irqrestore(lock, *flags); ++} ++ ++static void hermes_lock_irq(spinlock_t *lock) __acquires(lock) ++{ ++	spin_lock_irq(lock); ++} ++ ++static void hermes_unlock_irq(spinlock_t *lock) __releases(lock) ++{ ++	spin_unlock_irq(lock); ++} ++ ++/* Hermes operations for local buses */ ++static const struct hermes_ops hermes_ops_local = { ++	.init = hermes_init, ++	.cmd_wait = hermes_docmd_wait, ++	.init_cmd_wait = hermes_doicmd_wait, ++	.allocate = hermes_allocate, ++	.read_ltv = hermes_read_ltv, ++	.read_ltv_pr = hermes_read_ltv, ++	.write_ltv = hermes_write_ltv, ++	.bap_pread = hermes_bap_pread, ++	.bap_pwrite = hermes_bap_pwrite, ++	.read_pda = hermes_read_pda, ++	.program_init = hermesi_program_init, ++	.program_end = hermesi_program_end, ++	.program = hermes_program_bytes, ++	.lock_irqsave = hermes_lock_irqsave, ++	.unlock_irqrestore = hermes_unlock_irqrestore, ++	.lock_irq = hermes_lock_irq, ++	.unlock_irq = hermes_unlock_irq, ++}; +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/hermes_dld.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/hermes_dld.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/hermes_dld.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/hermes_dld.c	2025-08-03 15:01:59.325131328 +0200 +@@ -0,0 +1,477 @@ ++/* ++ * Hermes download helper. ++ * ++ * This helper: ++ *  - is capable of writing to the volatile area of the hermes device ++ *  - is currently not capable of writing to non-volatile areas ++ *  - provide helpers to identify and update plugin data ++ *  - is not capable of interpreting a fw image directly. That is up to ++ *    the main card driver. ++ *  - deals with Hermes I devices. It can probably be modified to deal ++ *    with Hermes II devices ++ * ++ * Copyright (C) 2007, David Kilroy ++ * ++ * Plug data code slightly modified from spectrum_cs driver ++ *    Copyright (C) 2002-2005 Pavel Roskin <proski@gnu.org> ++ * Portions based on information in wl_lkm_718 Agere driver ++ *    COPYRIGHT (C) 2001-2004 by Agere Systems Inc. All Rights Reserved ++ * ++ * The contents of this file are subject to the Mozilla Public License ++ * Version 1.1 (the "License"); you may not use this file except in ++ * compliance with the License. You may obtain a copy of the License ++ * at http://www.mozilla.org/MPL/ ++ * ++ * Software distributed under the License is distributed on an "AS IS" ++ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See ++ * the License for the specific language governing rights and ++ * limitations under the License. ++ * ++ * Alternatively, the contents of this file may be used under the ++ * terms of the GNU General Public License version 2 (the "GPL"), in ++ * which case the provisions of the GPL are applicable instead of the ++ * above.  If you wish to allow the use of your version of this file ++ * only under the terms of the GPL and not to allow others to use your ++ * version of this file under the MPL, indicate your decision by ++ * deleting the provisions above and replace them with the notice and ++ * other provisions required by the GPL.  If you do not delete the ++ * provisions above, a recipient may use your version of this file ++ * under either the MPL or the GPL. ++ */ ++ ++#include <linux/module.h> ++#include <linux/delay.h> ++#include "hermes.h" ++#include "hermes_dld.h" ++ ++#define PFX "hermes_dld: " ++ ++/* End markers used in dblocks */ ++#define PDI_END		0x00000000	/* End of PDA */ ++#define BLOCK_END	0xFFFFFFFF	/* Last image block */ ++#define TEXT_END	0x1A		/* End of text header */ ++ ++/* ++ * The following structures have little-endian fields denoted by ++ * the leading underscore.  Don't access them directly - use inline ++ * functions defined below. ++ */ ++ ++/* ++ * The binary image to be downloaded consists of series of data blocks. ++ * Each block has the following structure. ++ */ ++struct dblock { ++	__le32 addr;		/* adapter address where to write the block */ ++	__le16 len;		/* length of the data only, in bytes */ ++	char data[];		/* data to be written */ ++} __packed; ++ ++/* ++ * Plug Data References are located in the image after the last data ++ * block.  They refer to areas in the adapter memory where the plug data ++ * items with matching ID should be written. ++ */ ++struct pdr { ++	__le32 id;		/* record ID */ ++	__le32 addr;		/* adapter address where to write the data */ ++	__le32 len;		/* expected length of the data, in bytes */ ++	char next[];		/* next PDR starts here */ ++} __packed; ++ ++/* ++ * Plug Data Items are located in the EEPROM read from the adapter by ++ * primary firmware.  They refer to the device-specific data that should ++ * be plugged into the secondary firmware. ++ */ ++struct pdi { ++	__le16 len;		/* length of ID and data, in words */ ++	__le16 id;		/* record ID */ ++	char data[];		/* plug data */ ++} __packed; ++ ++/*** FW data block access functions ***/ ++ ++static inline u32 ++dblock_addr(const struct dblock *blk) ++{ ++	return le32_to_cpu(blk->addr); ++} ++ ++static inline u32 ++dblock_len(const struct dblock *blk) ++{ ++	return le16_to_cpu(blk->len); ++} ++ ++/*** PDR Access functions ***/ ++ ++static inline u32 ++pdr_id(const struct pdr *pdr) ++{ ++	return le32_to_cpu(pdr->id); ++} ++ ++static inline u32 ++pdr_addr(const struct pdr *pdr) ++{ ++	return le32_to_cpu(pdr->addr); ++} ++ ++static inline u32 ++pdr_len(const struct pdr *pdr) ++{ ++	return le32_to_cpu(pdr->len); ++} ++ ++/*** PDI Access functions ***/ ++ ++static inline u32 ++pdi_id(const struct pdi *pdi) ++{ ++	return le16_to_cpu(pdi->id); ++} ++ ++/* Return length of the data only, in bytes */ ++static inline u32 ++pdi_len(const struct pdi *pdi) ++{ ++	return 2 * (le16_to_cpu(pdi->len) - 1); ++} ++ ++/*** Plug Data Functions ***/ ++ ++/* ++ * Scan PDR for the record with the specified RECORD_ID. ++ * If it's not found, return NULL. ++ */ ++static const struct pdr * ++hermes_find_pdr(const struct pdr *first_pdr, u32 record_id, const void *end) ++{ ++	const struct pdr *pdr = first_pdr; ++ ++	end -= sizeof(struct pdr); ++ ++	while (((void *) pdr <= end) && ++	       (pdr_id(pdr) != PDI_END)) { ++		/* ++		 * PDR area is currently not terminated by PDI_END. ++		 * It's followed by CRC records, which have the type ++		 * field where PDR has length.  The type can be 0 or 1. ++		 */ ++		if (pdr_len(pdr) < 2) ++			return NULL; ++ ++		/* If the record ID matches, we are done */ ++		if (pdr_id(pdr) == record_id) ++			return pdr; ++ ++		pdr = (struct pdr *) pdr->next; ++	} ++	return NULL; ++} ++ ++/* Scan production data items for a particular entry */ ++static const struct pdi * ++hermes_find_pdi(const struct pdi *first_pdi, u32 record_id, const void *end) ++{ ++	const struct pdi *pdi = first_pdi; ++ ++	end -= sizeof(struct pdi); ++ ++	while (((void *) pdi <= end) && ++	       (pdi_id(pdi) != PDI_END)) { ++ ++		/* If the record ID matches, we are done */ ++		if (pdi_id(pdi) == record_id) ++			return pdi; ++ ++		pdi = (struct pdi *) &pdi->data[pdi_len(pdi)]; ++	} ++	return NULL; ++} ++ ++/* Process one Plug Data Item - find corresponding PDR and plug it */ ++static int ++hermes_plug_pdi(struct hermes *hw, const struct pdr *first_pdr, ++		const struct pdi *pdi, const void *pdr_end) ++{ ++	const struct pdr *pdr; ++ ++	/* Find the PDR corresponding to this PDI */ ++	pdr = hermes_find_pdr(first_pdr, pdi_id(pdi), pdr_end); ++ ++	/* No match is found, safe to ignore */ ++	if (!pdr) ++		return 0; ++ ++	/* Lengths of the data in PDI and PDR must match */ ++	if (pdi_len(pdi) != pdr_len(pdr)) ++		return -EINVAL; ++ ++	/* do the actual plugging */ ++	hw->ops->program(hw, pdi->data, pdr_addr(pdr), pdi_len(pdi)); ++ ++	return 0; ++} ++ ++/* Parse PDA and write the records into the adapter ++ * ++ * Attempt to write every records that is in the specified pda ++ * which also has a valid production data record for the firmware. ++ */ ++int hermes_apply_pda(struct hermes *hw, ++		     const char *first_pdr, ++		     const void *pdr_end, ++		     const __le16 *pda, ++		     const void *pda_end) ++{ ++	int ret; ++	const struct pdi *pdi; ++	const struct pdr *pdr; ++ ++	pdr = (const struct pdr *) first_pdr; ++	pda_end -= sizeof(struct pdi); ++ ++	/* Go through every PDI and plug them into the adapter */ ++	pdi = (const struct pdi *) (pda + 2); ++	while (((void *) pdi <= pda_end) && ++	       (pdi_id(pdi) != PDI_END)) { ++		ret = hermes_plug_pdi(hw, pdr, pdi, pdr_end); ++		if (ret) ++			return ret; ++ ++		/* Increment to the next PDI */ ++		pdi = (const struct pdi *) &pdi->data[pdi_len(pdi)]; ++	} ++	return 0; ++} ++ ++/* Identify the total number of bytes in all blocks ++ * including the header data. ++ */ ++size_t ++hermes_blocks_length(const char *first_block, const void *end) ++{ ++	const struct dblock *blk = (const struct dblock *) first_block; ++	int total_len = 0; ++	int len; ++ ++	end -= sizeof(*blk); ++ ++	/* Skip all blocks to locate Plug Data References ++	 * (Spectrum CS) */ ++	while (((void *) blk <= end) && ++	       (dblock_addr(blk) != BLOCK_END)) { ++		len = dblock_len(blk); ++		total_len += sizeof(*blk) + len; ++		blk = (struct dblock *) &blk->data[len]; ++	} ++ ++	return total_len; ++} ++ ++/*** Hermes programming ***/ ++ ++/* Program the data blocks */ ++int hermes_program(struct hermes *hw, const char *first_block, const void *end) ++{ ++	const struct dblock *blk; ++	u32 blkaddr; ++	u32 blklen; ++	int err = 0; ++ ++	blk = (const struct dblock *) first_block; ++ ++	if ((void *) blk > (end - sizeof(*blk))) ++		return -EIO; ++ ++	blkaddr = dblock_addr(blk); ++	blklen = dblock_len(blk); ++ ++	while ((blkaddr != BLOCK_END) && ++	       (((void *) blk + blklen) <= end)) { ++		pr_debug(PFX "Programming block of length %d " ++			 "to address 0x%08x\n", blklen, blkaddr); ++ ++		err = hw->ops->program(hw, blk->data, blkaddr, blklen); ++		if (err) ++			break; ++ ++		blk = (const struct dblock *) &blk->data[blklen]; ++ ++		if ((void *) blk > (end - sizeof(*blk))) ++			return -EIO; ++ ++		blkaddr = dblock_addr(blk); ++		blklen = dblock_len(blk); ++	} ++	return err; ++} ++ ++/*** Default plugging data for Hermes I ***/ ++/* Values from wl_lkm_718/hcf/dhf.c */ ++ ++#define DEFINE_DEFAULT_PDR(pid, length, data)				\ ++static const struct {							\ ++	__le16 len;							\ ++	__le16 id;							\ ++	u8 val[length];							\ ++} __packed default_pdr_data_##pid = {			\ ++	cpu_to_le16((sizeof(default_pdr_data_##pid)/			\ ++				sizeof(__le16)) - 1),			\ ++	cpu_to_le16(pid),						\ ++	data								\ ++} ++ ++#define DEFAULT_PDR(pid) default_pdr_data_##pid ++ ++/*  HWIF Compatibility */ ++DEFINE_DEFAULT_PDR(0x0005, 10, "\x00\x00\x06\x00\x01\x00\x01\x00\x01\x00"); ++ ++/* PPPPSign */ ++DEFINE_DEFAULT_PDR(0x0108, 4, "\x00\x00\x00\x00"); ++ ++/* PPPPProf */ ++DEFINE_DEFAULT_PDR(0x0109, 10, "\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00"); ++ ++/* Antenna diversity */ ++DEFINE_DEFAULT_PDR(0x0150, 2, "\x00\x3F"); ++ ++/* Modem VCO band Set-up */ ++DEFINE_DEFAULT_PDR(0x0160, 28, ++		   "\x00\x00\x00\x00\x00\x00\x00\x00" ++		   "\x00\x00\x00\x00\x00\x00\x00\x00" ++		   "\x00\x00\x00\x00\x00\x00\x00\x00" ++		   "\x00\x00\x00\x00"); ++ ++/* Modem Rx Gain Table Values */ ++DEFINE_DEFAULT_PDR(0x0161, 256, ++		   "\x3F\x01\x3F\01\x3F\x01\x3F\x01" ++		   "\x3F\x01\x3F\01\x3F\x01\x3F\x01" ++		   "\x3F\x01\x3F\01\x3F\x01\x3F\x01" ++		   "\x3F\x01\x3F\01\x3F\x01\x3F\x01" ++		   "\x3F\x01\x3E\01\x3E\x01\x3D\x01" ++		   "\x3D\x01\x3C\01\x3C\x01\x3B\x01" ++		   "\x3B\x01\x3A\01\x3A\x01\x39\x01" ++		   "\x39\x01\x38\01\x38\x01\x37\x01" ++		   "\x37\x01\x36\01\x36\x01\x35\x01" ++		   "\x35\x01\x34\01\x34\x01\x33\x01" ++		   "\x33\x01\x32\x01\x32\x01\x31\x01" ++		   "\x31\x01\x30\x01\x30\x01\x7B\x01" ++		   "\x7B\x01\x7A\x01\x7A\x01\x79\x01" ++		   "\x79\x01\x78\x01\x78\x01\x77\x01" ++		   "\x77\x01\x76\x01\x76\x01\x75\x01" ++		   "\x75\x01\x74\x01\x74\x01\x73\x01" ++		   "\x73\x01\x72\x01\x72\x01\x71\x01" ++		   "\x71\x01\x70\x01\x70\x01\x68\x01" ++		   "\x68\x01\x67\x01\x67\x01\x66\x01" ++		   "\x66\x01\x65\x01\x65\x01\x57\x01" ++		   "\x57\x01\x56\x01\x56\x01\x55\x01" ++		   "\x55\x01\x54\x01\x54\x01\x53\x01" ++		   "\x53\x01\x52\x01\x52\x01\x51\x01" ++		   "\x51\x01\x50\x01\x50\x01\x48\x01" ++		   "\x48\x01\x47\x01\x47\x01\x46\x01" ++		   "\x46\x01\x45\x01\x45\x01\x44\x01" ++		   "\x44\x01\x43\x01\x43\x01\x42\x01" ++		   "\x42\x01\x41\x01\x41\x01\x40\x01" ++		   "\x40\x01\x40\x01\x40\x01\x40\x01" ++		   "\x40\x01\x40\x01\x40\x01\x40\x01" ++		   "\x40\x01\x40\x01\x40\x01\x40\x01" ++		   "\x40\x01\x40\x01\x40\x01\x40\x01"); ++ ++/* Write PDA according to certain rules. ++ * ++ * For every production data record, look for a previous setting in ++ * the pda, and use that. ++ * ++ * For certain records, use defaults if they are not found in pda. ++ */ ++int hermes_apply_pda_with_defaults(struct hermes *hw, ++				   const char *first_pdr, ++				   const void *pdr_end, ++				   const __le16 *pda, ++				   const void *pda_end) ++{ ++	const struct pdr *pdr = (const struct pdr *) first_pdr; ++	const struct pdi *first_pdi = (const struct pdi *) &pda[2]; ++	const struct pdi *pdi; ++	const struct pdi *default_pdi = NULL; ++	const struct pdi *outdoor_pdi; ++	int record_id; ++ ++	pdr_end -= sizeof(struct pdr); ++ ++	while (((void *) pdr <= pdr_end) && ++	       (pdr_id(pdr) != PDI_END)) { ++		/* ++		 * For spectrum_cs firmwares, ++		 * PDR area is currently not terminated by PDI_END. ++		 * It's followed by CRC records, which have the type ++		 * field where PDR has length.  The type can be 0 or 1. ++		 */ ++		if (pdr_len(pdr) < 2) ++			break; ++		record_id = pdr_id(pdr); ++ ++		pdi = hermes_find_pdi(first_pdi, record_id, pda_end); ++		if (pdi) ++			pr_debug(PFX "Found record 0x%04x at %p\n", ++				 record_id, pdi); ++ ++		switch (record_id) { ++		case 0x110: /* Modem REFDAC values */ ++		case 0x120: /* Modem VGDAC values */ ++			outdoor_pdi = hermes_find_pdi(first_pdi, record_id + 1, ++						      pda_end); ++			default_pdi = NULL; ++			if (outdoor_pdi) { ++				pdi = outdoor_pdi; ++				pr_debug(PFX ++					 "Using outdoor record 0x%04x at %p\n", ++					 record_id + 1, pdi); ++			} ++			break; ++		case 0x5: /*  HWIF Compatibility */ ++			default_pdi = (struct pdi *) &DEFAULT_PDR(0x0005); ++			break; ++		case 0x108: /* PPPPSign */ ++			default_pdi = (struct pdi *) &DEFAULT_PDR(0x0108); ++			break; ++		case 0x109: /* PPPPProf */ ++			default_pdi = (struct pdi *) &DEFAULT_PDR(0x0109); ++			break; ++		case 0x150: /* Antenna diversity */ ++			default_pdi = (struct pdi *) &DEFAULT_PDR(0x0150); ++			break; ++		case 0x160: /* Modem VCO band Set-up */ ++			default_pdi = (struct pdi *) &DEFAULT_PDR(0x0160); ++			break; ++		case 0x161: /* Modem Rx Gain Table Values */ ++			default_pdi = (struct pdi *) &DEFAULT_PDR(0x0161); ++			break; ++		default: ++			default_pdi = NULL; ++			break; ++		} ++		if (!pdi && default_pdi) { ++			/* Use default */ ++			pdi = default_pdi; ++			pr_debug(PFX "Using default record 0x%04x at %p\n", ++				 record_id, pdi); ++		} ++ ++		if (pdi) { ++			/* Lengths of the data in PDI and PDR must match */ ++			if ((pdi_len(pdi) == pdr_len(pdr)) && ++			    ((void *) pdi->data + pdi_len(pdi) < pda_end)) { ++				/* do the actual plugging */ ++				hw->ops->program(hw, pdi->data, pdr_addr(pdr), ++						 pdi_len(pdi)); ++			} ++		} ++ ++		pdr++; ++	} ++	return 0; ++} +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/hermes_dld.h linux-6.15.6/drivers/net/wireless/intersil/orinoco/hermes_dld.h +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/hermes_dld.h	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/hermes_dld.h	2025-08-03 15:01:59.325131328 +0200 +@@ -0,0 +1,52 @@ ++/* ++ * Copyright (C) 2007, David Kilroy ++ * ++ * The contents of this file are subject to the Mozilla Public License ++ * Version 1.1 (the "License"); you may not use this file except in ++ * compliance with the License. You may obtain a copy of the License ++ * at http://www.mozilla.org/MPL/ ++ * ++ * Software distributed under the License is distributed on an "AS IS" ++ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See ++ * the License for the specific language governing rights and ++ * limitations under the License. ++ * ++ * Alternatively, the contents of this file may be used under the ++ * terms of the GNU General Public License version 2 (the "GPL"), in ++ * which case the provisions of the GPL are applicable instead of the ++ * above.  If you wish to allow the use of your version of this file ++ * only under the terms of the GPL and not to allow others to use your ++ * version of this file under the MPL, indicate your decision by ++ * deleting the provisions above and replace them with the notice and ++ * other provisions required by the GPL.  If you do not delete the ++ * provisions above, a recipient may use your version of this file ++ * under either the MPL or the GPL. ++ */ ++#ifndef _HERMES_DLD_H ++#define _HERMES_DLD_H ++ ++#include "hermes.h" ++ ++int hermesi_program_init(struct hermes *hw, u32 offset); ++int hermesi_program_end(struct hermes *hw); ++int hermes_program(struct hermes *hw, const char *first_block, const void *end); ++ ++int hermes_read_pda(struct hermes *hw, ++		    __le16 *pda, ++		    u32 pda_addr, ++		    u16 pda_len, ++		    int use_eeprom); ++int hermes_apply_pda(struct hermes *hw, ++		     const char *first_pdr, ++		     const void *pdr_end, ++		     const __le16 *pda, ++		     const void *pda_end); ++int hermes_apply_pda_with_defaults(struct hermes *hw, ++				   const char *first_pdr, ++				   const void *pdr_end, ++				   const __le16 *pda, ++				   const void *pda_end); ++ ++size_t hermes_blocks_length(const char *first_block, const void *end); ++ ++#endif /* _HERMES_DLD_H */ +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/hermes.h linux-6.15.6/drivers/net/wireless/intersil/orinoco/hermes.h +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/hermes.h	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/hermes.h	2025-08-03 15:01:59.329131213 +0200 +@@ -0,0 +1,534 @@ ++/* SPDX-License-Identifier: GPL-2.0-only */ ++/* hermes.h ++ * ++ * Driver core for the "Hermes" wireless MAC controller, as used in ++ * the Lucent Orinoco and Cabletron RoamAbout cards. It should also ++ * work on the hfa3841 and hfa3842 MAC controller chips used in the ++ * Prism I & II chipsets. ++ * ++ * This is not a complete driver, just low-level access routines for ++ * the MAC controller itself. ++ * ++ * Based on the prism2 driver from Absolute Value Systems' linux-wlan ++ * project, the Linux wvlan_cs driver, Lucent's HCF-Light ++ * (wvlan_hcf.c) library, and the NetBSD wireless driver. ++ * ++ * Copyright (C) 2000, David Gibson, Linuxcare Australia. ++ * (C) Copyright David Gibson, IBM Corp. 2001-2003. ++ * ++ * Portions taken from hfa384x.h. ++ * Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved. ++ */ ++ ++#ifndef _HERMES_H ++#define _HERMES_H ++ ++/* Notes on locking: ++ * ++ * As a module of low level hardware access routines, there is no ++ * locking. Users of this module should ensure that they serialize ++ * access to the hermes structure, and to the hardware ++*/ ++ ++#include <linux/if_ether.h> ++#include <linux/io.h> ++ ++/* ++ * Limits and constants ++ */ ++#define		HERMES_ALLOC_LEN_MIN		(4) ++#define		HERMES_ALLOC_LEN_MAX		(2400) ++#define		HERMES_LTV_LEN_MAX		(34) ++#define		HERMES_BAP_DATALEN_MAX		(4096) ++#define		HERMES_BAP_OFFSET_MAX		(4096) ++#define		HERMES_PORTID_MAX		(7) ++#define		HERMES_NUMPORTS_MAX		(HERMES_PORTID_MAX + 1) ++#define		HERMES_PDR_LEN_MAX		(260)	/* in bytes, from EK */ ++#define		HERMES_PDA_RECS_MAX		(200)	/* a guess */ ++#define		HERMES_PDA_LEN_MAX		(1024)	/* in bytes, from EK */ ++#define		HERMES_SCANRESULT_MAX		(35) ++#define		HERMES_CHINFORESULT_MAX		(8) ++#define		HERMES_MAX_MULTICAST		(16) ++#define		HERMES_MAGIC			(0x7d1f) ++ ++/* ++ * Hermes register offsets ++ */ ++#define		HERMES_CMD			(0x00) ++#define		HERMES_PARAM0			(0x02) ++#define		HERMES_PARAM1			(0x04) ++#define		HERMES_PARAM2			(0x06) ++#define		HERMES_STATUS			(0x08) ++#define		HERMES_RESP0			(0x0A) ++#define		HERMES_RESP1			(0x0C) ++#define		HERMES_RESP2			(0x0E) ++#define		HERMES_INFOFID			(0x10) ++#define		HERMES_RXFID			(0x20) ++#define		HERMES_ALLOCFID			(0x22) ++#define		HERMES_TXCOMPLFID		(0x24) ++#define		HERMES_SELECT0			(0x18) ++#define		HERMES_OFFSET0			(0x1C) ++#define		HERMES_DATA0			(0x36) ++#define		HERMES_SELECT1			(0x1A) ++#define		HERMES_OFFSET1			(0x1E) ++#define		HERMES_DATA1			(0x38) ++#define		HERMES_EVSTAT			(0x30) ++#define		HERMES_INTEN			(0x32) ++#define		HERMES_EVACK			(0x34) ++#define		HERMES_CONTROL			(0x14) ++#define		HERMES_SWSUPPORT0		(0x28) ++#define		HERMES_SWSUPPORT1		(0x2A) ++#define		HERMES_SWSUPPORT2		(0x2C) ++#define		HERMES_AUXPAGE			(0x3A) ++#define		HERMES_AUXOFFSET		(0x3C) ++#define		HERMES_AUXDATA			(0x3E) ++ ++/* ++ * CMD register bitmasks ++ */ ++#define		HERMES_CMD_BUSY			(0x8000) ++#define		HERMES_CMD_AINFO		(0x7f00) ++#define		HERMES_CMD_MACPORT		(0x0700) ++#define		HERMES_CMD_RECL			(0x0100) ++#define		HERMES_CMD_WRITE		(0x0100) ++#define		HERMES_CMD_PROGMODE		(0x0300) ++#define		HERMES_CMD_CMDCODE		(0x003f) ++ ++/* ++ * STATUS register bitmasks ++ */ ++#define		HERMES_STATUS_RESULT		(0x7f00) ++#define		HERMES_STATUS_CMDCODE		(0x003f) ++ ++/* ++ * OFFSET register bitmasks ++ */ ++#define		HERMES_OFFSET_BUSY		(0x8000) ++#define		HERMES_OFFSET_ERR		(0x4000) ++#define		HERMES_OFFSET_DATAOFF		(0x0ffe) ++ ++/* ++ * Event register bitmasks (INTEN, EVSTAT, EVACK) ++ */ ++#define		HERMES_EV_TICK			(0x8000) ++#define		HERMES_EV_WTERR			(0x4000) ++#define		HERMES_EV_INFDROP		(0x2000) ++#define		HERMES_EV_INFO			(0x0080) ++#define		HERMES_EV_DTIM			(0x0020) ++#define		HERMES_EV_CMD			(0x0010) ++#define		HERMES_EV_ALLOC			(0x0008) ++#define		HERMES_EV_TXEXC			(0x0004) ++#define		HERMES_EV_TX			(0x0002) ++#define		HERMES_EV_RX			(0x0001) ++ ++/* ++ * Command codes ++ */ ++/*--- Controller Commands ----------------------------*/ ++#define		HERMES_CMD_INIT			(0x0000) ++#define		HERMES_CMD_ENABLE		(0x0001) ++#define		HERMES_CMD_DISABLE		(0x0002) ++#define		HERMES_CMD_DIAG			(0x0003) ++ ++/*--- Buffer Mgmt Commands ---------------------------*/ ++#define		HERMES_CMD_ALLOC		(0x000A) ++#define		HERMES_CMD_TX			(0x000B) ++ ++/*--- Regulate Commands ------------------------------*/ ++#define		HERMES_CMD_NOTIFY		(0x0010) ++#define		HERMES_CMD_INQUIRE		(0x0011) ++ ++/*--- Configure Commands -----------------------------*/ ++#define		HERMES_CMD_ACCESS		(0x0021) ++#define		HERMES_CMD_DOWNLD		(0x0022) ++ ++/*--- Serial I/O Commands ----------------------------*/ ++#define		HERMES_CMD_READMIF		(0x0030) ++#define		HERMES_CMD_WRITEMIF		(0x0031) ++ ++/*--- Debugging Commands -----------------------------*/ ++#define		HERMES_CMD_TEST			(0x0038) ++ ++ ++/* Test command arguments */ ++#define		HERMES_TEST_SET_CHANNEL		0x0800 ++#define		HERMES_TEST_MONITOR		0x0b00 ++#define		HERMES_TEST_STOP		0x0f00 ++ ++/* Authentication algorithms */ ++#define		HERMES_AUTH_OPEN		1 ++#define		HERMES_AUTH_SHARED_KEY		2 ++ ++/* WEP settings */ ++#define		HERMES_WEP_PRIVACY_INVOKED	0x0001 ++#define		HERMES_WEP_EXCL_UNENCRYPTED	0x0002 ++#define		HERMES_WEP_HOST_ENCRYPT		0x0010 ++#define		HERMES_WEP_HOST_DECRYPT		0x0080 ++ ++/* Symbol hostscan options */ ++#define		HERMES_HOSTSCAN_SYMBOL_5SEC	0x0001 ++#define		HERMES_HOSTSCAN_SYMBOL_ONCE	0x0002 ++#define		HERMES_HOSTSCAN_SYMBOL_PASSIVE	0x0040 ++#define		HERMES_HOSTSCAN_SYMBOL_BCAST	0x0080 ++ ++/* ++ * Frame structures and constants ++ */ ++ ++#define HERMES_DESCRIPTOR_OFFSET	0 ++#define HERMES_802_11_OFFSET		(14) ++#define HERMES_802_3_OFFSET		(14 + 32) ++#define HERMES_802_2_OFFSET		(14 + 32 + 14) ++#define HERMES_TXCNTL2_OFFSET		(HERMES_802_3_OFFSET - 2) ++ ++#define HERMES_RXSTAT_ERR		(0x0003) ++#define	HERMES_RXSTAT_BADCRC		(0x0001) ++#define	HERMES_RXSTAT_UNDECRYPTABLE	(0x0002) ++#define	HERMES_RXSTAT_MIC		(0x0010)	/* Frame contains MIC */ ++#define	HERMES_RXSTAT_MACPORT		(0x0700) ++#define HERMES_RXSTAT_PCF		(0x1000)	/* Frame was received in CF period */ ++#define	HERMES_RXSTAT_MIC_KEY_ID	(0x1800)	/* MIC key used */ ++#define	HERMES_RXSTAT_MSGTYPE		(0xE000) ++#define	HERMES_RXSTAT_1042		(0x2000)	/* RFC-1042 frame */ ++#define	HERMES_RXSTAT_TUNNEL		(0x4000)	/* bridge-tunnel encoded frame */ ++#define	HERMES_RXSTAT_WMP		(0x6000)	/* Wavelan-II Management Protocol frame */ ++ ++/* Shift amount for key ID in RXSTAT and TXCTRL */ ++#define	HERMES_MIC_KEY_ID_SHIFT		11 ++ ++struct hermes_tx_descriptor { ++	__le16 status; ++	__le16 reserved1; ++	__le16 reserved2; ++	__le32 sw_support; ++	u8 retry_count; ++	u8 tx_rate; ++	__le16 tx_control; ++} __packed; ++ ++#define HERMES_TXSTAT_RETRYERR		(0x0001) ++#define HERMES_TXSTAT_AGEDERR		(0x0002) ++#define HERMES_TXSTAT_DISCON		(0x0004) ++#define HERMES_TXSTAT_FORMERR		(0x0008) ++ ++#define HERMES_TXCTRL_TX_OK		(0x0002)	/* ?? interrupt on Tx complete */ ++#define HERMES_TXCTRL_TX_EX		(0x0004)	/* ?? interrupt on Tx exception */ ++#define HERMES_TXCTRL_802_11		(0x0008)	/* We supply 802.11 header */ ++#define HERMES_TXCTRL_MIC		(0x0010)	/* 802.3 + TKIP */ ++#define HERMES_TXCTRL_MIC_KEY_ID	(0x1800)	/* MIC Key ID mask */ ++#define HERMES_TXCTRL_ALT_RTRY		(0x0020) ++ ++/* Inquiry constants and data types */ ++ ++#define HERMES_INQ_TALLIES		(0xF100) ++#define HERMES_INQ_SCAN			(0xF101) ++#define HERMES_INQ_CHANNELINFO		(0xF102) ++#define HERMES_INQ_HOSTSCAN		(0xF103) ++#define HERMES_INQ_HOSTSCAN_SYMBOL	(0xF104) ++#define HERMES_INQ_LINKSTATUS		(0xF200) ++#define HERMES_INQ_SEC_STAT_AGERE	(0xF202) ++ ++struct hermes_tallies_frame { ++	__le16 TxUnicastFrames; ++	__le16 TxMulticastFrames; ++	__le16 TxFragments; ++	__le16 TxUnicastOctets; ++	__le16 TxMulticastOctets; ++	__le16 TxDeferredTransmissions; ++	__le16 TxSingleRetryFrames; ++	__le16 TxMultipleRetryFrames; ++	__le16 TxRetryLimitExceeded; ++	__le16 TxDiscards; ++	__le16 RxUnicastFrames; ++	__le16 RxMulticastFrames; ++	__le16 RxFragments; ++	__le16 RxUnicastOctets; ++	__le16 RxMulticastOctets; ++	__le16 RxFCSErrors; ++	__le16 RxDiscards_NoBuffer; ++	__le16 TxDiscardsWrongSA; ++	__le16 RxWEPUndecryptable; ++	__le16 RxMsgInMsgFragments; ++	__le16 RxMsgInBadMsgFragments; ++	/* Those last are probably not available in very old firmwares */ ++	__le16 RxDiscards_WEPICVError; ++	__le16 RxDiscards_WEPExcluded; ++} __packed; ++ ++/* Grabbed from wlan-ng - Thanks Mark... - Jean II ++ * This is the result of a scan inquiry command */ ++/* Structure describing info about an Access Point */ ++struct prism2_scan_apinfo { ++	__le16 channel;		/* Channel where the AP sits */ ++	__le16 noise;		/* Noise level */ ++	__le16 level;		/* Signal level */ ++	u8 bssid[ETH_ALEN];	/* MAC address of the Access Point */ ++	__le16 beacon_interv;	/* Beacon interval */ ++	__le16 capabilities;	/* Capabilities */ ++	__le16 essid_len;	/* ESSID length */ ++	u8 essid[32];		/* ESSID of the network */ ++	u8 rates[10];		/* Bit rate supported */ ++	__le16 proberesp_rate;	/* Data rate of the response frame */ ++	__le16 atim;		/* ATIM window time, Kus (hostscan only) */ ++} __packed; ++ ++/* Same stuff for the Lucent/Agere card. ++ * Thanks to h1kari <h1kari AT dachb0den.com> - Jean II */ ++struct agere_scan_apinfo { ++	__le16 channel;		/* Channel where the AP sits */ ++	__le16 noise;		/* Noise level */ ++	__le16 level;		/* Signal level */ ++	u8 bssid[ETH_ALEN];	/* MAC address of the Access Point */ ++	__le16 beacon_interv;	/* Beacon interval */ ++	__le16 capabilities;	/* Capabilities */ ++	/* bits: 0-ess, 1-ibss, 4-privacy [wep] */ ++	__le16 essid_len;	/* ESSID length */ ++	u8 essid[32];		/* ESSID of the network */ ++} __packed; ++ ++/* Moustafa: Scan structure for Symbol cards */ ++struct symbol_scan_apinfo { ++	u8 channel;		/* Channel where the AP sits */ ++	u8 unknown1;		/* 8 in 2.9x and 3.9x f/w, 0 otherwise */ ++	__le16 noise;		/* Noise level */ ++	__le16 level;		/* Signal level */ ++	u8 bssid[ETH_ALEN];	/* MAC address of the Access Point */ ++	__le16 beacon_interv;	/* Beacon interval */ ++	__le16 capabilities;	/* Capabilities */ ++	/* bits: 0-ess, 1-ibss, 4-privacy [wep] */ ++	__le16 essid_len;	/* ESSID length */ ++	u8 essid[32];		/* ESSID of the network */ ++	__le16 rates[5];	/* Bit rate supported */ ++	__le16 basic_rates;	/* Basic rates bitmask */ ++	u8 unknown2[6];		/* Always FF:FF:FF:FF:00:00 */ ++	u8 unknown3[8];		/* Always 0, appeared in f/w 3.91-68 */ ++} __packed; ++ ++union hermes_scan_info { ++	struct agere_scan_apinfo	a; ++	struct prism2_scan_apinfo	p; ++	struct symbol_scan_apinfo	s; ++}; ++ ++/* Extended scan struct for HERMES_INQ_CHANNELINFO. ++ * wl_lkm calls this an ACS scan (Automatic Channel Select). ++ * Keep out of union hermes_scan_info because it is much bigger than ++ * the older scan structures. */ ++struct agere_ext_scan_info { ++	__le16	reserved0; ++ ++	u8	noise; ++	u8	level; ++	u8	rx_flow; ++	u8	rate; ++	__le16	reserved1[2]; ++ ++	__le16	frame_control; ++	__le16	dur_id; ++	u8	addr1[ETH_ALEN]; ++	u8	addr2[ETH_ALEN]; ++	u8	bssid[ETH_ALEN]; ++	__le16	sequence; ++	u8	addr4[ETH_ALEN]; ++ ++	__le16	data_length; ++ ++	/* Next 3 fields do not get filled in. */ ++	u8	daddr[ETH_ALEN]; ++	u8	saddr[ETH_ALEN]; ++	__le16	len_type; ++ ++	__le64	timestamp; ++	__le16	beacon_interval; ++	__le16	capabilities; ++	u8	data[]; ++} __packed; ++ ++#define HERMES_LINKSTATUS_NOT_CONNECTED   (0x0000) ++#define HERMES_LINKSTATUS_CONNECTED       (0x0001) ++#define HERMES_LINKSTATUS_DISCONNECTED    (0x0002) ++#define HERMES_LINKSTATUS_AP_CHANGE       (0x0003) ++#define HERMES_LINKSTATUS_AP_OUT_OF_RANGE (0x0004) ++#define HERMES_LINKSTATUS_AP_IN_RANGE     (0x0005) ++#define HERMES_LINKSTATUS_ASSOC_FAILED    (0x0006) ++ ++struct hermes_linkstatus { ++	__le16 linkstatus;         /* Link status */ ++} __packed; ++ ++struct hermes_response { ++	u16 status, resp0, resp1, resp2; ++}; ++ ++/* "ID" structure - used for ESSID and station nickname */ ++struct hermes_idstring { ++	__le16 len; ++	__le16 val[16]; ++} __packed; ++ ++struct hermes_multicast { ++	u8 addr[HERMES_MAX_MULTICAST][ETH_ALEN]; ++} __packed; ++ ++/* Timeouts */ ++#define HERMES_BAP_BUSY_TIMEOUT (10000) /* In iterations of ~1us */ ++ ++struct hermes; ++ ++/* Functions to access hardware */ ++struct hermes_ops { ++	int (*init)(struct hermes *hw); ++	int (*cmd_wait)(struct hermes *hw, u16 cmd, u16 parm0, ++			struct hermes_response *resp); ++	int (*init_cmd_wait)(struct hermes *hw, u16 cmd, ++			     u16 parm0, u16 parm1, u16 parm2, ++			     struct hermes_response *resp); ++	int (*allocate)(struct hermes *hw, u16 size, u16 *fid); ++	int (*read_ltv)(struct hermes *hw, int bap, u16 rid, unsigned buflen, ++			u16 *length, void *buf); ++	int (*read_ltv_pr)(struct hermes *hw, int bap, u16 rid, ++			      unsigned buflen, u16 *length, void *buf); ++	int (*write_ltv)(struct hermes *hw, int bap, u16 rid, ++			 u16 length, const void *value); ++	int (*bap_pread)(struct hermes *hw, int bap, void *buf, int len, ++			 u16 id, u16 offset); ++	int (*bap_pwrite)(struct hermes *hw, int bap, const void *buf, ++			  int len, u16 id, u16 offset); ++	int (*read_pda)(struct hermes *hw, __le16 *pda, ++			u32 pda_addr, u16 pda_len); ++	int (*program_init)(struct hermes *hw, u32 entry_point); ++	int (*program_end)(struct hermes *hw); ++	int (*program)(struct hermes *hw, const char *buf, ++		       u32 addr, u32 len); ++	void (*lock_irqsave)(spinlock_t *lock, unsigned long *flags); ++	void (*unlock_irqrestore)(spinlock_t *lock, unsigned long *flags); ++	void (*lock_irq)(spinlock_t *lock); ++	void (*unlock_irq)(spinlock_t *lock); ++}; ++ ++/* Basic control structure */ ++struct hermes { ++	void __iomem *iobase; ++	int reg_spacing; ++#define HERMES_16BIT_REGSPACING	0 ++#define HERMES_32BIT_REGSPACING	1 ++	u16 inten; /* Which interrupts should be enabled? */ ++	bool eeprom_pda; ++	const struct hermes_ops *ops; ++	void *priv; ++}; ++ ++/* Register access convenience macros */ ++#define hermes_read_reg(hw, off) \ ++	(ioread16((hw)->iobase + ((off) << (hw)->reg_spacing))) ++#define hermes_write_reg(hw, off, val) \ ++	(iowrite16((val), (hw)->iobase + ((off) << (hw)->reg_spacing))) ++#define hermes_read_regn(hw, name) hermes_read_reg((hw), HERMES_##name) ++#define hermes_write_regn(hw, name, val) \ ++	hermes_write_reg((hw), HERMES_##name, (val)) ++ ++/* Function prototypes */ ++void hermes_struct_init(struct hermes *hw, void __iomem *address, ++			int reg_spacing); ++ ++/* Inline functions */ ++ ++static inline int hermes_present(struct hermes *hw) ++{ ++	return hermes_read_regn(hw, SWSUPPORT0) == HERMES_MAGIC; ++} ++ ++static inline void hermes_set_irqmask(struct hermes *hw, u16 events) ++{ ++	hw->inten = events; ++	hermes_write_regn(hw, INTEN, events); ++} ++ ++static inline int hermes_enable_port(struct hermes *hw, int port) ++{ ++	return hw->ops->cmd_wait(hw, HERMES_CMD_ENABLE | (port << 8), ++				 0, NULL); ++} ++ ++static inline int hermes_disable_port(struct hermes *hw, int port) ++{ ++	return hw->ops->cmd_wait(hw, HERMES_CMD_DISABLE | (port << 8), ++				 0, NULL); ++} ++ ++/* Initiate an INQUIRE command (tallies or scan).  The result will come as an ++ * information frame in __orinoco_ev_info() */ ++static inline int hermes_inquire(struct hermes *hw, u16 rid) ++{ ++	return hw->ops->cmd_wait(hw, HERMES_CMD_INQUIRE, rid, NULL); ++} ++ ++#define HERMES_BYTES_TO_RECLEN(n) ((((n) + 1) / 2) + 1) ++#define HERMES_RECLEN_TO_BYTES(n) (((n) - 1) * 2) ++ ++/* Note that for the next two, the count is in 16-bit words, not bytes */ ++static inline void hermes_read_words(struct hermes *hw, int off, ++				     void *buf, unsigned count) ++{ ++	off = off << hw->reg_spacing; ++	ioread16_rep(hw->iobase + off, buf, count); ++} ++ ++static inline void hermes_write_bytes(struct hermes *hw, int off, ++				      const char *buf, unsigned count) ++{ ++	off = off << hw->reg_spacing; ++	iowrite16_rep(hw->iobase + off, buf, count >> 1); ++	if (unlikely(count & 1)) ++		iowrite8(buf[count - 1], hw->iobase + off); ++} ++ ++static inline void hermes_clear_words(struct hermes *hw, int off, ++				      unsigned count) ++{ ++	unsigned i; ++ ++	off = off << hw->reg_spacing; ++ ++	for (i = 0; i < count; i++) ++		iowrite16(0, hw->iobase + off); ++} ++ ++#define HERMES_READ_RECORD(hw, bap, rid, buf) \ ++	(hw->ops->read_ltv((hw), (bap), (rid), sizeof(*buf), NULL, (buf))) ++#define HERMES_READ_RECORD_PR(hw, bap, rid, buf) \ ++	(hw->ops->read_ltv_pr((hw), (bap), (rid), sizeof(*buf), NULL, (buf))) ++#define HERMES_WRITE_RECORD(hw, bap, rid, buf) \ ++	(hw->ops->write_ltv((hw), (bap), (rid), \ ++			    HERMES_BYTES_TO_RECLEN(sizeof(*buf)), (buf))) ++ ++static inline int hermes_read_wordrec(struct hermes *hw, int bap, u16 rid, ++				      u16 *word) ++{ ++	__le16 rec; ++	int err; ++ ++	err = HERMES_READ_RECORD(hw, bap, rid, &rec); ++	*word = le16_to_cpu(rec); ++	return err; ++} ++ ++static inline int hermes_read_wordrec_pr(struct hermes *hw, int bap, u16 rid, ++					 u16 *word) ++{ ++	__le16 rec; ++	int err; ++ ++	err = HERMES_READ_RECORD_PR(hw, bap, rid, &rec); ++	*word = le16_to_cpu(rec); ++	return err; ++} ++ ++static inline int hermes_write_wordrec(struct hermes *hw, int bap, u16 rid, ++				       u16 word) ++{ ++	__le16 rec = cpu_to_le16(word); ++	return HERMES_WRITE_RECORD(hw, bap, rid, &rec); ++} ++ ++#endif  /* _HERMES_H */ +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/hermes_rid.h linux-6.15.6/drivers/net/wireless/intersil/orinoco/hermes_rid.h +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/hermes_rid.h	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/hermes_rid.h	2025-08-03 15:01:59.341130868 +0200 +@@ -0,0 +1,165 @@ ++#ifndef _HERMES_RID_H ++#define _HERMES_RID_H ++ ++/* ++ * Configuration RIDs ++ */ ++#define HERMES_RID_CNFPORTTYPE			0xFC00 ++#define HERMES_RID_CNFOWNMACADDR		0xFC01 ++#define HERMES_RID_CNFDESIREDSSID		0xFC02 ++#define HERMES_RID_CNFOWNCHANNEL		0xFC03 ++#define HERMES_RID_CNFOWNSSID			0xFC04 ++#define HERMES_RID_CNFOWNATIMWINDOW		0xFC05 ++#define HERMES_RID_CNFSYSTEMSCALE		0xFC06 ++#define HERMES_RID_CNFMAXDATALEN		0xFC07 ++#define HERMES_RID_CNFWDSADDRESS		0xFC08 ++#define HERMES_RID_CNFPMENABLED			0xFC09 ++#define HERMES_RID_CNFPMEPS			0xFC0A ++#define HERMES_RID_CNFMULTICASTRECEIVE		0xFC0B ++#define HERMES_RID_CNFMAXSLEEPDURATION		0xFC0C ++#define HERMES_RID_CNFPMHOLDOVERDURATION	0xFC0D ++#define HERMES_RID_CNFOWNNAME			0xFC0E ++#define HERMES_RID_CNFOWNDTIMPERIOD		0xFC10 ++#define HERMES_RID_CNFWDSADDRESS1		0xFC11 ++#define HERMES_RID_CNFWDSADDRESS2		0xFC12 ++#define HERMES_RID_CNFWDSADDRESS3		0xFC13 ++#define HERMES_RID_CNFWDSADDRESS4		0xFC14 ++#define HERMES_RID_CNFWDSADDRESS5		0xFC15 ++#define HERMES_RID_CNFWDSADDRESS6		0xFC16 ++#define HERMES_RID_CNFMULTICASTPMBUFFERING	0xFC17 ++#define HERMES_RID_CNFWEPENABLED_AGERE		0xFC20 ++#define HERMES_RID_CNFAUTHENTICATION_AGERE	0xFC21 ++#define HERMES_RID_CNFMANDATORYBSSID_SYMBOL	0xFC21 ++#define HERMES_RID_CNFDROPUNENCRYPTED		0xFC22 ++#define HERMES_RID_CNFWEPDEFAULTKEYID		0xFC23 ++#define HERMES_RID_CNFDEFAULTKEY0		0xFC24 ++#define HERMES_RID_CNFDEFAULTKEY1		0xFC25 ++#define HERMES_RID_CNFMWOROBUST_AGERE		0xFC25 ++#define HERMES_RID_CNFDEFAULTKEY2		0xFC26 ++#define HERMES_RID_CNFDEFAULTKEY3		0xFC27 ++#define HERMES_RID_CNFWEPFLAGS_INTERSIL		0xFC28 ++#define HERMES_RID_CNFWEPKEYMAPPINGTABLE	0xFC29 ++#define HERMES_RID_CNFAUTHENTICATION		0xFC2A ++#define HERMES_RID_CNFMAXASSOCSTA		0xFC2B ++#define	HERMES_RID_CNFKEYLENGTH_SYMBOL		0xFC2B ++#define HERMES_RID_CNFTXCONTROL			0xFC2C ++#define HERMES_RID_CNFROAMINGMODE		0xFC2D ++#define HERMES_RID_CNFHOSTAUTHENTICATION	0xFC2E ++#define HERMES_RID_CNFRCVCRCERROR		0xFC30 ++#define HERMES_RID_CNFMMLIFE			0xFC31 ++#define HERMES_RID_CNFALTRETRYCOUNT		0xFC32 ++#define HERMES_RID_CNFBEACONINT			0xFC33 ++#define HERMES_RID_CNFAPPCFINFO			0xFC34 ++#define HERMES_RID_CNFSTAPCFINFO		0xFC35 ++#define HERMES_RID_CNFPRIORITYQUSAGE		0xFC37 ++#define HERMES_RID_CNFTIMCTRL			0xFC40 ++#define HERMES_RID_CNFTHIRTY2TALLY		0xFC42 ++#define HERMES_RID_CNFENHSECURITY		0xFC43 ++#define HERMES_RID_CNFGROUPADDRESSES		0xFC80 ++#define HERMES_RID_CNFCREATEIBSS		0xFC81 ++#define HERMES_RID_CNFFRAGMENTATIONTHRESHOLD	0xFC82 ++#define HERMES_RID_CNFRTSTHRESHOLD		0xFC83 ++#define HERMES_RID_CNFTXRATECONTROL		0xFC84 ++#define HERMES_RID_CNFPROMISCUOUSMODE		0xFC85 ++#define HERMES_RID_CNFBASICRATES_SYMBOL		0xFC8A ++#define HERMES_RID_CNFPREAMBLE_SYMBOL		0xFC8C ++#define HERMES_RID_CNFFRAGMENTATIONTHRESHOLD0	0xFC90 ++#define HERMES_RID_CNFFRAGMENTATIONTHRESHOLD1	0xFC91 ++#define HERMES_RID_CNFFRAGMENTATIONTHRESHOLD2	0xFC92 ++#define HERMES_RID_CNFFRAGMENTATIONTHRESHOLD3	0xFC93 ++#define HERMES_RID_CNFFRAGMENTATIONTHRESHOLD4	0xFC94 ++#define HERMES_RID_CNFFRAGMENTATIONTHRESHOLD5	0xFC95 ++#define HERMES_RID_CNFFRAGMENTATIONTHRESHOLD6	0xFC96 ++#define HERMES_RID_CNFRTSTHRESHOLD0		0xFC97 ++#define HERMES_RID_CNFRTSTHRESHOLD1		0xFC98 ++#define HERMES_RID_CNFRTSTHRESHOLD2		0xFC99 ++#define HERMES_RID_CNFRTSTHRESHOLD3		0xFC9A ++#define HERMES_RID_CNFRTSTHRESHOLD4		0xFC9B ++#define HERMES_RID_CNFRTSTHRESHOLD5		0xFC9C ++#define HERMES_RID_CNFRTSTHRESHOLD6		0xFC9D ++#define HERMES_RID_CNFHOSTSCAN_SYMBOL		0xFCAB ++#define HERMES_RID_CNFSHORTPREAMBLE		0xFCB0 ++#define HERMES_RID_CNFWEPKEYS_AGERE		0xFCB0 ++#define HERMES_RID_CNFEXCLUDELONGPREAMBLE	0xFCB1 ++#define HERMES_RID_CNFTXKEY_AGERE		0xFCB1 ++#define HERMES_RID_CNFAUTHENTICATIONRSPTO	0xFCB2 ++#define HERMES_RID_CNFSCANSSID_AGERE		0xFCB2 ++#define HERMES_RID_CNFBASICRATES		0xFCB3 ++#define HERMES_RID_CNFSUPPORTEDRATES		0xFCB4 ++#define HERMES_RID_CNFADDDEFAULTTKIPKEY_AGERE	0xFCB4 ++#define HERMES_RID_CNFSETWPAAUTHMGMTSUITE_AGERE	0xFCB5 ++#define HERMES_RID_CNFREMDEFAULTTKIPKEY_AGERE	0xFCB6 ++#define HERMES_RID_CNFADDMAPPEDTKIPKEY_AGERE	0xFCB7 ++#define HERMES_RID_CNFREMMAPPEDTKIPKEY_AGERE	0xFCB8 ++#define HERMES_RID_CNFSETWPACAPABILITIES_AGERE	0xFCB9 ++#define HERMES_RID_CNFCACHEDPMKADDRESS		0xFCBA ++#define HERMES_RID_CNFREMOVEPMKADDRESS		0xFCBB ++#define HERMES_RID_CNFSCANCHANNELS2GHZ		0xFCC2 ++#define HERMES_RID_CNFDISASSOCIATE		0xFCC8 ++#define HERMES_RID_CNFTICKTIME			0xFCE0 ++#define HERMES_RID_CNFSCANREQUEST		0xFCE1 ++#define HERMES_RID_CNFJOINREQUEST		0xFCE2 ++#define HERMES_RID_CNFAUTHENTICATESTATION	0xFCE3 ++#define HERMES_RID_CNFCHANNELINFOREQUEST	0xFCE4 ++#define HERMES_RID_CNFHOSTSCAN			0xFCE5 ++ ++/* ++ * Information RIDs ++ */ ++#define HERMES_RID_MAXLOADTIME			0xFD00 ++#define HERMES_RID_DOWNLOADBUFFER		0xFD01 ++#define HERMES_RID_PRIID			0xFD02 ++#define HERMES_RID_PRISUPRANGE			0xFD03 ++#define HERMES_RID_CFIACTRANGES			0xFD04 ++#define HERMES_RID_NICSERNUM			0xFD0A ++#define HERMES_RID_NICID			0xFD0B ++#define HERMES_RID_MFISUPRANGE			0xFD0C ++#define HERMES_RID_CFISUPRANGE			0xFD0D ++#define HERMES_RID_CHANNELLIST			0xFD10 ++#define HERMES_RID_REGULATORYDOMAINS		0xFD11 ++#define HERMES_RID_TEMPTYPE			0xFD12 ++#define HERMES_RID_CIS				0xFD13 ++#define HERMES_RID_STAID			0xFD20 ++#define HERMES_RID_STASUPRANGE			0xFD21 ++#define HERMES_RID_MFIACTRANGES			0xFD22 ++#define HERMES_RID_CFIACTRANGES2		0xFD23 ++#define HERMES_RID_SECONDARYVERSION_SYMBOL	0xFD24 ++#define HERMES_RID_PORTSTATUS			0xFD40 ++#define HERMES_RID_CURRENTSSID			0xFD41 ++#define HERMES_RID_CURRENTBSSID			0xFD42 ++#define HERMES_RID_COMMSQUALITY			0xFD43 ++#define HERMES_RID_CURRENTTXRATE		0xFD44 ++#define HERMES_RID_CURRENTBEACONINTERVAL	0xFD45 ++#define HERMES_RID_CURRENTSCALETHRESHOLDS	0xFD46 ++#define HERMES_RID_PROTOCOLRSPTIME		0xFD47 ++#define HERMES_RID_SHORTRETRYLIMIT		0xFD48 ++#define HERMES_RID_LONGRETRYLIMIT		0xFD49 ++#define HERMES_RID_MAXTRANSMITLIFETIME		0xFD4A ++#define HERMES_RID_MAXRECEIVELIFETIME		0xFD4B ++#define HERMES_RID_CFPOLLABLE			0xFD4C ++#define HERMES_RID_AUTHENTICATIONALGORITHMS	0xFD4D ++#define HERMES_RID_PRIVACYOPTIONIMPLEMENTED	0xFD4F ++#define HERMES_RID_DBMCOMMSQUALITY_INTERSIL	0xFD51 ++#define HERMES_RID_CURRENTTXRATE1		0xFD80 ++#define HERMES_RID_CURRENTTXRATE2		0xFD81 ++#define HERMES_RID_CURRENTTXRATE3		0xFD82 ++#define HERMES_RID_CURRENTTXRATE4		0xFD83 ++#define HERMES_RID_CURRENTTXRATE5		0xFD84 ++#define HERMES_RID_CURRENTTXRATE6		0xFD85 ++#define HERMES_RID_OWNMACADDR			0xFD86 ++#define HERMES_RID_SCANRESULTSTABLE		0xFD88 ++#define HERMES_RID_CURRENT_COUNTRY_INFO		0xFD89 ++#define HERMES_RID_CURRENT_WPA_IE		0xFD8A ++#define HERMES_RID_CURRENT_TKIP_IV		0xFD8B ++#define HERMES_RID_CURRENT_ASSOC_REQ_INFO	0xFD8C ++#define HERMES_RID_CURRENT_ASSOC_RESP_INFO	0xFD8D ++#define HERMES_RID_TXQUEUEEMPTY			0xFD91 ++#define HERMES_RID_PHYTYPE			0xFDC0 ++#define HERMES_RID_CURRENTCHANNEL		0xFDC1 ++#define HERMES_RID_CURRENTPOWERSTATE		0xFDC2 ++#define HERMES_RID_CCAMODE			0xFDC3 ++#define HERMES_RID_SUPPORTEDDATARATES		0xFDC6 ++#define HERMES_RID_BUILDSEQ			0xFFFE ++#define HERMES_RID_FWID				0xFFFF ++ ++#endif +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/hw.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/hw.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/hw.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/hw.c	2025-08-03 15:01:59.341130868 +0200 +@@ -0,0 +1,1362 @@ ++/* Encapsulate basic setting changes and retrieval on Hermes hardware ++ * ++ * See copyright notice in main.c ++ */ ++#include <linux/kernel.h> ++#include <linux/device.h> ++#include <linux/if_arp.h> ++#include <linux/ieee80211.h> ++#include <linux/wireless.h> ++#include <net/cfg80211.h> ++#include "hermes.h" ++#include "hermes_rid.h" ++#include "orinoco.h" ++ ++#include "hw.h" ++ ++#define SYMBOL_MAX_VER_LEN	(14) ++ ++/* Symbol firmware has a bug allocating buffers larger than this */ ++#define TX_NICBUF_SIZE_BUG	1585 ++ ++/********************************************************************/ ++/* Data tables                                                      */ ++/********************************************************************/ ++ ++/* This tables gives the actual meanings of the bitrate IDs returned ++ * by the firmware. */ ++static const struct { ++	int bitrate; /* in 100s of kilobits */ ++	int automatic; ++	u16 agere_txratectrl; ++	u16 intersil_txratectrl; ++} bitrate_table[] = { ++	{110, 1,  3, 15}, /* Entry 0 is the default */ ++	{10,  0,  1,  1}, ++	{10,  1,  1,  1}, ++	{20,  0,  2,  2}, ++	{20,  1,  6,  3}, ++	{55,  0,  4,  4}, ++	{55,  1,  7,  7}, ++	{110, 0,  5,  8}, ++}; ++#define BITRATE_TABLE_SIZE ARRAY_SIZE(bitrate_table) ++ ++/* Firmware version encoding */ ++struct comp_id { ++	u16 id, variant, major, minor; ++} __packed; ++ ++static inline enum fwtype determine_firmware_type(struct comp_id *nic_id) ++{ ++	if (nic_id->id < 0x8000) ++		return FIRMWARE_TYPE_AGERE; ++	else if (nic_id->id == 0x8000 && nic_id->major == 0) ++		return FIRMWARE_TYPE_SYMBOL; ++	else ++		return FIRMWARE_TYPE_INTERSIL; ++} ++ ++/* Set priv->firmware type, determine firmware properties ++ * This function can be called before we have registerred with netdev, ++ * so all errors go out with dev_* rather than printk ++ * ++ * If non-NULL stores a firmware description in fw_name. ++ * If non-NULL stores a HW version in hw_ver ++ * ++ * These are output via generic cfg80211 ethtool support. ++ */ ++int determine_fw_capabilities(struct orinoco_private *priv, ++			      char *fw_name, size_t fw_name_len, ++			      u32 *hw_ver) ++{ ++	struct device *dev = priv->dev; ++	struct hermes *hw = &priv->hw; ++	int err; ++	struct comp_id nic_id, sta_id; ++	unsigned int firmver; ++	char tmp[SYMBOL_MAX_VER_LEN + 1] __attribute__((aligned(2))); ++ ++	/* Get the hardware version */ ++	err = HERMES_READ_RECORD_PR(hw, USER_BAP, HERMES_RID_NICID, &nic_id); ++	if (err) { ++		dev_err(dev, "Cannot read hardware identity: error %d\n", ++			err); ++		return err; ++	} ++ ++	le16_to_cpus(&nic_id.id); ++	le16_to_cpus(&nic_id.variant); ++	le16_to_cpus(&nic_id.major); ++	le16_to_cpus(&nic_id.minor); ++	dev_info(dev, "Hardware identity %04x:%04x:%04x:%04x\n", ++		 nic_id.id, nic_id.variant, nic_id.major, nic_id.minor); ++ ++	if (hw_ver) ++		*hw_ver = (((nic_id.id & 0xff) << 24) | ++			   ((nic_id.variant & 0xff) << 16) | ++			   ((nic_id.major & 0xff) << 8) | ++			   (nic_id.minor & 0xff)); ++ ++	priv->firmware_type = determine_firmware_type(&nic_id); ++ ++	/* Get the firmware version */ ++	err = HERMES_READ_RECORD_PR(hw, USER_BAP, HERMES_RID_STAID, &sta_id); ++	if (err) { ++		dev_err(dev, "Cannot read station identity: error %d\n", ++			err); ++		return err; ++	} ++ ++	le16_to_cpus(&sta_id.id); ++	le16_to_cpus(&sta_id.variant); ++	le16_to_cpus(&sta_id.major); ++	le16_to_cpus(&sta_id.minor); ++	dev_info(dev, "Station identity  %04x:%04x:%04x:%04x\n", ++		 sta_id.id, sta_id.variant, sta_id.major, sta_id.minor); ++ ++	switch (sta_id.id) { ++	case 0x15: ++		dev_err(dev, "Primary firmware is active\n"); ++		return -ENODEV; ++	case 0x14b: ++		dev_err(dev, "Tertiary firmware is active\n"); ++		return -ENODEV; ++	case 0x1f:	/* Intersil, Agere, Symbol Spectrum24 */ ++	case 0x21:	/* Symbol Spectrum24 Trilogy */ ++		break; ++	default: ++		dev_notice(dev, "Unknown station ID, please report\n"); ++		break; ++	} ++ ++	/* Default capabilities */ ++	priv->has_sensitivity = 1; ++	priv->has_mwo = 0; ++	priv->has_preamble = 0; ++	priv->has_port3 = 1; ++	priv->has_ibss = 1; ++	priv->has_wep = 0; ++	priv->has_big_wep = 0; ++	priv->has_alt_txcntl = 0; ++	priv->has_ext_scan = 0; ++	priv->has_wpa = 0; ++	priv->do_fw_download = 0; ++ ++	/* Determine capabilities from the firmware version */ ++	switch (priv->firmware_type) { ++	case FIRMWARE_TYPE_AGERE: ++		/* Lucent Wavelan IEEE, Lucent Orinoco, Cabletron RoamAbout, ++		   ELSA, Melco, HP, IBM, Dell 1150, Compaq 110/210 */ ++		if (fw_name) ++			snprintf(fw_name, fw_name_len, "Lucent/Agere %d.%02d", ++				 sta_id.major, sta_id.minor); ++ ++		firmver = ((unsigned long)sta_id.major << 16) | sta_id.minor; ++ ++		priv->has_ibss = (firmver >= 0x60006); ++		priv->has_wep = (firmver >= 0x40020); ++		priv->has_big_wep = 1; /* FIXME: this is wrong - how do we tell ++					  Gold cards from the others? */ ++		priv->has_mwo = (firmver >= 0x60000); ++		priv->has_pm = (firmver >= 0x40020); /* Don't work in 7.52 ? */ ++		priv->ibss_port = 1; ++		priv->has_hostscan = (firmver >= 0x8000a); ++		priv->do_fw_download = 1; ++		priv->broken_monitor = (firmver >= 0x80000); ++		priv->has_alt_txcntl = (firmver >= 0x90000); /* All 9.x ? */ ++		priv->has_ext_scan = (firmver >= 0x90000); /* All 9.x ? */ ++		priv->has_wpa = (firmver >= 0x9002a); ++		/* Tested with Agere firmware : ++		 *	1.16 ; 4.08 ; 4.52 ; 6.04 ; 6.16 ; 7.28 => Jean II ++		 * Tested CableTron firmware : 4.32 => Anton */ ++		break; ++	case FIRMWARE_TYPE_SYMBOL: ++		/* Symbol , 3Com AirConnect, Intel, Ericsson WLAN */ ++		/* Intel MAC : 00:02:B3:* */ ++		/* 3Com MAC : 00:50:DA:* */ ++		memset(tmp, 0, sizeof(tmp)); ++		/* Get the Symbol firmware version */ ++		err = hw->ops->read_ltv_pr(hw, USER_BAP, ++					HERMES_RID_SECONDARYVERSION_SYMBOL, ++					SYMBOL_MAX_VER_LEN, NULL, &tmp); ++		if (err) { ++			dev_warn(dev, "Error %d reading Symbol firmware info. " ++				 "Wildly guessing capabilities...\n", err); ++			firmver = 0; ++			tmp[0] = '\0'; ++		} else { ++			/* The firmware revision is a string, the format is ++			 * something like : "V2.20-01". ++			 * Quick and dirty parsing... - Jean II ++			 */ ++			firmver = ((tmp[1] - '0') << 16) ++				| ((tmp[3] - '0') << 12) ++				| ((tmp[4] - '0') << 8) ++				| ((tmp[6] - '0') << 4) ++				| (tmp[7] - '0'); ++ ++			tmp[SYMBOL_MAX_VER_LEN] = '\0'; ++		} ++ ++		if (fw_name) ++			snprintf(fw_name, fw_name_len, "Symbol %s", tmp); ++ ++		priv->has_ibss = (firmver >= 0x20000); ++		priv->has_wep = (firmver >= 0x15012); ++		priv->has_big_wep = (firmver >= 0x20000); ++		priv->has_pm = (firmver >= 0x20000 && firmver < 0x22000) || ++			       (firmver >= 0x29000 && firmver < 0x30000) || ++			       firmver >= 0x31000; ++		priv->has_preamble = (firmver >= 0x20000); ++		priv->ibss_port = 4; ++ ++		/* Symbol firmware is found on various cards, but ++		 * there has been no attempt to check firmware ++		 * download on non-spectrum_cs based cards. ++		 * ++		 * Given that the Agere firmware download works ++		 * differently, we should avoid doing a firmware ++		 * download with the Symbol algorithm on non-spectrum ++		 * cards. ++		 * ++		 * For now we can identify a spectrum_cs based card ++		 * because it has a firmware reset function. ++		 */ ++		priv->do_fw_download = (priv->stop_fw != NULL); ++ ++		priv->broken_disableport = (firmver == 0x25013) || ++				(firmver >= 0x30000 && firmver <= 0x31000); ++		priv->has_hostscan = (firmver >= 0x31001) || ++				     (firmver >= 0x29057 && firmver < 0x30000); ++		/* Tested with Intel firmware : 0x20015 => Jean II */ ++		/* Tested with 3Com firmware : 0x15012 & 0x22001 => Jean II */ ++		break; ++	case FIRMWARE_TYPE_INTERSIL: ++		/* D-Link, Linksys, Adtron, ZoomAir, and many others... ++		 * Samsung, Compaq 100/200 and Proxim are slightly ++		 * different and less well tested */ ++		/* D-Link MAC : 00:40:05:* */ ++		/* Addtron MAC : 00:90:D1:* */ ++		if (fw_name) ++			snprintf(fw_name, fw_name_len, "Intersil %d.%d.%d", ++				 sta_id.major, sta_id.minor, sta_id.variant); ++ ++		firmver = ((unsigned long)sta_id.major << 16) | ++			((unsigned long)sta_id.minor << 8) | sta_id.variant; ++ ++		priv->has_ibss = (firmver >= 0x000700); /* FIXME */ ++		priv->has_big_wep = priv->has_wep = (firmver >= 0x000800); ++		priv->has_pm = (firmver >= 0x000700); ++		priv->has_hostscan = (firmver >= 0x010301); ++ ++		if (firmver >= 0x000800) ++			priv->ibss_port = 0; ++		else { ++			dev_notice(dev, "Intersil firmware earlier than v0.8.x" ++				   " - several features not supported\n"); ++			priv->ibss_port = 1; ++		} ++		break; ++	} ++	if (fw_name) ++		dev_info(dev, "Firmware determined as %s\n", fw_name); ++ ++#ifndef CONFIG_HERMES_PRISM ++	if (priv->firmware_type == FIRMWARE_TYPE_INTERSIL) { ++		dev_err(dev, "Support for Prism chipset is not enabled\n"); ++		return -ENODEV; ++	} ++#endif ++ ++	return 0; ++} ++ ++/* Read settings from EEPROM into our private structure. ++ * MAC address gets dropped into callers buffer ++ * Can be called before netdev registration. ++ */ ++int orinoco_hw_read_card_settings(struct orinoco_private *priv, u8 *dev_addr) ++{ ++	struct device *dev = priv->dev; ++	struct hermes_idstring nickbuf; ++	struct hermes *hw = &priv->hw; ++	int len; ++	int err; ++	u16 reclen; ++ ++	/* Get the MAC address */ ++	err = hw->ops->read_ltv_pr(hw, USER_BAP, HERMES_RID_CNFOWNMACADDR, ++				ETH_ALEN, NULL, dev_addr); ++	if (err) { ++		dev_warn(dev, "Failed to read MAC address!\n"); ++		goto out; ++	} ++ ++	dev_dbg(dev, "MAC address %pM\n", dev_addr); ++ ++	/* Get the station name */ ++	err = hw->ops->read_ltv_pr(hw, USER_BAP, HERMES_RID_CNFOWNNAME, ++				sizeof(nickbuf), &reclen, &nickbuf); ++	if (err) { ++		dev_err(dev, "failed to read station name\n"); ++		goto out; ++	} ++	if (nickbuf.len) ++		len = min(IW_ESSID_MAX_SIZE, (int)le16_to_cpu(nickbuf.len)); ++	else ++		len = min(IW_ESSID_MAX_SIZE, 2 * reclen); ++	memcpy(priv->nick, &nickbuf.val, len); ++	priv->nick[len] = '\0'; ++ ++	dev_dbg(dev, "Station name \"%s\"\n", priv->nick); ++ ++	/* Get allowed channels */ ++	err = hermes_read_wordrec_pr(hw, USER_BAP, HERMES_RID_CHANNELLIST, ++				  &priv->channel_mask); ++	if (err) { ++		dev_err(dev, "Failed to read channel list!\n"); ++		goto out; ++	} ++ ++	/* Get initial AP density */ ++	err = hermes_read_wordrec_pr(hw, USER_BAP, HERMES_RID_CNFSYSTEMSCALE, ++				  &priv->ap_density); ++	if (err || priv->ap_density < 1 || priv->ap_density > 3) ++		priv->has_sensitivity = 0; ++ ++	/* Get initial RTS threshold */ ++	err = hermes_read_wordrec_pr(hw, USER_BAP, HERMES_RID_CNFRTSTHRESHOLD, ++				  &priv->rts_thresh); ++	if (err) { ++		dev_err(dev, "Failed to read RTS threshold!\n"); ++		goto out; ++	} ++ ++	/* Get initial fragmentation settings */ ++	if (priv->has_mwo) ++		err = hermes_read_wordrec_pr(hw, USER_BAP, ++					  HERMES_RID_CNFMWOROBUST_AGERE, ++					  &priv->mwo_robust); ++	else ++		err = hermes_read_wordrec_pr(hw, USER_BAP, ++					  HERMES_RID_CNFFRAGMENTATIONTHRESHOLD, ++					  &priv->frag_thresh); ++	if (err) { ++		dev_err(dev, "Failed to read fragmentation settings!\n"); ++		goto out; ++	} ++ ++	/* Power management setup */ ++	if (priv->has_pm) { ++		priv->pm_on = 0; ++		priv->pm_mcast = 1; ++		err = hermes_read_wordrec_pr(hw, USER_BAP, ++					  HERMES_RID_CNFMAXSLEEPDURATION, ++					  &priv->pm_period); ++		if (err) { ++			dev_err(dev, "Failed to read power management " ++				"period!\n"); ++			goto out; ++		} ++		err = hermes_read_wordrec_pr(hw, USER_BAP, ++					  HERMES_RID_CNFPMHOLDOVERDURATION, ++					  &priv->pm_timeout); ++		if (err) { ++			dev_err(dev, "Failed to read power management " ++				"timeout!\n"); ++			goto out; ++		} ++	} ++ ++	/* Preamble setup */ ++	if (priv->has_preamble) { ++		err = hermes_read_wordrec_pr(hw, USER_BAP, ++					  HERMES_RID_CNFPREAMBLE_SYMBOL, ++					  &priv->preamble); ++		if (err) { ++			dev_err(dev, "Failed to read preamble setup\n"); ++			goto out; ++		} ++	} ++ ++	/* Retry settings */ ++	err = hermes_read_wordrec_pr(hw, USER_BAP, HERMES_RID_SHORTRETRYLIMIT, ++				  &priv->short_retry_limit); ++	if (err) { ++		dev_err(dev, "Failed to read short retry limit\n"); ++		goto out; ++	} ++ ++	err = hermes_read_wordrec_pr(hw, USER_BAP, HERMES_RID_LONGRETRYLIMIT, ++				  &priv->long_retry_limit); ++	if (err) { ++		dev_err(dev, "Failed to read long retry limit\n"); ++		goto out; ++	} ++ ++	err = hermes_read_wordrec_pr(hw, USER_BAP, HERMES_RID_MAXTRANSMITLIFETIME, ++				  &priv->retry_lifetime); ++	if (err) { ++		dev_err(dev, "Failed to read max retry lifetime\n"); ++		goto out; ++	} ++ ++out: ++	return err; ++} ++ ++/* Can be called before netdev registration */ ++int orinoco_hw_allocate_fid(struct orinoco_private *priv) ++{ ++	struct device *dev = priv->dev; ++	struct hermes *hw = &priv->hw; ++	int err; ++ ++	err = hw->ops->allocate(hw, priv->nicbuf_size, &priv->txfid); ++	if (err == -EIO && priv->nicbuf_size > TX_NICBUF_SIZE_BUG) { ++		/* Try workaround for old Symbol firmware bug */ ++		priv->nicbuf_size = TX_NICBUF_SIZE_BUG; ++		err = hw->ops->allocate(hw, priv->nicbuf_size, &priv->txfid); ++ ++		dev_warn(dev, "Firmware ALLOC bug detected " ++			 "(old Symbol firmware?). Work around %s\n", ++			 err ? "failed!" : "ok."); ++	} ++ ++	return err; ++} ++ ++int orinoco_get_bitratemode(int bitrate, int automatic) ++{ ++	int ratemode = -1; ++	int i; ++ ++	if ((bitrate != 10) && (bitrate != 20) && ++	    (bitrate != 55) && (bitrate != 110)) ++		return ratemode; ++ ++	for (i = 0; i < BITRATE_TABLE_SIZE; i++) { ++		if ((bitrate_table[i].bitrate == bitrate) && ++		    (bitrate_table[i].automatic == automatic)) { ++			ratemode = i; ++			break; ++		} ++	} ++	return ratemode; ++} ++ ++void orinoco_get_ratemode_cfg(int ratemode, int *bitrate, int *automatic) ++{ ++	BUG_ON((ratemode < 0) || (ratemode >= BITRATE_TABLE_SIZE)); ++ ++	*bitrate = bitrate_table[ratemode].bitrate * 100000; ++	*automatic = bitrate_table[ratemode].automatic; ++} ++ ++int orinoco_hw_program_rids(struct orinoco_private *priv) ++{ ++	struct net_device *dev = priv->ndev; ++	struct wireless_dev *wdev = netdev_priv(dev); ++	struct hermes *hw = &priv->hw; ++	int err; ++	struct hermes_idstring idbuf; ++ ++	/* Set the MAC address */ ++	err = hw->ops->write_ltv(hw, USER_BAP, HERMES_RID_CNFOWNMACADDR, ++				 HERMES_BYTES_TO_RECLEN(ETH_ALEN), ++				 dev->dev_addr); ++	if (err) { ++		printk(KERN_ERR "%s: Error %d setting MAC address\n", ++		       dev->name, err); ++		return err; ++	} ++ ++	/* Set up the link mode */ ++	err = hermes_write_wordrec(hw, USER_BAP, HERMES_RID_CNFPORTTYPE, ++				   priv->port_type); ++	if (err) { ++		printk(KERN_ERR "%s: Error %d setting port type\n", ++		       dev->name, err); ++		return err; ++	} ++	/* Set the channel/frequency */ ++	if (priv->channel != 0 && priv->iw_mode != NL80211_IFTYPE_STATION) { ++		err = hermes_write_wordrec(hw, USER_BAP, ++					   HERMES_RID_CNFOWNCHANNEL, ++					   priv->channel); ++		if (err) { ++			printk(KERN_ERR "%s: Error %d setting channel %d\n", ++			       dev->name, err, priv->channel); ++			return err; ++		} ++	} ++ ++	if (priv->has_ibss) { ++		u16 createibss; ++ ++		if ((strlen(priv->desired_essid) == 0) && (priv->createibss)) { ++			printk(KERN_WARNING "%s: This firmware requires an " ++			       "ESSID in IBSS-Ad-Hoc mode.\n", dev->name); ++			/* With wvlan_cs, in this case, we would crash. ++			 * hopefully, this driver will behave better... ++			 * Jean II */ ++			createibss = 0; ++		} else { ++			createibss = priv->createibss; ++		} ++ ++		err = hermes_write_wordrec(hw, USER_BAP, ++					   HERMES_RID_CNFCREATEIBSS, ++					   createibss); ++		if (err) { ++			printk(KERN_ERR "%s: Error %d setting CREATEIBSS\n", ++			       dev->name, err); ++			return err; ++		} ++	} ++ ++	/* Set the desired BSSID */ ++	err = __orinoco_hw_set_wap(priv); ++	if (err) { ++		printk(KERN_ERR "%s: Error %d setting AP address\n", ++		       dev->name, err); ++		return err; ++	} ++ ++	/* Set the desired ESSID */ ++	idbuf.len = cpu_to_le16(strlen(priv->desired_essid)); ++	memcpy(&idbuf.val, priv->desired_essid, sizeof(idbuf.val)); ++	/* WinXP wants partner to configure OWNSSID even in IBSS mode. (jimc) */ ++	err = hw->ops->write_ltv(hw, USER_BAP, HERMES_RID_CNFOWNSSID, ++			HERMES_BYTES_TO_RECLEN(strlen(priv->desired_essid) + 2), ++			&idbuf); ++	if (err) { ++		printk(KERN_ERR "%s: Error %d setting OWNSSID\n", ++		       dev->name, err); ++		return err; ++	} ++	err = hw->ops->write_ltv(hw, USER_BAP, HERMES_RID_CNFDESIREDSSID, ++			HERMES_BYTES_TO_RECLEN(strlen(priv->desired_essid) + 2), ++			&idbuf); ++	if (err) { ++		printk(KERN_ERR "%s: Error %d setting DESIREDSSID\n", ++		       dev->name, err); ++		return err; ++	} ++ ++	/* Set the station name */ ++	idbuf.len = cpu_to_le16(strlen(priv->nick)); ++	memcpy(&idbuf.val, priv->nick, sizeof(idbuf.val)); ++	err = hw->ops->write_ltv(hw, USER_BAP, HERMES_RID_CNFOWNNAME, ++				 HERMES_BYTES_TO_RECLEN(strlen(priv->nick) + 2), ++				 &idbuf); ++	if (err) { ++		printk(KERN_ERR "%s: Error %d setting nickname\n", ++		       dev->name, err); ++		return err; ++	} ++ ++	/* Set AP density */ ++	if (priv->has_sensitivity) { ++		err = hermes_write_wordrec(hw, USER_BAP, ++					   HERMES_RID_CNFSYSTEMSCALE, ++					   priv->ap_density); ++		if (err) { ++			printk(KERN_WARNING "%s: Error %d setting SYSTEMSCALE. " ++			       "Disabling sensitivity control\n", ++			       dev->name, err); ++ ++			priv->has_sensitivity = 0; ++		} ++	} ++ ++	/* Set RTS threshold */ ++	err = hermes_write_wordrec(hw, USER_BAP, HERMES_RID_CNFRTSTHRESHOLD, ++				   priv->rts_thresh); ++	if (err) { ++		printk(KERN_ERR "%s: Error %d setting RTS threshold\n", ++		       dev->name, err); ++		return err; ++	} ++ ++	/* Set fragmentation threshold or MWO robustness */ ++	if (priv->has_mwo) ++		err = hermes_write_wordrec(hw, USER_BAP, ++					   HERMES_RID_CNFMWOROBUST_AGERE, ++					   priv->mwo_robust); ++	else ++		err = hermes_write_wordrec(hw, USER_BAP, ++					   HERMES_RID_CNFFRAGMENTATIONTHRESHOLD, ++					   priv->frag_thresh); ++	if (err) { ++		printk(KERN_ERR "%s: Error %d setting fragmentation\n", ++		       dev->name, err); ++		return err; ++	} ++ ++	/* Set bitrate */ ++	err = __orinoco_hw_set_bitrate(priv); ++	if (err) { ++		printk(KERN_ERR "%s: Error %d setting bitrate\n", ++		       dev->name, err); ++		return err; ++	} ++ ++	/* Set power management */ ++	if (priv->has_pm) { ++		err = hermes_write_wordrec(hw, USER_BAP, ++					   HERMES_RID_CNFPMENABLED, ++					   priv->pm_on); ++		if (err) { ++			printk(KERN_ERR "%s: Error %d setting up PM\n", ++			       dev->name, err); ++			return err; ++		} ++ ++		err = hermes_write_wordrec(hw, USER_BAP, ++					   HERMES_RID_CNFMULTICASTRECEIVE, ++					   priv->pm_mcast); ++		if (err) { ++			printk(KERN_ERR "%s: Error %d setting up PM\n", ++			       dev->name, err); ++			return err; ++		} ++		err = hermes_write_wordrec(hw, USER_BAP, ++					   HERMES_RID_CNFMAXSLEEPDURATION, ++					   priv->pm_period); ++		if (err) { ++			printk(KERN_ERR "%s: Error %d setting up PM\n", ++			       dev->name, err); ++			return err; ++		} ++		err = hermes_write_wordrec(hw, USER_BAP, ++					   HERMES_RID_CNFPMHOLDOVERDURATION, ++					   priv->pm_timeout); ++		if (err) { ++			printk(KERN_ERR "%s: Error %d setting up PM\n", ++			       dev->name, err); ++			return err; ++		} ++	} ++ ++	/* Set preamble - only for Symbol so far... */ ++	if (priv->has_preamble) { ++		err = hermes_write_wordrec(hw, USER_BAP, ++					   HERMES_RID_CNFPREAMBLE_SYMBOL, ++					   priv->preamble); ++		if (err) { ++			printk(KERN_ERR "%s: Error %d setting preamble\n", ++			       dev->name, err); ++			return err; ++		} ++	} ++ ++	/* Set up encryption */ ++	if (priv->has_wep || priv->has_wpa) { ++		err = __orinoco_hw_setup_enc(priv); ++		if (err) { ++			printk(KERN_ERR "%s: Error %d activating encryption\n", ++			       dev->name, err); ++			return err; ++		} ++	} ++ ++	if (priv->iw_mode == NL80211_IFTYPE_MONITOR) { ++		/* Enable monitor mode */ ++		dev->type = ARPHRD_IEEE80211; ++		err = hw->ops->cmd_wait(hw, HERMES_CMD_TEST | ++					    HERMES_TEST_MONITOR, 0, NULL); ++	} else { ++		/* Disable monitor mode */ ++		dev->type = ARPHRD_ETHER; ++		err = hw->ops->cmd_wait(hw, HERMES_CMD_TEST | ++					    HERMES_TEST_STOP, 0, NULL); ++	} ++	if (err) ++		return err; ++ ++	/* Reset promiscuity / multicast*/ ++	priv->promiscuous = 0; ++	priv->mc_count = 0; ++ ++	/* Record mode change */ ++	wdev->iftype = priv->iw_mode; ++ ++	return 0; ++} ++ ++/* Get tsc from the firmware */ ++int orinoco_hw_get_tkip_iv(struct orinoco_private *priv, int key, u8 *tsc) ++{ ++	struct hermes *hw = &priv->hw; ++	int err = 0; ++	u8 tsc_arr[4][ORINOCO_SEQ_LEN]; ++ ++	if ((key < 0) || (key >= 4)) ++		return -EINVAL; ++ ++	err = hw->ops->read_ltv(hw, USER_BAP, HERMES_RID_CURRENT_TKIP_IV, ++				sizeof(tsc_arr), NULL, &tsc_arr); ++	if (!err) ++		memcpy(tsc, &tsc_arr[key][0], sizeof(tsc_arr[0])); ++ ++	return err; ++} ++ ++int __orinoco_hw_set_bitrate(struct orinoco_private *priv) ++{ ++	struct hermes *hw = &priv->hw; ++	int ratemode = priv->bitratemode; ++	int err = 0; ++ ++	if (ratemode >= BITRATE_TABLE_SIZE) { ++		printk(KERN_ERR "%s: BUG: Invalid bitrate mode %d\n", ++		       priv->ndev->name, ratemode); ++		return -EINVAL; ++	} ++ ++	switch (priv->firmware_type) { ++	case FIRMWARE_TYPE_AGERE: ++		err = hermes_write_wordrec(hw, USER_BAP, ++				HERMES_RID_CNFTXRATECONTROL, ++				bitrate_table[ratemode].agere_txratectrl); ++		break; ++	case FIRMWARE_TYPE_INTERSIL: ++	case FIRMWARE_TYPE_SYMBOL: ++		err = hermes_write_wordrec(hw, USER_BAP, ++				HERMES_RID_CNFTXRATECONTROL, ++				bitrate_table[ratemode].intersil_txratectrl); ++		break; ++	default: ++		BUG(); ++	} ++ ++	return err; ++} ++ ++int orinoco_hw_get_act_bitrate(struct orinoco_private *priv, int *bitrate) ++{ ++	struct hermes *hw = &priv->hw; ++	int i; ++	int err = 0; ++	u16 val; ++ ++	err = hermes_read_wordrec(hw, USER_BAP, ++				  HERMES_RID_CURRENTTXRATE, &val); ++	if (err) ++		return err; ++ ++	switch (priv->firmware_type) { ++	case FIRMWARE_TYPE_AGERE: /* Lucent style rate */ ++		/* Note : in Lucent firmware, the return value of ++		 * HERMES_RID_CURRENTTXRATE is the bitrate in Mb/s, ++		 * and therefore is totally different from the ++		 * encoding of HERMES_RID_CNFTXRATECONTROL. ++		 * Don't forget that 6Mb/s is really 5.5Mb/s */ ++		if (val == 6) ++			*bitrate = 5500000; ++		else ++			*bitrate = val * 1000000; ++		break; ++	case FIRMWARE_TYPE_INTERSIL: /* Intersil style rate */ ++	case FIRMWARE_TYPE_SYMBOL: /* Symbol style rate */ ++		for (i = 0; i < BITRATE_TABLE_SIZE; i++) ++			if (bitrate_table[i].intersil_txratectrl == val) { ++				*bitrate = bitrate_table[i].bitrate * 100000; ++				break; ++			} ++ ++		if (i >= BITRATE_TABLE_SIZE) { ++			printk(KERN_INFO "%s: Unable to determine current bitrate (0x%04hx)\n", ++			       priv->ndev->name, val); ++			err = -EIO; ++		} ++ ++		break; ++	default: ++		BUG(); ++	} ++ ++	return err; ++} ++ ++/* Set fixed AP address */ ++int __orinoco_hw_set_wap(struct orinoco_private *priv) ++{ ++	int roaming_flag; ++	int err = 0; ++	struct hermes *hw = &priv->hw; ++ ++	switch (priv->firmware_type) { ++	case FIRMWARE_TYPE_AGERE: ++		/* not supported */ ++		break; ++	case FIRMWARE_TYPE_INTERSIL: ++		if (priv->bssid_fixed) ++			roaming_flag = 2; ++		else ++			roaming_flag = 1; ++ ++		err = hermes_write_wordrec(hw, USER_BAP, ++					   HERMES_RID_CNFROAMINGMODE, ++					   roaming_flag); ++		break; ++	case FIRMWARE_TYPE_SYMBOL: ++		err = HERMES_WRITE_RECORD(hw, USER_BAP, ++					  HERMES_RID_CNFMANDATORYBSSID_SYMBOL, ++					  &priv->desired_bssid); ++		break; ++	} ++	return err; ++} ++ ++/* Change the WEP keys and/or the current keys.  Can be called ++ * either from __orinoco_hw_setup_enc() or directly from ++ * orinoco_ioctl_setiwencode().  In the later case the association ++ * with the AP is not broken (if the firmware can handle it), ++ * which is needed for 802.1x implementations. */ ++int __orinoco_hw_setup_wepkeys(struct orinoco_private *priv) ++{ ++	struct hermes *hw = &priv->hw; ++	int err = 0; ++	int i; ++ ++	switch (priv->firmware_type) { ++	case FIRMWARE_TYPE_AGERE: ++	{ ++		struct orinoco_key keys[ORINOCO_MAX_KEYS]; ++ ++		memset(&keys, 0, sizeof(keys)); ++		for (i = 0; i < ORINOCO_MAX_KEYS; i++) { ++			int len = min(priv->keys[i].key_len, ++				      ORINOCO_MAX_KEY_SIZE); ++			memcpy(&keys[i].data, priv->keys[i].key, len); ++			if (len > SMALL_KEY_SIZE) ++				keys[i].len = cpu_to_le16(LARGE_KEY_SIZE); ++			else if (len > 0) ++				keys[i].len = cpu_to_le16(SMALL_KEY_SIZE); ++			else ++				keys[i].len = cpu_to_le16(0); ++		} ++ ++		err = HERMES_WRITE_RECORD(hw, USER_BAP, ++					  HERMES_RID_CNFWEPKEYS_AGERE, ++					  &keys); ++		if (err) ++			return err; ++		err = hermes_write_wordrec(hw, USER_BAP, ++					   HERMES_RID_CNFTXKEY_AGERE, ++					   priv->tx_key); ++		if (err) ++			return err; ++		break; ++	} ++	case FIRMWARE_TYPE_INTERSIL: ++	case FIRMWARE_TYPE_SYMBOL: ++		{ ++			int keylen; ++ ++			/* Force uniform key length to work around ++			 * firmware bugs */ ++			keylen = priv->keys[priv->tx_key].key_len; ++ ++			if (keylen > LARGE_KEY_SIZE) { ++				printk(KERN_ERR "%s: BUG: Key %d has oversize length %d.\n", ++				       priv->ndev->name, priv->tx_key, keylen); ++				return -E2BIG; ++			} else if (keylen > SMALL_KEY_SIZE) ++				keylen = LARGE_KEY_SIZE; ++			else if (keylen > 0) ++				keylen = SMALL_KEY_SIZE; ++			else ++				keylen = 0; ++ ++			/* Write all 4 keys */ ++			for (i = 0; i < ORINOCO_MAX_KEYS; i++) { ++				u8 key[LARGE_KEY_SIZE] = { 0 }; ++ ++				memcpy(key, priv->keys[i].key, ++				       priv->keys[i].key_len); ++ ++				err = hw->ops->write_ltv(hw, USER_BAP, ++						HERMES_RID_CNFDEFAULTKEY0 + i, ++						HERMES_BYTES_TO_RECLEN(keylen), ++						key); ++				if (err) ++					return err; ++			} ++ ++			/* Write the index of the key used in transmission */ ++			err = hermes_write_wordrec(hw, USER_BAP, ++						HERMES_RID_CNFWEPDEFAULTKEYID, ++						priv->tx_key); ++			if (err) ++				return err; ++		} ++		break; ++	} ++ ++	return 0; ++} ++ ++int __orinoco_hw_setup_enc(struct orinoco_private *priv) ++{ ++	struct hermes *hw = &priv->hw; ++	int err = 0; ++	int master_wep_flag; ++	int auth_flag; ++	int enc_flag; ++ ++	/* Setup WEP keys */ ++	if (priv->encode_alg == ORINOCO_ALG_WEP) ++		__orinoco_hw_setup_wepkeys(priv); ++ ++	if (priv->wep_restrict) ++		auth_flag = HERMES_AUTH_SHARED_KEY; ++	else ++		auth_flag = HERMES_AUTH_OPEN; ++ ++	if (priv->wpa_enabled) ++		enc_flag = 2; ++	else if (priv->encode_alg == ORINOCO_ALG_WEP) ++		enc_flag = 1; ++	else ++		enc_flag = 0; ++ ++	switch (priv->firmware_type) { ++	case FIRMWARE_TYPE_AGERE: /* Agere style WEP */ ++		if (priv->encode_alg == ORINOCO_ALG_WEP) { ++			/* Enable the shared-key authentication. */ ++			err = hermes_write_wordrec(hw, USER_BAP, ++					HERMES_RID_CNFAUTHENTICATION_AGERE, ++					auth_flag); ++			if (err) ++				return err; ++		} ++		err = hermes_write_wordrec(hw, USER_BAP, ++					   HERMES_RID_CNFWEPENABLED_AGERE, ++					   enc_flag); ++		if (err) ++			return err; ++ ++		if (priv->has_wpa) { ++			/* Set WPA key management */ ++			err = hermes_write_wordrec(hw, USER_BAP, ++				  HERMES_RID_CNFSETWPAAUTHMGMTSUITE_AGERE, ++				  priv->key_mgmt); ++			if (err) ++				return err; ++		} ++ ++		break; ++ ++	case FIRMWARE_TYPE_INTERSIL: /* Intersil style WEP */ ++	case FIRMWARE_TYPE_SYMBOL: /* Symbol style WEP */ ++		if (priv->encode_alg == ORINOCO_ALG_WEP) { ++			if (priv->wep_restrict || ++			    (priv->firmware_type == FIRMWARE_TYPE_SYMBOL)) ++				master_wep_flag = HERMES_WEP_PRIVACY_INVOKED | ++						  HERMES_WEP_EXCL_UNENCRYPTED; ++			else ++				master_wep_flag = HERMES_WEP_PRIVACY_INVOKED; ++ ++			err = hermes_write_wordrec(hw, USER_BAP, ++						   HERMES_RID_CNFAUTHENTICATION, ++						   auth_flag); ++			if (err) ++				return err; ++		} else ++			master_wep_flag = 0; ++ ++		if (priv->iw_mode == NL80211_IFTYPE_MONITOR) ++			master_wep_flag |= HERMES_WEP_HOST_DECRYPT; ++ ++		/* Master WEP setting : on/off */ ++		err = hermes_write_wordrec(hw, USER_BAP, ++					   HERMES_RID_CNFWEPFLAGS_INTERSIL, ++					   master_wep_flag); ++		if (err) ++			return err; ++ ++		break; ++	} ++ ++	return 0; ++} ++ ++/* key must be 32 bytes, including the tx and rx MIC keys. ++ * rsc must be NULL or up to 8 bytes ++ * tsc must be NULL or up to 8 bytes ++ */ ++int __orinoco_hw_set_tkip_key(struct orinoco_private *priv, int key_idx, ++			      int set_tx, const u8 *key, size_t key_len, ++			      const u8 *rsc, size_t rsc_len, ++			      const u8 *tsc, size_t tsc_len) ++{ ++	struct { ++		__le16 idx; ++		u8 rsc[ORINOCO_SEQ_LEN]; ++		struct { ++			u8 key[TKIP_KEYLEN]; ++			u8 tx_mic[MIC_KEYLEN]; ++			u8 rx_mic[MIC_KEYLEN]; ++		} tkip; ++		u8 tsc[ORINOCO_SEQ_LEN]; ++	} __packed buf; ++	struct hermes *hw = &priv->hw; ++	int ret; ++	int err; ++	int k; ++	u16 xmitting; ++ ++	key_idx &= 0x3; ++ ++	if (set_tx) ++		key_idx |= 0x8000; ++ ++	buf.idx = cpu_to_le16(key_idx); ++	if (key_len != sizeof(buf.tkip)) ++		return -EINVAL; ++	memcpy(&buf.tkip, key, sizeof(buf.tkip)); ++ ++	if (rsc_len > sizeof(buf.rsc)) ++		rsc_len = sizeof(buf.rsc); ++ ++	if (tsc_len > sizeof(buf.tsc)) ++		tsc_len = sizeof(buf.tsc); ++ ++	memset(buf.rsc, 0, sizeof(buf.rsc)); ++	memset(buf.tsc, 0, sizeof(buf.tsc)); ++ ++	if (rsc != NULL) ++		memcpy(buf.rsc, rsc, rsc_len); ++ ++	if (tsc != NULL) ++		memcpy(buf.tsc, tsc, tsc_len); ++	else ++		buf.tsc[4] = 0x10; ++ ++	/* Wait up to 100ms for tx queue to empty */ ++	for (k = 100; k > 0; k--) { ++		udelay(1000); ++		ret = hermes_read_wordrec(hw, USER_BAP, HERMES_RID_TXQUEUEEMPTY, ++					  &xmitting); ++		if (ret || !xmitting) ++			break; ++	} ++ ++	if (k == 0) ++		ret = -ETIMEDOUT; ++ ++	err = HERMES_WRITE_RECORD(hw, USER_BAP, ++				  HERMES_RID_CNFADDDEFAULTTKIPKEY_AGERE, ++				  &buf); ++ ++	return ret ? ret : err; ++} ++ ++int orinoco_clear_tkip_key(struct orinoco_private *priv, int key_idx) ++{ ++	struct hermes *hw = &priv->hw; ++	int err; ++ ++	err = hermes_write_wordrec(hw, USER_BAP, ++				   HERMES_RID_CNFREMDEFAULTTKIPKEY_AGERE, ++				   key_idx); ++	if (err) ++		printk(KERN_WARNING "%s: Error %d clearing TKIP key %d\n", ++		       priv->ndev->name, err, key_idx); ++	return err; ++} ++ ++int __orinoco_hw_set_multicast_list(struct orinoco_private *priv, ++				    struct net_device *dev, ++				    int mc_count, int promisc) ++{ ++	struct hermes *hw = &priv->hw; ++	int err = 0; ++ ++	if (promisc != priv->promiscuous) { ++		err = hermes_write_wordrec(hw, USER_BAP, ++					   HERMES_RID_CNFPROMISCUOUSMODE, ++					   promisc); ++		if (err) { ++			printk(KERN_ERR "%s: Error %d setting PROMISCUOUSMODE to 1.\n", ++			       priv->ndev->name, err); ++		} else ++			priv->promiscuous = promisc; ++	} ++ ++	/* If we're not in promiscuous mode, then we need to set the ++	 * group address if either we want to multicast, or if we were ++	 * multicasting and want to stop */ ++	if (!promisc && (mc_count || priv->mc_count)) { ++		struct netdev_hw_addr *ha; ++		struct hermes_multicast mclist; ++		int i = 0; ++ ++		netdev_for_each_mc_addr(ha, dev) { ++			if (i == mc_count) ++				break; ++			memcpy(mclist.addr[i++], ha->addr, ETH_ALEN); ++		} ++ ++		err = hw->ops->write_ltv(hw, USER_BAP, ++				   HERMES_RID_CNFGROUPADDRESSES, ++				   HERMES_BYTES_TO_RECLEN(mc_count * ETH_ALEN), ++				   &mclist); ++		if (err) ++			printk(KERN_ERR "%s: Error %d setting multicast list.\n", ++			       priv->ndev->name, err); ++		else ++			priv->mc_count = mc_count; ++	} ++	return err; ++} ++ ++/* Return : < 0 -> error code ; >= 0 -> length */ ++int orinoco_hw_get_essid(struct orinoco_private *priv, int *active, ++			 char buf[IW_ESSID_MAX_SIZE + 1]) ++{ ++	struct hermes *hw = &priv->hw; ++	int err = 0; ++	struct hermes_idstring essidbuf; ++	char *p = (char *)(&essidbuf.val); ++	int len; ++	unsigned long flags; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	if (strlen(priv->desired_essid) > 0) { ++		/* We read the desired SSID from the hardware rather ++		   than from priv->desired_essid, just in case the ++		   firmware is allowed to change it on us. I'm not ++		   sure about this */ ++		/* My guess is that the OWNSSID should always be whatever ++		 * we set to the card, whereas CURRENT_SSID is the one that ++		 * may change... - Jean II */ ++		u16 rid; ++ ++		*active = 1; ++ ++		rid = (priv->port_type == 3) ? HERMES_RID_CNFOWNSSID : ++			HERMES_RID_CNFDESIREDSSID; ++ ++		err = hw->ops->read_ltv(hw, USER_BAP, rid, sizeof(essidbuf), ++					NULL, &essidbuf); ++		if (err) ++			goto fail_unlock; ++	} else { ++		*active = 0; ++ ++		err = hw->ops->read_ltv(hw, USER_BAP, HERMES_RID_CURRENTSSID, ++					sizeof(essidbuf), NULL, &essidbuf); ++		if (err) ++			goto fail_unlock; ++	} ++ ++	len = le16_to_cpu(essidbuf.len); ++	BUG_ON(len > IW_ESSID_MAX_SIZE); ++ ++	memset(buf, 0, IW_ESSID_MAX_SIZE); ++	memcpy(buf, p, len); ++	err = len; ++ ++ fail_unlock: ++	orinoco_unlock(priv, &flags); ++ ++	return err; ++} ++ ++int orinoco_hw_get_freq(struct orinoco_private *priv) ++{ ++	struct hermes *hw = &priv->hw; ++	int err = 0; ++	u16 channel; ++	int freq = 0; ++	unsigned long flags; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	err = hermes_read_wordrec(hw, USER_BAP, HERMES_RID_CURRENTCHANNEL, ++				  &channel); ++	if (err) ++		goto out; ++ ++	/* Intersil firmware 1.3.5 returns 0 when the interface is down */ ++	if (channel == 0) { ++		err = -EBUSY; ++		goto out; ++	} ++ ++	if ((channel < 1) || (channel > NUM_CHANNELS)) { ++		printk(KERN_WARNING "%s: Channel out of range (%d)!\n", ++		       priv->ndev->name, channel); ++		err = -EBUSY; ++		goto out; ++ ++	} ++	freq = ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ); ++ ++ out: ++	orinoco_unlock(priv, &flags); ++ ++	if (err > 0) ++		err = -EBUSY; ++	return err ? err : freq; ++} ++ ++int orinoco_hw_get_bitratelist(struct orinoco_private *priv, ++			       int *numrates, s32 *rates, int max) ++{ ++	struct hermes *hw = &priv->hw; ++	struct hermes_idstring list; ++	unsigned char *p = (unsigned char *)&list.val; ++	int err = 0; ++	int num; ++	int i; ++	unsigned long flags; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	err = hw->ops->read_ltv(hw, USER_BAP, HERMES_RID_SUPPORTEDDATARATES, ++				sizeof(list), NULL, &list); ++	orinoco_unlock(priv, &flags); ++ ++	if (err) ++		return err; ++ ++	num = le16_to_cpu(list.len); ++	*numrates = num; ++	num = min(num, max); ++ ++	for (i = 0; i < num; i++) ++		rates[i] = (p[i] & 0x7f) * 500000; /* convert to bps */ ++ ++	return 0; ++} ++ ++int orinoco_hw_trigger_scan(struct orinoco_private *priv, ++			    const struct cfg80211_ssid *ssid) ++{ ++	struct net_device *dev = priv->ndev; ++	struct hermes *hw = &priv->hw; ++	unsigned long flags; ++	int err = 0; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	/* Scanning with port 0 disabled would fail */ ++	if (!netif_running(dev)) { ++		err = -ENETDOWN; ++		goto out; ++	} ++ ++	/* In monitor mode, the scan results are always empty. ++	 * Probe responses are passed to the driver as received ++	 * frames and could be processed in software. */ ++	if (priv->iw_mode == NL80211_IFTYPE_MONITOR) { ++		err = -EOPNOTSUPP; ++		goto out; ++	} ++ ++	if (priv->has_hostscan) { ++		switch (priv->firmware_type) { ++		case FIRMWARE_TYPE_SYMBOL: ++			err = hermes_write_wordrec(hw, USER_BAP, ++						HERMES_RID_CNFHOSTSCAN_SYMBOL, ++						HERMES_HOSTSCAN_SYMBOL_ONCE | ++						HERMES_HOSTSCAN_SYMBOL_BCAST); ++			break; ++		case FIRMWARE_TYPE_INTERSIL: { ++			__le16 req[3]; ++ ++			req[0] = cpu_to_le16(0x3fff);	/* All channels */ ++			req[1] = cpu_to_le16(0x0001);	/* rate 1 Mbps */ ++			req[2] = 0;			/* Any ESSID */ ++			err = HERMES_WRITE_RECORD(hw, USER_BAP, ++						  HERMES_RID_CNFHOSTSCAN, &req); ++			break; ++		} ++		case FIRMWARE_TYPE_AGERE: ++			if (ssid->ssid_len > 0) { ++				struct hermes_idstring idbuf; ++				size_t len = ssid->ssid_len; ++ ++				idbuf.len = cpu_to_le16(len); ++				memcpy(idbuf.val, ssid->ssid, len); ++ ++				err = hw->ops->write_ltv(hw, USER_BAP, ++					       HERMES_RID_CNFSCANSSID_AGERE, ++					       HERMES_BYTES_TO_RECLEN(len + 2), ++					       &idbuf); ++			} else ++				err = hermes_write_wordrec(hw, USER_BAP, ++						   HERMES_RID_CNFSCANSSID_AGERE, ++						   0);	/* Any ESSID */ ++			if (err) ++				break; ++ ++			if (priv->has_ext_scan) { ++				err = hermes_write_wordrec(hw, USER_BAP, ++						HERMES_RID_CNFSCANCHANNELS2GHZ, ++						0x7FFF); ++				if (err) ++					goto out; ++ ++				err = hermes_inquire(hw, ++						     HERMES_INQ_CHANNELINFO); ++			} else ++				err = hermes_inquire(hw, HERMES_INQ_SCAN); ++ ++			break; ++		} ++	} else ++		err = hermes_inquire(hw, HERMES_INQ_SCAN); ++ ++ out: ++	orinoco_unlock(priv, &flags); ++ ++	return err; ++} ++ ++/* Disassociate from node with BSSID addr */ ++int orinoco_hw_disassociate(struct orinoco_private *priv, ++			    u8 *addr, u16 reason_code) ++{ ++	struct hermes *hw = &priv->hw; ++	int err; ++ ++	struct { ++		u8 addr[ETH_ALEN]; ++		__le16 reason_code; ++	} __packed buf; ++ ++	/* Currently only supported by WPA enabled Agere fw */ ++	if (!priv->has_wpa) ++		return -EOPNOTSUPP; ++ ++	memcpy(buf.addr, addr, ETH_ALEN); ++	buf.reason_code = cpu_to_le16(reason_code); ++	err = HERMES_WRITE_RECORD(hw, USER_BAP, ++				  HERMES_RID_CNFDISASSOCIATE, ++				  &buf); ++	return err; ++} ++ ++int orinoco_hw_get_current_bssid(struct orinoco_private *priv, ++				 u8 *addr) ++{ ++	struct hermes *hw = &priv->hw; ++	int err; ++ ++	err = hw->ops->read_ltv(hw, USER_BAP, HERMES_RID_CURRENTBSSID, ++				ETH_ALEN, NULL, addr); ++ ++	return err; ++} +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/hw.h linux-6.15.6/drivers/net/wireless/intersil/orinoco/hw.h +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/hw.h	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/hw.h	2025-08-03 15:01:59.341130868 +0200 +@@ -0,0 +1,60 @@ ++/* Encapsulate basic setting changes on Hermes hardware ++ * ++ * See copyright notice in main.c ++ */ ++#ifndef _ORINOCO_HW_H_ ++#define _ORINOCO_HW_H_ ++ ++#include <linux/types.h> ++#include <linux/wireless.h> ++#include <net/cfg80211.h> ++ ++/* Hardware BAPs */ ++#define USER_BAP 0 ++#define IRQ_BAP  1 ++ ++/* WEP key sizes */ ++#define SMALL_KEY_SIZE 5 ++#define LARGE_KEY_SIZE 13 ++ ++/* Number of supported channels */ ++#define NUM_CHANNELS 14 ++ ++/* Forward declarations */ ++struct orinoco_private; ++ ++int determine_fw_capabilities(struct orinoco_private *priv, char *fw_name, ++			      size_t fw_name_len, u32 *hw_ver); ++int orinoco_hw_read_card_settings(struct orinoco_private *priv, u8 *dev_addr); ++int orinoco_hw_allocate_fid(struct orinoco_private *priv); ++int orinoco_get_bitratemode(int bitrate, int automatic); ++void orinoco_get_ratemode_cfg(int ratemode, int *bitrate, int *automatic); ++ ++int orinoco_hw_program_rids(struct orinoco_private *priv); ++int orinoco_hw_get_tkip_iv(struct orinoco_private *priv, int key, u8 *tsc); ++int __orinoco_hw_set_bitrate(struct orinoco_private *priv); ++int orinoco_hw_get_act_bitrate(struct orinoco_private *priv, int *bitrate); ++int __orinoco_hw_set_wap(struct orinoco_private *priv); ++int __orinoco_hw_setup_wepkeys(struct orinoco_private *priv); ++int __orinoco_hw_setup_enc(struct orinoco_private *priv); ++int __orinoco_hw_set_tkip_key(struct orinoco_private *priv, int key_idx, ++			      int set_tx, const u8 *key, size_t key_len, ++			      const u8 *rsc, size_t rsc_len, ++			      const u8 *tsc, size_t tsc_len); ++int orinoco_clear_tkip_key(struct orinoco_private *priv, int key_idx); ++int __orinoco_hw_set_multicast_list(struct orinoco_private *priv, ++				    struct net_device *dev, ++				    int mc_count, int promisc); ++int orinoco_hw_get_essid(struct orinoco_private *priv, int *active, ++			 char buf[IW_ESSID_MAX_SIZE + 1]); ++int orinoco_hw_get_freq(struct orinoco_private *priv); ++int orinoco_hw_get_bitratelist(struct orinoco_private *priv, ++			       int *numrates, s32 *rates, int max); ++int orinoco_hw_trigger_scan(struct orinoco_private *priv, ++			    const struct cfg80211_ssid *ssid); ++int orinoco_hw_disassociate(struct orinoco_private *priv, ++			    u8 *addr, u16 reason_code); ++int orinoco_hw_get_current_bssid(struct orinoco_private *priv, ++				 u8 *addr); ++ ++#endif /* _ORINOCO_HW_H_ */ +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/Kconfig linux-6.15.6/drivers/net/wireless/intersil/orinoco/Kconfig +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/Kconfig	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/Kconfig	2025-08-03 15:01:59.341130868 +0200 +@@ -0,0 +1,143 @@ ++# SPDX-License-Identifier: GPL-2.0-only ++config HERMES ++	tristate "Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)" ++	depends on (PPC_PMAC || PCI || PCMCIA) ++	depends on CFG80211 ++	select CFG80211_WEXT_EXPORT ++	select WIRELESS_EXT ++	select WEXT_SPY ++	select WEXT_PRIV ++	select FW_LOADER ++	select CRYPTO ++	select CRYPTO_MICHAEL_MIC ++	help ++	  A driver for 802.11b wireless cards based on the "Hermes" or ++	  Intersil HFA384x (Prism 2) MAC controller.  This includes the vast ++	  majority of the PCMCIA 802.11b cards (which are nearly all rebadges) ++	  - except for the Cisco/Aironet cards.  Cards supported include the ++	  Apple Airport (not a PCMCIA card), WavelanIEEE/Orinoco, ++	  Cabletron/EnteraSys Roamabout, ELSA AirLancer, MELCO Buffalo, Avaya, ++	  IBM High Rate Wireless, Farralon Syyline, Samsung MagicLAN, Netgear ++	  MA401, LinkSys WPC-11, D-Link DWL-650, 3Com AirConnect, Intel ++	  IPW2011, and Symbol Spectrum24 High Rate amongst others. ++ ++	  This option includes the guts of the driver, but in order to ++	  actually use a card you will also need to enable support for PCMCIA ++	  Hermes cards, PLX9052 based PCI adaptors or the Apple Airport below. ++ ++	  You will also very likely also need the Wireless Tools in order to ++	  configure your card and that /etc/pcmcia/wireless.opts works : ++	  <https://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html> ++ ++config HERMES_PRISM ++	bool "Support Prism 2/2.5 chipset" ++	depends on HERMES ++	help ++ ++	  Say Y to enable support for Prism 2 and 2.5 chipsets.  These ++	  chipsets are better handled by the hostap driver.  This driver ++	  would not support WPA or firmware download for Prism chipset. ++ ++	  If you are not sure, say N. ++ ++config HERMES_CACHE_FW_ON_INIT ++	bool "Cache Hermes firmware on driver initialisation" ++	depends on HERMES ++	default y ++	help ++	  Say Y to cache any firmware required by the Hermes drivers ++	  on startup.  The firmware will remain cached until the ++	  driver is unloaded.  The cache uses 64K of RAM. ++ ++	  Otherwise load the firmware from userspace as required.  In ++	  this case the driver should be unloaded and restarted ++	  whenever the firmware is changed. ++ ++	  If you are not sure, say Y. ++ ++config APPLE_AIRPORT ++	tristate "Apple Airport support (built-in)" ++	depends on PPC_PMAC && HERMES ++	help ++	  Say Y here to support the Airport 802.11b wireless Ethernet hardware ++	  built into the Macintosh iBook and other recent PowerPC-based ++	  Macintosh machines. This is essentially a Lucent Orinoco card with ++	  a non-standard interface. ++ ++	  This driver does not support the Airport Extreme (802.11b/g). Use ++	  the BCM43xx driver for Airport Extreme cards. ++ ++config PLX_HERMES ++	tristate "Hermes in PLX9052 based PCI adaptor support (Netgear MA301 etc.)" ++	depends on PCI && HERMES ++	help ++	  Enable support for PCMCIA cards supported by the "Hermes" (aka ++	  orinoco) driver when used in PLX9052 based PCI adaptors.  These ++	  adaptors are not a full PCMCIA controller but act as a more limited ++	  PCI <-> PCMCIA bridge.  Several vendors sell such adaptors so that ++	  802.11b PCMCIA cards can be used in desktop machines.  The Netgear ++	  MA301 is such an adaptor. ++ ++config TMD_HERMES ++	tristate "Hermes in TMD7160 based PCI adaptor support" ++	depends on PCI && HERMES ++	help ++	  Enable support for PCMCIA cards supported by the "Hermes" (aka ++	  orinoco) driver when used in TMD7160 based PCI adaptors.  These ++	  adaptors are not a full PCMCIA controller but act as a more limited ++	  PCI <-> PCMCIA bridge.  Several vendors sell such adaptors so that ++	  802.11b PCMCIA cards can be used in desktop machines. ++ ++config NORTEL_HERMES ++	tristate "Nortel emobility PCI adaptor support" ++	depends on PCI && HERMES ++	help ++	  Enable support for PCMCIA cards supported by the "Hermes" (aka ++	  orinoco) driver when used in Nortel emobility PCI adaptors.  These ++	  adaptors are not full PCMCIA controllers, but act as a more limited ++	  PCI <-> PCMCIA bridge. ++ ++config PCI_HERMES ++	tristate "Prism 2.5 PCI 802.11b adaptor support" ++	depends on PCI && HERMES && HERMES_PRISM ++	help ++	  Enable support for PCI and mini-PCI 802.11b wireless NICs based on ++	  the Prism 2.5 chipset.  These are true PCI cards, not the 802.11b ++	  PCMCIA cards bundled with PCI<->PCMCIA adaptors which are also ++	  common.  Some of the built-in wireless adaptors in laptops are of ++	  this variety. ++ ++config PCMCIA_HERMES ++	tristate "Hermes PCMCIA card support" ++	depends on PCMCIA && HERMES && HAS_IOPORT_MAP ++	help ++	  A driver for "Hermes" chipset based PCMCIA wireless adaptors, such ++	  as the Lucent WavelanIEEE/Orinoco cards and their OEM (Cabletron/ ++	  EnteraSys RoamAbout 802.11, ELSA Airlancer, Melco Buffalo and ++	  others).  It should also be usable on various Prism II based cards ++	  such as the Linksys, D-Link and Farallon Skyline.  It should also ++	  work on Symbol cards such as the 3Com AirConnect and Ericsson WLAN. ++ ++	  You will very likely need the Wireless Tools in order to ++	  configure your card and that /etc/pcmcia/wireless.opts works: ++	  <https://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html>. ++ ++config PCMCIA_SPECTRUM ++	tristate "Symbol Spectrum24 Trilogy PCMCIA card support" ++	depends on PCMCIA && HERMES && HAS_IOPORT_MAP ++	help ++ ++	  This is a driver for 802.11b cards using RAM-loadable Symbol ++	  firmware, such as Symbol Wireless Networker LA4100, CompactFlash ++	  cards by Socket Communications and Intel PRO/Wireless 2011B. ++ ++	  This driver requires firmware download on startup.  Utilities ++	  for downloading Symbol firmware are available at ++	  <http://sourceforge.net/projects/orinoco/> ++ ++config ORINOCO_USB ++	tristate "Agere Orinoco USB support" ++	depends on USB && HERMES ++	select FW_LOADER ++	help ++	  This driver is for USB versions of the Agere Orinoco card. +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/main.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/main.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/main.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/main.c	2025-08-03 16:31:03.372980267 +0200 +@@ -0,0 +1,2414 @@ ++/* main.c - (formerly known as dldwd_cs.c, orinoco_cs.c and orinoco.c) ++ * ++ * A driver for Hermes or Prism 2 chipset based PCMCIA wireless ++ * adaptors, with Lucent/Agere, Intersil or Symbol firmware. ++ * ++ * Current maintainers (as of 29 September 2003) are: ++ *	Pavel Roskin <proski AT gnu.org> ++ * and	David Gibson <hermes AT gibson.dropbear.id.au> ++ * ++ * (C) Copyright David Gibson, IBM Corporation 2001-2003. ++ * Copyright (C) 2000 David Gibson, Linuxcare Australia. ++ *	With some help from : ++ * Copyright (C) 2001 Jean Tourrilhes, HP Labs ++ * Copyright (C) 2001 Benjamin Herrenschmidt ++ * ++ * Based on dummy_cs.c 1.27 2000/06/12 21:27:25 ++ * ++ * Portions based on wvlan_cs.c 1.0.6, Copyright Andreas Neuhaus <andy ++ * AT fasta.fh-dortmund.de> ++ *      http://www.stud.fh-dortmund.de/~andy/wvlan/ ++ * ++ * The contents of this file are subject to the Mozilla Public License ++ * Version 1.1 (the "License"); you may not use this file except in ++ * compliance with the License. You may obtain a copy of the License ++ * at http://www.mozilla.org/MPL/ ++ * ++ * Software distributed under the License is distributed on an "AS IS" ++ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See ++ * the License for the specific language governing rights and ++ * limitations under the License. ++ * ++ * The initial developer of the original code is David A. Hinds ++ * <dahinds AT users.sourceforge.net>.  Portions created by David ++ * A. Hinds are Copyright (C) 1999 David A. Hinds.  All Rights ++ * Reserved. ++ * ++ * Alternatively, the contents of this file may be used under the ++ * terms of the GNU General Public License version 2 (the "GPL"), in ++ * which case the provisions of the GPL are applicable instead of the ++ * above.  If you wish to allow the use of your version of this file ++ * only under the terms of the GPL and not to allow others to use your ++ * version of this file under the MPL, indicate your decision by ++ * deleting the provisions above and replace them with the notice and ++ * other provisions required by the GPL.  If you do not delete the ++ * provisions above, a recipient may use your version of this file ++ * under either the MPL or the GPL.  */ ++ ++/* ++ * TODO ++ *	o Handle de-encapsulation within network layer, provide 802.11 ++ *	  headers (patch from Thomas 'Dent' Mirlacher) ++ *	o Fix possible races in SPY handling. ++ *	o Disconnect wireless extensions from fundamental configuration. ++ *	o (maybe) Software WEP support (patch from Stano Meduna). ++ *	o (maybe) Use multiple Tx buffers - driver handling queue ++ *	  rather than firmware. ++ */ ++ ++/* Locking and synchronization: ++ * ++ * The basic principle is that everything is serialized through a ++ * single spinlock, priv->lock.  The lock is used in user, bh and irq ++ * context, so when taken outside hardirq context it should always be ++ * taken with interrupts disabled.  The lock protects both the ++ * hardware and the struct orinoco_private. ++ * ++ * Another flag, priv->hw_unavailable indicates that the hardware is ++ * unavailable for an extended period of time (e.g. suspended, or in ++ * the middle of a hard reset).  This flag is protected by the ++ * spinlock.  All code which touches the hardware should check the ++ * flag after taking the lock, and if it is set, give up on whatever ++ * they are doing and drop the lock again.  The orinoco_lock() ++ * function handles this (it unlocks and returns -EBUSY if ++ * hw_unavailable is non-zero). ++ */ ++ ++#define DRIVER_NAME "orinoco" ++ ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/slab.h> ++#include <linux/init.h> ++#include <linux/delay.h> ++#include <linux/device.h> ++#include <linux/netdevice.h> ++#include <linux/etherdevice.h> ++#include <linux/suspend.h> ++#include <linux/if_arp.h> ++#include <linux/wireless.h> ++#include <linux/ieee80211.h> ++#include <net/iw_handler.h> ++#include <net/cfg80211.h> ++ ++#include "hermes_rid.h" ++#include "hermes_dld.h" ++#include "hw.h" ++#include "scan.h" ++#include "mic.h" ++#include "fw.h" ++#include "wext.h" ++#include "cfg.h" ++#include "main.h" ++ ++#include "orinoco.h" ++ ++/********************************************************************/ ++/* Module information                                               */ ++/********************************************************************/ ++ ++MODULE_AUTHOR("Pavel Roskin <proski@gnu.org> & " ++	      "David Gibson <hermes@gibson.dropbear.id.au>"); ++MODULE_DESCRIPTION("Driver for Lucent Orinoco, Prism II based " ++		   "and similar wireless cards"); ++MODULE_LICENSE("Dual MPL/GPL"); ++ ++/* Level of debugging. Used in the macros in orinoco.h */ ++#ifdef ORINOCO_DEBUG ++int orinoco_debug = ORINOCO_DEBUG; ++EXPORT_SYMBOL(orinoco_debug); ++module_param(orinoco_debug, int, 0644); ++MODULE_PARM_DESC(orinoco_debug, "Debug level"); ++#endif ++ ++static bool suppress_linkstatus; /* = 0 */ ++module_param(suppress_linkstatus, bool, 0644); ++MODULE_PARM_DESC(suppress_linkstatus, "Don't log link status changes"); ++ ++static int ignore_disconnect; /* = 0 */ ++module_param(ignore_disconnect, int, 0644); ++MODULE_PARM_DESC(ignore_disconnect, ++		 "Don't report lost link to the network layer"); ++ ++int force_monitor; /* = 0 */ ++module_param(force_monitor, int, 0644); ++MODULE_PARM_DESC(force_monitor, "Allow monitor mode for all firmware versions"); ++ ++/********************************************************************/ ++/* Internal constants                                               */ ++/********************************************************************/ ++ ++/* 802.2 LLC/SNAP header used for Ethernet encapsulation over 802.11 */ ++static const u8 encaps_hdr[] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00}; ++#define ENCAPS_OVERHEAD		(sizeof(encaps_hdr) + 2) ++ ++#define ORINOCO_MIN_MTU		256 ++#define ORINOCO_MAX_MTU		(IEEE80211_MAX_DATA_LEN - ENCAPS_OVERHEAD) ++ ++#define MAX_IRQLOOPS_PER_IRQ	10 ++#define MAX_IRQLOOPS_PER_JIFFY	(20000 / HZ)	/* Based on a guestimate of ++						 * how many events the ++						 * device could ++						 * legitimately generate */ ++ ++#define DUMMY_FID		0xFFFF ++ ++/*#define MAX_MULTICAST(priv)	(priv->firmware_type == FIRMWARE_TYPE_AGERE ? \ ++  HERMES_MAX_MULTICAST : 0)*/ ++#define MAX_MULTICAST(priv)	(HERMES_MAX_MULTICAST) ++ ++#define ORINOCO_INTEN		(HERMES_EV_RX | HERMES_EV_ALLOC \ ++				 | HERMES_EV_TX | HERMES_EV_TXEXC \ ++				 | HERMES_EV_WTERR | HERMES_EV_INFO \ ++				 | HERMES_EV_INFDROP) ++ ++/********************************************************************/ ++/* Data types                                                       */ ++/********************************************************************/ ++ ++/* Beginning of the Tx descriptor, used in TxExc handling */ ++struct hermes_txexc_data { ++	struct hermes_tx_descriptor desc; ++	__le16 frame_ctl; ++	__le16 duration_id; ++	u8 addr1[ETH_ALEN]; ++} __packed; ++ ++/* Rx frame header except compatibility 802.3 header */ ++struct hermes_rx_descriptor { ++	/* Control */ ++	__le16 status; ++	__le32 time; ++	u8 silence; ++	u8 signal; ++	u8 rate; ++	u8 rxflow; ++	__le32 reserved; ++ ++	/* 802.11 header */ ++	__le16 frame_ctl; ++	__le16 duration_id; ++	u8 addr1[ETH_ALEN]; ++	u8 addr2[ETH_ALEN]; ++	u8 addr3[ETH_ALEN]; ++	__le16 seq_ctl; ++	u8 addr4[ETH_ALEN]; ++ ++	/* Data length */ ++	__le16 data_len; ++} __packed; ++ ++struct orinoco_rx_data { ++	struct hermes_rx_descriptor *desc; ++	struct sk_buff *skb; ++	struct list_head list; ++}; ++ ++struct orinoco_scan_data { ++	void *buf; ++	size_t len; ++	int type; ++	struct list_head list; ++}; ++ ++/********************************************************************/ ++/* Function prototypes                                              */ ++/********************************************************************/ ++ ++static int __orinoco_set_multicast_list(struct net_device *dev); ++static int __orinoco_up(struct orinoco_private *priv); ++static int __orinoco_down(struct orinoco_private *priv); ++static int __orinoco_commit(struct orinoco_private *priv); ++ ++/********************************************************************/ ++/* Internal helper functions                                        */ ++/********************************************************************/ ++ ++void set_port_type(struct orinoco_private *priv) ++{ ++	switch (priv->iw_mode) { ++	case NL80211_IFTYPE_STATION: ++		priv->port_type = 1; ++		priv->createibss = 0; ++		break; ++	case NL80211_IFTYPE_ADHOC: ++		if (priv->prefer_port3) { ++			priv->port_type = 3; ++			priv->createibss = 0; ++		} else { ++			priv->port_type = priv->ibss_port; ++			priv->createibss = 1; ++		} ++		break; ++	case NL80211_IFTYPE_MONITOR: ++		priv->port_type = 3; ++		priv->createibss = 0; ++		break; ++	default: ++		printk(KERN_ERR "%s: Invalid priv->iw_mode in set_port_type()\n", ++		       priv->ndev->name); ++	} ++} ++ ++/********************************************************************/ ++/* Device methods                                                   */ ++/********************************************************************/ ++ ++int orinoco_open(struct net_device *dev) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	unsigned long flags; ++	int err; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	err = __orinoco_up(priv); ++ ++	if (!err) ++		priv->open = 1; ++ ++	orinoco_unlock(priv, &flags); ++ ++	return err; ++} ++EXPORT_SYMBOL(orinoco_open); ++ ++int orinoco_stop(struct net_device *dev) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	int err = 0; ++ ++	/* We mustn't use orinoco_lock() here, because we need to be ++	   able to close the interface even if hw_unavailable is set ++	   (e.g. as we're released after a PC Card removal) */ ++	orinoco_lock_irq(priv); ++ ++	priv->open = 0; ++ ++	err = __orinoco_down(priv); ++ ++	orinoco_unlock_irq(priv); ++ ++	return err; ++} ++EXPORT_SYMBOL(orinoco_stop); ++ ++void orinoco_set_multicast_list(struct net_device *dev) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	unsigned long flags; ++ ++	if (orinoco_lock(priv, &flags) != 0) { ++		printk(KERN_DEBUG "%s: orinoco_set_multicast_list() " ++		       "called when hw_unavailable\n", dev->name); ++		return; ++	} ++ ++	__orinoco_set_multicast_list(dev); ++	orinoco_unlock(priv, &flags); ++} ++EXPORT_SYMBOL(orinoco_set_multicast_list); ++ ++int orinoco_change_mtu(struct net_device *dev, int new_mtu) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++ ++	/* MTU + encapsulation + header length */ ++	if ((new_mtu + ENCAPS_OVERHEAD + sizeof(struct ieee80211_hdr)) > ++	     (priv->nicbuf_size - ETH_HLEN)) ++		return -EINVAL; ++ ++	dev->mtu = new_mtu; ++ ++	return 0; ++} ++EXPORT_SYMBOL(orinoco_change_mtu); ++ ++/********************************************************************/ ++/* Tx path                                                          */ ++/********************************************************************/ ++ ++/* Add encapsulation and MIC to the existing SKB. ++ * The main xmit routine will then send the whole lot to the card. ++ * Need 8 bytes headroom ++ * Need 8 bytes tailroom ++ * ++ *                          With encapsulated ethernet II frame ++ *                          -------- ++ *                          803.3 header (14 bytes) ++ *                           dst[6] ++ * --------                  src[6] ++ * 803.3 header (14 bytes)   len[2] ++ *  dst[6]                  803.2 header (8 bytes) ++ *  src[6]                   encaps[6] ++ *  len[2] <- leave alone -> len[2] ++ * --------                 -------- <-- 0 ++ * Payload                  Payload ++ * ...                      ... ++ * ++ * --------                 -------- ++ *                          MIC (8 bytes) ++ *                          -------- ++ * ++ * returns 0 on success, -ENOMEM on error. ++ */ ++int orinoco_process_xmit_skb(struct sk_buff *skb, ++			     struct net_device *dev, ++			     struct orinoco_private *priv, ++			     int *tx_control, ++			     u8 *mic_buf) ++{ ++	struct orinoco_tkip_key *key; ++	struct ethhdr *eh; ++	int do_mic; ++ ++	key = (struct orinoco_tkip_key *) priv->keys[priv->tx_key].key; ++ ++	do_mic = ((priv->encode_alg == ORINOCO_ALG_TKIP) && ++		  (key != NULL)); ++ ++	if (do_mic) ++		*tx_control |= (priv->tx_key << HERMES_MIC_KEY_ID_SHIFT) | ++			HERMES_TXCTRL_MIC; ++ ++	eh = (struct ethhdr *)skb->data; ++ ++	/* Encapsulate Ethernet-II frames */ ++	if (ntohs(eh->h_proto) > ETH_DATA_LEN) { /* Ethernet-II frame */ ++		struct header_struct { ++			struct ethhdr eth;	/* 802.3 header */ ++			u8 encap[6];		/* 802.2 header */ ++		} __packed hdr; ++		int len = skb->len + sizeof(encaps_hdr) - (2 * ETH_ALEN); ++ ++		if (skb_headroom(skb) < ENCAPS_OVERHEAD) { ++			if (net_ratelimit()) ++				printk(KERN_ERR ++				       "%s: Not enough headroom for 802.2 headers %d\n", ++				       dev->name, skb_headroom(skb)); ++			return -ENOMEM; ++		} ++ ++		/* Fill in new header */ ++		memcpy(&hdr.eth, eh, 2 * ETH_ALEN); ++		hdr.eth.h_proto = htons(len); ++		memcpy(hdr.encap, encaps_hdr, sizeof(encaps_hdr)); ++ ++		/* Make room for the new header, and copy it in */ ++		eh = skb_push(skb, ENCAPS_OVERHEAD); ++		memcpy(eh, &hdr, sizeof(hdr)); ++	} ++ ++	/* Calculate Michael MIC */ ++	if (do_mic) { ++		size_t len = skb->len - ETH_HLEN; ++		u8 *mic = &mic_buf[0]; ++ ++		/* Have to write to an even address, so copy the spare ++		 * byte across */ ++		if (skb->len % 2) { ++			*mic = skb->data[skb->len - 1]; ++			mic++; ++		} ++ ++		orinoco_mic(priv->tx_tfm_mic, key->tx_mic, ++			    eh->h_dest, eh->h_source, 0 /* priority */, ++			    skb->data + ETH_HLEN, ++			    len, mic); ++	} ++ ++	return 0; ++} ++EXPORT_SYMBOL(orinoco_process_xmit_skb); ++ ++static netdev_tx_t orinoco_xmit(struct sk_buff *skb, struct net_device *dev) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	struct net_device_stats *stats = &dev->stats; ++	struct hermes *hw = &priv->hw; ++	int err = 0; ++	u16 txfid = priv->txfid; ++	int tx_control; ++	unsigned long flags; ++	u8 mic_buf[MICHAEL_MIC_LEN + 1]; ++ ++	if (!netif_running(dev)) { ++		printk(KERN_ERR "%s: Tx on stopped device!\n", ++		       dev->name); ++		return NETDEV_TX_BUSY; ++	} ++ ++	if (netif_queue_stopped(dev)) { ++		printk(KERN_DEBUG "%s: Tx while transmitter busy!\n", ++		       dev->name); ++		return NETDEV_TX_BUSY; ++	} ++ ++	if (orinoco_lock(priv, &flags) != 0) { ++		printk(KERN_ERR "%s: orinoco_xmit() called while hw_unavailable\n", ++		       dev->name); ++		return NETDEV_TX_BUSY; ++	} ++ ++	if (!netif_carrier_ok(dev) || ++	    (priv->iw_mode == NL80211_IFTYPE_MONITOR)) { ++		/* Oops, the firmware hasn't established a connection, ++		   silently drop the packet (this seems to be the ++		   safest approach). */ ++		goto drop; ++	} ++ ++	/* Check packet length */ ++	if (skb->len < ETH_HLEN) ++		goto drop; ++ ++	tx_control = HERMES_TXCTRL_TX_OK | HERMES_TXCTRL_TX_EX; ++ ++	err = orinoco_process_xmit_skb(skb, dev, priv, &tx_control, ++				       &mic_buf[0]); ++	if (err) ++		goto drop; ++ ++	if (priv->has_alt_txcntl) { ++		/* WPA enabled firmwares have tx_cntl at the end of ++		 * the 802.11 header.  So write zeroed descriptor and ++		 * 802.11 header at the same time ++		 */ ++		char desc[HERMES_802_3_OFFSET]; ++		__le16 *txcntl = (__le16 *) &desc[HERMES_TXCNTL2_OFFSET]; ++ ++		memset(&desc, 0, sizeof(desc)); ++ ++		*txcntl = cpu_to_le16(tx_control); ++		err = hw->ops->bap_pwrite(hw, USER_BAP, &desc, sizeof(desc), ++					  txfid, 0); ++		if (err) { ++			if (net_ratelimit()) ++				printk(KERN_ERR "%s: Error %d writing Tx " ++				       "descriptor to BAP\n", dev->name, err); ++			goto busy; ++		} ++	} else { ++		struct hermes_tx_descriptor desc; ++ ++		memset(&desc, 0, sizeof(desc)); ++ ++		desc.tx_control = cpu_to_le16(tx_control); ++		err = hw->ops->bap_pwrite(hw, USER_BAP, &desc, sizeof(desc), ++					  txfid, 0); ++		if (err) { ++			if (net_ratelimit()) ++				printk(KERN_ERR "%s: Error %d writing Tx " ++				       "descriptor to BAP\n", dev->name, err); ++			goto busy; ++		} ++ ++		/* Clear the 802.11 header and data length fields - some ++		 * firmwares (e.g. Lucent/Agere 8.xx) appear to get confused ++		 * if this isn't done. */ ++		hermes_clear_words(hw, HERMES_DATA0, ++				   HERMES_802_3_OFFSET - HERMES_802_11_OFFSET); ++	} ++ ++	err = hw->ops->bap_pwrite(hw, USER_BAP, skb->data, skb->len, ++				  txfid, HERMES_802_3_OFFSET); ++	if (err) { ++		printk(KERN_ERR "%s: Error %d writing packet to BAP\n", ++		       dev->name, err); ++		goto busy; ++	} ++ ++	if (tx_control & HERMES_TXCTRL_MIC) { ++		size_t offset = HERMES_802_3_OFFSET + skb->len; ++		size_t len = MICHAEL_MIC_LEN; ++ ++		if (offset % 2) { ++			offset--; ++			len++; ++		} ++		err = hw->ops->bap_pwrite(hw, USER_BAP, &mic_buf[0], len, ++					  txfid, offset); ++		if (err) { ++			printk(KERN_ERR "%s: Error %d writing MIC to BAP\n", ++			       dev->name, err); ++			goto busy; ++		} ++	} ++ ++	/* Finally, we actually initiate the send */ ++	netif_stop_queue(dev); ++ ++	err = hw->ops->cmd_wait(hw, HERMES_CMD_TX | HERMES_CMD_RECL, ++				txfid, NULL); ++	if (err) { ++		netif_start_queue(dev); ++		if (net_ratelimit()) ++			printk(KERN_ERR "%s: Error %d transmitting packet\n", ++				dev->name, err); ++		goto busy; ++	} ++ ++	stats->tx_bytes += HERMES_802_3_OFFSET + skb->len; ++	goto ok; ++ ++ drop: ++	stats->tx_errors++; ++	stats->tx_dropped++; ++ ++ ok: ++	orinoco_unlock(priv, &flags); ++	dev_kfree_skb(skb); ++	return NETDEV_TX_OK; ++ ++ busy: ++	if (err == -EIO) ++		schedule_work(&priv->reset_work); ++	orinoco_unlock(priv, &flags); ++	return NETDEV_TX_BUSY; ++} ++ ++static void __orinoco_ev_alloc(struct net_device *dev, struct hermes *hw) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	u16 fid = hermes_read_regn(hw, ALLOCFID); ++ ++	if (fid != priv->txfid) { ++		if (fid != DUMMY_FID) ++			printk(KERN_WARNING "%s: Allocate event on unexpected fid (%04X)\n", ++			       dev->name, fid); ++		return; ++	} ++ ++	hermes_write_regn(hw, ALLOCFID, DUMMY_FID); ++} ++ ++static void __orinoco_ev_tx(struct net_device *dev, struct hermes *hw) ++{ ++	dev->stats.tx_packets++; ++ ++	netif_wake_queue(dev); ++ ++	hermes_write_regn(hw, TXCOMPLFID, DUMMY_FID); ++} ++ ++static void __orinoco_ev_txexc(struct net_device *dev, struct hermes *hw) ++{ ++	struct net_device_stats *stats = &dev->stats; ++	u16 fid = hermes_read_regn(hw, TXCOMPLFID); ++	u16 status; ++	struct hermes_txexc_data hdr; ++	int err = 0; ++ ++	if (fid == DUMMY_FID) ++		return; /* Nothing's really happened */ ++ ++	/* Read part of the frame header - we need status and addr1 */ ++	err = hw->ops->bap_pread(hw, IRQ_BAP, &hdr, ++				 sizeof(struct hermes_txexc_data), ++				 fid, 0); ++ ++	hermes_write_regn(hw, TXCOMPLFID, DUMMY_FID); ++	stats->tx_errors++; ++ ++	if (err) { ++		printk(KERN_WARNING "%s: Unable to read descriptor on Tx error " ++		       "(FID=%04X error %d)\n", ++		       dev->name, fid, err); ++		return; ++	} ++ ++	DEBUG(1, "%s: Tx error, err %d (FID=%04X)\n", dev->name, ++	      err, fid); ++ ++	/* We produce a TXDROP event only for retry or lifetime ++	 * exceeded, because that's the only status that really mean ++	 * that this particular node went away. ++	 * Other errors means that *we* screwed up. - Jean II */ ++	status = le16_to_cpu(hdr.desc.status); ++	if (status & (HERMES_TXSTAT_RETRYERR | HERMES_TXSTAT_AGEDERR)) { ++		union iwreq_data	wrqu; ++ ++		/* Copy 802.11 dest address. ++		 * We use the 802.11 header because the frame may ++		 * not be 802.3 or may be mangled... ++		 * In Ad-Hoc mode, it will be the node address. ++		 * In managed mode, it will be most likely the AP addr ++		 * User space will figure out how to convert it to ++		 * whatever it needs (IP address or else). ++		 * - Jean II */ ++		memcpy(wrqu.addr.sa_data, hdr.addr1, ETH_ALEN); ++		wrqu.addr.sa_family = ARPHRD_ETHER; ++ ++		/* Send event to user space */ ++		wireless_send_event(dev, IWEVTXDROP, &wrqu, NULL); ++	} ++ ++	netif_wake_queue(dev); ++} ++ ++void orinoco_tx_timeout(struct net_device *dev, unsigned int txqueue) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	struct net_device_stats *stats = &dev->stats; ++	struct hermes *hw = &priv->hw; ++ ++	printk(KERN_WARNING "%s: Tx timeout! " ++	       "ALLOCFID=%04x, TXCOMPLFID=%04x, EVSTAT=%04x\n", ++	       dev->name, hermes_read_regn(hw, ALLOCFID), ++	       hermes_read_regn(hw, TXCOMPLFID), hermes_read_regn(hw, EVSTAT)); ++ ++	stats->tx_errors++; ++ ++	schedule_work(&priv->reset_work); ++} ++EXPORT_SYMBOL(orinoco_tx_timeout); ++ ++/********************************************************************/ ++/* Rx path (data frames)                                            */ ++/********************************************************************/ ++ ++/* Does the frame have a SNAP header indicating it should be ++ * de-encapsulated to Ethernet-II? */ ++static inline int is_ethersnap(void *_hdr) ++{ ++	u8 *hdr = _hdr; ++ ++	/* We de-encapsulate all packets which, a) have SNAP headers ++	 * (i.e. SSAP=DSAP=0xaa and CTRL=0x3 in the 802.2 LLC header ++	 * and where b) the OUI of the SNAP header is 00:00:00 or ++	 * 00:00:f8 - we need both because different APs appear to use ++	 * different OUIs for some reason */ ++	return (memcmp(hdr, &encaps_hdr, 5) == 0) ++		&& ((hdr[5] == 0x00) || (hdr[5] == 0xf8)); ++} ++ ++static inline void orinoco_spy_gather(struct net_device *dev, u_char *mac, ++				      int level, int noise) ++{ ++	struct iw_quality wstats; ++	wstats.level = level - 0x95; ++	wstats.noise = noise - 0x95; ++	wstats.qual = (level > noise) ? (level - noise) : 0; ++	wstats.updated = IW_QUAL_ALL_UPDATED | IW_QUAL_DBM; ++	/* Update spy records */ ++	//wireless_spy_update(dev, mac, &wstats); ++} ++ ++static void orinoco_stat_gather(struct net_device *dev, ++				struct sk_buff *skb, ++				struct hermes_rx_descriptor *desc) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++ ++	/* Using spy support with lots of Rx packets, like in an ++	 * infrastructure (AP), will really slow down everything, because ++	 * the MAC address must be compared to each entry of the spy list. ++	 * If the user really asks for it (set some address in the ++	 * spy list), we do it, but he will pay the price. ++	 * Note that to get here, you need both WIRELESS_SPY ++	 * compiled in AND some addresses in the list !!! ++	 */ ++	/* Note : gcc will optimise the whole section away if ++	 * WIRELESS_SPY is not defined... - Jean II */ ++	if (SPY_NUMBER(priv)) { ++		orinoco_spy_gather(dev, skb_mac_header(skb) + ETH_ALEN, ++				   desc->signal, desc->silence); ++	} ++} ++ ++/* ++ * orinoco_rx_monitor - handle received monitor frames. ++ * ++ * Arguments: ++ *	dev		network device ++ *	rxfid		received FID ++ *	desc		rx descriptor of the frame ++ * ++ * Call context: interrupt ++ */ ++static void orinoco_rx_monitor(struct net_device *dev, u16 rxfid, ++			       struct hermes_rx_descriptor *desc) ++{ ++	u32 hdrlen = 30;	/* return full header by default */ ++	u32 datalen = 0; ++	u16 fc; ++	int err; ++	int len; ++	struct sk_buff *skb; ++	struct orinoco_private *priv = ndev_priv(dev); ++	struct net_device_stats *stats = &dev->stats; ++	struct hermes *hw = &priv->hw; ++ ++	len = le16_to_cpu(desc->data_len); ++ ++	/* Determine the size of the header and the data */ ++	fc = le16_to_cpu(desc->frame_ctl); ++	switch (fc & IEEE80211_FCTL_FTYPE) { ++	case IEEE80211_FTYPE_DATA: ++		if ((fc & IEEE80211_FCTL_TODS) ++		    && (fc & IEEE80211_FCTL_FROMDS)) ++			hdrlen = 30; ++		else ++			hdrlen = 24; ++		datalen = len; ++		break; ++	case IEEE80211_FTYPE_MGMT: ++		hdrlen = 24; ++		datalen = len; ++		break; ++	case IEEE80211_FTYPE_CTL: ++		switch (fc & IEEE80211_FCTL_STYPE) { ++		case IEEE80211_STYPE_PSPOLL: ++		case IEEE80211_STYPE_RTS: ++		case IEEE80211_STYPE_CFEND: ++		case IEEE80211_STYPE_CFENDACK: ++			hdrlen = 16; ++			break; ++		case IEEE80211_STYPE_CTS: ++		case IEEE80211_STYPE_ACK: ++			hdrlen = 10; ++			break; ++		} ++		break; ++	default: ++		/* Unknown frame type */ ++		break; ++	} ++ ++	/* sanity check the length */ ++	if (datalen > IEEE80211_MAX_DATA_LEN + 12) { ++		printk(KERN_DEBUG "%s: oversized monitor frame, " ++		       "data length = %d\n", dev->name, datalen); ++		stats->rx_length_errors++; ++		goto update_stats; ++	} ++ ++	skb = dev_alloc_skb(hdrlen + datalen); ++	if (!skb) { ++		printk(KERN_WARNING "%s: Cannot allocate skb for monitor frame\n", ++		       dev->name); ++		goto update_stats; ++	} ++ ++	/* Copy the 802.11 header to the skb */ ++	skb_put_data(skb, &(desc->frame_ctl), hdrlen); ++	skb_reset_mac_header(skb); ++ ++	/* If any, copy the data from the card to the skb */ ++	if (datalen > 0) { ++		err = hw->ops->bap_pread(hw, IRQ_BAP, skb_put(skb, datalen), ++					 ALIGN(datalen, 2), rxfid, ++					 HERMES_802_2_OFFSET); ++		if (err) { ++			printk(KERN_ERR "%s: error %d reading monitor frame\n", ++			       dev->name, err); ++			goto drop; ++		} ++	} ++ ++	skb->dev = dev; ++	skb->ip_summed = CHECKSUM_NONE; ++	skb->pkt_type = PACKET_OTHERHOST; ++	skb->protocol = cpu_to_be16(ETH_P_802_2); ++ ++	stats->rx_packets++; ++	stats->rx_bytes += skb->len; ++ ++	netif_rx(skb); ++	return; ++ ++ drop: ++	dev_kfree_skb_irq(skb); ++ update_stats: ++	stats->rx_errors++; ++	stats->rx_dropped++; ++} ++ ++void __orinoco_ev_rx(struct net_device *dev, struct hermes *hw) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	struct net_device_stats *stats = &dev->stats; ++	struct iw_statistics *wstats = &priv->wstats; ++	struct sk_buff *skb = NULL; ++	u16 rxfid, status; ++	int length; ++	struct hermes_rx_descriptor *desc; ++	struct orinoco_rx_data *rx_data; ++	int err; ++ ++	desc = kmalloc(sizeof(*desc), GFP_ATOMIC); ++	if (!desc) ++		goto update_stats; ++ ++	rxfid = hermes_read_regn(hw, RXFID); ++ ++	err = hw->ops->bap_pread(hw, IRQ_BAP, desc, sizeof(*desc), ++				 rxfid, 0); ++	if (err) { ++		printk(KERN_ERR "%s: error %d reading Rx descriptor. " ++		       "Frame dropped.\n", dev->name, err); ++		goto update_stats; ++	} ++ ++	status = le16_to_cpu(desc->status); ++ ++	if (status & HERMES_RXSTAT_BADCRC) { ++		DEBUG(1, "%s: Bad CRC on Rx. Frame dropped.\n", ++		      dev->name); ++		stats->rx_crc_errors++; ++		goto update_stats; ++	} ++ ++	/* Handle frames in monitor mode */ ++	if (priv->iw_mode == NL80211_IFTYPE_MONITOR) { ++		orinoco_rx_monitor(dev, rxfid, desc); ++		goto out; ++	} ++ ++	if (status & HERMES_RXSTAT_UNDECRYPTABLE) { ++		DEBUG(1, "%s: Undecryptable frame on Rx. Frame dropped.\n", ++		      dev->name); ++		wstats->discard.code++; ++		goto update_stats; ++	} ++ ++	length = le16_to_cpu(desc->data_len); ++ ++	/* Sanity checks */ ++	if (length < 3) { /* No for even an 802.2 LLC header */ ++		/* At least on Symbol firmware with PCF we get quite a ++		   lot of these legitimately - Poll frames with no ++		   data. */ ++		goto out; ++	} ++	if (length > IEEE80211_MAX_DATA_LEN) { ++		printk(KERN_WARNING "%s: Oversized frame received (%d bytes)\n", ++		       dev->name, length); ++		stats->rx_length_errors++; ++		goto update_stats; ++	} ++ ++	/* Payload size does not include Michael MIC. Increase payload ++	 * size to read it together with the data. */ ++	if (status & HERMES_RXSTAT_MIC) ++		length += MICHAEL_MIC_LEN; ++ ++	/* We need space for the packet data itself, plus an ethernet ++	   header, plus 2 bytes so we can align the IP header on a ++	   32bit boundary, plus 1 byte so we can read in odd length ++	   packets from the card, which has an IO granularity of 16 ++	   bits */ ++	skb = dev_alloc_skb(length + ETH_HLEN + 2 + 1); ++	if (!skb) { ++		printk(KERN_WARNING "%s: Can't allocate skb for Rx\n", ++		       dev->name); ++		goto update_stats; ++	} ++ ++	/* We'll prepend the header, so reserve space for it.  The worst ++	   case is no decapsulation, when 802.3 header is prepended and ++	   nothing is removed.  2 is for aligning the IP header.  */ ++	skb_reserve(skb, ETH_HLEN + 2); ++ ++	err = hw->ops->bap_pread(hw, IRQ_BAP, skb_put(skb, length), ++				 ALIGN(length, 2), rxfid, ++				 HERMES_802_2_OFFSET); ++	if (err) { ++		printk(KERN_ERR "%s: error %d reading frame. " ++		       "Frame dropped.\n", dev->name, err); ++		goto drop; ++	} ++ ++	/* Add desc and skb to rx queue */ ++	rx_data = kzalloc(sizeof(*rx_data), GFP_ATOMIC); ++	if (!rx_data) ++		goto drop; ++ ++	rx_data->desc = desc; ++	rx_data->skb = skb; ++	list_add_tail(&rx_data->list, &priv->rx_list); ++	tasklet_schedule(&priv->rx_tasklet); ++ ++	return; ++ ++drop: ++	dev_kfree_skb_irq(skb); ++update_stats: ++	stats->rx_errors++; ++	stats->rx_dropped++; ++out: ++	kfree(desc); ++} ++EXPORT_SYMBOL(__orinoco_ev_rx); ++ ++static void orinoco_rx(struct net_device *dev, ++		       struct hermes_rx_descriptor *desc, ++		       struct sk_buff *skb) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	struct net_device_stats *stats = &dev->stats; ++	u16 status, fc; ++	int length; ++	struct ethhdr *hdr; ++ ++	status = le16_to_cpu(desc->status); ++	length = le16_to_cpu(desc->data_len); ++	fc = le16_to_cpu(desc->frame_ctl); ++ ++	/* Calculate and check MIC */ ++	if (status & HERMES_RXSTAT_MIC) { ++		struct orinoco_tkip_key *key; ++		int key_id = ((status & HERMES_RXSTAT_MIC_KEY_ID) >> ++			      HERMES_MIC_KEY_ID_SHIFT); ++		u8 mic[MICHAEL_MIC_LEN]; ++		u8 *rxmic; ++		u8 *src = (fc & IEEE80211_FCTL_FROMDS) ? ++			desc->addr3 : desc->addr2; ++ ++		/* Extract Michael MIC from payload */ ++		rxmic = skb->data + skb->len - MICHAEL_MIC_LEN; ++ ++		skb_trim(skb, skb->len - MICHAEL_MIC_LEN); ++		length -= MICHAEL_MIC_LEN; ++ ++		key = (struct orinoco_tkip_key *) priv->keys[key_id].key; ++ ++		if (!key) { ++			printk(KERN_WARNING "%s: Received encrypted frame from " ++			       "%pM using key %i, but key is not installed\n", ++			       dev->name, src, key_id); ++			goto drop; ++		} ++ ++		orinoco_mic(priv->rx_tfm_mic, key->rx_mic, desc->addr1, src, ++			    0, /* priority or QoS? */ ++			    skb->data, skb->len, &mic[0]); ++ ++		if (memcmp(mic, rxmic, ++			   MICHAEL_MIC_LEN)) { ++			union iwreq_data wrqu; ++			struct iw_michaelmicfailure wxmic; ++ ++			printk(KERN_WARNING "%s: " ++			       "Invalid Michael MIC in data frame from %pM, " ++			       "using key %i\n", ++			       dev->name, src, key_id); ++ ++			/* TODO: update stats */ ++ ++			/* Notify userspace */ ++			memset(&wxmic, 0, sizeof(wxmic)); ++			wxmic.flags = key_id & IW_MICFAILURE_KEY_ID; ++			wxmic.flags |= (desc->addr1[0] & 1) ? ++				IW_MICFAILURE_GROUP : IW_MICFAILURE_PAIRWISE; ++			wxmic.src_addr.sa_family = ARPHRD_ETHER; ++			memcpy(wxmic.src_addr.sa_data, src, ETH_ALEN); ++ ++			(void) orinoco_hw_get_tkip_iv(priv, key_id, ++						      &wxmic.tsc[0]); ++ ++			memset(&wrqu, 0, sizeof(wrqu)); ++			wrqu.data.length = sizeof(wxmic); ++			wireless_send_event(dev, IWEVMICHAELMICFAILURE, &wrqu, ++					    (char *) &wxmic); ++ ++			goto drop; ++		} ++	} ++ ++	/* Handle decapsulation ++	 * In most cases, the firmware tell us about SNAP frames. ++	 * For some reason, the SNAP frames sent by LinkSys APs ++	 * are not properly recognised by most firmwares. ++	 * So, check ourselves */ ++	if (length >= ENCAPS_OVERHEAD && ++	    (((status & HERMES_RXSTAT_MSGTYPE) == HERMES_RXSTAT_1042) || ++	     ((status & HERMES_RXSTAT_MSGTYPE) == HERMES_RXSTAT_TUNNEL) || ++	     is_ethersnap(skb->data))) { ++		/* These indicate a SNAP within 802.2 LLC within ++		   802.11 frame which we'll need to de-encapsulate to ++		   the original EthernetII frame. */ ++		hdr = skb_push(skb, ETH_HLEN - ENCAPS_OVERHEAD); ++	} else { ++		/* 802.3 frame - prepend 802.3 header as is */ ++		hdr = skb_push(skb, ETH_HLEN); ++		hdr->h_proto = htons(length); ++	} ++	memcpy(hdr->h_dest, desc->addr1, ETH_ALEN); ++	if (fc & IEEE80211_FCTL_FROMDS) ++		memcpy(hdr->h_source, desc->addr3, ETH_ALEN); ++	else ++		memcpy(hdr->h_source, desc->addr2, ETH_ALEN); ++ ++	skb->protocol = eth_type_trans(skb, dev); ++	skb->ip_summed = CHECKSUM_NONE; ++	if (fc & IEEE80211_FCTL_TODS) ++		skb->pkt_type = PACKET_OTHERHOST; ++ ++	/* Process the wireless stats if needed */ ++	orinoco_stat_gather(dev, skb, desc); ++ ++	/* Pass the packet to the networking stack */ ++	netif_rx(skb); ++	stats->rx_packets++; ++	stats->rx_bytes += length; ++ ++	return; ++ ++ drop: ++	dev_kfree_skb(skb); ++	stats->rx_errors++; ++	stats->rx_dropped++; ++} ++ ++static void orinoco_rx_isr_tasklet(struct tasklet_struct *t) ++{ ++	struct orinoco_private *priv = from_tasklet(priv, t, rx_tasklet); ++	struct net_device *dev = priv->ndev; ++	struct orinoco_rx_data *rx_data, *temp; ++	struct hermes_rx_descriptor *desc; ++	struct sk_buff *skb; ++	unsigned long flags; ++ ++	/* orinoco_rx requires the driver lock, and we also need to ++	 * protect priv->rx_list, so just hold the lock over the ++	 * lot. ++	 * ++	 * If orinoco_lock fails, we've unplugged the card. In this ++	 * case just abort. */ ++	if (orinoco_lock(priv, &flags) != 0) ++		return; ++ ++	/* extract desc and skb from queue */ ++	list_for_each_entry_safe(rx_data, temp, &priv->rx_list, list) { ++		desc = rx_data->desc; ++		skb = rx_data->skb; ++		list_del(&rx_data->list); ++		kfree(rx_data); ++ ++		orinoco_rx(dev, desc, skb); ++ ++		kfree(desc); ++	} ++ ++	orinoco_unlock(priv, &flags); ++} ++ ++/********************************************************************/ ++/* Rx path (info frames)                                            */ ++/********************************************************************/ ++ ++static void print_linkstatus(struct net_device *dev, u16 status) ++{ ++	char *s; ++ ++	if (suppress_linkstatus) ++		return; ++ ++	switch (status) { ++	case HERMES_LINKSTATUS_NOT_CONNECTED: ++		s = "Not Connected"; ++		break; ++	case HERMES_LINKSTATUS_CONNECTED: ++		s = "Connected"; ++		break; ++	case HERMES_LINKSTATUS_DISCONNECTED: ++		s = "Disconnected"; ++		break; ++	case HERMES_LINKSTATUS_AP_CHANGE: ++		s = "AP Changed"; ++		break; ++	case HERMES_LINKSTATUS_AP_OUT_OF_RANGE: ++		s = "AP Out of Range"; ++		break; ++	case HERMES_LINKSTATUS_AP_IN_RANGE: ++		s = "AP In Range"; ++		break; ++	case HERMES_LINKSTATUS_ASSOC_FAILED: ++		s = "Association Failed"; ++		break; ++	default: ++		s = "UNKNOWN"; ++	} ++ ++	printk(KERN_DEBUG "%s: New link status: %s (%04x)\n", ++	       dev->name, s, status); ++} ++ ++/* Search scan results for requested BSSID, join it if found */ ++static void orinoco_join_ap(struct work_struct *work) ++{ ++	struct orinoco_private *priv = ++		container_of(work, struct orinoco_private, join_work); ++	struct net_device *dev = priv->ndev; ++	struct hermes *hw = &priv->hw; ++	int err; ++	unsigned long flags; ++	struct join_req { ++		u8 bssid[ETH_ALEN]; ++		__le16 channel; ++	} __packed req; ++	const int atom_len = offsetof(struct prism2_scan_apinfo, atim); ++	struct prism2_scan_apinfo *atom = NULL; ++	int offset = 4; ++	int found = 0; ++	u8 *buf; ++	u16 len; ++ ++	/* Allocate buffer for scan results */ ++	buf = kmalloc(MAX_SCAN_LEN, GFP_KERNEL); ++	if (!buf) ++		return; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		goto fail_lock; ++ ++	/* Sanity checks in case user changed something in the meantime */ ++	if (!priv->bssid_fixed) ++		goto out; ++ ++	if (strlen(priv->desired_essid) == 0) ++		goto out; ++ ++	/* Read scan results from the firmware */ ++	err = hw->ops->read_ltv(hw, USER_BAP, ++				HERMES_RID_SCANRESULTSTABLE, ++				MAX_SCAN_LEN, &len, buf); ++	if (err) { ++		printk(KERN_ERR "%s: Cannot read scan results\n", ++		       dev->name); ++		goto out; ++	} ++ ++	len = HERMES_RECLEN_TO_BYTES(len); ++ ++	/* Go through the scan results looking for the channel of the AP ++	 * we were requested to join */ ++	for (; offset + atom_len <= len; offset += atom_len) { ++		atom = (struct prism2_scan_apinfo *) (buf + offset); ++		if (memcmp(&atom->bssid, priv->desired_bssid, ETH_ALEN) == 0) { ++			found = 1; ++			break; ++		} ++	} ++ ++	if (!found) { ++		DEBUG(1, "%s: Requested AP not found in scan results\n", ++		      dev->name); ++		goto out; ++	} ++ ++	memcpy(req.bssid, priv->desired_bssid, ETH_ALEN); ++	req.channel = atom->channel;	/* both are little-endian */ ++	err = HERMES_WRITE_RECORD(hw, USER_BAP, HERMES_RID_CNFJOINREQUEST, ++				  &req); ++	if (err) ++		printk(KERN_ERR "%s: Error issuing join request\n", dev->name); ++ ++ out: ++	orinoco_unlock(priv, &flags); ++ ++ fail_lock: ++	kfree(buf); ++} ++ ++/* Send new BSSID to userspace */ ++static void orinoco_send_bssid_wevent(struct orinoco_private *priv) ++{ ++	struct net_device *dev = priv->ndev; ++	struct hermes *hw = &priv->hw; ++	union iwreq_data wrqu; ++	int err; ++ ++	err = hw->ops->read_ltv(hw, USER_BAP, HERMES_RID_CURRENTBSSID, ++				ETH_ALEN, NULL, wrqu.ap_addr.sa_data); ++	if (err != 0) ++		return; ++ ++	wrqu.ap_addr.sa_family = ARPHRD_ETHER; ++ ++	/* Send event to user space */ ++	wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL); ++} ++ ++static void orinoco_send_assocreqie_wevent(struct orinoco_private *priv) ++{ ++	struct net_device *dev = priv->ndev; ++	struct hermes *hw = &priv->hw; ++	union iwreq_data wrqu; ++	int err; ++	u8 buf[88]; ++	u8 *ie; ++ ++	if (!priv->has_wpa) ++		return; ++ ++	err = hw->ops->read_ltv(hw, USER_BAP, HERMES_RID_CURRENT_ASSOC_REQ_INFO, ++				sizeof(buf), NULL, &buf); ++	if (err != 0) ++		return; ++ ++	ie = orinoco_get_wpa_ie(buf, sizeof(buf)); ++	if (ie) { ++		int rem = sizeof(buf) - (ie - &buf[0]); ++		wrqu.data.length = ie[1] + 2; ++		if (wrqu.data.length > rem) ++			wrqu.data.length = rem; ++ ++		if (wrqu.data.length) ++			/* Send event to user space */ ++			wireless_send_event(dev, IWEVASSOCREQIE, &wrqu, ie); ++	} ++} ++ ++static void orinoco_send_assocrespie_wevent(struct orinoco_private *priv) ++{ ++	struct net_device *dev = priv->ndev; ++	struct hermes *hw = &priv->hw; ++	union iwreq_data wrqu; ++	int err; ++	u8 buf[88]; /* TODO: verify max size or IW_GENERIC_IE_MAX */ ++	u8 *ie; ++ ++	if (!priv->has_wpa) ++		return; ++ ++	err = hw->ops->read_ltv(hw, USER_BAP, ++				HERMES_RID_CURRENT_ASSOC_RESP_INFO, ++				sizeof(buf), NULL, &buf); ++	if (err != 0) ++		return; ++ ++	ie = orinoco_get_wpa_ie(buf, sizeof(buf)); ++	if (ie) { ++		int rem = sizeof(buf) - (ie - &buf[0]); ++		wrqu.data.length = ie[1] + 2; ++		if (wrqu.data.length > rem) ++			wrqu.data.length = rem; ++ ++		if (wrqu.data.length) ++			/* Send event to user space */ ++			wireless_send_event(dev, IWEVASSOCRESPIE, &wrqu, ie); ++	} ++} ++ ++static void orinoco_send_wevents(struct work_struct *work) ++{ ++	struct orinoco_private *priv = ++		container_of(work, struct orinoco_private, wevent_work); ++	unsigned long flags; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return; ++ ++	orinoco_send_assocreqie_wevent(priv); ++	orinoco_send_assocrespie_wevent(priv); ++	orinoco_send_bssid_wevent(priv); ++ ++	orinoco_unlock(priv, &flags); ++} ++ ++static void qbuf_scan(struct orinoco_private *priv, void *buf, ++		      int len, int type) ++{ ++	struct orinoco_scan_data *sd; ++	unsigned long flags; ++ ++	sd = kmalloc(sizeof(*sd), GFP_ATOMIC); ++	if (!sd) ++		return; ++ ++	sd->buf = buf; ++	sd->len = len; ++	sd->type = type; ++ ++	spin_lock_irqsave(&priv->scan_lock, flags); ++	list_add_tail(&sd->list, &priv->scan_list); ++	spin_unlock_irqrestore(&priv->scan_lock, flags); ++ ++	schedule_work(&priv->process_scan); ++} ++ ++static void qabort_scan(struct orinoco_private *priv) ++{ ++	struct orinoco_scan_data *sd; ++	unsigned long flags; ++ ++	sd = kmalloc(sizeof(*sd), GFP_ATOMIC); ++	if (!sd) ++		return; ++ ++	sd->len = -1; /* Abort */ ++ ++	spin_lock_irqsave(&priv->scan_lock, flags); ++	list_add_tail(&sd->list, &priv->scan_list); ++	spin_unlock_irqrestore(&priv->scan_lock, flags); ++ ++	schedule_work(&priv->process_scan); ++} ++ ++static void orinoco_process_scan_results(struct work_struct *work) ++{ ++	struct orinoco_private *priv = ++		container_of(work, struct orinoco_private, process_scan); ++	struct orinoco_scan_data *sd, *temp; ++	unsigned long flags; ++	void *buf; ++	int len; ++	int type; ++ ++	spin_lock_irqsave(&priv->scan_lock, flags); ++	list_for_each_entry_safe(sd, temp, &priv->scan_list, list) { ++ ++		buf = sd->buf; ++		len = sd->len; ++		type = sd->type; ++ ++		list_del(&sd->list); ++		spin_unlock_irqrestore(&priv->scan_lock, flags); ++		kfree(sd); ++ ++		if (len > 0) { ++			if (type == HERMES_INQ_CHANNELINFO) ++				orinoco_add_extscan_result(priv, buf, len); ++			else ++				orinoco_add_hostscan_results(priv, buf, len); ++ ++			kfree(buf); ++		} else { ++			/* Either abort or complete the scan */ ++			orinoco_scan_done(priv, (len < 0)); ++		} ++ ++		spin_lock_irqsave(&priv->scan_lock, flags); ++	} ++	spin_unlock_irqrestore(&priv->scan_lock, flags); ++} ++ ++void __orinoco_ev_info(struct net_device *dev, struct hermes *hw) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	u16 infofid; ++	struct { ++		__le16 len; ++		__le16 type; ++	} __packed info; ++	int len, type; ++	int err; ++ ++	/* This is an answer to an INQUIRE command that we did earlier, ++	 * or an information "event" generated by the card ++	 * The controller return to us a pseudo frame containing ++	 * the information in question - Jean II */ ++	infofid = hermes_read_regn(hw, INFOFID); ++ ++	/* Read the info frame header - don't try too hard */ ++	err = hw->ops->bap_pread(hw, IRQ_BAP, &info, sizeof(info), ++				 infofid, 0); ++	if (err) { ++		printk(KERN_ERR "%s: error %d reading info frame. " ++		       "Frame dropped.\n", dev->name, err); ++		return; ++	} ++ ++	len = HERMES_RECLEN_TO_BYTES(le16_to_cpu(info.len)); ++	type = le16_to_cpu(info.type); ++ ++	switch (type) { ++	case HERMES_INQ_TALLIES: { ++		struct hermes_tallies_frame tallies; ++		struct iw_statistics *wstats = &priv->wstats; ++ ++		if (len > sizeof(tallies)) { ++			printk(KERN_WARNING "%s: Tallies frame too long (%d bytes)\n", ++			       dev->name, len); ++			len = sizeof(tallies); ++		} ++ ++		err = hw->ops->bap_pread(hw, IRQ_BAP, &tallies, len, ++					 infofid, sizeof(info)); ++		if (err) ++			break; ++ ++		/* Increment our various counters */ ++		/* wstats->discard.nwid - no wrong BSSID stuff */ ++		wstats->discard.code += ++			le16_to_cpu(tallies.RxWEPUndecryptable); ++		if (len == sizeof(tallies)) ++			wstats->discard.code += ++				le16_to_cpu(tallies.RxDiscards_WEPICVError) + ++				le16_to_cpu(tallies.RxDiscards_WEPExcluded); ++		wstats->discard.misc += ++			le16_to_cpu(tallies.TxDiscardsWrongSA); ++		wstats->discard.fragment += ++			le16_to_cpu(tallies.RxMsgInBadMsgFragments); ++		wstats->discard.retries += ++			le16_to_cpu(tallies.TxRetryLimitExceeded); ++		/* wstats->miss.beacon - no match */ ++	} ++	break; ++	case HERMES_INQ_LINKSTATUS: { ++		struct hermes_linkstatus linkstatus; ++		u16 newstatus; ++		int connected; ++ ++		if (priv->iw_mode == NL80211_IFTYPE_MONITOR) ++			break; ++ ++		if (len != sizeof(linkstatus)) { ++			printk(KERN_WARNING "%s: Unexpected size for linkstatus frame (%d bytes)\n", ++			       dev->name, len); ++			break; ++		} ++ ++		err = hw->ops->bap_pread(hw, IRQ_BAP, &linkstatus, len, ++					 infofid, sizeof(info)); ++		if (err) ++			break; ++		newstatus = le16_to_cpu(linkstatus.linkstatus); ++ ++		/* Symbol firmware uses "out of range" to signal that ++		 * the hostscan frame can be requested.  */ ++		if (newstatus == HERMES_LINKSTATUS_AP_OUT_OF_RANGE && ++		    priv->firmware_type == FIRMWARE_TYPE_SYMBOL && ++		    priv->has_hostscan && priv->scan_request) { ++			hermes_inquire(hw, HERMES_INQ_HOSTSCAN_SYMBOL); ++			break; ++		} ++ ++		connected = (newstatus == HERMES_LINKSTATUS_CONNECTED) ++			|| (newstatus == HERMES_LINKSTATUS_AP_CHANGE) ++			|| (newstatus == HERMES_LINKSTATUS_AP_IN_RANGE); ++ ++		if (connected) ++			netif_carrier_on(dev); ++		else if (!ignore_disconnect) ++			netif_carrier_off(dev); ++ ++		if (newstatus != priv->last_linkstatus) { ++			priv->last_linkstatus = newstatus; ++			print_linkstatus(dev, newstatus); ++			/* The info frame contains only one word which is the ++			 * status (see hermes.h). The status is pretty boring ++			 * in itself, that's why we export the new BSSID... ++			 * Jean II */ ++			schedule_work(&priv->wevent_work); ++		} ++	} ++	break; ++	case HERMES_INQ_SCAN: ++		if (!priv->scan_request && priv->bssid_fixed && ++		    priv->firmware_type == FIRMWARE_TYPE_INTERSIL) { ++			schedule_work(&priv->join_work); ++			break; ++		} ++		fallthrough; ++	case HERMES_INQ_HOSTSCAN: ++	case HERMES_INQ_HOSTSCAN_SYMBOL: { ++		/* Result of a scanning. Contains information about ++		 * cells in the vicinity - Jean II */ ++		unsigned char *buf; ++ ++		/* Sanity check */ ++		if (len > 4096) { ++			printk(KERN_WARNING "%s: Scan results too large (%d bytes)\n", ++			       dev->name, len); ++			qabort_scan(priv); ++			break; ++		} ++ ++		/* Allocate buffer for results */ ++		buf = kmalloc(len, GFP_ATOMIC); ++		if (buf == NULL) { ++			/* No memory, so can't printk()... */ ++			qabort_scan(priv); ++			break; ++		} ++ ++		/* Read scan data */ ++		err = hw->ops->bap_pread(hw, IRQ_BAP, (void *) buf, len, ++					 infofid, sizeof(info)); ++		if (err) { ++			kfree(buf); ++			qabort_scan(priv); ++			break; ++		} ++ ++#ifdef ORINOCO_DEBUG ++		{ ++			int	i; ++			printk(KERN_DEBUG "Scan result [%02X", buf[0]); ++			for (i = 1; i < (len * 2); i++) ++				printk(":%02X", buf[i]); ++			printk("]\n"); ++		} ++#endif	/* ORINOCO_DEBUG */ ++ ++		qbuf_scan(priv, buf, len, type); ++	} ++	break; ++	case HERMES_INQ_CHANNELINFO: ++	{ ++		struct agere_ext_scan_info *bss; ++ ++		if (!priv->scan_request) { ++			printk(KERN_DEBUG "%s: Got chaninfo without scan, " ++			       "len=%d\n", dev->name, len); ++			break; ++		} ++ ++		/* An empty result indicates that the scan is complete */ ++		if (len == 0) { ++			qbuf_scan(priv, NULL, len, type); ++			break; ++		} ++ ++		/* Sanity check */ ++		else if (len < (offsetof(struct agere_ext_scan_info, ++					   data) + 2)) { ++			/* Drop this result now so we don't have to ++			 * keep checking later */ ++			printk(KERN_WARNING ++			       "%s: Ext scan results too short (%d bytes)\n", ++			       dev->name, len); ++			break; ++		} ++ ++		bss = kmalloc(len, GFP_ATOMIC); ++		if (bss == NULL) ++			break; ++ ++		/* Read scan data */ ++		err = hw->ops->bap_pread(hw, IRQ_BAP, (void *) bss, len, ++					 infofid, sizeof(info)); ++		if (err) ++			kfree(bss); ++		else ++			qbuf_scan(priv, bss, len, type); ++ ++		break; ++	} ++	case HERMES_INQ_SEC_STAT_AGERE: ++		/* Security status (Agere specific) */ ++		/* Ignore this frame for now */ ++		if (priv->firmware_type == FIRMWARE_TYPE_AGERE) ++			break; ++		fallthrough; ++	default: ++		printk(KERN_DEBUG "%s: Unknown information frame received: " ++		       "type 0x%04x, length %d\n", dev->name, type, len); ++		/* We don't actually do anything about it */ ++		break; ++	} ++} ++EXPORT_SYMBOL(__orinoco_ev_info); ++ ++static void __orinoco_ev_infdrop(struct net_device *dev, struct hermes *hw) ++{ ++	if (net_ratelimit()) ++		printk(KERN_DEBUG "%s: Information frame lost.\n", dev->name); ++} ++ ++/********************************************************************/ ++/* Internal hardware control routines                               */ ++/********************************************************************/ ++ ++static int __orinoco_up(struct orinoco_private *priv) ++{ ++	struct net_device *dev = priv->ndev; ++	struct hermes *hw = &priv->hw; ++	int err; ++ ++	netif_carrier_off(dev); /* just to make sure */ ++ ++	err = __orinoco_commit(priv); ++	if (err) { ++		printk(KERN_ERR "%s: Error %d configuring card\n", ++		       dev->name, err); ++		return err; ++	} ++ ++	/* Fire things up again */ ++	hermes_set_irqmask(hw, ORINOCO_INTEN); ++	err = hermes_enable_port(hw, 0); ++	if (err) { ++		printk(KERN_ERR "%s: Error %d enabling MAC port\n", ++		       dev->name, err); ++		return err; ++	} ++ ++	netif_start_queue(dev); ++ ++	return 0; ++} ++ ++static int __orinoco_down(struct orinoco_private *priv) ++{ ++	struct net_device *dev = priv->ndev; ++	struct hermes *hw = &priv->hw; ++	int err; ++ ++	netif_stop_queue(dev); ++ ++	if (!priv->hw_unavailable) { ++		if (!priv->broken_disableport) { ++			err = hermes_disable_port(hw, 0); ++			if (err) { ++				/* Some firmwares (e.g. Intersil 1.3.x) seem ++				 * to have problems disabling the port, oh ++				 * well, too bad. */ ++				printk(KERN_WARNING "%s: Error %d disabling MAC port\n", ++				       dev->name, err); ++				priv->broken_disableport = 1; ++			} ++		} ++		hermes_set_irqmask(hw, 0); ++		hermes_write_regn(hw, EVACK, 0xffff); ++	} ++ ++	orinoco_scan_done(priv, true); ++ ++	/* firmware will have to reassociate */ ++	netif_carrier_off(dev); ++	priv->last_linkstatus = 0xffff; ++ ++	return 0; ++} ++ ++static int orinoco_reinit_firmware(struct orinoco_private *priv) ++{ ++	struct hermes *hw = &priv->hw; ++	int err; ++ ++	err = hw->ops->init(hw); ++	if (priv->do_fw_download && !err) { ++		err = orinoco_download(priv); ++		if (err) ++			priv->do_fw_download = 0; ++	} ++	if (!err) ++		err = orinoco_hw_allocate_fid(priv); ++ ++	return err; ++} ++ ++static int ++__orinoco_set_multicast_list(struct net_device *dev) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	int err = 0; ++	int promisc, mc_count; ++ ++	/* The Hermes doesn't seem to have an allmulti mode, so we go ++	 * into promiscuous mode and let the upper levels deal. */ ++	if ((dev->flags & IFF_PROMISC) || (dev->flags & IFF_ALLMULTI) || ++	    (netdev_mc_count(dev) > MAX_MULTICAST(priv))) { ++		promisc = 1; ++		mc_count = 0; ++	} else { ++		promisc = 0; ++		mc_count = netdev_mc_count(dev); ++	} ++ ++	err = __orinoco_hw_set_multicast_list(priv, dev, mc_count, promisc); ++ ++	return err; ++} ++ ++/* This must be called from user context, without locks held - use ++ * schedule_work() */ ++void orinoco_reset(struct work_struct *work) ++{ ++	struct orinoco_private *priv = ++		container_of(work, struct orinoco_private, reset_work); ++	struct net_device *dev = priv->ndev; ++	struct hermes *hw = &priv->hw; ++	int err; ++	unsigned long flags; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		/* When the hardware becomes available again, whatever ++		 * detects that is responsible for re-initializing ++		 * it. So no need for anything further */ ++		return; ++ ++	netif_stop_queue(dev); ++ ++	/* Shut off interrupts.  Depending on what state the hardware ++	 * is in, this might not work, but we'll try anyway */ ++	hermes_set_irqmask(hw, 0); ++	hermes_write_regn(hw, EVACK, 0xffff); ++ ++	priv->hw_unavailable++; ++	priv->last_linkstatus = 0xffff; /* firmware will have to reassociate */ ++	netif_carrier_off(dev); ++ ++	orinoco_unlock(priv, &flags); ++ ++	/* Scanning support: Notify scan cancellation */ ++	orinoco_scan_done(priv, true); ++ ++	if (priv->hard_reset) { ++		err = (*priv->hard_reset)(priv); ++		if (err) { ++			printk(KERN_ERR "%s: orinoco_reset: Error %d " ++			       "performing hard reset\n", dev->name, err); ++			goto disable; ++		} ++	} ++ ++	err = orinoco_reinit_firmware(priv); ++	if (err) { ++		printk(KERN_ERR "%s: orinoco_reset: Error %d re-initializing firmware\n", ++		       dev->name, err); ++		goto disable; ++	} ++ ++	/* This has to be called from user context */ ++	orinoco_lock_irq(priv); ++ ++	priv->hw_unavailable--; ++ ++	/* priv->open or priv->hw_unavailable might have changed while ++	 * we dropped the lock */ ++	if (priv->open && (!priv->hw_unavailable)) { ++		err = __orinoco_up(priv); ++		if (err) { ++			printk(KERN_ERR "%s: orinoco_reset: Error %d reenabling card\n", ++			       dev->name, err); ++		} else ++			netif_trans_update(dev); ++	} ++ ++	orinoco_unlock_irq(priv); ++ ++	return; ++ disable: ++	hermes_set_irqmask(hw, 0); ++	netif_device_detach(dev); ++	printk(KERN_ERR "%s: Device has been disabled!\n", dev->name); ++} ++ ++static int __orinoco_commit(struct orinoco_private *priv) ++{ ++	struct net_device *dev = priv->ndev; ++	int err = 0; ++ ++	/* If we've called commit, we are reconfiguring or bringing the ++	 * interface up. Maintaining countermeasures across this would ++	 * be confusing, so note that we've disabled them. The port will ++	 * be enabled later in orinoco_commit or __orinoco_up. */ ++	priv->tkip_cm_active = 0; ++ ++	err = orinoco_hw_program_rids(priv); ++ ++	/* FIXME: what about netif_tx_lock */ ++	(void) __orinoco_set_multicast_list(dev); ++ ++	return err; ++} ++ ++/* Ensures configuration changes are applied. May result in a reset. ++ * The caller should hold priv->lock ++ */ ++int orinoco_commit(struct orinoco_private *priv) ++{ ++	struct net_device *dev = priv->ndev; ++	struct hermes *hw = &priv->hw; ++	int err; ++ ++	if (priv->broken_disableport) { ++		schedule_work(&priv->reset_work); ++		return 0; ++	} ++ ++	err = hermes_disable_port(hw, 0); ++	if (err) { ++		printk(KERN_WARNING "%s: Unable to disable port " ++		       "while reconfiguring card\n", dev->name); ++		priv->broken_disableport = 1; ++		goto out; ++	} ++ ++	err = __orinoco_commit(priv); ++	if (err) { ++		printk(KERN_WARNING "%s: Unable to reconfigure card\n", ++		       dev->name); ++		goto out; ++	} ++ ++	err = hermes_enable_port(hw, 0); ++	if (err) { ++		printk(KERN_WARNING "%s: Unable to enable port while reconfiguring card\n", ++		       dev->name); ++		goto out; ++	} ++ ++ out: ++	if (err) { ++		printk(KERN_WARNING "%s: Resetting instead...\n", dev->name); ++		schedule_work(&priv->reset_work); ++		err = 0; ++	} ++	return err; ++} ++ ++/********************************************************************/ ++/* Interrupt handler                                                */ ++/********************************************************************/ ++ ++static void __orinoco_ev_tick(struct net_device *dev, struct hermes *hw) ++{ ++	printk(KERN_DEBUG "%s: TICK\n", dev->name); ++} ++ ++static void __orinoco_ev_wterr(struct net_device *dev, struct hermes *hw) ++{ ++	/* This seems to happen a fair bit under load, but ignoring it ++	   seems to work fine...*/ ++	printk(KERN_DEBUG "%s: MAC controller error (WTERR). Ignoring.\n", ++	       dev->name); ++} ++ ++irqreturn_t orinoco_interrupt(int irq, void *dev_id) ++{ ++	struct orinoco_private *priv = dev_id; ++	struct net_device *dev = priv->ndev; ++	struct hermes *hw = &priv->hw; ++	int count = MAX_IRQLOOPS_PER_IRQ; ++	u16 evstat, events; ++	/* These are used to detect a runaway interrupt situation. ++	 * ++	 * If we get more than MAX_IRQLOOPS_PER_JIFFY iterations in a jiffy, ++	 * we panic and shut down the hardware ++	 */ ++	/* jiffies value the last time we were called */ ++	static int last_irq_jiffy; /* = 0 */ ++	static int loops_this_jiffy; /* = 0 */ ++	unsigned long flags; ++ ++	if (orinoco_lock(priv, &flags) != 0) { ++		/* If hw is unavailable - we don't know if the irq was ++		 * for us or not */ ++		return IRQ_HANDLED; ++	} ++ ++	evstat = hermes_read_regn(hw, EVSTAT); ++	events = evstat & hw->inten; ++	if (!events) { ++		orinoco_unlock(priv, &flags); ++		return IRQ_NONE; ++	} ++ ++	if (jiffies != last_irq_jiffy) ++		loops_this_jiffy = 0; ++	last_irq_jiffy = jiffies; ++ ++	while (events && count--) { ++		if (++loops_this_jiffy > MAX_IRQLOOPS_PER_JIFFY) { ++			printk(KERN_WARNING "%s: IRQ handler is looping too " ++			       "much! Resetting.\n", dev->name); ++			/* Disable interrupts for now */ ++			hermes_set_irqmask(hw, 0); ++			schedule_work(&priv->reset_work); ++			break; ++		} ++ ++		/* Check the card hasn't been removed */ ++		if (!hermes_present(hw)) { ++			DEBUG(0, "orinoco_interrupt(): card removed\n"); ++			break; ++		} ++ ++		if (events & HERMES_EV_TICK) ++			__orinoco_ev_tick(dev, hw); ++		if (events & HERMES_EV_WTERR) ++			__orinoco_ev_wterr(dev, hw); ++		if (events & HERMES_EV_INFDROP) ++			__orinoco_ev_infdrop(dev, hw); ++		if (events & HERMES_EV_INFO) ++			__orinoco_ev_info(dev, hw); ++		if (events & HERMES_EV_RX) ++			__orinoco_ev_rx(dev, hw); ++		if (events & HERMES_EV_TXEXC) ++			__orinoco_ev_txexc(dev, hw); ++		if (events & HERMES_EV_TX) ++			__orinoco_ev_tx(dev, hw); ++		if (events & HERMES_EV_ALLOC) ++			__orinoco_ev_alloc(dev, hw); ++ ++		hermes_write_regn(hw, EVACK, evstat); ++ ++		evstat = hermes_read_regn(hw, EVSTAT); ++		events = evstat & hw->inten; ++	} ++ ++	orinoco_unlock(priv, &flags); ++	return IRQ_HANDLED; ++} ++EXPORT_SYMBOL(orinoco_interrupt); ++ ++/********************************************************************/ ++/* Power management                                                 */ ++/********************************************************************/ ++#if defined(CONFIG_PM_SLEEP) && !defined(CONFIG_HERMES_CACHE_FW_ON_INIT) ++static int orinoco_pm_notifier(struct notifier_block *notifier, ++			       unsigned long pm_event, ++			       void *unused) ++{ ++	struct orinoco_private *priv = container_of(notifier, ++						    struct orinoco_private, ++						    pm_notifier); ++ ++	/* All we need to do is cache the firmware before suspend, and ++	 * release it when we come out. ++	 * ++	 * Only need to do this if we're downloading firmware. */ ++	if (!priv->do_fw_download) ++		return NOTIFY_DONE; ++ ++	switch (pm_event) { ++	case PM_HIBERNATION_PREPARE: ++	case PM_SUSPEND_PREPARE: ++		orinoco_cache_fw(priv, 0); ++		break; ++ ++	case PM_POST_RESTORE: ++		/* Restore from hibernation failed. We need to clean ++		 * up in exactly the same way, so fall through. */ ++	case PM_POST_HIBERNATION: ++	case PM_POST_SUSPEND: ++		orinoco_uncache_fw(priv); ++		break; ++ ++	case PM_RESTORE_PREPARE: ++	default: ++		break; ++	} ++ ++	return NOTIFY_DONE; ++} ++ ++static void orinoco_register_pm_notifier(struct orinoco_private *priv) ++{ ++	priv->pm_notifier.notifier_call = orinoco_pm_notifier; ++	register_pm_notifier(&priv->pm_notifier); ++} ++ ++static void orinoco_unregister_pm_notifier(struct orinoco_private *priv) ++{ ++	unregister_pm_notifier(&priv->pm_notifier); ++} ++#else /* !PM_SLEEP || HERMES_CACHE_FW_ON_INIT */ ++#define orinoco_register_pm_notifier(priv) do { } while (0) ++#define orinoco_unregister_pm_notifier(priv) do { } while (0) ++#endif ++ ++/********************************************************************/ ++/* Initialization                                                   */ ++/********************************************************************/ ++ ++int orinoco_init(struct orinoco_private *priv) ++{ ++	struct device *dev = priv->dev; ++	struct wiphy *wiphy = priv_to_wiphy(priv); ++	struct hermes *hw = &priv->hw; ++	int err = 0; ++ ++	/* No need to lock, the hw_unavailable flag is already set in ++	 * alloc_orinocodev() */ ++	priv->nicbuf_size = IEEE80211_MAX_FRAME_LEN + ETH_HLEN; ++ ++	/* Initialize the firmware */ ++	err = hw->ops->init(hw); ++	if (err != 0) { ++		dev_err(dev, "Failed to initialize firmware (err = %d)\n", ++			err); ++		goto out; ++	} ++ ++	err = determine_fw_capabilities(priv, wiphy->fw_version, ++					sizeof(wiphy->fw_version), ++					&wiphy->hw_version); ++	if (err != 0) { ++		dev_err(dev, "Incompatible firmware, aborting\n"); ++		goto out; ++	} ++ ++	if (priv->do_fw_download) { ++#ifdef CONFIG_HERMES_CACHE_FW_ON_INIT ++		orinoco_cache_fw(priv, 0); ++#endif ++ ++		err = orinoco_download(priv); ++		if (err) ++			priv->do_fw_download = 0; ++ ++		/* Check firmware version again */ ++		err = determine_fw_capabilities(priv, wiphy->fw_version, ++						sizeof(wiphy->fw_version), ++						&wiphy->hw_version); ++		if (err != 0) { ++			dev_err(dev, "Incompatible firmware, aborting\n"); ++			goto out; ++		} ++	} ++ ++	if (priv->has_port3) ++		dev_info(dev, "Ad-hoc demo mode supported\n"); ++	if (priv->has_ibss) ++		dev_info(dev, "IEEE standard IBSS ad-hoc mode supported\n"); ++	if (priv->has_wep) ++		dev_info(dev, "WEP supported, %s-bit key\n", ++			 priv->has_big_wep ? "104" : "40"); ++	if (priv->has_wpa) { ++		dev_info(dev, "WPA-PSK supported\n"); ++		if (orinoco_mic_init(priv)) { ++			dev_err(dev, "Failed to setup MIC crypto algorithm. " ++				"Disabling WPA support\n"); ++			priv->has_wpa = 0; ++		} ++	} ++ ++	err = orinoco_hw_read_card_settings(priv, wiphy->perm_addr); ++	if (err) ++		goto out; ++ ++	err = orinoco_hw_allocate_fid(priv); ++	if (err) { ++		dev_err(dev, "Failed to allocate NIC buffer!\n"); ++		goto out; ++	} ++ ++	/* Set up the default configuration */ ++	priv->iw_mode = NL80211_IFTYPE_STATION; ++	/* By default use IEEE/IBSS ad-hoc mode if we have it */ ++	priv->prefer_port3 = priv->has_port3 && (!priv->has_ibss); ++	set_port_type(priv); ++	priv->channel = 0; /* use firmware default */ ++ ++	priv->promiscuous = 0; ++	priv->encode_alg = ORINOCO_ALG_NONE; ++	priv->tx_key = 0; ++	priv->wpa_enabled = 0; ++	priv->tkip_cm_active = 0; ++	priv->key_mgmt = 0; ++	priv->wpa_ie_len = 0; ++	priv->wpa_ie = NULL; ++ ++	if (orinoco_wiphy_register(wiphy)) { ++		err = -ENODEV; ++		goto out; ++	} ++ ++	/* Make the hardware available, as long as it hasn't been ++	 * removed elsewhere (e.g. by PCMCIA hot unplug) */ ++	orinoco_lock_irq(priv); ++	priv->hw_unavailable--; ++	orinoco_unlock_irq(priv); ++ ++	dev_dbg(dev, "Ready\n"); ++ ++ out: ++	return err; ++} ++EXPORT_SYMBOL(orinoco_init); ++ ++static const struct net_device_ops orinoco_netdev_ops = { ++	.ndo_open		= orinoco_open, ++	.ndo_stop		= orinoco_stop, ++	.ndo_start_xmit		= orinoco_xmit, ++	.ndo_set_rx_mode	= orinoco_set_multicast_list, ++	.ndo_change_mtu		= orinoco_change_mtu, ++	.ndo_set_mac_address	= eth_mac_addr, ++	.ndo_validate_addr	= eth_validate_addr, ++	.ndo_tx_timeout		= orinoco_tx_timeout, ++}; ++ ++/* Allocate private data. ++ * ++ * This driver has a number of structures associated with it ++ *  netdev - Net device structure for each network interface ++ *  wiphy - structure associated with wireless phy ++ *  wireless_dev (wdev) - structure for each wireless interface ++ *  hw - structure for hermes chip info ++ *  card - card specific structure for use by the card driver ++ *         (airport, orinoco_cs) ++ *  priv - orinoco private data ++ *  device - generic linux device structure ++ * ++ *  +---------+    +---------+ ++ *  |  wiphy  |    | netdev  | ++ *  | +-------+    | +-------+ ++ *  | | priv  |    | | wdev  | ++ *  | | +-----+    +-+-------+ ++ *  | | | hw  | ++ *  | +-+-----+ ++ *  | | card  | ++ *  +-+-------+ ++ * ++ * priv has a link to netdev and device ++ * wdev has a link to wiphy ++ */ ++struct orinoco_private ++*alloc_orinocodev(int sizeof_card, ++		  struct device *device, ++		  int (*hard_reset)(struct orinoco_private *), ++		  int (*stop_fw)(struct orinoco_private *, int)) ++{ ++	struct orinoco_private *priv; ++	struct wiphy *wiphy; ++ ++	/* allocate wiphy ++	 * NOTE: We only support a single virtual interface ++	 *       but this may change when monitor mode is added ++	 */ ++	wiphy = wiphy_new(&orinoco_cfg_ops, ++			  sizeof(struct orinoco_private) + sizeof_card); ++	if (!wiphy) ++		return NULL; ++ ++	priv = wiphy_priv(wiphy); ++	priv->dev = device; ++ ++	if (sizeof_card) ++		priv->card = (void *)((unsigned long)priv ++				      + sizeof(struct orinoco_private)); ++	else ++		priv->card = NULL; ++ ++	orinoco_wiphy_init(wiphy); ++ ++#ifdef WIRELESS_SPY ++	priv->wireless_data.spy_data = &priv->spy_data; ++#endif ++ ++	/* Set up default callbacks */ ++	priv->hard_reset = hard_reset; ++	priv->stop_fw = stop_fw; ++ ++	spin_lock_init(&priv->lock); ++	priv->open = 0; ++	priv->hw_unavailable = 1; /* orinoco_init() must clear this ++				   * before anything else touches the ++				   * hardware */ ++	INIT_WORK(&priv->reset_work, orinoco_reset); ++	INIT_WORK(&priv->join_work, orinoco_join_ap); ++	INIT_WORK(&priv->wevent_work, orinoco_send_wevents); ++ ++	INIT_LIST_HEAD(&priv->rx_list); ++	tasklet_setup(&priv->rx_tasklet, orinoco_rx_isr_tasklet); ++ ++	spin_lock_init(&priv->scan_lock); ++	INIT_LIST_HEAD(&priv->scan_list); ++	INIT_WORK(&priv->process_scan, orinoco_process_scan_results); ++ ++	priv->last_linkstatus = 0xffff; ++ ++#if defined(CONFIG_HERMES_CACHE_FW_ON_INIT) || defined(CONFIG_PM_SLEEP) ++	priv->cached_pri_fw = NULL; ++	priv->cached_fw = NULL; ++#endif ++ ++	/* Register PM notifiers */ ++	orinoco_register_pm_notifier(priv); ++ ++	return priv; ++} ++EXPORT_SYMBOL(alloc_orinocodev); ++ ++/* We can only support a single interface. We provide a separate ++ * function to set it up to distinguish between hardware ++ * initialisation and interface setup. ++ * ++ * The base_addr and irq parameters are passed on to netdev for use ++ * with SIOCGIFMAP. ++ */ ++int orinoco_if_add(struct orinoco_private *priv, ++		   unsigned long base_addr, ++		   unsigned int irq, ++		   const struct net_device_ops *ops) ++{ ++	struct wiphy *wiphy = priv_to_wiphy(priv); ++	struct wireless_dev *wdev; ++	struct net_device *dev; ++	int ret; ++ ++	dev = alloc_etherdev(sizeof(struct wireless_dev)); ++ ++	if (!dev) ++		return -ENOMEM; ++ ++	/* Initialise wireless_dev */ ++	wdev = netdev_priv(dev); ++	wdev->wiphy = wiphy; ++	wdev->iftype = NL80211_IFTYPE_STATION; ++ ++	/* Setup / override net_device fields */ ++	dev->ieee80211_ptr = wdev; ++	dev->watchdog_timeo = HZ; /* 1 second timeout */ ++	dev->wireless_handlers = &orinoco_handler_def; ++#ifdef WIRELESS_SPY ++	dev->wireless_data = &priv->wireless_data; ++#endif ++	/* Default to standard ops if not set */ ++	if (ops) ++		dev->netdev_ops = ops; ++	else ++		dev->netdev_ops = &orinoco_netdev_ops; ++ ++	/* we use the default eth_mac_addr for setting the MAC addr */ ++ ++	/* Reserve space in skb for the SNAP header */ ++	dev->needed_headroom = ENCAPS_OVERHEAD; ++ ++	netif_carrier_off(dev); ++ ++	eth_hw_addr_set(dev, wiphy->perm_addr); ++ ++	dev->base_addr = base_addr; ++	dev->irq = irq; ++ ++	dev->min_mtu = ORINOCO_MIN_MTU; ++	dev->max_mtu = ORINOCO_MAX_MTU; ++ ++	SET_NETDEV_DEV(dev, priv->dev); ++	ret = register_netdev(dev); ++	if (ret) ++		goto fail; ++ ++	priv->ndev = dev; ++ ++	/* Report what we've done */ ++	dev_dbg(priv->dev, "Registered interface %s.\n", dev->name); ++ ++	return 0; ++ ++ fail: ++	free_netdev(dev); ++	return ret; ++} ++EXPORT_SYMBOL(orinoco_if_add); ++ ++void orinoco_if_del(struct orinoco_private *priv) ++{ ++	struct net_device *dev = priv->ndev; ++ ++	unregister_netdev(dev); ++	free_netdev(dev); ++} ++EXPORT_SYMBOL(orinoco_if_del); ++ ++void free_orinocodev(struct orinoco_private *priv) ++{ ++	struct wiphy *wiphy = priv_to_wiphy(priv); ++	struct orinoco_rx_data *rx_data, *temp; ++	struct orinoco_scan_data *sd, *sdtemp; ++ ++	/* If the tasklet is scheduled when we call tasklet_kill it ++	 * will run one final time. However the tasklet will only ++	 * drain priv->rx_list if the hw is still available. */ ++	tasklet_kill(&priv->rx_tasklet); ++ ++	/* Explicitly drain priv->rx_list */ ++	list_for_each_entry_safe(rx_data, temp, &priv->rx_list, list) { ++		list_del(&rx_data->list); ++ ++		dev_kfree_skb(rx_data->skb); ++		kfree(rx_data->desc); ++		kfree(rx_data); ++	} ++ ++	cancel_work_sync(&priv->process_scan); ++	/* Explicitly drain priv->scan_list */ ++	list_for_each_entry_safe(sd, sdtemp, &priv->scan_list, list) { ++		list_del(&sd->list); ++ ++		if (sd->len > 0) ++			kfree(sd->buf); ++		kfree(sd); ++	} ++ ++	orinoco_unregister_pm_notifier(priv); ++	orinoco_uncache_fw(priv); ++ ++	priv->wpa_ie_len = 0; ++	kfree(priv->wpa_ie); ++	orinoco_mic_free(priv); ++	wiphy_free(wiphy); ++} ++EXPORT_SYMBOL(free_orinocodev); ++ ++int orinoco_up(struct orinoco_private *priv) ++{ ++	struct net_device *dev = priv->ndev; ++	unsigned long flags; ++	int err; ++ ++	priv->hw.ops->lock_irqsave(&priv->lock, &flags); ++ ++	err = orinoco_reinit_firmware(priv); ++	if (err) { ++		printk(KERN_ERR "%s: Error %d re-initializing firmware\n", ++		       dev->name, err); ++		goto exit; ++	} ++ ++	netif_device_attach(dev); ++	priv->hw_unavailable--; ++ ++	if (priv->open && !priv->hw_unavailable) { ++		err = __orinoco_up(priv); ++		if (err) ++			printk(KERN_ERR "%s: Error %d restarting card\n", ++			       dev->name, err); ++	} ++ ++exit: ++	priv->hw.ops->unlock_irqrestore(&priv->lock, &flags); ++ ++	return 0; ++} ++EXPORT_SYMBOL(orinoco_up); ++ ++void orinoco_down(struct orinoco_private *priv) ++{ ++	struct net_device *dev = priv->ndev; ++	unsigned long flags; ++	int err; ++ ++	priv->hw.ops->lock_irqsave(&priv->lock, &flags); ++	err = __orinoco_down(priv); ++	if (err) ++		printk(KERN_WARNING "%s: Error %d downing interface\n", ++		       dev->name, err); ++ ++	netif_device_detach(dev); ++	priv->hw_unavailable++; ++	priv->hw.ops->unlock_irqrestore(&priv->lock, &flags); ++} ++EXPORT_SYMBOL(orinoco_down); ++ ++/********************************************************************/ ++/* Module initialization                                            */ ++/********************************************************************/ ++ ++/* Can't be declared "const" or the whole __initdata section will ++ * become const */ ++static char version[] __initdata = DRIVER_NAME " " DRIVER_VERSION ++	" (David Gibson <hermes@gibson.dropbear.id.au>, " ++	"Pavel Roskin <proski@gnu.org>, et al)"; ++ ++static int __init init_orinoco(void) ++{ ++	printk(KERN_DEBUG "%s\n", version); ++	return 0; ++} ++ ++static void __exit exit_orinoco(void) ++{ ++} ++ ++module_init(init_orinoco); ++module_exit(exit_orinoco); +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/main.h linux-6.15.6/drivers/net/wireless/intersil/orinoco/main.h +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/main.h	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/main.h	2025-08-03 15:01:59.349130638 +0200 +@@ -0,0 +1,50 @@ ++/* Exports from main to helper modules ++ * ++ * See copyright notice in main.c ++ */ ++#ifndef _ORINOCO_MAIN_H_ ++#define _ORINOCO_MAIN_H_ ++ ++#include <linux/ieee80211.h> ++#include "orinoco.h" ++ ++/********************************************************************/ ++/* Compile time configuration and compatibility stuff               */ ++/********************************************************************/ ++ ++/* We do this this way to avoid ifdefs in the actual code */ ++#ifdef WIRELESS_SPY ++#define SPY_NUMBER(priv)	(priv->spy_data.spy_number) ++#else ++#define SPY_NUMBER(priv)	0 ++#endif /* WIRELESS_SPY */ ++ ++/********************************************************************/ ++ ++/* Export module parameter */ ++extern int force_monitor; ++ ++/* Forward declarations */ ++struct net_device; ++struct work_struct; ++ ++void set_port_type(struct orinoco_private *priv); ++int orinoco_commit(struct orinoco_private *priv); ++void orinoco_reset(struct work_struct *work); ++ ++/* Information element helpers - find a home for these... */ ++#define WPA_OUI_TYPE	"\x00\x50\xF2\x01" ++#define WPA_SELECTOR_LEN 4 ++static inline u8 *orinoco_get_wpa_ie(u8 *data, size_t len) ++{ ++	u8 *p = data; ++	while ((p + 2 + WPA_SELECTOR_LEN) < (data + len)) { ++		if ((p[0] == WLAN_EID_VENDOR_SPECIFIC) && ++		    (memcmp(&p[2], WPA_OUI_TYPE, WPA_SELECTOR_LEN) == 0)) ++			return p; ++		p += p[1] + 2; ++	} ++	return NULL; ++} ++ ++#endif /* _ORINOCO_MAIN_H_ */ +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/Makefile linux-6.15.6/drivers/net/wireless/intersil/orinoco/Makefile +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/Makefile	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/Makefile	2025-08-03 15:01:59.349130638 +0200 +@@ -0,0 +1,15 @@ ++# SPDX-License-Identifier: GPL-2.0 ++# ++# Makefile for the orinoco wireless device drivers. ++# ++orinoco-objs := main.o fw.o hw.o mic.o scan.o wext.o hermes_dld.o hermes.o cfg.o ++ ++obj-$(CONFIG_HERMES)		+= orinoco.o ++obj-$(CONFIG_PCMCIA_HERMES)	+= orinoco_cs.o ++obj-$(CONFIG_APPLE_AIRPORT)	+= airport.o ++obj-$(CONFIG_PLX_HERMES)	+= orinoco_plx.o ++obj-$(CONFIG_PCI_HERMES)	+= orinoco_pci.o ++obj-$(CONFIG_TMD_HERMES)	+= orinoco_tmd.o ++obj-$(CONFIG_NORTEL_HERMES)	+= orinoco_nortel.o ++obj-$(CONFIG_PCMCIA_SPECTRUM)	+= spectrum_cs.o ++obj-$(CONFIG_ORINOCO_USB)	+= orinoco_usb.o +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/mic.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/mic.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/mic.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/mic.c	2025-08-03 15:01:59.349130638 +0200 +@@ -0,0 +1,89 @@ ++/* Orinoco MIC helpers ++ * ++ * See copyright notice in main.c ++ */ ++#include <linux/kernel.h> ++#include <linux/string.h> ++#include <linux/if_ether.h> ++#include <linux/scatterlist.h> ++#include <crypto/hash.h> ++ ++#include "orinoco.h" ++#include "mic.h" ++ ++/********************************************************************/ ++/* Michael MIC crypto setup                                         */ ++/********************************************************************/ ++int orinoco_mic_init(struct orinoco_private *priv) ++{ ++	priv->tx_tfm_mic = crypto_alloc_shash("michael_mic", 0, 0); ++	if (IS_ERR(priv->tx_tfm_mic)) { ++		printk(KERN_DEBUG "%s: could not allocate " ++		       "crypto API michael_mic\n", __func__); ++		priv->tx_tfm_mic = NULL; ++		return -ENOMEM; ++	} ++ ++	priv->rx_tfm_mic = crypto_alloc_shash("michael_mic", 0, 0); ++	if (IS_ERR(priv->rx_tfm_mic)) { ++		printk(KERN_DEBUG "%s: could not allocate " ++		       "crypto API michael_mic\n", __func__); ++		priv->rx_tfm_mic = NULL; ++		return -ENOMEM; ++	} ++ ++	return 0; ++} ++ ++void orinoco_mic_free(struct orinoco_private *priv) ++{ ++	if (priv->tx_tfm_mic) ++		crypto_free_shash(priv->tx_tfm_mic); ++	if (priv->rx_tfm_mic) ++		crypto_free_shash(priv->rx_tfm_mic); ++} ++ ++int orinoco_mic(struct crypto_shash *tfm_michael, u8 *key, ++		u8 *da, u8 *sa, u8 priority, ++		u8 *data, size_t data_len, u8 *mic) ++{ ++	SHASH_DESC_ON_STACK(desc, tfm_michael); ++	u8 hdr[ETH_HLEN + 2]; /* size of header + padding */ ++	int err; ++ ++	if (tfm_michael == NULL) { ++		printk(KERN_WARNING "%s: tfm_michael == NULL\n", __func__); ++		return -1; ++	} ++ ++	/* Copy header into buffer. We need the padding on the end zeroed */ ++	memcpy(&hdr[0], da, ETH_ALEN); ++	memcpy(&hdr[ETH_ALEN], sa, ETH_ALEN); ++	hdr[ETH_ALEN * 2] = priority; ++	hdr[ETH_ALEN * 2 + 1] = 0; ++	hdr[ETH_ALEN * 2 + 2] = 0; ++	hdr[ETH_ALEN * 2 + 3] = 0; ++ ++	desc->tfm = tfm_michael; ++ ++	err = crypto_shash_setkey(tfm_michael, key, MIC_KEYLEN); ++	if (err) ++		return err; ++ ++	err = crypto_shash_init(desc); ++	if (err) ++		return err; ++ ++	err = crypto_shash_update(desc, hdr, sizeof(hdr)); ++	if (err) ++		return err; ++ ++	err = crypto_shash_update(desc, data, data_len); ++	if (err) ++		return err; ++ ++	err = crypto_shash_final(desc, mic); ++	shash_desc_zero(desc); ++ ++	return err; ++} +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/mic.h linux-6.15.6/drivers/net/wireless/intersil/orinoco/mic.h +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/mic.h	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/mic.h	2025-08-03 15:01:59.349130638 +0200 +@@ -0,0 +1,23 @@ ++/* Orinoco MIC helpers ++ * ++ * See copyright notice in main.c ++ */ ++#ifndef _ORINOCO_MIC_H_ ++#define _ORINOCO_MIC_H_ ++ ++#include <linux/types.h> ++#include <crypto/hash.h> ++ ++#define MICHAEL_MIC_LEN 8 ++ ++/* Forward declarations */ ++struct orinoco_private; ++struct crypto_ahash; ++ ++int orinoco_mic_init(struct orinoco_private *priv); ++void orinoco_mic_free(struct orinoco_private *priv); ++int orinoco_mic(struct crypto_shash *tfm_michael, u8 *key, ++		u8 *da, u8 *sa, u8 priority, ++		u8 *data, size_t data_len, u8 *mic); ++ ++#endif /* ORINOCO_MIC_H */ +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/orinoco_cs.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/orinoco_cs.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/orinoco_cs.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/orinoco_cs.c	2025-08-03 15:01:59.353130523 +0200 +@@ -0,0 +1,350 @@ ++/* orinoco_cs.c (formerly known as dldwd_cs.c) ++ * ++ * A driver for "Hermes" chipset based PCMCIA wireless adaptors, such ++ * as the Lucent WavelanIEEE/Orinoco cards and their OEM (Cabletron/ ++ * EnteraSys RoamAbout 802.11, ELSA Airlancer, Melco Buffalo and others). ++ * It should also be usable on various Prism II based cards such as the ++ * Linksys, D-Link and Farallon Skyline. It should also work on Symbol ++ * cards such as the 3Com AirConnect and Ericsson WLAN. ++ * ++ * Copyright notice & release notes in file main.c ++ */ ++ ++#define DRIVER_NAME "orinoco_cs" ++#define PFX DRIVER_NAME ": " ++ ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/delay.h> ++#include <pcmcia/cistpl.h> ++#include <pcmcia/cisreg.h> ++#include <pcmcia/ds.h> ++ ++#include "orinoco.h" ++ ++/********************************************************************/ ++/* Module stuff							    */ ++/********************************************************************/ ++ ++MODULE_AUTHOR("David Gibson <hermes@gibson.dropbear.id.au>"); ++MODULE_DESCRIPTION("Driver for PCMCIA Lucent Orinoco," ++		   " Prism II based and similar wireless cards"); ++MODULE_LICENSE("Dual MPL/GPL"); ++ ++/* Module parameters */ ++ ++/* Some D-Link cards have buggy CIS. They do work at 5v properly, but ++ * don't have any CIS entry for it. This workaround it... */ ++static int ignore_cis_vcc; /* = 0 */ ++module_param(ignore_cis_vcc, int, 0); ++MODULE_PARM_DESC(ignore_cis_vcc, "Allow voltage mismatch between card and socket"); ++ ++/********************************************************************/ ++/* Data structures						    */ ++/********************************************************************/ ++ ++/* PCMCIA specific device information (goes in the card field of ++ * struct orinoco_private */ ++struct orinoco_pccard { ++	struct pcmcia_device	*p_dev; ++ ++	/* Used to handle hard reset */ ++	/* yuck, we need this hack to work around the insanity of the ++	 * PCMCIA layer */ ++	unsigned long hard_reset_in_progress; ++}; ++ ++ ++/********************************************************************/ ++/* Function prototypes						    */ ++/********************************************************************/ ++ ++static int orinoco_cs_config(struct pcmcia_device *link); ++static void orinoco_cs_release(struct pcmcia_device *link); ++static void orinoco_cs_detach(struct pcmcia_device *p_dev); ++ ++/********************************************************************/ ++/* Device methods						    */ ++/********************************************************************/ ++ ++static int ++orinoco_cs_hard_reset(struct orinoco_private *priv) ++{ ++	struct orinoco_pccard *card = priv->card; ++	struct pcmcia_device *link = card->p_dev; ++	int err; ++ ++	/* We need atomic ops here, because we're not holding the lock */ ++	set_bit(0, &card->hard_reset_in_progress); ++ ++	err = pcmcia_reset_card(link->socket); ++	if (err) ++		return err; ++ ++	msleep(100); ++	clear_bit(0, &card->hard_reset_in_progress); ++ ++	return 0; ++} ++ ++/********************************************************************/ ++/* PCMCIA stuff							    */ ++/********************************************************************/ ++ ++static int ++orinoco_cs_probe(struct pcmcia_device *link) ++{ ++	struct orinoco_private *priv; ++	struct orinoco_pccard *card; ++	int ret; ++ ++	priv = alloc_orinocodev(sizeof(*card), &link->dev, ++				orinoco_cs_hard_reset, NULL); ++	if (!priv) ++		return -ENOMEM; ++	card = priv->card; ++ ++	/* Link both structures together */ ++	card->p_dev = link; ++	link->priv = priv; ++ ++	ret = orinoco_cs_config(link); ++	if (ret) ++		goto err_free_orinocodev; ++ ++	return 0; ++ ++err_free_orinocodev: ++	free_orinocodev(priv); ++	return ret; ++} ++ ++static void orinoco_cs_detach(struct pcmcia_device *link) ++{ ++	struct orinoco_private *priv = link->priv; ++ ++	orinoco_if_del(priv); ++ ++	orinoco_cs_release(link); ++ ++	wiphy_unregister(priv_to_wiphy(priv)); ++	free_orinocodev(priv); ++}				/* orinoco_cs_detach */ ++ ++static int orinoco_cs_config_check(struct pcmcia_device *p_dev, void *priv_data) ++{ ++	if (p_dev->config_index == 0) ++		return -EINVAL; ++ ++	return pcmcia_request_io(p_dev); ++}; ++ ++static int ++orinoco_cs_config(struct pcmcia_device *link) ++{ ++	struct orinoco_private *priv = link->priv; ++	struct hermes *hw = &priv->hw; ++	int ret; ++	void __iomem *mem; ++ ++	link->config_flags |= CONF_AUTO_SET_VPP | CONF_AUTO_CHECK_VCC | ++		CONF_AUTO_SET_IO | CONF_ENABLE_IRQ; ++	if (ignore_cis_vcc) ++		link->config_flags &= ~CONF_AUTO_CHECK_VCC; ++	ret = pcmcia_loop_config(link, orinoco_cs_config_check, NULL); ++	if (ret) { ++		if (!ignore_cis_vcc) ++			printk(KERN_ERR PFX "GetNextTuple(): No matching " ++			       "CIS configuration.  Maybe you need the " ++			       "ignore_cis_vcc=1 parameter.\n"); ++		goto failed; ++	} ++ ++	mem = ioport_map(link->resource[0]->start, ++			resource_size(link->resource[0])); ++	if (!mem) ++		goto failed; ++ ++	/* We initialize the hermes structure before completing PCMCIA ++	 * configuration just in case the interrupt handler gets ++	 * called. */ ++	hermes_struct_init(hw, mem, HERMES_16BIT_REGSPACING); ++ ++	ret = pcmcia_request_irq(link, orinoco_interrupt); ++	if (ret) ++		goto failed; ++ ++	ret = pcmcia_enable_device(link); ++	if (ret) ++		goto failed; ++ ++	/* Initialise the main driver */ ++	if (orinoco_init(priv) != 0) { ++		printk(KERN_ERR PFX "orinoco_init() failed\n"); ++		goto failed; ++	} ++ ++	/* Register an interface with the stack */ ++	if (orinoco_if_add(priv, link->resource[0]->start, ++			   link->irq, NULL) != 0) { ++		printk(KERN_ERR PFX "orinoco_if_add() failed\n"); ++		goto failed; ++	} ++ ++	return 0; ++ ++ failed: ++	orinoco_cs_release(link); ++	return -ENODEV; ++}				/* orinoco_cs_config */ ++ ++static void ++orinoco_cs_release(struct pcmcia_device *link) ++{ ++	struct orinoco_private *priv = link->priv; ++	unsigned long flags; ++ ++	/* We're committed to taking the device away now, so mark the ++	 * hardware as unavailable */ ++	priv->hw.ops->lock_irqsave(&priv->lock, &flags); ++	priv->hw_unavailable++; ++	priv->hw.ops->unlock_irqrestore(&priv->lock, &flags); ++ ++	pcmcia_disable_device(link); ++	if (priv->hw.iobase) ++		ioport_unmap(priv->hw.iobase); ++}				/* orinoco_cs_release */ ++ ++static int orinoco_cs_suspend(struct pcmcia_device *link) ++{ ++	struct orinoco_private *priv = link->priv; ++	struct orinoco_pccard *card = priv->card; ++ ++	/* This is probably racy, but I can't think of ++	   a better way, short of rewriting the PCMCIA ++	   layer to not suck :-( */ ++	if (!test_bit(0, &card->hard_reset_in_progress)) ++		orinoco_down(priv); ++ ++	return 0; ++} ++ ++static int orinoco_cs_resume(struct pcmcia_device *link) ++{ ++	struct orinoco_private *priv = link->priv; ++	struct orinoco_pccard *card = priv->card; ++	int err = 0; ++ ++	if (!test_bit(0, &card->hard_reset_in_progress)) ++		err = orinoco_up(priv); ++ ++	return err; ++} ++ ++ ++/********************************************************************/ ++/* Module initialization					    */ ++/********************************************************************/ ++ ++static const struct pcmcia_device_id orinoco_cs_ids[] = { ++	PCMCIA_DEVICE_MANF_CARD(0x0101, 0x0777), /* 3Com AirConnect PCI 777A */ ++	PCMCIA_DEVICE_MANF_CARD(0x016b, 0x0001), /* Ericsson WLAN Card C11 */ ++	PCMCIA_DEVICE_MANF_CARD(0x01eb, 0x080a), /* Nortel Networks eMobility 802.11 Wireless Adapter */ ++	PCMCIA_DEVICE_MANF_CARD(0x0261, 0x0002), /* AirWay 802.11 Adapter (PCMCIA) */ ++	PCMCIA_DEVICE_MANF_CARD(0x0268, 0x0001), /* ARtem Onair */ ++	PCMCIA_DEVICE_MANF_CARD(0x0268, 0x0003), /* ARtem Onair Comcard 11 */ ++	PCMCIA_DEVICE_MANF_CARD(0x026f, 0x0305), /* Buffalo WLI-PCM-S11 */ ++	PCMCIA_DEVICE_MANF_CARD(0x02aa, 0x0002), /* ASUS SpaceLink WL-100 */ ++	PCMCIA_DEVICE_MANF_CARD(0x02ac, 0x0002), /* SpeedStream SS1021 Wireless Adapter */ ++	PCMCIA_DEVICE_MANF_CARD(0x02ac, 0x3021), /* SpeedStream Wireless Adapter */ ++	PCMCIA_DEVICE_MANF_CARD(0x14ea, 0xb001), /* PLANEX RoadLannerWave GW-NS11H */ ++	PCMCIA_DEVICE_PROD_ID12("3Com", "3CRWE737A AirConnect Wireless LAN PC Card", 0x41240e5b, 0x56010af3), ++	PCMCIA_DEVICE_PROD_ID12("Allied Telesyn", "AT-WCL452 Wireless PCMCIA Radio", 0x5cd01705, 0x4271660f), ++	PCMCIA_DEVICE_PROD_ID12("ASUS", "802_11B_CF_CARD_25", 0x78fc06ee, 0x45a50c1e), ++	PCMCIA_DEVICE_PROD_ID12("ASUS", "802_11b_PC_CARD_25", 0x78fc06ee, 0xdb9aa842), ++	PCMCIA_DEVICE_PROD_ID12("Avaya Communication", "Avaya Wireless PC Card", 0xd8a43b78, 0x0d341169), ++	PCMCIA_DEVICE_PROD_ID12("BENQ", "AWL100 PCMCIA ADAPTER", 0x35dadc74, 0x01f7fedb), ++	PCMCIA_DEVICE_PROD_ID12("Cabletron", "RoamAbout 802.11 DS", 0x32d445f5, 0xedeffd90), ++	PCMCIA_DEVICE_PROD_ID12("D-Link Corporation", "D-Link DWL-650H 11Mbps WLAN Adapter", 0xef544d24, 0xcd8ea916), ++	PCMCIA_DEVICE_PROD_ID12("ELSA", "AirLancer MC-11", 0x4507a33a, 0xef54f0e3), ++	PCMCIA_DEVICE_PROD_ID12("HyperLink", "Wireless PC Card 11Mbps", 0x56cc3f1a, 0x0bcf220c), ++	PCMCIA_DEVICE_PROD_ID12("Intel", "PRO/Wireless 2011 LAN PC Card", 0x816cc815, 0x07f58077), ++	PCMCIA_DEVICE_PROD_ID12("LeArtery", "SYNCBYAIR 11Mbps Wireless LAN PC Card", 0x7e3b326a, 0x49893e92), ++	PCMCIA_DEVICE_PROD_ID12("Lucent Technologies", "WaveLAN/IEEE", 0x23eb9949, 0xc562e72a), ++	PCMCIA_DEVICE_PROD_ID12("MELCO", "WLI-PCM-L11", 0x481e0094, 0x7360e410), ++	PCMCIA_DEVICE_PROD_ID12("MELCO", "WLI-PCM-L11G", 0x481e0094, 0xf57ca4b3), ++	PCMCIA_DEVICE_PROD_ID12("NCR", "WaveLAN/IEEE", 0x24358cd4, 0xc562e72a), ++	PCMCIA_DEVICE_PROD_ID12("Nortel Networks", "emobility 802.11 Wireless LAN PC Card", 0x2d617ea0, 0x88cd5767), ++	PCMCIA_DEVICE_PROD_ID12("OTC", "Wireless AirEZY 2411-PCC WLAN Card", 0x4ac44287, 0x235a6bed), ++	PCMCIA_DEVICE_PROD_ID12("PROXIM", "LAN PC CARD HARMONY 80211B", 0xc6536a5e, 0x090c3cd9), ++	PCMCIA_DEVICE_PROD_ID12("PROXIM", "LAN PCI CARD HARMONY 80211B", 0xc6536a5e, 0x9f494e26), ++	PCMCIA_DEVICE_PROD_ID12("SAMSUNG", "11Mbps WLAN Card", 0x43d74cb4, 0x579bd91b), ++	PCMCIA_DEVICE_PROD_ID12("Symbol Technologies", "LA4111 Spectrum24 Wireless LAN PC Card", 0x3f02b4d6, 0x3663cb0e), ++	PCMCIA_DEVICE_MANF_CARD_PROD_ID3(0x0156, 0x0002, "Version 01.01", 0xd27deb1a), /* Lucent Orinoco */ ++#ifdef CONFIG_HERMES_PRISM ++	/* Only entries that certainly identify Prism chipset */ ++	PCMCIA_DEVICE_MANF_CARD(0x000b, 0x7100), /* SonicWALL Long Range Wireless Card */ ++	PCMCIA_DEVICE_MANF_CARD(0x000b, 0x7300), /* Sohoware NCP110, Philips 802.11b */ ++	PCMCIA_DEVICE_MANF_CARD(0x0089, 0x0002), /* AnyPoint(TM) Wireless II PC Card */ ++	PCMCIA_DEVICE_MANF_CARD(0x0126, 0x8000), /* PROXIM RangeLAN-DS/LAN PC CARD */ ++	PCMCIA_DEVICE_MANF_CARD(0x0138, 0x0002), /* Compaq WL100 11 Mbps Wireless Adapter */ ++	PCMCIA_DEVICE_MANF_CARD(0x01ff, 0x0008), /* Intermec MobileLAN 11Mbps 802.11b WLAN Card */ ++	PCMCIA_DEVICE_MANF_CARD(0x0250, 0x0002), /* Samsung SWL2000-N 11Mb/s WLAN Card */ ++	PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1612), /* Linksys WPC11 Version 2.5 */ ++	PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1613), /* Linksys WPC11 Version 3 */ ++	PCMCIA_DEVICE_MANF_CARD(0x028a, 0x0002), /* Compaq HNW-100 11 Mbps Wireless Adapter */ ++	PCMCIA_DEVICE_MANF_CARD(0x028a, 0x0673), /* Linksys WCF12 Wireless CompactFlash Card */ ++	PCMCIA_DEVICE_MANF_CARD(0x50c2, 0x7300), /* Airvast WN-100 */ ++	PCMCIA_DEVICE_MANF_CARD(0x9005, 0x0021), /* Adaptec Ultra Wireless ANW-8030 */ ++	PCMCIA_DEVICE_MANF_CARD(0xc001, 0x0008), /* CONTEC FLEXSCAN/FX-DDS110-PCC */ ++	PCMCIA_DEVICE_MANF_CARD(0xc250, 0x0002), /* Conceptronic CON11Cpro, EMTAC A2424i */ ++	PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0002), /* Safeway 802.11b, ZCOMAX AirRunner/XI-300 */ ++	PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0005), /* D-Link DCF660, Sandisk Connect SDWCFB-000 */ ++	PCMCIA_DEVICE_PROD_ID123("Instant Wireless ", " Network PC CARD", "Version 01.02", 0x11d901af, 0x6e9bd926, 0x4b74baa0), ++	PCMCIA_DEVICE_PROD_ID12("ACTIONTEC", "PRISM Wireless LAN PC Card", 0x393089da, 0xa71e69d5), ++	PCMCIA_DEVICE_PROD_ID12("Addtron", "AWP-100 Wireless PCMCIA", 0xe6ec52ce, 0x08649af2), ++	PCMCIA_DEVICE_PROD_ID12("BUFFALO", "WLI-CF-S11G", 0x2decece3, 0x82067c18), ++	PCMCIA_DEVICE_PROD_ID12("BUFFALO", "WLI-PCM-L11G", 0x2decece3, 0xf57ca4b3), ++	PCMCIA_DEVICE_PROD_ID12("Compaq", "WL200_11Mbps_Wireless_PCI_Card", 0x54f7c49c, 0x15a75e5b), ++	PCMCIA_DEVICE_PROD_ID12("corega K.K.", "Wireless LAN PCC-11", 0x5261440f, 0xa6405584), ++	PCMCIA_DEVICE_PROD_ID12("corega K.K.", "Wireless LAN PCCA-11", 0x5261440f, 0xdf6115f9), ++	PCMCIA_DEVICE_PROD_ID12("corega_K.K.", "Wireless_LAN_PCCB-11", 0x29e33311, 0xee7a27ae), ++	PCMCIA_DEVICE_PROD_ID12("Digital Data Communications", "WPC-0100", 0xfdd73470, 0xe0b6f146), ++	PCMCIA_DEVICE_PROD_ID12("D", "Link DRC-650 11Mbps WLAN Card", 0x71b18589, 0xf144e3ac), ++	PCMCIA_DEVICE_PROD_ID12("D", "Link DWL-650 11Mbps WLAN Card", 0x71b18589, 0xb6f1b0ab), ++	PCMCIA_DEVICE_PROD_ID12(" ", "IEEE 802.11 Wireless LAN/PC Card", 0x3b6e20c8, 0xefccafe9), ++	PCMCIA_DEVICE_PROD_ID12("INTERSIL", "HFA384x/IEEE", 0x74c5e40d, 0xdb472a18), ++	PCMCIA_DEVICE_PROD_ID12("INTERSIL", "I-GATE 11M PC Card / PC Card plus", 0x74c5e40d, 0x8304ff77), ++	PCMCIA_DEVICE_PROD_ID12("Intersil", "PRISM 2_5 PCMCIA ADAPTER", 0x4b801a17, 0x6345a0bf), ++	PCMCIA_DEVICE_PROD_ID12("Linksys", "Wireless CompactFlash Card", 0x0733cc81, 0x0c52f395), ++	PCMCIA_DEVICE_PROD_ID12("Microsoft", "Wireless Notebook Adapter MN-520", 0x5961bf85, 0x6eec8c01), ++	PCMCIA_DEVICE_PROD_ID12("NETGEAR MA401RA Wireless PC", "Card", 0x0306467f, 0x9762e8f1), ++	PCMCIA_DEVICE_PROD_ID12("NETGEAR MA401 Wireless PC", "Card", 0xa37434e9, 0x9762e8f1), ++	PCMCIA_DEVICE_PROD_ID12("OEM", "PRISM2 IEEE 802.11 PC-Card", 0xfea54c90, 0x48f2bdd6), ++	PCMCIA_DEVICE_PROD_ID12("PLANEX", "GeoWave/GW-CF110", 0x209f40ab, 0xd9715264), ++	PCMCIA_DEVICE_PROD_ID12("PLANEX", "GeoWave/GW-NS110", 0x209f40ab, 0x46263178), ++	PCMCIA_DEVICE_PROD_ID12("SMC", "SMC2532W-B EliteConnect Wireless Adapter", 0xc4f8b18b, 0x196bd757), ++	PCMCIA_DEVICE_PROD_ID12("SMC", "SMC2632W", 0xc4f8b18b, 0x474a1f2a), ++	PCMCIA_DEVICE_PROD_ID12("ZoomAir 11Mbps High", "Rate wireless Networking", 0x273fe3db, 0x32a1eaee), ++	PCMCIA_DEVICE_PROD_ID3("HFA3863", 0x355cb092), ++	PCMCIA_DEVICE_PROD_ID3("ISL37100P", 0x630d52b2), ++	PCMCIA_DEVICE_PROD_ID3("ISL37101P-10", 0xdd97a26b), ++	PCMCIA_DEVICE_PROD_ID3("ISL37300P", 0xc9049a39), ++ ++	/* This may be Agere or Intersil Firmware */ ++	PCMCIA_DEVICE_MANF_CARD(0x0156, 0x0002), ++#endif ++	PCMCIA_DEVICE_NULL, ++}; ++MODULE_DEVICE_TABLE(pcmcia, orinoco_cs_ids); ++ ++static struct pcmcia_driver orinoco_driver = { ++	.owner		= THIS_MODULE, ++	.name		= DRIVER_NAME, ++	.probe		= orinoco_cs_probe, ++	.remove		= orinoco_cs_detach, ++	.id_table       = orinoco_cs_ids, ++	.suspend	= orinoco_cs_suspend, ++	.resume		= orinoco_cs_resume, ++}; ++module_pcmcia_driver(orinoco_driver); +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/orinoco.h linux-6.15.6/drivers/net/wireless/intersil/orinoco/orinoco.h +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/orinoco.h	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/orinoco.h	2025-08-03 22:43:06.558981951 +0200 +@@ -0,0 +1,249 @@ ++/* orinoco.h ++ * ++ * Common definitions to all pieces of the various orinoco ++ * drivers ++ */ ++ ++#ifndef _ORINOCO_H ++#define _ORINOCO_H ++ ++#define DRIVER_VERSION "0.15" ++ ++#include <linux/interrupt.h> ++#include <linux/suspend.h> ++#include <linux/netdevice.h> ++#include <linux/wireless.h> ++#include <net/iw_handler.h> ++#include <net/cfg80211.h> ++ ++#include "hermes.h" ++ ++/* To enable debug messages */ ++/*#define ORINOCO_DEBUG		3*/ ++ ++#define MAX_SCAN_LEN		4096 ++ ++#define ORINOCO_SEQ_LEN		8 ++#define ORINOCO_MAX_KEY_SIZE	14 ++#define ORINOCO_MAX_KEYS	4 ++ ++struct orinoco_key { ++	__le16 len;	/* always stored as little-endian */ ++	char data[ORINOCO_MAX_KEY_SIZE]; ++} __packed; ++ ++#define TKIP_KEYLEN	16 ++#define MIC_KEYLEN	8 ++ ++struct orinoco_tkip_key { ++	u8 tkip[TKIP_KEYLEN]; ++	u8 tx_mic[MIC_KEYLEN]; ++	u8 rx_mic[MIC_KEYLEN]; ++}; ++ ++enum orinoco_alg { ++	ORINOCO_ALG_NONE, ++	ORINOCO_ALG_WEP, ++	ORINOCO_ALG_TKIP ++}; ++ ++enum fwtype { ++	FIRMWARE_TYPE_AGERE, ++	FIRMWARE_TYPE_INTERSIL, ++	FIRMWARE_TYPE_SYMBOL ++}; ++ ++struct firmware; ++ ++struct orinoco_private { ++	void *card;	/* Pointer to card dependent structure */ ++	struct device *dev; ++	int (*hard_reset)(struct orinoco_private *); ++	int (*stop_fw)(struct orinoco_private *, int); ++ ++	struct ieee80211_supported_band band; ++	struct ieee80211_channel channels[14]; ++	u32 cipher_suites[3]; ++ ++	/* Synchronisation stuff */ ++	spinlock_t lock; ++	int hw_unavailable; ++	struct work_struct reset_work; ++ ++	/* Interrupt tasklets */ ++	struct tasklet_struct rx_tasklet; ++	struct list_head rx_list; ++ ++	/* driver state */ ++	int open; ++	u16 last_linkstatus; ++	struct work_struct join_work; ++	struct work_struct wevent_work; ++ ++	/* Net device stuff */ ++	struct net_device *ndev; ++	struct iw_statistics wstats; ++ ++	/* Hardware control variables */ ++	struct hermes hw; ++	u16 txfid; ++ ++	/* Capabilities of the hardware/firmware */ ++	enum fwtype firmware_type; ++	int ibss_port; ++	int nicbuf_size; ++	u16 channel_mask; ++ ++	/* Boolean capabilities */ ++	unsigned int has_ibss:1; ++	unsigned int has_port3:1; ++	unsigned int has_wep:1; ++	unsigned int has_big_wep:1; ++	unsigned int has_mwo:1; ++	unsigned int has_pm:1; ++	unsigned int has_preamble:1; ++	unsigned int has_sensitivity:1; ++	unsigned int has_hostscan:1; ++	unsigned int has_alt_txcntl:1; ++	unsigned int has_ext_scan:1; ++	unsigned int has_wpa:1; ++	unsigned int do_fw_download:1; ++	unsigned int broken_disableport:1; ++	unsigned int broken_monitor:1; ++	unsigned int prefer_port3:1; ++ ++	/* Configuration paramaters */ ++	enum nl80211_iftype iw_mode; ++	enum orinoco_alg encode_alg; ++	u16 wep_restrict, tx_key; ++	struct key_params keys[ORINOCO_MAX_KEYS]; ++ ++	int bitratemode; ++	char nick[IW_ESSID_MAX_SIZE + 1]; ++	char desired_essid[IW_ESSID_MAX_SIZE + 1]; ++	char desired_bssid[ETH_ALEN]; ++	int bssid_fixed; ++	u16 frag_thresh, mwo_robust; ++	u16 channel; ++	u16 ap_density, rts_thresh; ++	u16 pm_on, pm_mcast, pm_period, pm_timeout; ++	u16 preamble; ++	u16 short_retry_limit, long_retry_limit; ++	u16 retry_lifetime; ++#ifdef WIRELESS_SPY ++	struct iw_spy_data spy_data; /* iwspy support */ ++	struct iw_public_data	wireless_data; ++#endif ++ ++	/* Configuration dependent variables */ ++	int port_type, createibss; ++	int promiscuous, mc_count; ++ ++	/* Scanning support */ ++	struct cfg80211_scan_request *scan_request; ++	struct work_struct process_scan; ++	struct list_head scan_list; ++	spinlock_t scan_lock; /* protects the scan list */ ++ ++	/* WPA support */ ++	u8 *wpa_ie; ++	int wpa_ie_len; ++ ++	struct crypto_shash *rx_tfm_mic; ++	struct crypto_shash *tx_tfm_mic; ++ ++	unsigned int wpa_enabled:1; ++	unsigned int tkip_cm_active:1; ++	unsigned int key_mgmt:3; ++ ++#if defined(CONFIG_HERMES_CACHE_FW_ON_INIT) || defined(CONFIG_PM_SLEEP) ++	/* Cached in memory firmware to use during ->resume. */ ++	const struct firmware *cached_pri_fw; ++	const struct firmware *cached_fw; ++#endif ++ ++	struct notifier_block pm_notifier; ++}; ++ ++#ifdef ORINOCO_DEBUG ++extern int orinoco_debug; ++#define DEBUG(n, args...) do { \ ++	if (orinoco_debug > (n)) \ ++		printk(KERN_DEBUG args); \ ++} while (0) ++#else ++#define DEBUG(n, args...) do { } while (0) ++#endif	/* ORINOCO_DEBUG */ ++ ++/********************************************************************/ ++/* Exported prototypes                                              */ ++/********************************************************************/ ++ ++struct orinoco_private *alloc_orinocodev(int sizeof_card, struct device *device, ++					 int (*hard_reset)(struct orinoco_private *), ++					 int (*stop_fw)(struct orinoco_private *, int)); ++void free_orinocodev(struct orinoco_private *priv); ++int orinoco_init(struct orinoco_private *priv); ++int orinoco_if_add(struct orinoco_private *priv, unsigned long base_addr, ++		   unsigned int irq, const struct net_device_ops *ops); ++void orinoco_if_del(struct orinoco_private *priv); ++int orinoco_up(struct orinoco_private *priv); ++void orinoco_down(struct orinoco_private *priv); ++irqreturn_t orinoco_interrupt(int irq, void *dev_id); ++ ++void __orinoco_ev_info(struct net_device *dev, struct hermes *hw); ++void __orinoco_ev_rx(struct net_device *dev, struct hermes *hw); ++ ++int orinoco_process_xmit_skb(struct sk_buff *skb, ++			     struct net_device *dev, ++			     struct orinoco_private *priv, ++			     int *tx_control, ++			     u8 *mic); ++ ++/* Common ndo functions exported for reuse by orinoco_usb */ ++int orinoco_open(struct net_device *dev); ++int orinoco_stop(struct net_device *dev); ++void orinoco_set_multicast_list(struct net_device *dev); ++int orinoco_change_mtu(struct net_device *dev, int new_mtu); ++void orinoco_tx_timeout(struct net_device *dev, unsigned int txqueue); ++ ++/********************************************************************/ ++/* Locking and synchronization functions                            */ ++/********************************************************************/ ++ ++static inline int orinoco_lock(struct orinoco_private *priv, ++			       unsigned long *flags) ++{ ++	priv->hw.ops->lock_irqsave(&priv->lock, flags); ++	if (priv->hw_unavailable) { ++		DEBUG(1, "orinoco_lock() called with hw_unavailable (dev=%p)\n", ++		       priv->ndev); ++		priv->hw.ops->unlock_irqrestore(&priv->lock, flags); ++		return -EBUSY; ++	} ++	return 0; ++} ++ ++static inline void orinoco_unlock(struct orinoco_private *priv, ++				  unsigned long *flags) ++{ ++	priv->hw.ops->unlock_irqrestore(&priv->lock, flags); ++} ++ ++static inline void orinoco_lock_irq(struct orinoco_private *priv) ++{ ++	priv->hw.ops->lock_irq(&priv->lock); ++} ++ ++static inline void orinoco_unlock_irq(struct orinoco_private *priv) ++{ ++	priv->hw.ops->unlock_irq(&priv->lock); ++} ++ ++/*** Navigate from net_device to orinoco_private ***/ ++static inline struct orinoco_private *ndev_priv(struct net_device *dev) ++{ ++	struct wireless_dev *wdev = netdev_priv(dev); ++	return wdev_priv(wdev); ++} ++#endif /* _ORINOCO_H */ +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/orinoco_nortel.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/orinoco_nortel.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/orinoco_nortel.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/orinoco_nortel.c	2025-08-03 15:01:59.353130523 +0200 +@@ -0,0 +1,314 @@ ++/* orinoco_nortel.c ++ * ++ * Driver for Prism II devices which would usually be driven by orinoco_cs, ++ * but are connected to the PCI bus by a PCI-to-PCMCIA adapter used in ++ * Nortel emobility, Symbol LA-4113 and Symbol LA-4123. ++ * ++ * Copyright (C) 2002 Tobias Hoffmann ++ *           (C) 2003 Christoph Jungegger <disdos@traum404.de> ++ * ++ * Some of this code is borrowed from orinoco_plx.c ++ *	Copyright (C) 2001 Daniel Barlow ++ * Some of this code is borrowed from orinoco_pci.c ++ *  Copyright (C) 2001 Jean Tourrilhes ++ * Some of this code is "inspired" by linux-wlan-ng-0.1.10, but nothing ++ * has been copied from it. linux-wlan-ng-0.1.10 is originally : ++ *	Copyright (C) 1999 AbsoluteValue Systems, Inc.  All Rights Reserved. ++ * ++ * The contents of this file are subject to the Mozilla Public License ++ * Version 1.1 (the "License"); you may not use this file except in ++ * compliance with the License. You may obtain a copy of the License ++ * at http://www.mozilla.org/MPL/ ++ * ++ * Software distributed under the License is distributed on an "AS IS" ++ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See ++ * the License for the specific language governing rights and ++ * limitations under the License. ++ * ++ * Alternatively, the contents of this file may be used under the ++ * terms of the GNU General Public License version 2 (the "GPL"), in ++ * which case the provisions of the GPL are applicable instead of the ++ * above.  If you wish to allow the use of your version of this file ++ * only under the terms of the GPL and not to allow others to use your ++ * version of this file under the MPL, indicate your decision by ++ * deleting the provisions above and replace them with the notice and ++ * other provisions required by the GPL.  If you do not delete the ++ * provisions above, a recipient may use your version of this file ++ * under either the MPL or the GPL. ++ */ ++ ++#define DRIVER_NAME "orinoco_nortel" ++#define PFX DRIVER_NAME ": " ++ ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/delay.h> ++#include <linux/pci.h> ++#include <pcmcia/cisreg.h> ++ ++#include "orinoco.h" ++#include "orinoco_pci.h" ++ ++#define COR_OFFSET    (0xe0)	/* COR attribute offset of Prism2 PC card */ ++#define COR_VALUE     (COR_LEVEL_REQ | COR_FUNC_ENA)	/* Enable PC card with interrupt in level trigger */ ++ ++ ++/* ++ * Do a soft reset of the card using the Configuration Option Register ++ * We need this to get going... ++ * This is the part of the code that is strongly inspired from wlan-ng ++ * ++ * Note bis : Don't try to access HERMES_CMD during the reset phase. ++ * It just won't work ! ++ */ ++static int orinoco_nortel_cor_reset(struct orinoco_private *priv) ++{ ++	struct orinoco_pci_card *card = priv->card; ++ ++	/* Assert the reset until the card notices */ ++	iowrite16(8, card->bridge_io + 2); ++	ioread16(card->attr_io + COR_OFFSET); ++	iowrite16(0x80, card->attr_io + COR_OFFSET); ++	mdelay(1); ++ ++	/* Give time for the card to recover from this hard effort */ ++	iowrite16(0, card->attr_io + COR_OFFSET); ++	iowrite16(0, card->attr_io + COR_OFFSET); ++	mdelay(1); ++ ++	/* Set COR as usual */ ++	iowrite16(COR_VALUE, card->attr_io + COR_OFFSET); ++	iowrite16(COR_VALUE, card->attr_io + COR_OFFSET); ++	mdelay(1); ++ ++	iowrite16(0x228, card->bridge_io + 2); ++ ++	return 0; ++} ++ ++static int orinoco_nortel_hw_init(struct orinoco_pci_card *card) ++{ ++	int i; ++	u32 reg; ++ ++	/* Setup bridge */ ++	if (ioread16(card->bridge_io) & 1) { ++		printk(KERN_ERR PFX "brg1 answer1 wrong\n"); ++		return -EBUSY; ++	} ++	iowrite16(0x118, card->bridge_io + 2); ++	iowrite16(0x108, card->bridge_io + 2); ++	mdelay(30); ++	iowrite16(0x8, card->bridge_io + 2); ++	for (i = 0; i < 30; i++) { ++		mdelay(30); ++		if (ioread16(card->bridge_io) & 0x10) ++			break; ++	} ++	if (i == 30) { ++		printk(KERN_ERR PFX "brg1 timed out\n"); ++		return -EBUSY; ++	} ++	if (ioread16(card->attr_io + COR_OFFSET) & 1) { ++		printk(KERN_ERR PFX "brg2 answer1 wrong\n"); ++		return -EBUSY; ++	} ++	if (ioread16(card->attr_io + COR_OFFSET + 2) & 1) { ++		printk(KERN_ERR PFX "brg2 answer2 wrong\n"); ++		return -EBUSY; ++	} ++	if (ioread16(card->attr_io + COR_OFFSET + 4) & 1) { ++		printk(KERN_ERR PFX "brg2 answer3 wrong\n"); ++		return -EBUSY; ++	} ++ ++	/* Set the PCMCIA COR register */ ++	iowrite16(COR_VALUE, card->attr_io + COR_OFFSET); ++	mdelay(1); ++	reg = ioread16(card->attr_io + COR_OFFSET); ++	if (reg != COR_VALUE) { ++		printk(KERN_ERR PFX "Error setting COR value (reg=%x)\n", ++		       reg); ++		return -EBUSY; ++	} ++ ++	/* Set LEDs */ ++	iowrite16(1, card->bridge_io + 10); ++	return 0; ++} ++ ++static int orinoco_nortel_init_one(struct pci_dev *pdev, ++				   const struct pci_device_id *ent) ++{ ++	int err; ++	struct orinoco_private *priv; ++	struct orinoco_pci_card *card; ++	void __iomem *hermes_io, *bridge_io, *attr_io; ++ ++	err = pci_enable_device(pdev); ++	if (err) { ++		printk(KERN_ERR PFX "Cannot enable PCI device\n"); ++		return err; ++	} ++ ++	err = pci_request_regions(pdev, DRIVER_NAME); ++	if (err) { ++		printk(KERN_ERR PFX "Cannot obtain PCI resources\n"); ++		goto fail_resources; ++	} ++ ++	bridge_io = pci_iomap(pdev, 0, 0); ++	if (!bridge_io) { ++		printk(KERN_ERR PFX "Cannot map bridge registers\n"); ++		err = -EIO; ++		goto fail_map_bridge; ++	} ++ ++	attr_io = pci_iomap(pdev, 1, 0); ++	if (!attr_io) { ++		printk(KERN_ERR PFX "Cannot map PCMCIA attributes\n"); ++		err = -EIO; ++		goto fail_map_attr; ++	} ++ ++	hermes_io = pci_iomap(pdev, 2, 0); ++	if (!hermes_io) { ++		printk(KERN_ERR PFX "Cannot map chipset registers\n"); ++		err = -EIO; ++		goto fail_map_hermes; ++	} ++ ++	/* Allocate network device */ ++	priv = alloc_orinocodev(sizeof(*card), &pdev->dev, ++				orinoco_nortel_cor_reset, NULL); ++	if (!priv) { ++		printk(KERN_ERR PFX "Cannot allocate network device\n"); ++		err = -ENOMEM; ++		goto fail_alloc; ++	} ++ ++	card = priv->card; ++	card->bridge_io = bridge_io; ++	card->attr_io = attr_io; ++ ++	hermes_struct_init(&priv->hw, hermes_io, HERMES_16BIT_REGSPACING); ++ ++	err = request_irq(pdev->irq, orinoco_interrupt, IRQF_SHARED, ++			  DRIVER_NAME, priv); ++	if (err) { ++		printk(KERN_ERR PFX "Cannot allocate IRQ %d\n", pdev->irq); ++		err = -EBUSY; ++		goto fail_irq; ++	} ++ ++	err = orinoco_nortel_hw_init(card); ++	if (err) { ++		printk(KERN_ERR PFX "Hardware initialization failed\n"); ++		goto fail; ++	} ++ ++	err = orinoco_nortel_cor_reset(priv); ++	if (err) { ++		printk(KERN_ERR PFX "Initial reset failed\n"); ++		goto fail; ++	} ++ ++	err = orinoco_init(priv); ++	if (err) { ++		printk(KERN_ERR PFX "orinoco_init() failed\n"); ++		goto fail; ++	} ++ ++	err = orinoco_if_add(priv, 0, 0, NULL); ++	if (err) { ++		printk(KERN_ERR PFX "orinoco_if_add() failed\n"); ++		goto fail_wiphy; ++	} ++ ++	pci_set_drvdata(pdev, priv); ++ ++	return 0; ++ ++ fail_wiphy: ++	wiphy_unregister(priv_to_wiphy(priv)); ++ fail: ++	free_irq(pdev->irq, priv); ++ ++ fail_irq: ++	free_orinocodev(priv); ++ ++ fail_alloc: ++	pci_iounmap(pdev, hermes_io); ++ ++ fail_map_hermes: ++	pci_iounmap(pdev, attr_io); ++ ++ fail_map_attr: ++	pci_iounmap(pdev, bridge_io); ++ ++ fail_map_bridge: ++	pci_release_regions(pdev); ++ ++ fail_resources: ++	pci_disable_device(pdev); ++ ++	return err; ++} ++ ++static void orinoco_nortel_remove_one(struct pci_dev *pdev) ++{ ++	struct orinoco_private *priv = pci_get_drvdata(pdev); ++	struct orinoco_pci_card *card = priv->card; ++ ++	/* Clear LEDs */ ++	iowrite16(0, card->bridge_io + 10); ++ ++	orinoco_if_del(priv); ++	wiphy_unregister(priv_to_wiphy(priv)); ++	free_irq(pdev->irq, priv); ++	free_orinocodev(priv); ++	pci_iounmap(pdev, priv->hw.iobase); ++	pci_iounmap(pdev, card->attr_io); ++	pci_iounmap(pdev, card->bridge_io); ++	pci_release_regions(pdev); ++	pci_disable_device(pdev); ++} ++ ++static const struct pci_device_id orinoco_nortel_id_table[] = { ++	/* Nortel emobility PCI */ ++	{0x126c, 0x8030, PCI_ANY_ID, PCI_ANY_ID,}, ++	/* Symbol LA-4123 PCI */ ++	{0x1562, 0x0001, PCI_ANY_ID, PCI_ANY_ID,}, ++	{0,}, ++}; ++ ++MODULE_DEVICE_TABLE(pci, orinoco_nortel_id_table); ++ ++static struct pci_driver orinoco_nortel_driver = { ++	.name		= DRIVER_NAME, ++	.id_table	= orinoco_nortel_id_table, ++	.probe		= orinoco_nortel_init_one, ++	.remove		= orinoco_nortel_remove_one, ++	.driver.pm	= &orinoco_pci_pm_ops, ++}; ++ ++static char version[] __initdata = DRIVER_NAME " " DRIVER_VERSION ++	" (Tobias Hoffmann & Christoph Jungegger <disdos@traum404.de>)"; ++MODULE_AUTHOR("Christoph Jungegger <disdos@traum404.de>"); ++MODULE_DESCRIPTION("Driver for wireless LAN cards using the Nortel PCI bridge"); ++MODULE_LICENSE("Dual MPL/GPL"); ++ ++static int __init orinoco_nortel_init(void) ++{ ++	printk(KERN_DEBUG "%s\n", version); ++	return pci_register_driver(&orinoco_nortel_driver); ++} ++ ++static void __exit orinoco_nortel_exit(void) ++{ ++	pci_unregister_driver(&orinoco_nortel_driver); ++} ++ ++module_init(orinoco_nortel_init); ++module_exit(orinoco_nortel_exit); +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/orinoco_pci.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/orinoco_pci.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/orinoco_pci.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/orinoco_pci.c	2025-08-03 15:01:59.353130523 +0200 +@@ -0,0 +1,257 @@ ++/* orinoco_pci.c ++ * ++ * Driver for Prism 2.5/3 devices that have a direct PCI interface ++ * (i.e. these are not PCMCIA cards in a PCMCIA-to-PCI bridge). ++ * The card contains only one PCI region, which contains all the usual ++ * hermes registers, as well as the COR register. ++ * ++ * Current maintainers are: ++ *	Pavel Roskin <proski AT gnu.org> ++ * and	David Gibson <hermes AT gibson.dropbear.id.au> ++ * ++ * Some of this code is borrowed from orinoco_plx.c ++ *	Copyright (C) 2001 Daniel Barlow <dan AT telent.net> ++ * Some of this code is "inspired" by linux-wlan-ng-0.1.10, but nothing ++ * has been copied from it. linux-wlan-ng-0.1.10 is originally : ++ *	Copyright (C) 1999 AbsoluteValue Systems, Inc.  All Rights Reserved. ++ * This file originally written by: ++ *	Copyright (C) 2001 Jean Tourrilhes <jt AT hpl.hp.com> ++ * And is now maintained by: ++ *	(C) Copyright David Gibson, IBM Corp. 2002-2003. ++ * ++ * The contents of this file are subject to the Mozilla Public License ++ * Version 1.1 (the "License"); you may not use this file except in ++ * compliance with the License. You may obtain a copy of the License ++ * at http://www.mozilla.org/MPL/ ++ * ++ * Software distributed under the License is distributed on an "AS IS" ++ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See ++ * the License for the specific language governing rights and ++ * limitations under the License. ++ * ++ * Alternatively, the contents of this file may be used under the ++ * terms of the GNU General Public License version 2 (the "GPL"), in ++ * which case the provisions of the GPL are applicable instead of the ++ * above.  If you wish to allow the use of your version of this file ++ * only under the terms of the GPL and not to allow others to use your ++ * version of this file under the MPL, indicate your decision by ++ * deleting the provisions above and replace them with the notice and ++ * other provisions required by the GPL.  If you do not delete the ++ * provisions above, a recipient may use your version of this file ++ * under either the MPL or the GPL. ++ */ ++ ++#define DRIVER_NAME "orinoco_pci" ++#define PFX DRIVER_NAME ": " ++ ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/delay.h> ++#include <linux/pci.h> ++ ++#include "orinoco.h" ++#include "orinoco_pci.h" ++ ++/* Offset of the COR register of the PCI card */ ++#define HERMES_PCI_COR		(0x26) ++ ++/* Bitmask to reset the card */ ++#define HERMES_PCI_COR_MASK	(0x0080) ++ ++/* Magic timeouts for doing the reset. ++ * Those times are straight from wlan-ng, and it is claimed that they ++ * are necessary. Alan will kill me. Take your time and grab a coffee. */ ++#define HERMES_PCI_COR_ONT	(250)		/* ms */ ++#define HERMES_PCI_COR_OFFT	(500)		/* ms */ ++#define HERMES_PCI_COR_BUSYT	(500)		/* ms */ ++ ++/* ++ * Do a soft reset of the card using the Configuration Option Register ++ * We need this to get going... ++ * This is the part of the code that is strongly inspired from wlan-ng ++ * ++ * Note : This code is done with irq enabled. This mean that many ++ * interrupts will occur while we are there. This is why we use the ++ * jiffies to regulate time instead of a straight mdelay(). Usually we ++ * need only around 245 iteration of the loop to do 250 ms delay. ++ * ++ * Note bis : Don't try to access HERMES_CMD during the reset phase. ++ * It just won't work ! ++ */ ++static int orinoco_pci_cor_reset(struct orinoco_private *priv) ++{ ++	struct hermes *hw = &priv->hw; ++	unsigned long timeout; ++	u16 reg; ++ ++	/* Assert the reset until the card notices */ ++	hermes_write_regn(hw, PCI_COR, HERMES_PCI_COR_MASK); ++	mdelay(HERMES_PCI_COR_ONT); ++ ++	/* Give time for the card to recover from this hard effort */ ++	hermes_write_regn(hw, PCI_COR, 0x0000); ++	mdelay(HERMES_PCI_COR_OFFT); ++ ++	/* The card is ready when it's no longer busy */ ++	timeout = jiffies + msecs_to_jiffies(HERMES_PCI_COR_BUSYT); ++	reg = hermes_read_regn(hw, CMD); ++	while (time_before(jiffies, timeout) && (reg & HERMES_CMD_BUSY)) { ++		mdelay(1); ++		reg = hermes_read_regn(hw, CMD); ++	} ++ ++	/* Still busy? */ ++	if (reg & HERMES_CMD_BUSY) { ++		printk(KERN_ERR PFX "Busy timeout\n"); ++		return -ETIMEDOUT; ++	} ++ ++	return 0; ++} ++ ++static int orinoco_pci_init_one(struct pci_dev *pdev, ++				const struct pci_device_id *ent) ++{ ++	int err; ++	struct orinoco_private *priv; ++	struct orinoco_pci_card *card; ++	void __iomem *hermes_io; ++ ++	err = pci_enable_device(pdev); ++	if (err) { ++		printk(KERN_ERR PFX "Cannot enable PCI device\n"); ++		return err; ++	} ++ ++	err = pci_request_regions(pdev, DRIVER_NAME); ++	if (err) { ++		printk(KERN_ERR PFX "Cannot obtain PCI resources\n"); ++		goto fail_resources; ++	} ++ ++	hermes_io = pci_iomap(pdev, 0, 0); ++	if (!hermes_io) { ++		printk(KERN_ERR PFX "Cannot remap chipset registers\n"); ++		err = -EIO; ++		goto fail_map_hermes; ++	} ++ ++	/* Allocate network device */ ++	priv = alloc_orinocodev(sizeof(*card), &pdev->dev, ++				orinoco_pci_cor_reset, NULL); ++	if (!priv) { ++		printk(KERN_ERR PFX "Cannot allocate network device\n"); ++		err = -ENOMEM; ++		goto fail_alloc; ++	} ++ ++	card = priv->card; ++ ++	hermes_struct_init(&priv->hw, hermes_io, HERMES_32BIT_REGSPACING); ++ ++	err = request_irq(pdev->irq, orinoco_interrupt, IRQF_SHARED, ++			  DRIVER_NAME, priv); ++	if (err) { ++		printk(KERN_ERR PFX "Cannot allocate IRQ %d\n", pdev->irq); ++		err = -EBUSY; ++		goto fail_irq; ++	} ++ ++	err = orinoco_pci_cor_reset(priv); ++	if (err) { ++		printk(KERN_ERR PFX "Initial reset failed\n"); ++		goto fail; ++	} ++ ++	err = orinoco_init(priv); ++	if (err) { ++		printk(KERN_ERR PFX "orinoco_init() failed\n"); ++		goto fail; ++	} ++ ++	err = orinoco_if_add(priv, 0, 0, NULL); ++	if (err) { ++		printk(KERN_ERR PFX "orinoco_if_add() failed\n"); ++		goto fail_wiphy; ++	} ++ ++	pci_set_drvdata(pdev, priv); ++ ++	return 0; ++ ++ fail_wiphy: ++	wiphy_unregister(priv_to_wiphy(priv)); ++ fail: ++	free_irq(pdev->irq, priv); ++ ++ fail_irq: ++	free_orinocodev(priv); ++ ++ fail_alloc: ++	pci_iounmap(pdev, hermes_io); ++ ++ fail_map_hermes: ++	pci_release_regions(pdev); ++ ++ fail_resources: ++	pci_disable_device(pdev); ++ ++	return err; ++} ++ ++static void orinoco_pci_remove_one(struct pci_dev *pdev) ++{ ++	struct orinoco_private *priv = pci_get_drvdata(pdev); ++ ++	orinoco_if_del(priv); ++	wiphy_unregister(priv_to_wiphy(priv)); ++	free_irq(pdev->irq, priv); ++	free_orinocodev(priv); ++	pci_iounmap(pdev, priv->hw.iobase); ++	pci_release_regions(pdev); ++	pci_disable_device(pdev); ++} ++ ++static const struct pci_device_id orinoco_pci_id_table[] = { ++	/* Intersil Prism 3 */ ++	{0x1260, 0x3872, PCI_ANY_ID, PCI_ANY_ID,}, ++	/* Intersil Prism 2.5 */ ++	{0x1260, 0x3873, PCI_ANY_ID, PCI_ANY_ID,}, ++	/* Samsung MagicLAN SWL-2210P */ ++	{0x167d, 0xa000, PCI_ANY_ID, PCI_ANY_ID,}, ++	{0,}, ++}; ++ ++MODULE_DEVICE_TABLE(pci, orinoco_pci_id_table); ++ ++static struct pci_driver orinoco_pci_driver = { ++	.name		= DRIVER_NAME, ++	.id_table	= orinoco_pci_id_table, ++	.probe		= orinoco_pci_init_one, ++	.remove		= orinoco_pci_remove_one, ++	.driver.pm	= &orinoco_pci_pm_ops, ++}; ++ ++static char version[] __initdata = DRIVER_NAME " " DRIVER_VERSION ++	" (Pavel Roskin <proski@gnu.org>," ++	" David Gibson <hermes@gibson.dropbear.id.au> &" ++	" Jean Tourrilhes <jt@hpl.hp.com>)"; ++MODULE_AUTHOR("Pavel Roskin <proski@gnu.org> &" ++	      " David Gibson <hermes@gibson.dropbear.id.au>"); ++MODULE_DESCRIPTION("Driver for wireless LAN cards using direct PCI interface"); ++MODULE_LICENSE("Dual MPL/GPL"); ++ ++static int __init orinoco_pci_init(void) ++{ ++	printk(KERN_DEBUG "%s\n", version); ++	return pci_register_driver(&orinoco_pci_driver); ++} ++ ++static void __exit orinoco_pci_exit(void) ++{ ++	pci_unregister_driver(&orinoco_pci_driver); ++} ++ ++module_init(orinoco_pci_init); ++module_exit(orinoco_pci_exit); +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/orinoco_pci.h linux-6.15.6/drivers/net/wireless/intersil/orinoco/orinoco_pci.h +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/orinoco_pci.h	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/orinoco_pci.h	2025-08-03 15:01:59.365130178 +0200 +@@ -0,0 +1,54 @@ ++/* orinoco_pci.h ++ * ++ * Common code for all Orinoco drivers for PCI devices, including ++ * both native PCI and PCMCIA-to-PCI bridges. ++ * ++ * Copyright (C) 2005, Pavel Roskin. ++ * See main.c for license. ++ */ ++ ++#ifndef _ORINOCO_PCI_H ++#define _ORINOCO_PCI_H ++ ++#include <linux/netdevice.h> ++ ++/* Driver specific data */ ++struct orinoco_pci_card { ++	void __iomem *bridge_io; ++	void __iomem *attr_io; ++}; ++ ++static int __maybe_unused orinoco_pci_suspend(struct device *dev_d) ++{ ++	struct pci_dev *pdev = to_pci_dev(dev_d); ++	struct orinoco_private *priv = pci_get_drvdata(pdev); ++ ++	orinoco_down(priv); ++	free_irq(pdev->irq, priv); ++ ++	return 0; ++} ++ ++static int __maybe_unused orinoco_pci_resume(struct device *dev_d) ++{ ++	struct pci_dev *pdev = to_pci_dev(dev_d); ++	struct orinoco_private *priv = pci_get_drvdata(pdev); ++	struct net_device *dev = priv->ndev; ++	int err; ++ ++	err = request_irq(pdev->irq, orinoco_interrupt, IRQF_SHARED, ++			  dev->name, priv); ++	if (err) { ++		printk(KERN_ERR "%s: cannot re-allocate IRQ on resume\n", ++		       dev->name); ++		return -EBUSY; ++	} ++ ++	return orinoco_up(priv); ++} ++ ++static SIMPLE_DEV_PM_OPS(orinoco_pci_pm_ops, ++			 orinoco_pci_suspend, ++			 orinoco_pci_resume); ++ ++#endif /* _ORINOCO_PCI_H */ +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/orinoco_plx.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/orinoco_plx.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/orinoco_plx.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/orinoco_plx.c	2025-08-03 15:01:59.365130178 +0200 +@@ -0,0 +1,362 @@ ++/* orinoco_plx.c ++ * ++ * Driver for Prism II devices which would usually be driven by orinoco_cs, ++ * but are connected to the PCI bus by a PLX9052. ++ * ++ * Current maintainers are: ++ *	Pavel Roskin <proski AT gnu.org> ++ * and	David Gibson <hermes AT gibson.dropbear.id.au> ++ * ++ * (C) Copyright David Gibson, IBM Corp. 2001-2003. ++ * Copyright (C) 2001 Daniel Barlow ++ * ++ * The contents of this file are subject to the Mozilla Public License ++ * Version 1.1 (the "License"); you may not use this file except in ++ * compliance with the License. You may obtain a copy of the License ++ * at http://www.mozilla.org/MPL/ ++ * ++ * Software distributed under the License is distributed on an "AS IS" ++ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See ++ * the License for the specific language governing rights and ++ * limitations under the License. ++ * ++ * Alternatively, the contents of this file may be used under the ++ * terms of the GNU General Public License version 2 (the "GPL"), in ++ * which case the provisions of the GPL are applicable instead of the ++ * above.  If you wish to allow the use of your version of this file ++ * only under the terms of the GPL and not to allow others to use your ++ * version of this file under the MPL, indicate your decision by ++ * deleting the provisions above and replace them with the notice and ++ * other provisions required by the GPL.  If you do not delete the ++ * provisions above, a recipient may use your version of this file ++ * under either the MPL or the GPL. ++ * ++ * Here's the general details on how the PLX9052 adapter works: ++ * ++ * - Two PCI I/O address spaces, one 0x80 long which contains the ++ * PLX9052 registers, and one that's 0x40 long mapped to the PCMCIA ++ * slot I/O address space. ++ * ++ * - One PCI memory address space, mapped to the PCMCIA attribute space ++ * (containing the CIS). ++ * ++ * Using the later, you can read through the CIS data to make sure the ++ * card is compatible with the driver. Keep in mind that the PCMCIA ++ * spec specifies the CIS as the lower 8 bits of each word read from ++ * the CIS, so to read the bytes of the CIS, read every other byte ++ * (0,2,4,...). Passing that test, you need to enable the I/O address ++ * space on the PCMCIA card via the PCMCIA COR register. This is the ++ * first byte following the CIS. In my case (which may not have any ++ * relation to what's on the PRISM2 cards), COR was at offset 0x800 ++ * within the PCI memory space. Write 0x41 to the COR register to ++ * enable I/O mode and to select level triggered interrupts. To ++ * confirm you actually succeeded, read the COR register back and make ++ * sure it actually got set to 0x41, in case you have an unexpected ++ * card inserted. ++ * ++ * Following that, you can treat the second PCI I/O address space (the ++ * one that's not 0x80 in length) as the PCMCIA I/O space. ++ * ++ * Note that in the Eumitcom's source for their drivers, they register ++ * the interrupt as edge triggered when registering it with the ++ * Windows kernel. I don't recall how to register edge triggered on ++ * Linux (if it can be done at all). But in some experimentation, I ++ * don't see much operational difference between using either ++ * interrupt mode. Don't mess with the interrupt mode in the COR ++ * register though, as the PLX9052 wants level triggers with the way ++ * the serial EEPROM configures it on the WL11000. ++ * ++ * There's some other little quirks related to timing that I bumped ++ * into, but I don't recall right now. Also, there's two variants of ++ * the WL11000 I've seen, revision A1 and T2. These seem to differ ++ * slightly in the timings configured in the wait-state generator in ++ * the PLX9052. There have also been some comments from Eumitcom that ++ * cards shouldn't be hot swapped, apparently due to risk of cooking ++ * the PLX9052. I'm unsure why they believe this, as I can't see ++ * anything in the design that would really cause a problem, except ++ * for crashing drivers not written to expect it. And having developed ++ * drivers for the WL11000, I'd say it's quite tricky to write code ++ * that will successfully deal with a hot unplug. Very odd things ++ * happen on the I/O side of things. But anyway, be warned. Despite ++ * that, I've hot-swapped a number of times during debugging and ++ * driver development for various reasons (stuck WAIT# line after the ++ * radio card's firmware locks up). ++ */ ++ ++#define DRIVER_NAME "orinoco_plx" ++#define PFX DRIVER_NAME ": " ++ ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/delay.h> ++#include <linux/pci.h> ++#include <pcmcia/cisreg.h> ++ ++#include "orinoco.h" ++#include "orinoco_pci.h" ++ ++#define COR_OFFSET	(0x3e0)	/* COR attribute offset of Prism2 PC card */ ++#define COR_VALUE	(COR_LEVEL_REQ | COR_FUNC_ENA) /* Enable PC card with interrupt in level trigger */ ++#define COR_RESET     (0x80)	/* reset bit in the COR register */ ++#define PLX_RESET_TIME	(500)	/* milliseconds */ ++ ++#define PLX_INTCSR		0x4c /* Interrupt Control & Status Register */ ++#define PLX_INTCSR_INTEN	(1 << 6) /* Interrupt Enable bit */ ++ ++/* ++ * Do a soft reset of the card using the Configuration Option Register ++ */ ++static int orinoco_plx_cor_reset(struct orinoco_private *priv) ++{ ++	struct hermes *hw = &priv->hw; ++	struct orinoco_pci_card *card = priv->card; ++	unsigned long timeout; ++	u16 reg; ++ ++	iowrite8(COR_VALUE | COR_RESET, card->attr_io + COR_OFFSET); ++	mdelay(1); ++ ++	iowrite8(COR_VALUE, card->attr_io + COR_OFFSET); ++	mdelay(1); ++ ++	/* Just in case, wait more until the card is no longer busy */ ++	timeout = jiffies + msecs_to_jiffies(PLX_RESET_TIME); ++	reg = hermes_read_regn(hw, CMD); ++	while (time_before(jiffies, timeout) && (reg & HERMES_CMD_BUSY)) { ++		mdelay(1); ++		reg = hermes_read_regn(hw, CMD); ++	} ++ ++	/* Still busy? */ ++	if (reg & HERMES_CMD_BUSY) { ++		printk(KERN_ERR PFX "Busy timeout\n"); ++		return -ETIMEDOUT; ++	} ++ ++	return 0; ++} ++ ++static int orinoco_plx_hw_init(struct orinoco_pci_card *card) ++{ ++	int i; ++	u32 csr_reg; ++	static const u8 cis_magic[] = { ++		0x01, 0x03, 0x00, 0x00, 0xff, 0x17, 0x04, 0x67 ++	}; ++ ++	printk(KERN_DEBUG PFX "CIS: "); ++	for (i = 0; i < 16; i++) ++		printk("%02X:", ioread8(card->attr_io + (i << 1))); ++	printk("\n"); ++ ++	/* Verify whether a supported PC card is present */ ++	/* FIXME: we probably need to be smarted about this */ ++	for (i = 0; i < sizeof(cis_magic); i++) { ++		if (cis_magic[i] != ioread8(card->attr_io + (i << 1))) { ++			printk(KERN_ERR PFX "The CIS value of Prism2 PC " ++			       "card is unexpected\n"); ++			return -ENODEV; ++		} ++	} ++ ++	/* bjoern: We need to tell the card to enable interrupts, in ++	   case the serial eprom didn't do this already.  See the ++	   PLX9052 data book, p8-1 and 8-24 for reference. */ ++	csr_reg = ioread32(card->bridge_io + PLX_INTCSR); ++	if (!(csr_reg & PLX_INTCSR_INTEN)) { ++		csr_reg |= PLX_INTCSR_INTEN; ++		iowrite32(csr_reg, card->bridge_io + PLX_INTCSR); ++		csr_reg = ioread32(card->bridge_io + PLX_INTCSR); ++		if (!(csr_reg & PLX_INTCSR_INTEN)) { ++			printk(KERN_ERR PFX "Cannot enable interrupts\n"); ++			return -EIO; ++		} ++	} ++ ++	return 0; ++} ++ ++static int orinoco_plx_init_one(struct pci_dev *pdev, ++				const struct pci_device_id *ent) ++{ ++	int err; ++	struct orinoco_private *priv; ++	struct orinoco_pci_card *card; ++	void __iomem *hermes_io, *attr_io, *bridge_io; ++ ++	err = pci_enable_device(pdev); ++	if (err) { ++		printk(KERN_ERR PFX "Cannot enable PCI device\n"); ++		return err; ++	} ++ ++	err = pci_request_regions(pdev, DRIVER_NAME); ++	if (err) { ++		printk(KERN_ERR PFX "Cannot obtain PCI resources\n"); ++		goto fail_resources; ++	} ++ ++	bridge_io = pci_iomap(pdev, 1, 0); ++	if (!bridge_io) { ++		printk(KERN_ERR PFX "Cannot map bridge registers\n"); ++		err = -EIO; ++		goto fail_map_bridge; ++	} ++ ++	attr_io = pci_iomap(pdev, 2, 0); ++	if (!attr_io) { ++		printk(KERN_ERR PFX "Cannot map PCMCIA attributes\n"); ++		err = -EIO; ++		goto fail_map_attr; ++	} ++ ++	hermes_io = pci_iomap(pdev, 3, 0); ++	if (!hermes_io) { ++		printk(KERN_ERR PFX "Cannot map chipset registers\n"); ++		err = -EIO; ++		goto fail_map_hermes; ++	} ++ ++	/* Allocate network device */ ++	priv = alloc_orinocodev(sizeof(*card), &pdev->dev, ++				orinoco_plx_cor_reset, NULL); ++	if (!priv) { ++		printk(KERN_ERR PFX "Cannot allocate network device\n"); ++		err = -ENOMEM; ++		goto fail_alloc; ++	} ++ ++	card = priv->card; ++	card->bridge_io = bridge_io; ++	card->attr_io = attr_io; ++ ++	hermes_struct_init(&priv->hw, hermes_io, HERMES_16BIT_REGSPACING); ++ ++	err = request_irq(pdev->irq, orinoco_interrupt, IRQF_SHARED, ++			  DRIVER_NAME, priv); ++	if (err) { ++		printk(KERN_ERR PFX "Cannot allocate IRQ %d\n", pdev->irq); ++		err = -EBUSY; ++		goto fail_irq; ++	} ++ ++	err = orinoco_plx_hw_init(card); ++	if (err) { ++		printk(KERN_ERR PFX "Hardware initialization failed\n"); ++		goto fail; ++	} ++ ++	err = orinoco_plx_cor_reset(priv); ++	if (err) { ++		printk(KERN_ERR PFX "Initial reset failed\n"); ++		goto fail; ++	} ++ ++	err = orinoco_init(priv); ++	if (err) { ++		printk(KERN_ERR PFX "orinoco_init() failed\n"); ++		goto fail; ++	} ++ ++	err = orinoco_if_add(priv, 0, 0, NULL); ++	if (err) { ++		printk(KERN_ERR PFX "orinoco_if_add() failed\n"); ++		goto fail_wiphy; ++	} ++ ++	pci_set_drvdata(pdev, priv); ++ ++	return 0; ++ ++ fail_wiphy: ++	wiphy_unregister(priv_to_wiphy(priv)); ++ fail: ++	free_irq(pdev->irq, priv); ++ ++ fail_irq: ++	free_orinocodev(priv); ++ ++ fail_alloc: ++	pci_iounmap(pdev, hermes_io); ++ ++ fail_map_hermes: ++	pci_iounmap(pdev, attr_io); ++ ++ fail_map_attr: ++	pci_iounmap(pdev, bridge_io); ++ ++ fail_map_bridge: ++	pci_release_regions(pdev); ++ ++ fail_resources: ++	pci_disable_device(pdev); ++ ++	return err; ++} ++ ++static void orinoco_plx_remove_one(struct pci_dev *pdev) ++{ ++	struct orinoco_private *priv = pci_get_drvdata(pdev); ++	struct orinoco_pci_card *card = priv->card; ++ ++	orinoco_if_del(priv); ++	wiphy_unregister(priv_to_wiphy(priv)); ++	free_irq(pdev->irq, priv); ++	free_orinocodev(priv); ++	pci_iounmap(pdev, priv->hw.iobase); ++	pci_iounmap(pdev, card->attr_io); ++	pci_iounmap(pdev, card->bridge_io); ++	pci_release_regions(pdev); ++	pci_disable_device(pdev); ++} ++ ++static const struct pci_device_id orinoco_plx_id_table[] = { ++	{0x111a, 0x1023, PCI_ANY_ID, PCI_ANY_ID,},	/* Siemens SpeedStream SS1023 */ ++	{0x1385, 0x4100, PCI_ANY_ID, PCI_ANY_ID,},	/* Netgear MA301 */ ++	{0x15e8, 0x0130, PCI_ANY_ID, PCI_ANY_ID,},	/* Correga  - does this work? */ ++	{0x1638, 0x1100, PCI_ANY_ID, PCI_ANY_ID,},	/* SMC EZConnect SMC2602W, ++							   Eumitcom PCI WL11000, ++							   Addtron AWA-100 */ ++	{0x16ab, 0x1100, PCI_ANY_ID, PCI_ANY_ID,},	/* Global Sun Tech GL24110P */ ++	{0x16ab, 0x1101, PCI_ANY_ID, PCI_ANY_ID,},	/* Reported working, but unknown */ ++	{0x16ab, 0x1102, PCI_ANY_ID, PCI_ANY_ID,},	/* Linksys WDT11 */ ++	{0x16ec, 0x3685, PCI_ANY_ID, PCI_ANY_ID,},	/* USR 2415 */ ++	{0xec80, 0xec00, PCI_ANY_ID, PCI_ANY_ID,},	/* Belkin F5D6000 tested by ++							   Brendan W. McAdams <rit AT jacked-in.org> */ ++	{0x10b7, 0x7770, PCI_ANY_ID, PCI_ANY_ID,},	/* 3Com AirConnect PCI tested by ++							   Damien Persohn <damien AT persohn.net> */ ++	{0,}, ++}; ++ ++MODULE_DEVICE_TABLE(pci, orinoco_plx_id_table); ++ ++static struct pci_driver orinoco_plx_driver = { ++	.name		= DRIVER_NAME, ++	.id_table	= orinoco_plx_id_table, ++	.probe		= orinoco_plx_init_one, ++	.remove		= orinoco_plx_remove_one, ++	.driver.pm	= &orinoco_pci_pm_ops, ++}; ++ ++static char version[] __initdata = DRIVER_NAME " " DRIVER_VERSION ++	" (Pavel Roskin <proski@gnu.org>," ++	" David Gibson <hermes@gibson.dropbear.id.au>," ++	" Daniel Barlow <dan@telent.net>)"; ++MODULE_AUTHOR("Daniel Barlow <dan@telent.net>"); ++MODULE_DESCRIPTION("Driver for wireless LAN cards using the PLX9052 PCI bridge"); ++MODULE_LICENSE("Dual MPL/GPL"); ++ ++static int __init orinoco_plx_init(void) ++{ ++	printk(KERN_DEBUG "%s\n", version); ++	return pci_register_driver(&orinoco_plx_driver); ++} ++ ++static void __exit orinoco_plx_exit(void) ++{ ++	pci_unregister_driver(&orinoco_plx_driver); ++} ++ ++module_init(orinoco_plx_init); ++module_exit(orinoco_plx_exit); +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/orinoco_tmd.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/orinoco_tmd.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/orinoco_tmd.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/orinoco_tmd.c	2025-08-03 15:01:59.365130178 +0200 +@@ -0,0 +1,237 @@ ++/* orinoco_tmd.c ++ * ++ * Driver for Prism II devices which would usually be driven by orinoco_cs, ++ * but are connected to the PCI bus by a TMD7160. ++ * ++ * Copyright (C) 2003 Joerg Dorchain <joerg AT dorchain.net> ++ * based heavily upon orinoco_plx.c Copyright (C) 2001 Daniel Barlow ++ * ++ * The contents of this file are subject to the Mozilla Public License ++ * Version 1.1 (the "License"); you may not use this file except in ++ * compliance with the License. You may obtain a copy of the License ++ * at http://www.mozilla.org/MPL/ ++ * ++ * Software distributed under the License is distributed on an "AS IS" ++ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See ++ * the License for the specific language governing rights and ++ * limitations under the License. ++ * ++ * Alternatively, the contents of this file may be used under the ++ * terms of the GNU General Public License version 2 (the "GPL"), in ++ * which case the provisions of the GPL are applicable instead of the ++ * above.  If you wish to allow the use of your version of this file ++ * only under the terms of the GPL and not to allow others to use your ++ * version of this file under the MPL, indicate your decision by ++ * deleting the provisions above and replace them with the notice and ++ * other provisions required by the GPL.  If you do not delete the ++ * provisions above, a recipient may use your version of this file ++ * under either the MPL or the GPL. ++ * ++ * The actual driving is done by main.c, this is just resource ++ * allocation stuff. ++ * ++ * This driver is modeled after the orinoco_plx driver. The main ++ * difference is that the TMD chip has only IO port ranges and doesn't ++ * provide access to the PCMCIA attribute space. ++ * ++ * Pheecom sells cards with the TMD chip as "ASIC version" ++ */ ++ ++#define DRIVER_NAME "orinoco_tmd" ++#define PFX DRIVER_NAME ": " ++ ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/delay.h> ++#include <linux/pci.h> ++#include <pcmcia/cisreg.h> ++ ++#include "orinoco.h" ++#include "orinoco_pci.h" ++ ++#define COR_VALUE	(COR_LEVEL_REQ | COR_FUNC_ENA) /* Enable PC card with interrupt in level trigger */ ++#define COR_RESET     (0x80)	/* reset bit in the COR register */ ++#define TMD_RESET_TIME	(500)	/* milliseconds */ ++ ++/* ++ * Do a soft reset of the card using the Configuration Option Register ++ */ ++static int orinoco_tmd_cor_reset(struct orinoco_private *priv) ++{ ++	struct hermes *hw = &priv->hw; ++	struct orinoco_pci_card *card = priv->card; ++	unsigned long timeout; ++	u16 reg; ++ ++	iowrite8(COR_VALUE | COR_RESET, card->bridge_io); ++	mdelay(1); ++ ++	iowrite8(COR_VALUE, card->bridge_io); ++	mdelay(1); ++ ++	/* Just in case, wait more until the card is no longer busy */ ++	timeout = jiffies + msecs_to_jiffies(TMD_RESET_TIME); ++	reg = hermes_read_regn(hw, CMD); ++	while (time_before(jiffies, timeout) && (reg & HERMES_CMD_BUSY)) { ++		mdelay(1); ++		reg = hermes_read_regn(hw, CMD); ++	} ++ ++	/* Still busy? */ ++	if (reg & HERMES_CMD_BUSY) { ++		printk(KERN_ERR PFX "Busy timeout\n"); ++		return -ETIMEDOUT; ++	} ++ ++	return 0; ++} ++ ++ ++static int orinoco_tmd_init_one(struct pci_dev *pdev, ++				const struct pci_device_id *ent) ++{ ++	int err; ++	struct orinoco_private *priv; ++	struct orinoco_pci_card *card; ++	void __iomem *hermes_io, *bridge_io; ++ ++	err = pci_enable_device(pdev); ++	if (err) { ++		printk(KERN_ERR PFX "Cannot enable PCI device\n"); ++		return err; ++	} ++ ++	err = pci_request_regions(pdev, DRIVER_NAME); ++	if (err) { ++		printk(KERN_ERR PFX "Cannot obtain PCI resources\n"); ++		goto fail_resources; ++	} ++ ++	bridge_io = pci_iomap(pdev, 1, 0); ++	if (!bridge_io) { ++		printk(KERN_ERR PFX "Cannot map bridge registers\n"); ++		err = -EIO; ++		goto fail_map_bridge; ++	} ++ ++	hermes_io = pci_iomap(pdev, 2, 0); ++	if (!hermes_io) { ++		printk(KERN_ERR PFX "Cannot map chipset registers\n"); ++		err = -EIO; ++		goto fail_map_hermes; ++	} ++ ++	/* Allocate network device */ ++	priv = alloc_orinocodev(sizeof(*card), &pdev->dev, ++				orinoco_tmd_cor_reset, NULL); ++	if (!priv) { ++		printk(KERN_ERR PFX "Cannot allocate network device\n"); ++		err = -ENOMEM; ++		goto fail_alloc; ++	} ++ ++	card = priv->card; ++	card->bridge_io = bridge_io; ++ ++	hermes_struct_init(&priv->hw, hermes_io, HERMES_16BIT_REGSPACING); ++ ++	err = request_irq(pdev->irq, orinoco_interrupt, IRQF_SHARED, ++			  DRIVER_NAME, priv); ++	if (err) { ++		printk(KERN_ERR PFX "Cannot allocate IRQ %d\n", pdev->irq); ++		err = -EBUSY; ++		goto fail_irq; ++	} ++ ++	err = orinoco_tmd_cor_reset(priv); ++	if (err) { ++		printk(KERN_ERR PFX "Initial reset failed\n"); ++		goto fail; ++	} ++ ++	err = orinoco_init(priv); ++	if (err) { ++		printk(KERN_ERR PFX "orinoco_init() failed\n"); ++		goto fail; ++	} ++ ++	err = orinoco_if_add(priv, 0, 0, NULL); ++	if (err) { ++		printk(KERN_ERR PFX "orinoco_if_add() failed\n"); ++		goto fail; ++	} ++ ++	pci_set_drvdata(pdev, priv); ++ ++	return 0; ++ ++ fail: ++	free_irq(pdev->irq, priv); ++ ++ fail_irq: ++	free_orinocodev(priv); ++ ++ fail_alloc: ++	pci_iounmap(pdev, hermes_io); ++ ++ fail_map_hermes: ++	pci_iounmap(pdev, bridge_io); ++ ++ fail_map_bridge: ++	pci_release_regions(pdev); ++ ++ fail_resources: ++	pci_disable_device(pdev); ++ ++	return err; ++} ++ ++static void orinoco_tmd_remove_one(struct pci_dev *pdev) ++{ ++	struct orinoco_private *priv = pci_get_drvdata(pdev); ++	struct orinoco_pci_card *card = priv->card; ++ ++	orinoco_if_del(priv); ++	free_irq(pdev->irq, priv); ++	free_orinocodev(priv); ++	pci_iounmap(pdev, priv->hw.iobase); ++	pci_iounmap(pdev, card->bridge_io); ++	pci_release_regions(pdev); ++	pci_disable_device(pdev); ++} ++ ++static const struct pci_device_id orinoco_tmd_id_table[] = { ++	{0x15e8, 0x0131, PCI_ANY_ID, PCI_ANY_ID,},      /* NDC and OEMs, e.g. pheecom */ ++	{0,}, ++}; ++ ++MODULE_DEVICE_TABLE(pci, orinoco_tmd_id_table); ++ ++static struct pci_driver orinoco_tmd_driver = { ++	.name		= DRIVER_NAME, ++	.id_table	= orinoco_tmd_id_table, ++	.probe		= orinoco_tmd_init_one, ++	.remove		= orinoco_tmd_remove_one, ++	.driver.pm	= &orinoco_pci_pm_ops, ++}; ++ ++static char version[] __initdata = DRIVER_NAME " " DRIVER_VERSION ++	" (Joerg Dorchain <joerg@dorchain.net>)"; ++MODULE_AUTHOR("Joerg Dorchain <joerg@dorchain.net>"); ++MODULE_DESCRIPTION("Driver for wireless LAN cards using the TMD7160 PCI bridge"); ++MODULE_LICENSE("Dual MPL/GPL"); ++ ++static int __init orinoco_tmd_init(void) ++{ ++	printk(KERN_DEBUG "%s\n", version); ++	return pci_register_driver(&orinoco_tmd_driver); ++} ++ ++static void __exit orinoco_tmd_exit(void) ++{ ++	pci_unregister_driver(&orinoco_tmd_driver); ++} ++ ++module_init(orinoco_tmd_init); ++module_exit(orinoco_tmd_exit); +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/orinoco_usb.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/orinoco_usb.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/orinoco_usb.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/orinoco_usb.c	2025-08-03 15:01:59.365130178 +0200 +@@ -0,0 +1,1787 @@ ++/* ++ * USB Orinoco driver ++ * ++ * Copyright (c) 2003 Manuel Estrada Sainz ++ * ++ * The contents of this file are subject to the Mozilla Public License ++ * Version 1.1 (the "License"); you may not use this file except in ++ * compliance with the License. You may obtain a copy of the License ++ * at http://www.mozilla.org/MPL/ ++ * ++ * Software distributed under the License is distributed on an "AS IS" ++ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See ++ * the License for the specific language governing rights and ++ * limitations under the License. ++ * ++ * Alternatively, the contents of this file may be used under the ++ * terms of the GNU General Public License version 2 (the "GPL"), in ++ * which case the provisions of the GPL are applicable instead of the ++ * above.  If you wish to allow the use of your version of this file ++ * only under the terms of the GPL and not to allow others to use your ++ * version of this file under the MPL, indicate your decision by ++ * deleting the provisions above and replace them with the notice and ++ * other provisions required by the GPL.  If you do not delete the ++ * provisions above, a recipient may use your version of this file ++ * under either the MPL or the GPL. ++ * ++ * Queueing code based on linux-wlan-ng 0.2.1-pre5 ++ * ++ * Copyright (C) 1999 AbsoluteValue Systems, Inc.  All Rights Reserved. ++ * ++ *	The license is the same as above. ++ * ++ * Initialy based on USB Skeleton driver - 0.7 ++ * ++ * Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com) ++ * ++ *	This program is free software; you can redistribute it and/or ++ *	modify it under the terms of the GNU General Public License as ++ *	published by the Free Software Foundation; either version 2 of ++ *	the License, or (at your option) any later version. ++ * ++ * NOTE: The original USB Skeleton driver is GPL, but all that code is ++ * gone so MPL/GPL applies. ++ */ ++ ++#define DRIVER_NAME "orinoco_usb" ++#define PFX DRIVER_NAME ": " ++ ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/sched.h> ++#include <linux/signal.h> ++#include <linux/errno.h> ++#include <linux/poll.h> ++#include <linux/slab.h> ++#include <linux/fcntl.h> ++#include <linux/spinlock.h> ++#include <linux/list.h> ++#include <linux/usb.h> ++#include <linux/timer.h> ++ ++#include <linux/netdevice.h> ++#include <linux/if_arp.h> ++#include <linux/etherdevice.h> ++#include <linux/wireless.h> ++#include <linux/firmware.h> ++#include <linux/refcount.h> ++ ++#include "mic.h" ++#include "orinoco.h" ++ ++#ifndef URB_ASYNC_UNLINK ++#define URB_ASYNC_UNLINK 0 ++#endif ++ ++struct header_struct { ++	/* 802.3 */ ++	u8 dest[ETH_ALEN]; ++	u8 src[ETH_ALEN]; ++	__be16 len; ++	/* 802.2 */ ++	u8 dsap; ++	u8 ssap; ++	u8 ctrl; ++	/* SNAP */ ++	u8 oui[3]; ++	__be16 ethertype; ++} __packed; ++ ++struct ez_usb_fw { ++	u16 size; ++	const u8 *code; ++}; ++ ++static struct ez_usb_fw firmware = { ++	.size = 0, ++	.code = NULL, ++}; ++ ++/* Debugging macros */ ++#undef err ++#define err(format, arg...) \ ++	do { printk(KERN_ERR PFX format "\n", ## arg); } while (0) ++ ++MODULE_FIRMWARE("orinoco_ezusb_fw"); ++ ++/* ++ * Under some conditions, the card gets stuck and stops paying attention ++ * to the world (i.e. data communication stalls) until we do something to ++ * it.  Sending an INQ_TALLIES command seems to be enough and should be ++ * harmless otherwise.  This behaviour has been observed when using the ++ * driver on a systemimager client during installation.  In the past a ++ * timer was used to send INQ_TALLIES commands when there was no other ++ * activity, but it was troublesome and was removed. ++ */ ++ ++#define USB_COMPAQ_VENDOR_ID     0x049f /* Compaq Computer Corp. */ ++#define USB_COMPAQ_WL215_ID      0x001f /* Compaq WL215 USB Adapter */ ++#define USB_COMPAQ_W200_ID       0x0076 /* Compaq W200 USB Adapter */ ++#define USB_HP_WL215_ID          0x0082 /* Compaq WL215 USB Adapter */ ++ ++#define USB_MELCO_VENDOR_ID      0x0411 ++#define USB_BUFFALO_L11_ID       0x0006 /* BUFFALO WLI-USB-L11 */ ++#define USB_BUFFALO_L11G_WR_ID   0x000B /* BUFFALO WLI-USB-L11G-WR */ ++#define USB_BUFFALO_L11G_ID      0x000D /* BUFFALO WLI-USB-L11G */ ++ ++#define USB_LUCENT_VENDOR_ID     0x047E /* Lucent Technologies */ ++#define USB_LUCENT_ORINOCO_ID    0x0300 /* Lucent/Agere Orinoco USB Client */ ++ ++#define USB_AVAYA8_VENDOR_ID     0x0D98 ++#define USB_AVAYAE_VENDOR_ID     0x0D9E ++#define USB_AVAYA_WIRELESS_ID    0x0300 /* Avaya USB Wireless Card */ ++ ++#define USB_AGERE_VENDOR_ID      0x0D4E /* Agere Systems */ ++#define USB_AGERE_MODEL0801_ID   0x1000 /* USB Wireless Card Model 0801 */ ++#define USB_AGERE_MODEL0802_ID   0x1001 /* USB Wireless Card Model 0802 */ ++#define USB_AGERE_REBRANDED_ID   0x047A /* USB WLAN Card */ ++ ++#define USB_ELSA_VENDOR_ID       0x05CC ++#define USB_ELSA_AIRLANCER_ID    0x3100 /* ELSA AirLancer USB-11 */ ++ ++#define USB_LEGEND_VENDOR_ID     0x0E7C ++#define USB_LEGEND_JOYNET_ID     0x0300 /* Joynet USB WLAN Card */ ++ ++#define USB_SAMSUNG_VENDOR_ID    0x04E8 ++#define USB_SAMSUNG_SEW2001U1_ID 0x5002 /* Samsung SEW-2001u Card */ ++#define USB_SAMSUNG_SEW2001U2_ID 0x5B11 /* Samsung SEW-2001u Card */ ++#define USB_SAMSUNG_SEW2003U_ID  0x7011 /* Samsung SEW-2003U Card */ ++ ++#define USB_IGATE_VENDOR_ID      0x0681 ++#define USB_IGATE_IGATE_11M_ID   0x0012 /* I-GATE 11M USB Card */ ++ ++#define USB_FUJITSU_VENDOR_ID    0x0BF8 ++#define USB_FUJITSU_E1100_ID     0x1002 /* connect2AIR WLAN E-1100 USB */ ++ ++#define USB_2WIRE_VENDOR_ID      0x1630 ++#define USB_2WIRE_WIRELESS_ID    0xff81 /* 2Wire USB Wireless adapter */ ++ ++ ++#define EZUSB_REQUEST_FW_TRANS		0xA0 ++#define EZUSB_REQUEST_TRIGGER		0xAA ++#define EZUSB_REQUEST_TRIG_AC		0xAC ++#define EZUSB_CPUCS_REG			0x7F92 ++ ++#define EZUSB_RID_TX			0x0700 ++#define EZUSB_RID_RX			0x0701 ++#define EZUSB_RID_INIT1			0x0702 ++#define EZUSB_RID_ACK			0x0710 ++#define EZUSB_RID_READ_PDA		0x0800 ++#define EZUSB_RID_PROG_INIT		0x0852 ++#define EZUSB_RID_PROG_SET_ADDR		0x0853 ++#define EZUSB_RID_PROG_BYTES		0x0854 ++#define EZUSB_RID_PROG_END		0x0855 ++#define EZUSB_RID_DOCMD			0x0860 ++ ++/* Recognize info frames */ ++#define EZUSB_IS_INFO(id)		((id >= 0xF000) && (id <= 0xF2FF)) ++ ++#define EZUSB_MAGIC			0x0210 ++ ++#define EZUSB_FRAME_DATA		1 ++#define EZUSB_FRAME_CONTROL		2 ++ ++#define DEF_TIMEOUT			(3 * HZ) ++ ++#define BULK_BUF_SIZE			2048 ++ ++#define MAX_DL_SIZE (BULK_BUF_SIZE - sizeof(struct ezusb_packet)) ++ ++#define FW_BUF_SIZE			64 ++#define FW_VAR_OFFSET_PTR		0x359 ++#define FW_VAR_VALUE			0 ++#define FW_HOLE_START			0x100 ++#define FW_HOLE_END			0x300 ++ ++struct ezusb_packet { ++	__le16 magic;		/* 0x0210 */ ++	u8 req_reply_count; ++	u8 ans_reply_count; ++	__le16 frame_type;	/* 0x01 for data frames, 0x02 otherwise */ ++	__le16 size;		/* transport size */ ++	__le16 crc;		/* CRC up to here */ ++	__le16 hermes_len; ++	__le16 hermes_rid; ++	u8 data[]; ++} __packed; ++ ++/* Table of devices that work or may work with this driver */ ++static const struct usb_device_id ezusb_table[] = { ++	{USB_DEVICE(USB_COMPAQ_VENDOR_ID, USB_COMPAQ_WL215_ID)}, ++	{USB_DEVICE(USB_COMPAQ_VENDOR_ID, USB_HP_WL215_ID)}, ++	{USB_DEVICE(USB_COMPAQ_VENDOR_ID, USB_COMPAQ_W200_ID)}, ++	{USB_DEVICE(USB_MELCO_VENDOR_ID, USB_BUFFALO_L11_ID)}, ++	{USB_DEVICE(USB_MELCO_VENDOR_ID, USB_BUFFALO_L11G_WR_ID)}, ++	{USB_DEVICE(USB_MELCO_VENDOR_ID, USB_BUFFALO_L11G_ID)}, ++	{USB_DEVICE(USB_LUCENT_VENDOR_ID, USB_LUCENT_ORINOCO_ID)}, ++	{USB_DEVICE(USB_AVAYA8_VENDOR_ID, USB_AVAYA_WIRELESS_ID)}, ++	{USB_DEVICE(USB_AVAYAE_VENDOR_ID, USB_AVAYA_WIRELESS_ID)}, ++	{USB_DEVICE(USB_AGERE_VENDOR_ID, USB_AGERE_MODEL0801_ID)}, ++	{USB_DEVICE(USB_AGERE_VENDOR_ID, USB_AGERE_MODEL0802_ID)}, ++	{USB_DEVICE(USB_ELSA_VENDOR_ID, USB_ELSA_AIRLANCER_ID)}, ++	{USB_DEVICE(USB_LEGEND_VENDOR_ID, USB_LEGEND_JOYNET_ID)}, ++	{USB_DEVICE_VER(USB_SAMSUNG_VENDOR_ID, USB_SAMSUNG_SEW2001U1_ID, ++			0, 0)}, ++	{USB_DEVICE(USB_SAMSUNG_VENDOR_ID, USB_SAMSUNG_SEW2001U2_ID)}, ++	{USB_DEVICE(USB_SAMSUNG_VENDOR_ID, USB_SAMSUNG_SEW2003U_ID)}, ++	{USB_DEVICE(USB_IGATE_VENDOR_ID, USB_IGATE_IGATE_11M_ID)}, ++	{USB_DEVICE(USB_FUJITSU_VENDOR_ID, USB_FUJITSU_E1100_ID)}, ++	{USB_DEVICE(USB_2WIRE_VENDOR_ID, USB_2WIRE_WIRELESS_ID)}, ++	{USB_DEVICE(USB_AGERE_VENDOR_ID, USB_AGERE_REBRANDED_ID)}, ++	{}			/* Terminating entry */ ++}; ++ ++MODULE_DEVICE_TABLE(usb, ezusb_table); ++ ++/* Structure to hold all of our device specific stuff */ ++struct ezusb_priv { ++	struct usb_device *udev; ++	struct net_device *dev; ++	struct mutex mtx; ++	spinlock_t req_lock; ++	struct list_head req_pending; ++	struct list_head req_active; ++	spinlock_t reply_count_lock; ++	u16 hermes_reg_fake[0x40]; ++	u8 *bap_buf; ++	struct urb *read_urb; ++	int read_pipe; ++	int write_pipe; ++	u8 reply_count; ++}; ++ ++enum ezusb_state { ++	EZUSB_CTX_START, ++	EZUSB_CTX_QUEUED, ++	EZUSB_CTX_REQ_SUBMITTED, ++	EZUSB_CTX_REQ_COMPLETE, ++	EZUSB_CTX_RESP_RECEIVED, ++	EZUSB_CTX_REQ_TIMEOUT, ++	EZUSB_CTX_REQ_FAILED, ++	EZUSB_CTX_RESP_TIMEOUT, ++	EZUSB_CTX_REQSUBMIT_FAIL, ++	EZUSB_CTX_COMPLETE, ++}; ++ ++struct request_context { ++	struct list_head list; ++	refcount_t refcount; ++	struct completion done;	/* Signals that CTX is dead */ ++	int killed; ++	struct urb *outurb;	/* OUT for req pkt */ ++	struct ezusb_priv *upriv; ++	struct ezusb_packet *buf; ++	int buf_length; ++	struct timer_list timer;	/* Timeout handling */ ++	enum ezusb_state state;	/* Current state */ ++	/* the RID that we will wait for */ ++	u16 out_rid; ++	u16 in_rid; ++}; ++ ++ ++/* Forward declarations */ ++static void ezusb_ctx_complete(struct request_context *ctx); ++static void ezusb_req_queue_run(struct ezusb_priv *upriv); ++static void ezusb_bulk_in_callback(struct urb *urb); ++ ++static inline u8 ezusb_reply_inc(u8 count) ++{ ++	if (count < 0x7F) ++		return count + 1; ++	else ++		return 1; ++} ++ ++static void ezusb_request_context_put(struct request_context *ctx) ++{ ++	if (!refcount_dec_and_test(&ctx->refcount)) ++		return; ++ ++	WARN_ON(!ctx->done.done); ++	BUG_ON(ctx->outurb->status == -EINPROGRESS); ++	BUG_ON(timer_pending(&ctx->timer)); ++	usb_free_urb(ctx->outurb); ++	kfree(ctx->buf); ++	kfree(ctx); ++} ++ ++static inline void ezusb_mod_timer(struct ezusb_priv *upriv, ++				   struct timer_list *timer, ++				   unsigned long expire) ++{ ++	if (!upriv->udev) ++		return; ++	mod_timer(timer, expire); ++} ++ ++static void ezusb_request_timerfn(struct timer_list *t) ++{ ++	struct request_context *ctx = from_timer(ctx, t, timer); ++ ++	ctx->outurb->transfer_flags |= URB_ASYNC_UNLINK; ++	if (usb_unlink_urb(ctx->outurb) == -EINPROGRESS) { ++		ctx->state = EZUSB_CTX_REQ_TIMEOUT; ++	} else { ++		ctx->state = EZUSB_CTX_RESP_TIMEOUT; ++		dev_dbg(&ctx->outurb->dev->dev, "couldn't unlink\n"); ++		refcount_inc(&ctx->refcount); ++		ctx->killed = 1; ++		ezusb_ctx_complete(ctx); ++		ezusb_request_context_put(ctx); ++	} ++}; ++ ++static struct request_context *ezusb_alloc_ctx(struct ezusb_priv *upriv, ++					       u16 out_rid, u16 in_rid) ++{ ++	struct request_context *ctx; ++ ++	ctx = kzalloc(sizeof(*ctx), GFP_ATOMIC); ++	if (!ctx) ++		return NULL; ++ ++	ctx->buf = kmalloc(BULK_BUF_SIZE, GFP_ATOMIC); ++	if (!ctx->buf) { ++		kfree(ctx); ++		return NULL; ++	} ++	ctx->outurb = usb_alloc_urb(0, GFP_ATOMIC); ++	if (!ctx->outurb) { ++		kfree(ctx->buf); ++		kfree(ctx); ++		return NULL; ++	} ++ ++	ctx->upriv = upriv; ++	ctx->state = EZUSB_CTX_START; ++	ctx->out_rid = out_rid; ++	ctx->in_rid = in_rid; ++ ++	refcount_set(&ctx->refcount, 1); ++	init_completion(&ctx->done); ++ ++	timer_setup(&ctx->timer, ezusb_request_timerfn, 0); ++	return ctx; ++} ++ ++static void ezusb_ctx_complete(struct request_context *ctx) ++{ ++	struct ezusb_priv *upriv = ctx->upriv; ++	unsigned long flags; ++ ++	spin_lock_irqsave(&upriv->req_lock, flags); ++ ++	list_del_init(&ctx->list); ++	if (upriv->udev) { ++		spin_unlock_irqrestore(&upriv->req_lock, flags); ++		ezusb_req_queue_run(upriv); ++		spin_lock_irqsave(&upriv->req_lock, flags); ++	} ++ ++	switch (ctx->state) { ++	case EZUSB_CTX_COMPLETE: ++	case EZUSB_CTX_REQSUBMIT_FAIL: ++	case EZUSB_CTX_REQ_FAILED: ++	case EZUSB_CTX_REQ_TIMEOUT: ++	case EZUSB_CTX_RESP_TIMEOUT: ++		spin_unlock_irqrestore(&upriv->req_lock, flags); ++ ++		if ((ctx->out_rid == EZUSB_RID_TX) && upriv->dev) { ++			struct net_device *dev = upriv->dev; ++			struct net_device_stats *stats = &dev->stats; ++ ++			if (ctx->state != EZUSB_CTX_COMPLETE) ++				stats->tx_errors++; ++			else ++				stats->tx_packets++; ++ ++			netif_wake_queue(dev); ++		} ++		complete_all(&ctx->done); ++		ezusb_request_context_put(ctx); ++		break; ++ ++	default: ++		spin_unlock_irqrestore(&upriv->req_lock, flags); ++		if (!upriv->udev) { ++			/* This is normal, as all request contexts get flushed ++			 * when the device is disconnected */ ++			err("Called, CTX not terminating, but device gone"); ++			complete_all(&ctx->done); ++			ezusb_request_context_put(ctx); ++			break; ++		} ++ ++		err("Called, CTX not in terminating state."); ++		/* Things are really bad if this happens. Just leak ++		 * the CTX because it may still be linked to the ++		 * queue or the OUT urb may still be active. ++		 * Just leaking at least prevents an Oops or Panic. ++		 */ ++		break; ++	} ++} ++ ++/* ++ * ezusb_req_queue_run: ++ * Description: ++ *	Note: Only one active CTX at any one time, because there's no ++ *	other (reliable) way to match the response URB to the correct ++ *	CTX. ++ */ ++static void ezusb_req_queue_run(struct ezusb_priv *upriv) ++{ ++	unsigned long flags; ++	struct request_context *ctx; ++	int result; ++ ++	spin_lock_irqsave(&upriv->req_lock, flags); ++ ++	if (!list_empty(&upriv->req_active)) ++		goto unlock; ++ ++	if (list_empty(&upriv->req_pending)) ++		goto unlock; ++ ++	ctx = ++	    list_entry(upriv->req_pending.next, struct request_context, ++		       list); ++ ++	if (!ctx->upriv->udev) ++		goto unlock; ++ ++	/* We need to split this off to avoid a race condition */ ++	list_move_tail(&ctx->list, &upriv->req_active); ++ ++	if (ctx->state == EZUSB_CTX_QUEUED) { ++		refcount_inc(&ctx->refcount); ++		result = usb_submit_urb(ctx->outurb, GFP_ATOMIC); ++		if (result) { ++			ctx->state = EZUSB_CTX_REQSUBMIT_FAIL; ++ ++			spin_unlock_irqrestore(&upriv->req_lock, flags); ++ ++			err("Fatal, failed to submit command urb." ++			    " error=%d\n", result); ++ ++			ezusb_ctx_complete(ctx); ++			ezusb_request_context_put(ctx); ++			goto done; ++		} ++ ++		ctx->state = EZUSB_CTX_REQ_SUBMITTED; ++		ezusb_mod_timer(ctx->upriv, &ctx->timer, ++				jiffies + DEF_TIMEOUT); ++	} ++ ++ unlock: ++	spin_unlock_irqrestore(&upriv->req_lock, flags); ++ ++ done: ++	return; ++} ++ ++static void ezusb_req_enqueue_run(struct ezusb_priv *upriv, ++				  struct request_context *ctx) ++{ ++	unsigned long flags; ++ ++	spin_lock_irqsave(&upriv->req_lock, flags); ++ ++	if (!ctx->upriv->udev) { ++		spin_unlock_irqrestore(&upriv->req_lock, flags); ++		goto done; ++	} ++	refcount_inc(&ctx->refcount); ++	list_add_tail(&ctx->list, &upriv->req_pending); ++	spin_unlock_irqrestore(&upriv->req_lock, flags); ++ ++	ctx->state = EZUSB_CTX_QUEUED; ++	ezusb_req_queue_run(upriv); ++ ++ done: ++	return; ++} ++ ++static void ezusb_request_out_callback(struct urb *urb) ++{ ++	unsigned long flags; ++	enum ezusb_state state; ++	struct request_context *ctx = urb->context; ++	struct ezusb_priv *upriv = ctx->upriv; ++ ++	spin_lock_irqsave(&upriv->req_lock, flags); ++ ++	del_timer(&ctx->timer); ++ ++	if (ctx->killed) { ++		spin_unlock_irqrestore(&upriv->req_lock, flags); ++		pr_warn("interrupt called with dead ctx\n"); ++		goto out; ++	} ++ ++	state = ctx->state; ++ ++	if (urb->status == 0) { ++		switch (state) { ++		case EZUSB_CTX_REQ_SUBMITTED: ++			if (ctx->in_rid) { ++				ctx->state = EZUSB_CTX_REQ_COMPLETE; ++				/* reply URB still pending */ ++				ezusb_mod_timer(upriv, &ctx->timer, ++						jiffies + DEF_TIMEOUT); ++				spin_unlock_irqrestore(&upriv->req_lock, ++						       flags); ++				break; ++			} ++			fallthrough; ++		case EZUSB_CTX_RESP_RECEIVED: ++			/* IN already received before this OUT-ACK */ ++			ctx->state = EZUSB_CTX_COMPLETE; ++			spin_unlock_irqrestore(&upriv->req_lock, flags); ++			ezusb_ctx_complete(ctx); ++			break; ++ ++		default: ++			spin_unlock_irqrestore(&upriv->req_lock, flags); ++			err("Unexpected state(0x%x, %d) in OUT URB", ++			    state, urb->status); ++			break; ++		} ++	} else { ++		/* If someone cancels the OUT URB then its status ++		 * should be either -ECONNRESET or -ENOENT. ++		 */ ++		switch (state) { ++		case EZUSB_CTX_REQ_SUBMITTED: ++		case EZUSB_CTX_RESP_RECEIVED: ++			ctx->state = EZUSB_CTX_REQ_FAILED; ++			fallthrough; ++ ++		case EZUSB_CTX_REQ_FAILED: ++		case EZUSB_CTX_REQ_TIMEOUT: ++			spin_unlock_irqrestore(&upriv->req_lock, flags); ++ ++			ezusb_ctx_complete(ctx); ++			break; ++ ++		default: ++			spin_unlock_irqrestore(&upriv->req_lock, flags); ++ ++			err("Unexpected state(0x%x, %d) in OUT URB", ++			    state, urb->status); ++			break; ++		} ++	} ++ out: ++	ezusb_request_context_put(ctx); ++} ++ ++static void ezusb_request_in_callback(struct ezusb_priv *upriv, ++				      struct urb *urb) ++{ ++	struct ezusb_packet *ans = urb->transfer_buffer; ++	struct request_context *ctx = NULL; ++	enum ezusb_state state; ++	unsigned long flags; ++ ++	/* Find the CTX on the active queue that requested this URB */ ++	spin_lock_irqsave(&upriv->req_lock, flags); ++	if (upriv->udev) { ++		struct list_head *item; ++ ++		list_for_each(item, &upriv->req_active) { ++			struct request_context *c; ++			int reply_count; ++ ++			c = list_entry(item, struct request_context, list); ++			reply_count = ++			    ezusb_reply_inc(c->buf->req_reply_count); ++			if ((ans->ans_reply_count == reply_count) ++			    && (le16_to_cpu(ans->hermes_rid) == c->in_rid)) { ++				ctx = c; ++				break; ++			} ++			netdev_dbg(upriv->dev, "Skipped (0x%x/0x%x) (%d/%d)\n", ++				   le16_to_cpu(ans->hermes_rid), c->in_rid, ++				   ans->ans_reply_count, reply_count); ++		} ++	} ++ ++	if (ctx == NULL) { ++		spin_unlock_irqrestore(&upriv->req_lock, flags); ++		err("%s: got unexpected RID: 0x%04X", __func__, ++		    le16_to_cpu(ans->hermes_rid)); ++		ezusb_req_queue_run(upriv); ++		return; ++	} ++ ++	/* The data we want is in the in buffer, exchange */ ++	urb->transfer_buffer = ctx->buf; ++	ctx->buf = (void *) ans; ++	ctx->buf_length = urb->actual_length; ++ ++	state = ctx->state; ++	switch (state) { ++	case EZUSB_CTX_REQ_SUBMITTED: ++		/* We have received our response URB before ++		 * our request has been acknowledged. Do NOT ++		 * destroy our CTX yet, because our OUT URB ++		 * is still alive ... ++		 */ ++		ctx->state = EZUSB_CTX_RESP_RECEIVED; ++		spin_unlock_irqrestore(&upriv->req_lock, flags); ++ ++		/* Let the machine continue running. */ ++		break; ++ ++	case EZUSB_CTX_REQ_COMPLETE: ++		/* This is the usual path: our request ++		 * has already been acknowledged, and ++		 * we have now received the reply. ++		 */ ++		ctx->state = EZUSB_CTX_COMPLETE; ++ ++		/* Stop the intimer */ ++		del_timer(&ctx->timer); ++		spin_unlock_irqrestore(&upriv->req_lock, flags); ++ ++		/* Call the completion handler */ ++		ezusb_ctx_complete(ctx); ++		break; ++ ++	default: ++		spin_unlock_irqrestore(&upriv->req_lock, flags); ++ ++		pr_warn("Matched IN URB, unexpected context state(0x%x)\n", ++			state); ++		/* Throw this CTX away and try submitting another */ ++		del_timer(&ctx->timer); ++		ctx->outurb->transfer_flags |= URB_ASYNC_UNLINK; ++		usb_unlink_urb(ctx->outurb); ++		ezusb_req_queue_run(upriv); ++		break; ++	}			/* switch */ ++} ++ ++typedef void (*ezusb_ctx_wait)(struct ezusb_priv *, struct request_context *); ++ ++static void ezusb_req_ctx_wait_compl(struct ezusb_priv *upriv, ++				     struct request_context *ctx) ++{ ++	switch (ctx->state) { ++	case EZUSB_CTX_QUEUED: ++	case EZUSB_CTX_REQ_SUBMITTED: ++	case EZUSB_CTX_REQ_COMPLETE: ++	case EZUSB_CTX_RESP_RECEIVED: ++		wait_for_completion(&ctx->done); ++		break; ++	default: ++		/* Done or failed - nothing to wait for */ ++		break; ++	} ++} ++ ++static void ezusb_req_ctx_wait_poll(struct ezusb_priv *upriv, ++				    struct request_context *ctx) ++{ ++	int msecs; ++ ++	switch (ctx->state) { ++	case EZUSB_CTX_QUEUED: ++	case EZUSB_CTX_REQ_SUBMITTED: ++	case EZUSB_CTX_REQ_COMPLETE: ++	case EZUSB_CTX_RESP_RECEIVED: ++		/* If we get called from a timer or with our lock acquired, then ++		 * we can't wait for the completion and have to poll. This won't ++		 * happen if the USB controller completes the URB requests in ++		 * BH. ++		 */ ++		msecs = DEF_TIMEOUT * (1000 / HZ); ++ ++		while (!try_wait_for_completion(&ctx->done) && msecs--) ++			udelay(1000); ++		break; ++	default: ++		/* Done or failed - nothing to wait for */ ++		break; ++	} ++} ++ ++static void ezusb_req_ctx_wait_skip(struct ezusb_priv *upriv, ++				    struct request_context *ctx) ++{ ++	WARN(1, "Shouldn't be invoked for in_rid\n"); ++} ++ ++static inline u16 build_crc(struct ezusb_packet *data) ++{ ++	u16 crc = 0; ++	u8 *bytes = (u8 *)data; ++	int i; ++ ++	for (i = 0; i < 8; i++) ++		crc = (crc << 1) + bytes[i]; ++ ++	return crc; ++} ++ ++/* ++ * ezusb_fill_req: ++ * ++ * if data == NULL and length > 0 the data is assumed to be already in ++ * the target buffer and only the header is filled. ++ * ++ */ ++static int ezusb_fill_req(struct ezusb_packet *req, u16 length, u16 rid, ++			  const void *data, u16 frame_type, u8 reply_count) ++{ ++	int total_size = sizeof(*req) + length; ++ ++	BUG_ON(total_size > BULK_BUF_SIZE); ++ ++	req->magic = cpu_to_le16(EZUSB_MAGIC); ++	req->req_reply_count = reply_count; ++	req->ans_reply_count = 0; ++	req->frame_type = cpu_to_le16(frame_type); ++	req->size = cpu_to_le16(length + 4); ++	req->crc = cpu_to_le16(build_crc(req)); ++	req->hermes_len = cpu_to_le16(HERMES_BYTES_TO_RECLEN(length)); ++	req->hermes_rid = cpu_to_le16(rid); ++	if (data) ++		memcpy(req->data, data, length); ++	return total_size; ++} ++ ++static int ezusb_submit_in_urb(struct ezusb_priv *upriv) ++{ ++	int retval = 0; ++	void *cur_buf = upriv->read_urb->transfer_buffer; ++ ++	if (upriv->read_urb->status == -EINPROGRESS) { ++		netdev_dbg(upriv->dev, "urb busy, not resubmiting\n"); ++		retval = -EBUSY; ++		goto exit; ++	} ++	usb_fill_bulk_urb(upriv->read_urb, upriv->udev, upriv->read_pipe, ++			  cur_buf, BULK_BUF_SIZE, ++			  ezusb_bulk_in_callback, upriv); ++	upriv->read_urb->transfer_flags = 0; ++	retval = usb_submit_urb(upriv->read_urb, GFP_ATOMIC); ++	if (retval) ++		err("%s submit failed %d", __func__, retval); ++ ++ exit: ++	return retval; ++} ++ ++static inline int ezusb_8051_cpucs(struct ezusb_priv *upriv, int reset) ++{ ++	int ret; ++	u8 *res_val = NULL; ++ ++	if (!upriv->udev) { ++		err("%s: !upriv->udev", __func__); ++		return -EFAULT; ++	} ++ ++	res_val = kmalloc(sizeof(*res_val), GFP_KERNEL); ++ ++	if (!res_val) ++		return -ENOMEM; ++ ++	*res_val = reset;	/* avoid argument promotion */ ++ ++	ret =  usb_control_msg(upriv->udev, ++			       usb_sndctrlpipe(upriv->udev, 0), ++			       EZUSB_REQUEST_FW_TRANS, ++			       USB_TYPE_VENDOR | USB_RECIP_DEVICE | ++			       USB_DIR_OUT, EZUSB_CPUCS_REG, 0, res_val, ++			       sizeof(*res_val), DEF_TIMEOUT); ++ ++	kfree(res_val); ++ ++	return ret; ++} ++ ++static int ezusb_firmware_download(struct ezusb_priv *upriv, ++				   struct ez_usb_fw *fw) ++{ ++	u8 *fw_buffer; ++	int retval, addr; ++	int variant_offset; ++ ++	fw_buffer = kmalloc(FW_BUF_SIZE, GFP_KERNEL); ++	if (!fw_buffer) { ++		printk(KERN_ERR PFX "Out of memory for firmware buffer.\n"); ++		return -ENOMEM; ++	} ++	/* ++	 * This byte is 1 and should be replaced with 0.  The offset is ++	 * 0x10AD in version 0.0.6.  The byte in question should follow ++	 * the end of the code pointed to by the jump in the beginning ++	 * of the firmware.  Also, it is read by code located at 0x358. ++	 */ ++	variant_offset = be16_to_cpup((__be16 *) &fw->code[FW_VAR_OFFSET_PTR]); ++	if (variant_offset >= fw->size) { ++		printk(KERN_ERR PFX "Invalid firmware variant offset: " ++		       "0x%04x\n", variant_offset); ++		retval = -EINVAL; ++		goto fail; ++	} ++ ++	retval = ezusb_8051_cpucs(upriv, 1); ++	if (retval < 0) ++		goto fail; ++	for (addr = 0; addr < fw->size; addr += FW_BUF_SIZE) { ++		/* 0x100-0x300 should be left alone, it contains card ++		 * specific data, like USB enumeration information */ ++		if ((addr >= FW_HOLE_START) && (addr < FW_HOLE_END)) ++			continue; ++ ++		memcpy(fw_buffer, &fw->code[addr], FW_BUF_SIZE); ++		if (variant_offset >= addr && ++		    variant_offset < addr + FW_BUF_SIZE) { ++			netdev_dbg(upriv->dev, ++				   "Patching card_variant byte at 0x%04X\n", ++				   variant_offset); ++			fw_buffer[variant_offset - addr] = FW_VAR_VALUE; ++		} ++		retval = usb_control_msg(upriv->udev, ++					 usb_sndctrlpipe(upriv->udev, 0), ++					 EZUSB_REQUEST_FW_TRANS, ++					 USB_TYPE_VENDOR | USB_RECIP_DEVICE ++					 | USB_DIR_OUT, ++					 addr, 0x0, ++					 fw_buffer, FW_BUF_SIZE, ++					 DEF_TIMEOUT); ++ ++		if (retval < 0) ++			goto fail; ++	} ++	retval = ezusb_8051_cpucs(upriv, 0); ++	if (retval < 0) ++		goto fail; ++ ++	goto exit; ++ fail: ++	printk(KERN_ERR PFX "Firmware download failed, error %d\n", ++	       retval); ++ exit: ++	kfree(fw_buffer); ++	return retval; ++} ++ ++static int ezusb_access_ltv(struct ezusb_priv *upriv, ++			    struct request_context *ctx, ++			    u16 length, const void *data, u16 frame_type, ++			    void *ans_buff, unsigned ans_size, u16 *ans_length, ++			    ezusb_ctx_wait ezusb_ctx_wait_func) ++{ ++	int req_size; ++	int retval = 0; ++	enum ezusb_state state; ++ ++	if (!upriv->udev) { ++		retval = -ENODEV; ++		goto exit; ++	} ++ ++	if (upriv->read_urb->status != -EINPROGRESS) ++		err("%s: in urb not pending", __func__); ++ ++	/* protect upriv->reply_count, guarantee sequential numbers */ ++	spin_lock_bh(&upriv->reply_count_lock); ++	req_size = ezusb_fill_req(ctx->buf, length, ctx->out_rid, data, ++				  frame_type, upriv->reply_count); ++	usb_fill_bulk_urb(ctx->outurb, upriv->udev, upriv->write_pipe, ++			  ctx->buf, req_size, ++			  ezusb_request_out_callback, ctx); ++ ++	if (ctx->in_rid) ++		upriv->reply_count = ezusb_reply_inc(upriv->reply_count); ++ ++	ezusb_req_enqueue_run(upriv, ctx); ++ ++	spin_unlock_bh(&upriv->reply_count_lock); ++ ++	if (ctx->in_rid) ++		ezusb_ctx_wait_func(upriv, ctx); ++ ++	state = ctx->state; ++	switch (state) { ++	case EZUSB_CTX_COMPLETE: ++		retval = ctx->outurb->status; ++		break; ++ ++	case EZUSB_CTX_QUEUED: ++	case EZUSB_CTX_REQ_SUBMITTED: ++		if (!ctx->in_rid) ++			break; ++		fallthrough; ++	default: ++		err("%s: Unexpected context state %d", __func__, ++		    state); ++		fallthrough; ++	case EZUSB_CTX_REQ_TIMEOUT: ++	case EZUSB_CTX_REQ_FAILED: ++	case EZUSB_CTX_RESP_TIMEOUT: ++	case EZUSB_CTX_REQSUBMIT_FAIL: ++		printk(KERN_ERR PFX "Access failed, resetting (state %d," ++		       " reply_count %d)\n", state, upriv->reply_count); ++		upriv->reply_count = 0; ++		if (state == EZUSB_CTX_REQ_TIMEOUT ++		    || state == EZUSB_CTX_RESP_TIMEOUT) { ++			printk(KERN_ERR PFX "ctx timed out\n"); ++			retval = -ETIMEDOUT; ++		} else { ++			printk(KERN_ERR PFX "ctx failed\n"); ++			retval = -EFAULT; ++		} ++		goto exit; ++	} ++	if (ctx->in_rid) { ++		struct ezusb_packet *ans = ctx->buf; ++		unsigned exp_len; ++ ++		if (ans->hermes_len != 0) ++			exp_len = le16_to_cpu(ans->hermes_len) * 2 + 12; ++		else ++			exp_len = 14; ++ ++		if (exp_len != ctx->buf_length) { ++			err("%s: length mismatch for RID 0x%04x: " ++			    "expected %d, got %d", __func__, ++			    ctx->in_rid, exp_len, ctx->buf_length); ++			retval = -EIO; ++			goto exit; ++		} ++ ++		if (ans_buff) ++			memcpy(ans_buff, ans->data, min(exp_len, ans_size)); ++		if (ans_length) ++			*ans_length = le16_to_cpu(ans->hermes_len); ++	} ++ exit: ++	ezusb_request_context_put(ctx); ++	return retval; ++} ++ ++static int __ezusb_write_ltv(struct hermes *hw, int bap, u16 rid, ++			   u16 length, const void *data, ++			   ezusb_ctx_wait ezusb_ctx_wait_func) ++{ ++	struct ezusb_priv *upriv = hw->priv; ++	u16 frame_type; ++	struct request_context *ctx; ++ ++	if (length == 0) ++		return -EINVAL; ++ ++	length = HERMES_RECLEN_TO_BYTES(length); ++ ++	/* On memory mapped devices HERMES_RID_CNFGROUPADDRESSES can be ++	 * set to be empty, but the USB bridge doesn't like it */ ++	if (length == 0) ++		return 0; ++ ++	ctx = ezusb_alloc_ctx(upriv, rid, EZUSB_RID_ACK); ++	if (!ctx) ++		return -ENOMEM; ++ ++	if (rid == EZUSB_RID_TX) ++		frame_type = EZUSB_FRAME_DATA; ++	else ++		frame_type = EZUSB_FRAME_CONTROL; ++ ++	return ezusb_access_ltv(upriv, ctx, length, data, frame_type, ++				NULL, 0, NULL, ezusb_ctx_wait_func); ++} ++ ++static int ezusb_write_ltv(struct hermes *hw, int bap, u16 rid, ++			   u16 length, const void *data) ++{ ++	return __ezusb_write_ltv(hw, bap, rid, length, data, ++				 ezusb_req_ctx_wait_poll); ++} ++ ++static int __ezusb_read_ltv(struct hermes *hw, int bap, u16 rid, ++			    unsigned bufsize, u16 *length, void *buf, ++			    ezusb_ctx_wait ezusb_ctx_wait_func) ++ ++{ ++	struct ezusb_priv *upriv = hw->priv; ++	struct request_context *ctx; ++ ++	if (bufsize % 2) ++		return -EINVAL; ++ ++	ctx = ezusb_alloc_ctx(upriv, rid, rid); ++	if (!ctx) ++		return -ENOMEM; ++ ++	return ezusb_access_ltv(upriv, ctx, 0, NULL, EZUSB_FRAME_CONTROL, ++				buf, bufsize, length, ezusb_req_ctx_wait_poll); ++} ++ ++static int ezusb_read_ltv(struct hermes *hw, int bap, u16 rid, ++			    unsigned bufsize, u16 *length, void *buf) ++{ ++	return __ezusb_read_ltv(hw, bap, rid, bufsize, length, buf, ++				ezusb_req_ctx_wait_poll); ++} ++ ++static int ezusb_read_ltv_preempt(struct hermes *hw, int bap, u16 rid, ++				  unsigned bufsize, u16 *length, void *buf) ++{ ++	return __ezusb_read_ltv(hw, bap, rid, bufsize, length, buf, ++				ezusb_req_ctx_wait_compl); ++} ++ ++static int ezusb_doicmd_wait(struct hermes *hw, u16 cmd, u16 parm0, u16 parm1, ++			     u16 parm2, struct hermes_response *resp) ++{ ++	WARN_ON_ONCE(1); ++	return -EINVAL; ++} ++ ++static int __ezusb_docmd_wait(struct hermes *hw, u16 cmd, u16 parm0, ++			    struct hermes_response *resp, ++			    ezusb_ctx_wait ezusb_ctx_wait_func) ++{ ++	struct ezusb_priv *upriv = hw->priv; ++	struct request_context *ctx; ++ ++	__le16 data[4] = { ++		cpu_to_le16(cmd), ++		cpu_to_le16(parm0), ++		0, ++		0, ++	}; ++	netdev_dbg(upriv->dev, "0x%04X, parm0 0x%04X\n", cmd, parm0); ++	ctx = ezusb_alloc_ctx(upriv, EZUSB_RID_DOCMD, EZUSB_RID_ACK); ++	if (!ctx) ++		return -ENOMEM; ++ ++	return ezusb_access_ltv(upriv, ctx, sizeof(data), &data, ++				EZUSB_FRAME_CONTROL, NULL, 0, NULL, ++				ezusb_ctx_wait_func); ++} ++ ++static int ezusb_docmd_wait(struct hermes *hw, u16 cmd, u16 parm0, ++			    struct hermes_response *resp) ++{ ++	return __ezusb_docmd_wait(hw, cmd, parm0, resp, ezusb_req_ctx_wait_poll); ++} ++ ++static int ezusb_bap_pread(struct hermes *hw, int bap, ++			   void *buf, int len, u16 id, u16 offset) ++{ ++	struct ezusb_priv *upriv = hw->priv; ++	struct ezusb_packet *ans = (void *) upriv->read_urb->transfer_buffer; ++	int actual_length = upriv->read_urb->actual_length; ++ ++	if (id == EZUSB_RID_RX) { ++		if ((sizeof(*ans) + offset + len) > actual_length) { ++			printk(KERN_ERR PFX "BAP read beyond buffer end " ++			       "in rx frame\n"); ++			return -EINVAL; ++		} ++		memcpy(buf, ans->data + offset, len); ++		return 0; ++	} ++ ++	if (EZUSB_IS_INFO(id)) { ++		/* Include 4 bytes for length/type */ ++		if ((sizeof(*ans) + offset + len - 4) > actual_length) { ++			printk(KERN_ERR PFX "BAP read beyond buffer end " ++			       "in info frame\n"); ++			return -EFAULT; ++		} ++		memcpy(buf, ans->data + offset - 4, len); ++	} else { ++		printk(KERN_ERR PFX "Unexpected fid 0x%04x\n", id); ++		return -EINVAL; ++	} ++ ++	return 0; ++} ++ ++static int ezusb_read_pda(struct hermes *hw, __le16 *pda, ++			  u32 pda_addr, u16 pda_len) ++{ ++	struct ezusb_priv *upriv = hw->priv; ++	struct request_context *ctx; ++	__le16 data[] = { ++		cpu_to_le16(pda_addr & 0xffff), ++		cpu_to_le16(pda_len - 4) ++	}; ++	ctx = ezusb_alloc_ctx(upriv, EZUSB_RID_READ_PDA, EZUSB_RID_READ_PDA); ++	if (!ctx) ++		return -ENOMEM; ++ ++	/* wl_lkm does not include PDA size in the PDA area. ++	 * We will pad the information into pda, so other routines ++	 * don't have to be modified */ ++	pda[0] = cpu_to_le16(pda_len - 2); ++	/* Includes CFG_PROD_DATA but not itself */ ++	pda[1] = cpu_to_le16(0x0800); /* CFG_PROD_DATA */ ++ ++	return ezusb_access_ltv(upriv, ctx, sizeof(data), &data, ++				EZUSB_FRAME_CONTROL, &pda[2], pda_len - 4, ++				NULL, ezusb_req_ctx_wait_compl); ++} ++ ++static int ezusb_program_init(struct hermes *hw, u32 entry_point) ++{ ++	struct ezusb_priv *upriv = hw->priv; ++	struct request_context *ctx; ++	__le32 data = cpu_to_le32(entry_point); ++ ++	ctx = ezusb_alloc_ctx(upriv, EZUSB_RID_PROG_INIT, EZUSB_RID_ACK); ++	if (!ctx) ++		return -ENOMEM; ++ ++	return ezusb_access_ltv(upriv, ctx, sizeof(data), &data, ++				EZUSB_FRAME_CONTROL, NULL, 0, NULL, ++				ezusb_req_ctx_wait_compl); ++} ++ ++static int ezusb_program_end(struct hermes *hw) ++{ ++	struct ezusb_priv *upriv = hw->priv; ++	struct request_context *ctx; ++ ++	ctx = ezusb_alloc_ctx(upriv, EZUSB_RID_PROG_END, EZUSB_RID_ACK); ++	if (!ctx) ++		return -ENOMEM; ++ ++	return ezusb_access_ltv(upriv, ctx, 0, NULL, ++				EZUSB_FRAME_CONTROL, NULL, 0, NULL, ++				ezusb_req_ctx_wait_compl); ++} ++ ++static int ezusb_program_bytes(struct hermes *hw, const char *buf, ++			       u32 addr, u32 len) ++{ ++	struct ezusb_priv *upriv = hw->priv; ++	struct request_context *ctx; ++	__le32 data = cpu_to_le32(addr); ++	int err; ++ ++	ctx = ezusb_alloc_ctx(upriv, EZUSB_RID_PROG_SET_ADDR, EZUSB_RID_ACK); ++	if (!ctx) ++		return -ENOMEM; ++ ++	err = ezusb_access_ltv(upriv, ctx, sizeof(data), &data, ++			       EZUSB_FRAME_CONTROL, NULL, 0, NULL, ++			       ezusb_req_ctx_wait_compl); ++	if (err) ++		return err; ++ ++	ctx = ezusb_alloc_ctx(upriv, EZUSB_RID_PROG_BYTES, EZUSB_RID_ACK); ++	if (!ctx) ++		return -ENOMEM; ++ ++	return ezusb_access_ltv(upriv, ctx, len, buf, ++				EZUSB_FRAME_CONTROL, NULL, 0, NULL, ++				ezusb_req_ctx_wait_compl); ++} ++ ++static int ezusb_program(struct hermes *hw, const char *buf, ++			 u32 addr, u32 len) ++{ ++	u32 ch_addr; ++	u32 ch_len; ++	int err = 0; ++ ++	/* We can only send 2048 bytes out of the bulk xmit at a time, ++	 * so we have to split any programming into chunks of <2048 ++	 * bytes. */ ++ ++	ch_len = (len < MAX_DL_SIZE) ? len : MAX_DL_SIZE; ++	ch_addr = addr; ++ ++	while (ch_addr < (addr + len)) { ++		pr_debug("Programming subblock of length %d " ++			 "to address 0x%08x. Data @ %p\n", ++			 ch_len, ch_addr, &buf[ch_addr - addr]); ++ ++		err = ezusb_program_bytes(hw, &buf[ch_addr - addr], ++					  ch_addr, ch_len); ++		if (err) ++			break; ++ ++		ch_addr += ch_len; ++		ch_len = ((addr + len - ch_addr) < MAX_DL_SIZE) ? ++			(addr + len - ch_addr) : MAX_DL_SIZE; ++	} ++ ++	return err; ++} ++ ++static netdev_tx_t ezusb_xmit(struct sk_buff *skb, struct net_device *dev) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	struct net_device_stats *stats = &dev->stats; ++	struct ezusb_priv *upriv = priv->card; ++	u8 mic[MICHAEL_MIC_LEN + 1]; ++	int err = 0; ++	int tx_control; ++	unsigned long flags; ++	struct request_context *ctx; ++	u8 *buf; ++	int tx_size; ++ ++	if (!netif_running(dev)) { ++		printk(KERN_ERR "%s: Tx on stopped device!\n", ++		       dev->name); ++		return NETDEV_TX_BUSY; ++	} ++ ++	if (netif_queue_stopped(dev)) { ++		printk(KERN_DEBUG "%s: Tx while transmitter busy!\n", ++		       dev->name); ++		return NETDEV_TX_BUSY; ++	} ++ ++	if (orinoco_lock(priv, &flags) != 0) { ++		printk(KERN_ERR ++		       "%s: ezusb_xmit() called while hw_unavailable\n", ++		       dev->name); ++		return NETDEV_TX_BUSY; ++	} ++ ++	if (!netif_carrier_ok(dev) || ++	    (priv->iw_mode == NL80211_IFTYPE_MONITOR)) { ++		/* Oops, the firmware hasn't established a connection, ++		   silently drop the packet (this seems to be the ++		   safest approach). */ ++		goto drop; ++	} ++ ++	/* Check packet length */ ++	if (skb->len < ETH_HLEN) ++		goto drop; ++ ++	tx_control = 0; ++ ++	err = orinoco_process_xmit_skb(skb, dev, priv, &tx_control, ++				       &mic[0]); ++	if (err) ++		goto drop; ++ ++	ctx = ezusb_alloc_ctx(upriv, EZUSB_RID_TX, 0); ++	if (!ctx) ++		goto drop; ++ ++	memset(ctx->buf, 0, BULK_BUF_SIZE); ++	buf = ctx->buf->data; ++ ++	{ ++		__le16 *tx_cntl = (__le16 *)buf; ++		*tx_cntl = cpu_to_le16(tx_control); ++		buf += sizeof(*tx_cntl); ++	} ++ ++	memcpy(buf, skb->data, skb->len); ++	buf += skb->len; ++ ++	if (tx_control & HERMES_TXCTRL_MIC) { ++		u8 *m = mic; ++		/* Mic has been offset so it can be copied to an even ++		 * address. We're copying eveything anyway, so we ++		 * don't need to copy that first byte. */ ++		if (skb->len % 2) ++			m++; ++		memcpy(buf, m, MICHAEL_MIC_LEN); ++		buf += MICHAEL_MIC_LEN; ++	} ++ ++	/* Finally, we actually initiate the send */ ++	netif_stop_queue(dev); ++ ++	/* The card may behave better if we send evenly sized usb transfers */ ++	tx_size = ALIGN(buf - ctx->buf->data, 2); ++ ++	err = ezusb_access_ltv(upriv, ctx, tx_size, NULL, ++			       EZUSB_FRAME_DATA, NULL, 0, NULL, ++			       ezusb_req_ctx_wait_skip); ++ ++	if (err) { ++		netif_start_queue(dev); ++		if (net_ratelimit()) ++			printk(KERN_ERR "%s: Error %d transmitting packet\n", ++				dev->name, err); ++		goto busy; ++	} ++ ++	netif_trans_update(dev); ++	stats->tx_bytes += skb->len; ++	goto ok; ++ ++ drop: ++	stats->tx_errors++; ++	stats->tx_dropped++; ++ ++ ok: ++	orinoco_unlock(priv, &flags); ++	dev_kfree_skb(skb); ++	return NETDEV_TX_OK; ++ ++ busy: ++	orinoco_unlock(priv, &flags); ++	return NETDEV_TX_BUSY; ++} ++ ++static int ezusb_allocate(struct hermes *hw, u16 size, u16 *fid) ++{ ++	*fid = EZUSB_RID_TX; ++	return 0; ++} ++ ++ ++static int ezusb_hard_reset(struct orinoco_private *priv) ++{ ++	struct ezusb_priv *upriv = priv->card; ++	int retval = ezusb_8051_cpucs(upriv, 1); ++ ++	if (retval < 0) { ++		err("Failed to reset"); ++		return retval; ++	} ++ ++	retval = ezusb_8051_cpucs(upriv, 0); ++	if (retval < 0) { ++		err("Failed to unreset"); ++		return retval; ++	} ++ ++	netdev_dbg(upriv->dev, "sending control message\n"); ++	retval = usb_control_msg(upriv->udev, ++				 usb_sndctrlpipe(upriv->udev, 0), ++				 EZUSB_REQUEST_TRIGGER, ++				 USB_TYPE_VENDOR | USB_RECIP_DEVICE | ++				 USB_DIR_OUT, 0x0, 0x0, NULL, 0, ++				 DEF_TIMEOUT); ++	if (retval < 0) { ++		err("EZUSB_REQUEST_TRIGGER failed retval %d", retval); ++		return retval; ++	} ++#if 0 ++	dbg("Sending EZUSB_REQUEST_TRIG_AC"); ++	retval = usb_control_msg(upriv->udev, ++				 usb_sndctrlpipe(upriv->udev, 0), ++				 EZUSB_REQUEST_TRIG_AC, ++				 USB_TYPE_VENDOR | USB_RECIP_DEVICE | ++				 USB_DIR_OUT, 0x00FA, 0x0, NULL, 0, ++				 DEF_TIMEOUT); ++	if (retval < 0) { ++		err("EZUSB_REQUEST_TRIG_AC failed retval %d", retval); ++		return retval; ++	} ++#endif ++ ++	return 0; ++} ++ ++ ++static int ezusb_init(struct hermes *hw) ++{ ++	struct ezusb_priv *upriv = hw->priv; ++	int retval; ++ ++	if (!upriv) ++		return -EINVAL; ++ ++	upriv->reply_count = 0; ++	/* Write the MAGIC number on the simulated registers to keep ++	 * orinoco.c happy */ ++	hermes_write_regn(hw, SWSUPPORT0, HERMES_MAGIC); ++	hermes_write_regn(hw, RXFID, EZUSB_RID_RX); ++ ++	usb_kill_urb(upriv->read_urb); ++	ezusb_submit_in_urb(upriv); ++ ++	retval = __ezusb_write_ltv(hw, 0, EZUSB_RID_INIT1, ++				 HERMES_BYTES_TO_RECLEN(2), "\x10\x00", ++				 ezusb_req_ctx_wait_compl); ++	if (retval < 0) { ++		printk(KERN_ERR PFX "EZUSB_RID_INIT1 error %d\n", retval); ++		return retval; ++	} ++ ++	retval = __ezusb_docmd_wait(hw, HERMES_CMD_INIT, 0, NULL, ++				    ezusb_req_ctx_wait_compl); ++	if (retval < 0) { ++		printk(KERN_ERR PFX "HERMES_CMD_INIT error %d\n", retval); ++		return retval; ++	} ++ ++	return 0; ++} ++ ++static void ezusb_bulk_in_callback(struct urb *urb) ++{ ++	struct ezusb_priv *upriv = (struct ezusb_priv *) urb->context; ++	struct ezusb_packet *ans = urb->transfer_buffer; ++	u16 crc; ++	u16 hermes_rid; ++ ++	if (upriv->udev == NULL) ++		return; ++ ++	if (urb->status == -ETIMEDOUT) { ++		/* When a device gets unplugged we get this every time ++		 * we resubmit, flooding the logs.  Since we don't use ++		 * USB timeouts, it shouldn't happen any other time*/ ++		pr_warn("%s: urb timed out, not resubmitting\n", __func__); ++		return; ++	} ++	if (urb->status == -ECONNABORTED) { ++		pr_warn("%s: connection abort, resubmitting urb\n", ++			__func__); ++		goto resubmit; ++	} ++	if ((urb->status == -EILSEQ) ++	    || (urb->status == -ENOENT) ++	    || (urb->status == -ECONNRESET)) { ++		netdev_dbg(upriv->dev, "status %d, not resubmiting\n", ++			   urb->status); ++		return; ++	} ++	if (urb->status) ++		netdev_dbg(upriv->dev, "status: %d length: %d\n", ++			   urb->status, urb->actual_length); ++	if (urb->actual_length < sizeof(*ans)) { ++		err("%s: short read, ignoring", __func__); ++		goto resubmit; ++	} ++	crc = build_crc(ans); ++	if (le16_to_cpu(ans->crc) != crc) { ++		err("CRC error, ignoring packet"); ++		goto resubmit; ++	} ++ ++	hermes_rid = le16_to_cpu(ans->hermes_rid); ++	if ((hermes_rid != EZUSB_RID_RX) && !EZUSB_IS_INFO(hermes_rid)) { ++		ezusb_request_in_callback(upriv, urb); ++	} else if (upriv->dev) { ++		struct net_device *dev = upriv->dev; ++		struct orinoco_private *priv = ndev_priv(dev); ++		struct hermes *hw = &priv->hw; ++ ++		if (hermes_rid == EZUSB_RID_RX) { ++			__orinoco_ev_rx(dev, hw); ++		} else { ++			hermes_write_regn(hw, INFOFID, ++					  le16_to_cpu(ans->hermes_rid)); ++			__orinoco_ev_info(dev, hw); ++		} ++	} ++ ++ resubmit: ++	if (upriv->udev) ++		ezusb_submit_in_urb(upriv); ++} ++ ++static inline void ezusb_delete(struct ezusb_priv *upriv) ++{ ++	struct list_head *item; ++	struct list_head *tmp_item; ++	unsigned long flags; ++ ++	BUG_ON(!upriv); ++ ++	mutex_lock(&upriv->mtx); ++ ++	upriv->udev = NULL;	/* No timer will be rearmed from here */ ++ ++	usb_kill_urb(upriv->read_urb); ++ ++	spin_lock_irqsave(&upriv->req_lock, flags); ++	list_for_each_safe(item, tmp_item, &upriv->req_active) { ++		struct request_context *ctx; ++		int err; ++ ++		ctx = list_entry(item, struct request_context, list); ++		refcount_inc(&ctx->refcount); ++ ++		ctx->outurb->transfer_flags |= URB_ASYNC_UNLINK; ++		err = usb_unlink_urb(ctx->outurb); ++ ++		spin_unlock_irqrestore(&upriv->req_lock, flags); ++		if (err == -EINPROGRESS) ++			wait_for_completion(&ctx->done); ++ ++		del_timer_sync(&ctx->timer); ++		/* FIXME: there is an slight chance for the irq handler to ++		 * be running */ ++		if (!list_empty(&ctx->list)) ++			ezusb_ctx_complete(ctx); ++ ++		ezusb_request_context_put(ctx); ++		spin_lock_irqsave(&upriv->req_lock, flags); ++	} ++	spin_unlock_irqrestore(&upriv->req_lock, flags); ++ ++	list_for_each_safe(item, tmp_item, &upriv->req_pending) ++	    ezusb_ctx_complete(list_entry(item, ++					  struct request_context, list)); ++ ++	if (upriv->read_urb && upriv->read_urb->status == -EINPROGRESS) ++		printk(KERN_ERR PFX "Some URB in progress\n"); ++ ++	mutex_unlock(&upriv->mtx); ++ ++	if (upriv->read_urb) { ++		kfree(upriv->read_urb->transfer_buffer); ++		usb_free_urb(upriv->read_urb); ++	} ++	kfree(upriv->bap_buf); ++	if (upriv->dev) { ++		struct orinoco_private *priv = ndev_priv(upriv->dev); ++		orinoco_if_del(priv); ++		wiphy_unregister(priv_to_wiphy(upriv)); ++		free_orinocodev(priv); ++	} ++} ++ ++static void ezusb_lock_irqsave(spinlock_t *lock, ++			       unsigned long *flags) __acquires(lock) ++{ ++	spin_lock_bh(lock); ++} ++ ++static void ezusb_unlock_irqrestore(spinlock_t *lock, ++				    unsigned long *flags) __releases(lock) ++{ ++	spin_unlock_bh(lock); ++} ++ ++static void ezusb_lock_irq(spinlock_t *lock) __acquires(lock) ++{ ++	spin_lock_bh(lock); ++} ++ ++static void ezusb_unlock_irq(spinlock_t *lock) __releases(lock) ++{ ++	spin_unlock_bh(lock); ++} ++ ++static const struct hermes_ops ezusb_ops = { ++	.init = ezusb_init, ++	.cmd_wait = ezusb_docmd_wait, ++	.init_cmd_wait = ezusb_doicmd_wait, ++	.allocate = ezusb_allocate, ++	.read_ltv = ezusb_read_ltv, ++	.read_ltv_pr = ezusb_read_ltv_preempt, ++	.write_ltv = ezusb_write_ltv, ++	.bap_pread = ezusb_bap_pread, ++	.read_pda = ezusb_read_pda, ++	.program_init = ezusb_program_init, ++	.program_end = ezusb_program_end, ++	.program = ezusb_program, ++	.lock_irqsave = ezusb_lock_irqsave, ++	.unlock_irqrestore = ezusb_unlock_irqrestore, ++	.lock_irq = ezusb_lock_irq, ++	.unlock_irq = ezusb_unlock_irq, ++}; ++ ++static const struct net_device_ops ezusb_netdev_ops = { ++	.ndo_open		= orinoco_open, ++	.ndo_stop		= orinoco_stop, ++	.ndo_start_xmit		= ezusb_xmit, ++	.ndo_set_rx_mode	= orinoco_set_multicast_list, ++	.ndo_change_mtu		= orinoco_change_mtu, ++	.ndo_set_mac_address	= eth_mac_addr, ++	.ndo_validate_addr	= eth_validate_addr, ++	.ndo_tx_timeout		= orinoco_tx_timeout, ++}; ++ ++static int ezusb_probe(struct usb_interface *interface, ++		       const struct usb_device_id *id) ++{ ++	struct usb_device *udev = interface_to_usbdev(interface); ++	struct orinoco_private *priv; ++	struct hermes *hw; ++	struct ezusb_priv *upriv = NULL; ++	struct usb_interface_descriptor *iface_desc; ++	struct usb_endpoint_descriptor *ep; ++	const struct firmware *fw_entry = NULL; ++	int retval = 0; ++	int i; ++ ++	priv = alloc_orinocodev(sizeof(*upriv), &udev->dev, ++				ezusb_hard_reset, NULL); ++	if (!priv) { ++		err("Couldn't allocate orinocodev"); ++		retval = -ENOMEM; ++		goto exit; ++	} ++ ++	hw = &priv->hw; ++ ++	upriv = priv->card; ++ ++	mutex_init(&upriv->mtx); ++	spin_lock_init(&upriv->reply_count_lock); ++ ++	spin_lock_init(&upriv->req_lock); ++	INIT_LIST_HEAD(&upriv->req_pending); ++	INIT_LIST_HEAD(&upriv->req_active); ++ ++	upriv->udev = udev; ++ ++	hw->iobase = (void __force __iomem *) &upriv->hermes_reg_fake; ++	hw->reg_spacing = HERMES_16BIT_REGSPACING; ++	hw->priv = upriv; ++	hw->ops = &ezusb_ops; ++ ++	/* set up the endpoint information */ ++	/* check out the endpoints */ ++ ++	iface_desc = &interface->cur_altsetting->desc; ++	for (i = 0; i < iface_desc->bNumEndpoints; ++i) { ++		ep = &interface->cur_altsetting->endpoint[i].desc; ++ ++		if (usb_endpoint_is_bulk_in(ep)) { ++			/* we found a bulk in endpoint */ ++			if (upriv->read_urb != NULL) { ++				pr_warn("Found a second bulk in ep, ignored\n"); ++				continue; ++			} ++ ++			upriv->read_urb = usb_alloc_urb(0, GFP_KERNEL); ++			if (!upriv->read_urb) ++				goto error; ++			if (le16_to_cpu(ep->wMaxPacketSize) != 64) ++				pr_warn("bulk in: wMaxPacketSize!= 64\n"); ++			if (ep->bEndpointAddress != (2 | USB_DIR_IN)) ++				pr_warn("bulk in: bEndpointAddress: %d\n", ++					ep->bEndpointAddress); ++			upriv->read_pipe = usb_rcvbulkpipe(udev, ++							 ep-> ++							 bEndpointAddress); ++			upriv->read_urb->transfer_buffer = ++			    kmalloc(BULK_BUF_SIZE, GFP_KERNEL); ++			if (!upriv->read_urb->transfer_buffer) { ++				err("Couldn't allocate IN buffer"); ++				goto error; ++			} ++		} ++ ++		if (usb_endpoint_is_bulk_out(ep)) { ++			/* we found a bulk out endpoint */ ++			if (upriv->bap_buf != NULL) { ++				pr_warn("Found a second bulk out ep, ignored\n"); ++				continue; ++			} ++ ++			if (le16_to_cpu(ep->wMaxPacketSize) != 64) ++				pr_warn("bulk out: wMaxPacketSize != 64\n"); ++			if (ep->bEndpointAddress != 2) ++				pr_warn("bulk out: bEndpointAddress: %d\n", ++					ep->bEndpointAddress); ++			upriv->write_pipe = usb_sndbulkpipe(udev, ++							  ep-> ++							  bEndpointAddress); ++			upriv->bap_buf = kmalloc(BULK_BUF_SIZE, GFP_KERNEL); ++			if (!upriv->bap_buf) { ++				err("Couldn't allocate bulk_out_buffer"); ++				goto error; ++			} ++		} ++	} ++	if (!upriv->bap_buf || !upriv->read_urb) { ++		err("Didn't find the required bulk endpoints"); ++		goto error; ++	} ++ ++	if (request_firmware(&fw_entry, "orinoco_ezusb_fw", ++			     &interface->dev) == 0) { ++		firmware.size = fw_entry->size; ++		firmware.code = fw_entry->data; ++	} ++	if (firmware.size && firmware.code) { ++		if (ezusb_firmware_download(upriv, &firmware) < 0) ++			goto error; ++	} else { ++		err("No firmware to download"); ++		goto error; ++	} ++ ++	if (ezusb_hard_reset(priv) < 0) { ++		err("Cannot reset the device"); ++		goto error; ++	} ++ ++	/* If the firmware is already downloaded orinoco.c will call ++	 * ezusb_init but if the firmware is not already there, that will make ++	 * the kernel very unstable, so we try initializing here and quit in ++	 * case of error */ ++	if (ezusb_init(hw) < 0) { ++		err("Couldn't initialize the device"); ++		err("Firmware may not be downloaded or may be wrong."); ++		goto error; ++	} ++ ++	/* Initialise the main driver */ ++	if (orinoco_init(priv) != 0) { ++		err("orinoco_init() failed\n"); ++		goto error; ++	} ++ ++	if (orinoco_if_add(priv, 0, 0, &ezusb_netdev_ops) != 0) { ++		upriv->dev = NULL; ++		err("%s: orinoco_if_add() failed", __func__); ++		wiphy_unregister(priv_to_wiphy(priv)); ++		goto error; ++	} ++	upriv->dev = priv->ndev; ++ ++	goto exit; ++ ++ error: ++	ezusb_delete(upriv); ++	if (upriv->dev) { ++		/* upriv->dev was 0, so ezusb_delete() didn't free it */ ++		free_orinocodev(priv); ++	} ++	upriv = NULL; ++	retval = -EFAULT; ++ exit: ++	if (fw_entry) { ++		firmware.code = NULL; ++		firmware.size = 0; ++		release_firmware(fw_entry); ++	} ++	usb_set_intfdata(interface, upriv); ++	return retval; ++} ++ ++ ++static void ezusb_disconnect(struct usb_interface *intf) ++{ ++	struct ezusb_priv *upriv = usb_get_intfdata(intf); ++	usb_set_intfdata(intf, NULL); ++	ezusb_delete(upriv); ++	printk(KERN_INFO PFX "Disconnected\n"); ++} ++ ++ ++/* usb specific object needed to register this driver with the usb subsystem */ ++static struct usb_driver orinoco_driver = { ++	.name = DRIVER_NAME, ++	.probe = ezusb_probe, ++	.disconnect = ezusb_disconnect, ++	.id_table = ezusb_table, ++	.disable_hub_initiated_lpm = 1, ++}; ++ ++module_usb_driver(orinoco_driver); ++ ++MODULE_AUTHOR("Manuel Estrada Sainz"); ++MODULE_DESCRIPTION("Driver for Orinoco wireless LAN cards using EZUSB bridge"); ++MODULE_LICENSE("Dual MPL/GPL"); +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/scan.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/scan.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/scan.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/scan.c	2025-08-03 15:01:59.385129604 +0200 +@@ -0,0 +1,259 @@ ++/* Helpers for managing scan queues ++ * ++ * See copyright notice in main.c ++ */ ++ ++#include <linux/gfp.h> ++#include <linux/kernel.h> ++#include <linux/string.h> ++#include <linux/ieee80211.h> ++#include <net/cfg80211.h> ++ ++#include "hermes.h" ++#include "orinoco.h" ++#include "main.h" ++ ++#include "scan.h" ++ ++#define ZERO_DBM_OFFSET 0x95 ++#define MAX_SIGNAL_LEVEL 0x8A ++#define MIN_SIGNAL_LEVEL 0x2F ++ ++#define SIGNAL_TO_DBM(x)					\ ++	(clamp_t(s32, (x), MIN_SIGNAL_LEVEL, MAX_SIGNAL_LEVEL)	\ ++	 - ZERO_DBM_OFFSET) ++#define SIGNAL_TO_MBM(x) (SIGNAL_TO_DBM(x) * 100) ++ ++static int symbol_build_supp_rates(u8 *buf, const __le16 *rates) ++{ ++	int i; ++	u8 rate; ++ ++	buf[0] = WLAN_EID_SUPP_RATES; ++	for (i = 0; i < 5; i++) { ++		rate = le16_to_cpu(rates[i]); ++		/* NULL terminated */ ++		if (rate == 0x0) ++			break; ++		buf[i + 2] = rate; ++	} ++	buf[1] = i; ++ ++	return i + 2; ++} ++ ++static int prism_build_supp_rates(u8 *buf, const u8 *rates) ++{ ++	int i; ++ ++	buf[0] = WLAN_EID_SUPP_RATES; ++	for (i = 0; i < 8; i++) { ++		/* NULL terminated */ ++		if (rates[i] == 0x0) ++			break; ++		buf[i + 2] = rates[i]; ++	} ++	buf[1] = i; ++ ++	/* We might still have another 2 rates, which need to go in ++	 * extended supported rates */ ++	if (i == 8 && rates[i] > 0) { ++		buf[10] = WLAN_EID_EXT_SUPP_RATES; ++		for (; i < 10; i++) { ++			/* NULL terminated */ ++			if (rates[i] == 0x0) ++				break; ++			buf[i + 2] = rates[i]; ++		} ++		buf[11] = i - 8; ++	} ++ ++	return (i < 8) ? i + 2 : i + 4; ++} ++ ++static void orinoco_add_hostscan_result(struct orinoco_private *priv, ++					const union hermes_scan_info *bss) ++{ ++	struct wiphy *wiphy = priv_to_wiphy(priv); ++	struct ieee80211_channel *channel; ++	struct cfg80211_bss *cbss; ++	u8 *ie; ++	u8 ie_buf[46]; ++	u64 timestamp; ++	s32 signal; ++	u16 capability; ++	u16 beacon_interval; ++	int ie_len; ++	int freq; ++	int len; ++ ++	len = le16_to_cpu(bss->a.essid_len); ++ ++	/* Reconstruct SSID and bitrate IEs to pass up */ ++	ie_buf[0] = WLAN_EID_SSID; ++	ie_buf[1] = len; ++	memcpy(&ie_buf[2], bss->a.essid, len); ++ ++	ie = ie_buf + len + 2; ++	ie_len = ie_buf[1] + 2; ++	switch (priv->firmware_type) { ++	case FIRMWARE_TYPE_SYMBOL: ++		ie_len += symbol_build_supp_rates(ie, bss->s.rates); ++		break; ++ ++	case FIRMWARE_TYPE_INTERSIL: ++		ie_len += prism_build_supp_rates(ie, bss->p.rates); ++		break; ++ ++	case FIRMWARE_TYPE_AGERE: ++	default: ++		break; ++	} ++ ++	freq = ieee80211_channel_to_frequency( ++		le16_to_cpu(bss->a.channel), NL80211_BAND_2GHZ); ++	channel = ieee80211_get_channel(wiphy, freq); ++	if (!channel) { ++		printk(KERN_DEBUG "Invalid channel designation %04X(%04X)", ++			bss->a.channel, freq); ++		return;	/* Then ignore it for now */ ++	} ++	timestamp = 0; ++	capability = le16_to_cpu(bss->a.capabilities); ++	beacon_interval = le16_to_cpu(bss->a.beacon_interv); ++	signal = SIGNAL_TO_MBM(le16_to_cpu(bss->a.level)); ++ ++	cbss = cfg80211_inform_bss(wiphy, channel, CFG80211_BSS_FTYPE_UNKNOWN, ++				   bss->a.bssid, timestamp, capability, ++				   beacon_interval, ie_buf, ie_len, signal, ++				   GFP_KERNEL); ++	cfg80211_put_bss(wiphy, cbss); ++} ++ ++void orinoco_add_extscan_result(struct orinoco_private *priv, ++				struct agere_ext_scan_info *bss, ++				size_t len) ++{ ++	struct wiphy *wiphy = priv_to_wiphy(priv); ++	struct ieee80211_channel *channel; ++	struct cfg80211_bss *cbss; ++	const u8 *ie; ++	u64 timestamp; ++	s32 signal; ++	u16 capability; ++	u16 beacon_interval; ++	size_t ie_len; ++	int chan, freq; ++ ++	ie_len = len - sizeof(*bss); ++	ie = cfg80211_find_ie(WLAN_EID_DS_PARAMS, bss->data, ie_len); ++	chan = ie ? ie[2] : 0; ++	freq = ieee80211_channel_to_frequency(chan, NL80211_BAND_2GHZ); ++	channel = ieee80211_get_channel(wiphy, freq); ++ ++	timestamp = le64_to_cpu(bss->timestamp); ++	capability = le16_to_cpu(bss->capabilities); ++	beacon_interval = le16_to_cpu(bss->beacon_interval); ++	ie = bss->data; ++	signal = SIGNAL_TO_MBM(bss->level); ++ ++	cbss = cfg80211_inform_bss(wiphy, channel, CFG80211_BSS_FTYPE_UNKNOWN, ++				   bss->bssid, timestamp, capability, ++				   beacon_interval, ie, ie_len, signal, ++				   GFP_KERNEL); ++	cfg80211_put_bss(wiphy, cbss); ++} ++ ++void orinoco_add_hostscan_results(struct orinoco_private *priv, ++				  unsigned char *buf, ++				  size_t len) ++{ ++	int offset;		/* In the scan data */ ++	size_t atom_len; ++	bool abort = false; ++ ++	switch (priv->firmware_type) { ++	case FIRMWARE_TYPE_AGERE: ++		atom_len = sizeof(struct agere_scan_apinfo); ++		offset = 0; ++		break; ++ ++	case FIRMWARE_TYPE_SYMBOL: ++		/* Lack of documentation necessitates this hack. ++		 * Different firmwares have 68 or 76 byte long atoms. ++		 * We try modulo first.  If the length divides by both, ++		 * we check what would be the channel in the second ++		 * frame for a 68-byte atom.  76-byte atoms have 0 there. ++		 * Valid channel cannot be 0.  */ ++		if (len % 76) ++			atom_len = 68; ++		else if (len % 68) ++			atom_len = 76; ++		else if (len >= 1292 && buf[68] == 0) ++			atom_len = 76; ++		else ++			atom_len = 68; ++		offset = 0; ++		break; ++ ++	case FIRMWARE_TYPE_INTERSIL: ++		offset = 4; ++		if (priv->has_hostscan) { ++			atom_len = le16_to_cpup((__le16 *)buf); ++			/* Sanity check for atom_len */ ++			if (atom_len < sizeof(struct prism2_scan_apinfo)) { ++				printk(KERN_ERR "%s: Invalid atom_len in scan " ++				       "data: %zu\n", priv->ndev->name, ++				       atom_len); ++				abort = true; ++				goto scan_abort; ++			} ++		} else ++			atom_len = offsetof(struct prism2_scan_apinfo, atim); ++		break; ++ ++	default: ++		abort = true; ++		goto scan_abort; ++	} ++ ++	/* Check that we got an whole number of atoms */ ++	if ((len - offset) % atom_len) { ++		printk(KERN_ERR "%s: Unexpected scan data length %zu, " ++		       "atom_len %zu, offset %d\n", priv->ndev->name, len, ++		       atom_len, offset); ++		abort = true; ++		goto scan_abort; ++	} ++ ++	/* Process the entries one by one */ ++	for (; offset + atom_len <= len; offset += atom_len) { ++		union hermes_scan_info *atom; ++ ++		atom = (union hermes_scan_info *) (buf + offset); ++ ++		orinoco_add_hostscan_result(priv, atom); ++	} ++ ++ scan_abort: ++	if (priv->scan_request) { ++		struct cfg80211_scan_info info = { ++			.aborted = abort, ++		}; ++ ++		cfg80211_scan_done(priv->scan_request, &info); ++		priv->scan_request = NULL; ++	} ++} ++ ++void orinoco_scan_done(struct orinoco_private *priv, bool abort) ++{ ++	if (priv->scan_request) { ++		struct cfg80211_scan_info info = { ++			.aborted = abort, ++		}; ++ ++		cfg80211_scan_done(priv->scan_request, &info); ++		priv->scan_request = NULL; ++	} ++} +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/scan.h linux-6.15.6/drivers/net/wireless/intersil/orinoco/scan.h +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/scan.h	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/scan.h	2025-08-03 15:01:59.385129604 +0200 +@@ -0,0 +1,21 @@ ++/* Helpers for managing scan queues ++ * ++ * See copyright notice in main.c ++ */ ++#ifndef _ORINOCO_SCAN_H_ ++#define _ORINOCO_SCAN_H_ ++ ++/* Forward declarations */ ++struct orinoco_private; ++struct agere_ext_scan_info; ++ ++/* Add scan results */ ++void orinoco_add_extscan_result(struct orinoco_private *priv, ++				struct agere_ext_scan_info *atom, ++				size_t len); ++void orinoco_add_hostscan_results(struct orinoco_private *dev, ++				  unsigned char *buf, ++				  size_t len); ++void orinoco_scan_done(struct orinoco_private *priv, bool abort); ++ ++#endif /* _ORINOCO_SCAN_H_ */ +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/spectrum_cs.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/spectrum_cs.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/spectrum_cs.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/spectrum_cs.c	2025-08-03 15:01:59.385129604 +0200 +@@ -0,0 +1,328 @@ ++/* ++ * Driver for 802.11b cards using RAM-loadable Symbol firmware, such as ++ * Symbol Wireless Networker LA4137, CompactFlash cards by Socket ++ * Communications and Intel PRO/Wireless 2011B. ++ * ++ * The driver implements Symbol firmware download.  The rest is handled ++ * in hermes.c and main.c. ++ * ++ * Utilities for downloading the Symbol firmware are available at ++ * http://sourceforge.net/projects/orinoco/ ++ * ++ * Copyright (C) 2002-2005 Pavel Roskin <proski@gnu.org> ++ * Portions based on orinoco_cs.c: ++ *	Copyright (C) David Gibson, Linuxcare Australia ++ * Portions based on Spectrum24tDnld.c from original spectrum24 driver: ++ *	Copyright (C) Symbol Technologies. ++ * ++ * See copyright notice in file main.c. ++ */ ++ ++#define DRIVER_NAME "spectrum_cs" ++#define PFX DRIVER_NAME ": " ++ ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/delay.h> ++#include <pcmcia/cistpl.h> ++#include <pcmcia/cisreg.h> ++#include <pcmcia/ds.h> ++ ++#include "orinoco.h" ++ ++/********************************************************************/ ++/* Module stuff							    */ ++/********************************************************************/ ++ ++MODULE_AUTHOR("Pavel Roskin <proski@gnu.org>"); ++MODULE_DESCRIPTION("Driver for Symbol Spectrum24 Trilogy cards with firmware downloader"); ++MODULE_LICENSE("Dual MPL/GPL"); ++ ++/* Module parameters */ ++ ++/* Some D-Link cards have buggy CIS. They do work at 5v properly, but ++ * don't have any CIS entry for it. This workaround it... */ ++static int ignore_cis_vcc; /* = 0 */ ++module_param(ignore_cis_vcc, int, 0); ++MODULE_PARM_DESC(ignore_cis_vcc, "Allow voltage mismatch between card and socket"); ++ ++/********************************************************************/ ++/* Data structures						    */ ++/********************************************************************/ ++ ++/* PCMCIA specific device information (goes in the card field of ++ * struct orinoco_private */ ++struct orinoco_pccard { ++	struct pcmcia_device	*p_dev; ++}; ++ ++/********************************************************************/ ++/* Function prototypes						    */ ++/********************************************************************/ ++ ++static int spectrum_cs_config(struct pcmcia_device *link); ++static void spectrum_cs_release(struct pcmcia_device *link); ++ ++/* Constants for the CISREG_CCSR register */ ++#define HCR_RUN		0x07	/* run firmware after reset */ ++#define HCR_IDLE	0x0E	/* don't run firmware after reset */ ++#define HCR_MEM16	0x10	/* memory width bit, should be preserved */ ++ ++ ++/* ++ * Reset the card using configuration registers COR and CCSR. ++ * If IDLE is 1, stop the firmware, so that it can be safely rewritten. ++ */ ++static int ++spectrum_reset(struct pcmcia_device *link, int idle) ++{ ++	int ret; ++	u8 save_cor; ++	u8 ccsr; ++ ++	/* Doing it if hardware is gone is guaranteed crash */ ++	if (!pcmcia_dev_present(link)) ++		return -ENODEV; ++ ++	/* Save original COR value */ ++	ret = pcmcia_read_config_byte(link, CISREG_COR, &save_cor); ++	if (ret) ++		goto failed; ++ ++	/* Soft-Reset card */ ++	ret = pcmcia_write_config_byte(link, CISREG_COR, ++				(save_cor | COR_SOFT_RESET)); ++	if (ret) ++		goto failed; ++	udelay(1000); ++ ++	/* Read CCSR */ ++	ret = pcmcia_read_config_byte(link, CISREG_CCSR, &ccsr); ++	if (ret) ++		goto failed; ++ ++	/* ++	 * Start or stop the firmware.  Memory width bit should be ++	 * preserved from the value we've just read. ++	 */ ++	ccsr = (idle ? HCR_IDLE : HCR_RUN) | (ccsr & HCR_MEM16); ++	ret = pcmcia_write_config_byte(link, CISREG_CCSR, ccsr); ++	if (ret) ++		goto failed; ++	udelay(1000); ++ ++	/* Restore original COR configuration index */ ++	ret = pcmcia_write_config_byte(link, CISREG_COR, ++				(save_cor & ~COR_SOFT_RESET)); ++	if (ret) ++		goto failed; ++	udelay(1000); ++	return 0; ++ ++failed: ++	return -ENODEV; ++} ++ ++/********************************************************************/ ++/* Device methods						    */ ++/********************************************************************/ ++ ++static int ++spectrum_cs_hard_reset(struct orinoco_private *priv) ++{ ++	struct orinoco_pccard *card = priv->card; ++	struct pcmcia_device *link = card->p_dev; ++ ++	/* Soft reset using COR and HCR */ ++	spectrum_reset(link, 0); ++ ++	return 0; ++} ++ ++static int ++spectrum_cs_stop_firmware(struct orinoco_private *priv, int idle) ++{ ++	struct orinoco_pccard *card = priv->card; ++	struct pcmcia_device *link = card->p_dev; ++ ++	return spectrum_reset(link, idle); ++} ++ ++/********************************************************************/ ++/* PCMCIA stuff							    */ ++/********************************************************************/ ++ ++static int ++spectrum_cs_probe(struct pcmcia_device *link) ++{ ++	struct orinoco_private *priv; ++	struct orinoco_pccard *card; ++	int ret; ++ ++	priv = alloc_orinocodev(sizeof(*card), &link->dev, ++				spectrum_cs_hard_reset, ++				spectrum_cs_stop_firmware); ++	if (!priv) ++		return -ENOMEM; ++	card = priv->card; ++ ++	/* Link both structures together */ ++	card->p_dev = link; ++	link->priv = priv; ++ ++	ret = spectrum_cs_config(link); ++	if (ret) ++		goto err_free_orinocodev; ++ ++	return 0; ++ ++err_free_orinocodev: ++	free_orinocodev(priv); ++	return ret; ++} ++ ++static void spectrum_cs_detach(struct pcmcia_device *link) ++{ ++	struct orinoco_private *priv = link->priv; ++ ++	orinoco_if_del(priv); ++ ++	spectrum_cs_release(link); ++ ++	free_orinocodev(priv); ++}				/* spectrum_cs_detach */ ++ ++static int spectrum_cs_config_check(struct pcmcia_device *p_dev, ++				    void *priv_data) ++{ ++	if (p_dev->config_index == 0) ++		return -EINVAL; ++ ++	return pcmcia_request_io(p_dev); ++}; ++ ++static int ++spectrum_cs_config(struct pcmcia_device *link) ++{ ++	struct orinoco_private *priv = link->priv; ++	struct hermes *hw = &priv->hw; ++	int ret; ++	void __iomem *mem; ++ ++	link->config_flags |= CONF_AUTO_SET_VPP | CONF_AUTO_CHECK_VCC | ++		CONF_AUTO_SET_IO | CONF_ENABLE_IRQ; ++	if (ignore_cis_vcc) ++		link->config_flags &= ~CONF_AUTO_CHECK_VCC; ++	ret = pcmcia_loop_config(link, spectrum_cs_config_check, NULL); ++	if (ret) { ++		if (!ignore_cis_vcc) ++			printk(KERN_ERR PFX "GetNextTuple(): No matching " ++			       "CIS configuration.  Maybe you need the " ++			       "ignore_cis_vcc=1 parameter.\n"); ++		goto failed; ++	} ++ ++	mem = ioport_map(link->resource[0]->start, ++			resource_size(link->resource[0])); ++	if (!mem) ++		goto failed; ++ ++	/* We initialize the hermes structure before completing PCMCIA ++	 * configuration just in case the interrupt handler gets ++	 * called. */ ++	hermes_struct_init(hw, mem, HERMES_16BIT_REGSPACING); ++	hw->eeprom_pda = true; ++ ++	ret = pcmcia_request_irq(link, orinoco_interrupt); ++	if (ret) ++		goto failed; ++ ++	ret = pcmcia_enable_device(link); ++	if (ret) ++		goto failed; ++ ++	/* Reset card */ ++	if (spectrum_cs_hard_reset(priv) != 0) ++		goto failed; ++ ++	/* Initialise the main driver */ ++	if (orinoco_init(priv) != 0) { ++		printk(KERN_ERR PFX "orinoco_init() failed\n"); ++		goto failed; ++	} ++ ++	/* Register an interface with the stack */ ++	if (orinoco_if_add(priv, link->resource[0]->start, ++			   link->irq, NULL) != 0) { ++		printk(KERN_ERR PFX "orinoco_if_add() failed\n"); ++		goto failed; ++	} ++ ++	return 0; ++ ++ failed: ++	spectrum_cs_release(link); ++	return -ENODEV; ++}				/* spectrum_cs_config */ ++ ++static void ++spectrum_cs_release(struct pcmcia_device *link) ++{ ++	struct orinoco_private *priv = link->priv; ++	unsigned long flags; ++ ++	/* We're committed to taking the device away now, so mark the ++	 * hardware as unavailable */ ++	priv->hw.ops->lock_irqsave(&priv->lock, &flags); ++	priv->hw_unavailable++; ++	priv->hw.ops->unlock_irqrestore(&priv->lock, &flags); ++ ++	pcmcia_disable_device(link); ++	if (priv->hw.iobase) ++		ioport_unmap(priv->hw.iobase); ++}				/* spectrum_cs_release */ ++ ++ ++static int ++spectrum_cs_suspend(struct pcmcia_device *link) ++{ ++	struct orinoco_private *priv = link->priv; ++ ++	/* Mark the device as stopped, to block IO until later */ ++	orinoco_down(priv); ++ ++	return 0; ++} ++ ++static int ++spectrum_cs_resume(struct pcmcia_device *link) ++{ ++	struct orinoco_private *priv = link->priv; ++	int err = orinoco_up(priv); ++ ++	return err; ++} ++ ++ ++/********************************************************************/ ++/* Module initialization					    */ ++/********************************************************************/ ++ ++static const struct pcmcia_device_id spectrum_cs_ids[] = { ++	PCMCIA_DEVICE_MANF_CARD(0x026c, 0x0001), /* Symbol Spectrum24 LA4137 */ ++	PCMCIA_DEVICE_MANF_CARD(0x0104, 0x0001), /* Socket Communications CF */ ++	PCMCIA_DEVICE_PROD_ID12("Intel", "PRO/Wireless LAN PC Card", 0x816cc815, 0x6fbf459a), /* 2011B, not 2011 */ ++	PCMCIA_DEVICE_NULL, ++}; ++MODULE_DEVICE_TABLE(pcmcia, spectrum_cs_ids); ++ ++static struct pcmcia_driver orinoco_driver = { ++	.owner		= THIS_MODULE, ++	.name		= DRIVER_NAME, ++	.probe		= spectrum_cs_probe, ++	.remove		= spectrum_cs_detach, ++	.suspend	= spectrum_cs_suspend, ++	.resume		= spectrum_cs_resume, ++	.id_table       = spectrum_cs_ids, ++}; ++module_pcmcia_driver(orinoco_driver); +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/wext.c linux-6.15.6/drivers/net/wireless/intersil/orinoco/wext.c +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/wext.c	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/wext.c	2025-08-03 16:32:17.782885098 +0200 +@@ -0,0 +1,1415 @@ ++/* Wireless extensions support. ++ * ++ * See copyright notice in main.c ++ */ ++#include <linux/slab.h> ++#include <linux/kernel.h> ++#include <linux/if_arp.h> ++#include <linux/wireless.h> ++#include <linux/ieee80211.h> ++#include <linux/etherdevice.h> ++#include <net/iw_handler.h> ++#include <net/cfg80211.h> ++#include <net/cfg80211-wext.h> ++ ++#include "hermes.h" ++#include "hermes_rid.h" ++#include "orinoco.h" ++ ++#include "hw.h" ++#include "mic.h" ++#include "scan.h" ++#include "main.h" ++ ++#include "wext.h" ++ ++#define MAX_RID_LEN 1024 ++ ++/* Helper routine to record keys ++ * It is called under orinoco_lock so it may not sleep */ ++static int orinoco_set_key(struct orinoco_private *priv, int index, ++			   enum orinoco_alg alg, const u8 *key, int key_len, ++			   const u8 *seq, int seq_len) ++{ ++	kfree_sensitive(priv->keys[index].key); ++	kfree_sensitive(priv->keys[index].seq); ++ ++	if (key_len) { ++		priv->keys[index].key = kzalloc(key_len, GFP_ATOMIC); ++		if (!priv->keys[index].key) ++			goto nomem; ++	} else ++		priv->keys[index].key = NULL; ++ ++	if (seq_len) { ++		priv->keys[index].seq = kzalloc(seq_len, GFP_ATOMIC); ++		if (!priv->keys[index].seq) ++			goto free_key; ++	} else ++		priv->keys[index].seq = NULL; ++ ++	priv->keys[index].key_len = key_len; ++	priv->keys[index].seq_len = seq_len; ++ ++	if (key_len) ++		memcpy((void *)priv->keys[index].key, key, key_len); ++	if (seq_len) ++		memcpy((void *)priv->keys[index].seq, seq, seq_len); ++ ++	switch (alg) { ++	case ORINOCO_ALG_TKIP: ++		priv->keys[index].cipher = WLAN_CIPHER_SUITE_TKIP; ++		break; ++ ++	case ORINOCO_ALG_WEP: ++		priv->keys[index].cipher = (key_len > SMALL_KEY_SIZE) ? ++			WLAN_CIPHER_SUITE_WEP104 : WLAN_CIPHER_SUITE_WEP40; ++		break; ++ ++	case ORINOCO_ALG_NONE: ++	default: ++		priv->keys[index].cipher = 0; ++		break; ++	} ++ ++	return 0; ++ ++free_key: ++	kfree(priv->keys[index].key); ++	priv->keys[index].key = NULL; ++ ++nomem: ++	priv->keys[index].key_len = 0; ++	priv->keys[index].seq_len = 0; ++	priv->keys[index].cipher = 0; ++ ++	return -ENOMEM; ++} ++ ++static struct iw_statistics *orinoco_get_wireless_stats(struct net_device *dev) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	struct hermes *hw = &priv->hw; ++	struct iw_statistics *wstats = &priv->wstats; ++	int err; ++	unsigned long flags; ++ ++	if (!netif_device_present(dev)) { ++		printk(KERN_WARNING "%s: get_wireless_stats() called while device not present\n", ++		       dev->name); ++		return NULL; /* FIXME: Can we do better than this? */ ++	} ++ ++	/* If busy, return the old stats.  Returning NULL may cause ++	 * the interface to disappear from /proc/net/wireless */ ++	if (orinoco_lock(priv, &flags) != 0) ++		return wstats; ++ ++	/* We can't really wait for the tallies inquiry command to ++	 * complete, so we just use the previous results and trigger ++	 * a new tallies inquiry command for next time - Jean II */ ++	/* FIXME: Really we should wait for the inquiry to come back - ++	 * as it is the stats we give don't make a whole lot of sense. ++	 * Unfortunately, it's not clear how to do that within the ++	 * wireless extensions framework: I think we're in user ++	 * context, but a lock seems to be held by the time we get in ++	 * here so we're not safe to sleep here. */ ++	hermes_inquire(hw, HERMES_INQ_TALLIES); ++ ++	if (priv->iw_mode == NL80211_IFTYPE_ADHOC) { ++		memset(&wstats->qual, 0, sizeof(wstats->qual)); ++	} else { ++		struct { ++			__le16 qual, signal, noise, unused; ++		} __packed cq; ++ ++		err = HERMES_READ_RECORD(hw, USER_BAP, ++					 HERMES_RID_COMMSQUALITY, &cq); ++ ++		if (!err) { ++			wstats->qual.qual = (int)le16_to_cpu(cq.qual); ++			wstats->qual.level = (int)le16_to_cpu(cq.signal) - 0x95; ++			wstats->qual.noise = (int)le16_to_cpu(cq.noise) - 0x95; ++			wstats->qual.updated = ++				IW_QUAL_ALL_UPDATED | IW_QUAL_DBM; ++		} ++	} ++ ++	orinoco_unlock(priv, &flags); ++	return wstats; ++} ++ ++/********************************************************************/ ++/* Wireless extensions                                              */ ++/********************************************************************/ ++ ++static int orinoco_ioctl_setwap(struct net_device *dev, ++				struct iw_request_info *info, ++				union iwreq_data *wrqu, ++				char *extra) ++{ ++	struct sockaddr *ap_addr = &wrqu->ap_addr; ++	struct orinoco_private *priv = ndev_priv(dev); ++	int err = -EINPROGRESS;		/* Call commit handler */ ++	unsigned long flags; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	/* Enable automatic roaming - no sanity checks are needed */ ++	if (is_zero_ether_addr(ap_addr->sa_data) || ++	    is_broadcast_ether_addr(ap_addr->sa_data)) { ++		priv->bssid_fixed = 0; ++		eth_zero_addr(priv->desired_bssid); ++ ++		/* "off" means keep existing connection */ ++		if (ap_addr->sa_data[0] == 0) { ++			__orinoco_hw_set_wap(priv); ++			err = 0; ++		} ++		goto out; ++	} ++ ++	if (priv->firmware_type == FIRMWARE_TYPE_AGERE) { ++		printk(KERN_WARNING "%s: Lucent/Agere firmware doesn't " ++		       "support manual roaming\n", ++		       dev->name); ++		err = -EOPNOTSUPP; ++		goto out; ++	} ++ ++	if (priv->iw_mode != NL80211_IFTYPE_STATION) { ++		printk(KERN_WARNING "%s: Manual roaming supported only in " ++		       "managed mode\n", dev->name); ++		err = -EOPNOTSUPP; ++		goto out; ++	} ++ ++	/* Intersil firmware hangs without Desired ESSID */ ++	if (priv->firmware_type == FIRMWARE_TYPE_INTERSIL && ++	    strlen(priv->desired_essid) == 0) { ++		printk(KERN_WARNING "%s: Desired ESSID must be set for " ++		       "manual roaming\n", dev->name); ++		err = -EOPNOTSUPP; ++		goto out; ++	} ++ ++	/* Finally, enable manual roaming */ ++	priv->bssid_fixed = 1; ++	memcpy(priv->desired_bssid, &ap_addr->sa_data, ETH_ALEN); ++ ++ out: ++	orinoco_unlock(priv, &flags); ++	return err; ++} ++ ++static int orinoco_ioctl_getwap(struct net_device *dev, ++				struct iw_request_info *info, ++				union iwreq_data *wrqu, ++				char *extra) ++{ ++	struct sockaddr *ap_addr = &wrqu->ap_addr; ++	struct orinoco_private *priv = ndev_priv(dev); ++ ++	int err = 0; ++	unsigned long flags; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	ap_addr->sa_family = ARPHRD_ETHER; ++	err = orinoco_hw_get_current_bssid(priv, ap_addr->sa_data); ++ ++	orinoco_unlock(priv, &flags); ++ ++	return err; ++} ++ ++static int orinoco_ioctl_setiwencode(struct net_device *dev, ++				     struct iw_request_info *info, ++				     union iwreq_data *wrqu, ++				     char *keybuf) ++{ ++	struct iw_point *erq = &wrqu->encoding; ++	struct orinoco_private *priv = ndev_priv(dev); ++	int index = (erq->flags & IW_ENCODE_INDEX) - 1; ++	int setindex = priv->tx_key; ++	enum orinoco_alg encode_alg = priv->encode_alg; ++	int restricted = priv->wep_restrict; ++	int err = -EINPROGRESS;		/* Call commit handler */ ++	unsigned long flags; ++ ++	if (!priv->has_wep) ++		return -EOPNOTSUPP; ++ ++	if (erq->pointer) { ++		/* We actually have a key to set - check its length */ ++		if (erq->length > LARGE_KEY_SIZE) ++			return -E2BIG; ++ ++		if ((erq->length > SMALL_KEY_SIZE) && !priv->has_big_wep) ++			return -E2BIG; ++	} ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	/* Clear any TKIP key we have */ ++	if ((priv->has_wpa) && (priv->encode_alg == ORINOCO_ALG_TKIP)) ++		(void) orinoco_clear_tkip_key(priv, setindex); ++ ++	if (erq->length > 0) { ++		if ((index < 0) || (index >= ORINOCO_MAX_KEYS)) ++			index = priv->tx_key; ++ ++		/* Switch on WEP if off */ ++		if (encode_alg != ORINOCO_ALG_WEP) { ++			setindex = index; ++			encode_alg = ORINOCO_ALG_WEP; ++		} ++	} else { ++		/* Important note : if the user do "iwconfig eth0 enc off", ++		 * we will arrive there with an index of -1. This is valid ++		 * but need to be taken care off... Jean II */ ++		if ((index < 0) || (index >= ORINOCO_MAX_KEYS)) { ++			if ((index != -1) || (erq->flags == 0)) { ++				err = -EINVAL; ++				goto out; ++			} ++		} else { ++			/* Set the index : Check that the key is valid */ ++			if (priv->keys[index].key_len == 0) { ++				err = -EINVAL; ++				goto out; ++			} ++			setindex = index; ++		} ++	} ++ ++	if (erq->flags & IW_ENCODE_DISABLED) ++		encode_alg = ORINOCO_ALG_NONE; ++	if (erq->flags & IW_ENCODE_OPEN) ++		restricted = 0; ++	if (erq->flags & IW_ENCODE_RESTRICTED) ++		restricted = 1; ++ ++	if (erq->pointer && erq->length > 0) { ++		err = orinoco_set_key(priv, index, ORINOCO_ALG_WEP, keybuf, ++				      erq->length, NULL, 0); ++	} ++	priv->tx_key = setindex; ++ ++	/* Try fast key change if connected and only keys are changed */ ++	if ((priv->encode_alg == encode_alg) && ++	    (priv->wep_restrict == restricted) && ++	    netif_carrier_ok(dev)) { ++		err = __orinoco_hw_setup_wepkeys(priv); ++		/* No need to commit if successful */ ++		goto out; ++	} ++ ++	priv->encode_alg = encode_alg; ++	priv->wep_restrict = restricted; ++ ++ out: ++	orinoco_unlock(priv, &flags); ++ ++	return err; ++} ++ ++static int orinoco_ioctl_getiwencode(struct net_device *dev, ++				     struct iw_request_info *info, ++				     union iwreq_data *wrqu, ++				     char *keybuf) ++{ ++	struct iw_point *erq = &wrqu->encoding; ++	struct orinoco_private *priv = ndev_priv(dev); ++	int index = (erq->flags & IW_ENCODE_INDEX) - 1; ++	unsigned long flags; ++ ++	if (!priv->has_wep) ++		return -EOPNOTSUPP; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	if ((index < 0) || (index >= ORINOCO_MAX_KEYS)) ++		index = priv->tx_key; ++ ++	erq->flags = 0; ++	if (!priv->encode_alg) ++		erq->flags |= IW_ENCODE_DISABLED; ++	erq->flags |= index + 1; ++ ++	if (priv->wep_restrict) ++		erq->flags |= IW_ENCODE_RESTRICTED; ++	else ++		erq->flags |= IW_ENCODE_OPEN; ++ ++	erq->length = priv->keys[index].key_len; ++ ++	memcpy(keybuf, priv->keys[index].key, erq->length); ++ ++	orinoco_unlock(priv, &flags); ++	return 0; ++} ++ ++static int orinoco_ioctl_setessid(struct net_device *dev, ++				  struct iw_request_info *info, ++				  union iwreq_data *wrqu, ++				  char *essidbuf) ++{ ++	struct iw_point *erq = &wrqu->essid; ++	struct orinoco_private *priv = ndev_priv(dev); ++	unsigned long flags; ++ ++	/* Note : ESSID is ignored in Ad-Hoc demo mode, but we can set it ++	 * anyway... - Jean II */ ++ ++	/* Hum... Should not use Wireless Extension constant (may change), ++	 * should use our own... - Jean II */ ++	if (erq->length > IW_ESSID_MAX_SIZE) ++		return -E2BIG; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	/* NULL the string (for NULL termination & ESSID = ANY) - Jean II */ ++	memset(priv->desired_essid, 0, sizeof(priv->desired_essid)); ++ ++	/* If not ANY, get the new ESSID */ ++	if (erq->flags) ++		memcpy(priv->desired_essid, essidbuf, erq->length); ++ ++	orinoco_unlock(priv, &flags); ++ ++	return -EINPROGRESS;		/* Call commit handler */ ++} ++ ++static int orinoco_ioctl_getessid(struct net_device *dev, ++				  struct iw_request_info *info, ++				  union iwreq_data *wrqu, ++				  char *essidbuf) ++{ ++	struct iw_point *erq = &wrqu->essid; ++	struct orinoco_private *priv = ndev_priv(dev); ++	int active; ++	int err = 0; ++	unsigned long flags; ++ ++	if (netif_running(dev)) { ++		err = orinoco_hw_get_essid(priv, &active, essidbuf); ++		if (err < 0) ++			return err; ++		erq->length = err; ++	} else { ++		if (orinoco_lock(priv, &flags) != 0) ++			return -EBUSY; ++		memcpy(essidbuf, priv->desired_essid, IW_ESSID_MAX_SIZE); ++		erq->length = strlen(priv->desired_essid); ++		orinoco_unlock(priv, &flags); ++	} ++ ++	erq->flags = 1; ++ ++	return 0; ++} ++ ++static int orinoco_ioctl_setfreq(struct net_device *dev, ++				 struct iw_request_info *info, ++				 union iwreq_data *wrqu, ++				 char *extra) ++{ ++	struct iw_freq *frq = &wrqu->freq; ++	struct orinoco_private *priv = ndev_priv(dev); ++	int chan = -1; ++	unsigned long flags; ++	int err = -EINPROGRESS;		/* Call commit handler */ ++ ++	/* In infrastructure mode the AP sets the channel */ ++	if (priv->iw_mode == NL80211_IFTYPE_STATION) ++		return -EBUSY; ++ ++	if ((frq->e == 0) && (frq->m <= 1000)) { ++		/* Setting by channel number */ ++		chan = frq->m; ++	} else { ++		/* Setting by frequency */ ++		int denom = 1; ++		int i; ++ ++		/* Calculate denominator to rescale to MHz */ ++		for (i = 0; i < (6 - frq->e); i++) ++			denom *= 10; ++ ++		chan = ieee80211_frequency_to_channel(frq->m / denom); ++	} ++ ++	if ((chan < 1) || (chan > NUM_CHANNELS) || ++	     !(priv->channel_mask & (1 << (chan - 1)))) ++		return -EINVAL; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	priv->channel = chan; ++	if (priv->iw_mode == NL80211_IFTYPE_MONITOR) { ++		/* Fast channel change - no commit if successful */ ++		struct hermes *hw = &priv->hw; ++		err = hw->ops->cmd_wait(hw, HERMES_CMD_TEST | ++					    HERMES_TEST_SET_CHANNEL, ++					chan, NULL); ++	} ++	orinoco_unlock(priv, &flags); ++ ++	return err; ++} ++ ++static int orinoco_ioctl_getfreq(struct net_device *dev, ++				 struct iw_request_info *info, ++				 union iwreq_data *wrqu, ++				 char *extra) ++{ ++	struct iw_freq *frq = &wrqu->freq; ++	struct orinoco_private *priv = ndev_priv(dev); ++	int tmp; ++ ++	/* Locking done in there */ ++	tmp = orinoco_hw_get_freq(priv); ++	if (tmp < 0) ++		return tmp; ++ ++	frq->m = tmp * 100000; ++	frq->e = 1; ++ ++	return 0; ++} ++ ++static int orinoco_ioctl_getsens(struct net_device *dev, ++				 struct iw_request_info *info, ++				 union iwreq_data *wrqu, ++				 char *extra) ++{ ++	struct iw_param *srq = &wrqu->sens; ++	struct orinoco_private *priv = ndev_priv(dev); ++	struct hermes *hw = &priv->hw; ++	u16 val; ++	int err; ++	unsigned long flags; ++ ++	if (!priv->has_sensitivity) ++		return -EOPNOTSUPP; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++	err = hermes_read_wordrec(hw, USER_BAP, ++				  HERMES_RID_CNFSYSTEMSCALE, &val); ++	orinoco_unlock(priv, &flags); ++ ++	if (err) ++		return err; ++ ++	srq->value = val; ++	srq->fixed = 0; /* auto */ ++ ++	return 0; ++} ++ ++static int orinoco_ioctl_setsens(struct net_device *dev, ++				 struct iw_request_info *info, ++				 union iwreq_data *wrqu, ++				 char *extra) ++{ ++	struct iw_param *srq = &wrqu->sens; ++	struct orinoco_private *priv = ndev_priv(dev); ++	int val = srq->value; ++	unsigned long flags; ++ ++	if (!priv->has_sensitivity) ++		return -EOPNOTSUPP; ++ ++	if ((val < 1) || (val > 3)) ++		return -EINVAL; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++	priv->ap_density = val; ++	orinoco_unlock(priv, &flags); ++ ++	return -EINPROGRESS;		/* Call commit handler */ ++} ++ ++static int orinoco_ioctl_setrate(struct net_device *dev, ++				 struct iw_request_info *info, ++				 union iwreq_data *wrqu, ++				 char *extra) ++{ ++	struct iw_param *rrq = &wrqu->bitrate; ++	struct orinoco_private *priv = ndev_priv(dev); ++	int ratemode; ++	int bitrate; /* 100s of kilobits */ ++	unsigned long flags; ++ ++	/* As the user space doesn't know our highest rate, it uses -1 ++	 * to ask us to set the highest rate.  Test it using "iwconfig ++	 * ethX rate auto" - Jean II */ ++	if (rrq->value == -1) ++		bitrate = 110; ++	else { ++		if (rrq->value % 100000) ++			return -EINVAL; ++		bitrate = rrq->value / 100000; ++	} ++ ++	ratemode = orinoco_get_bitratemode(bitrate, !rrq->fixed); ++ ++	if (ratemode == -1) ++		return -EINVAL; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++	priv->bitratemode = ratemode; ++	orinoco_unlock(priv, &flags); ++ ++	return -EINPROGRESS; ++} ++ ++static int orinoco_ioctl_getrate(struct net_device *dev, ++				 struct iw_request_info *info, ++				 union iwreq_data *wrqu, ++				 char *extra) ++{ ++	struct iw_param *rrq = &wrqu->bitrate; ++	struct orinoco_private *priv = ndev_priv(dev); ++	int err = 0; ++	int bitrate, automatic; ++	unsigned long flags; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	orinoco_get_ratemode_cfg(priv->bitratemode, &bitrate, &automatic); ++ ++	/* If the interface is running we try to find more about the ++	   current mode */ ++	if (netif_running(dev)) { ++		int act_bitrate; ++		int lerr; ++ ++		/* Ignore errors if we can't get the actual bitrate */ ++		lerr = orinoco_hw_get_act_bitrate(priv, &act_bitrate); ++		if (!lerr) ++			bitrate = act_bitrate; ++	} ++ ++	orinoco_unlock(priv, &flags); ++ ++	rrq->value = bitrate; ++	rrq->fixed = !automatic; ++	rrq->disabled = 0; ++ ++	return err; ++} ++ ++static int orinoco_ioctl_setpower(struct net_device *dev, ++				  struct iw_request_info *info, ++				  union iwreq_data *wrqu, ++				  char *extra) ++{ ++	struct iw_param *prq = &wrqu->power; ++	struct orinoco_private *priv = ndev_priv(dev); ++	int err = -EINPROGRESS;		/* Call commit handler */ ++	unsigned long flags; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	if (prq->disabled) { ++		priv->pm_on = 0; ++	} else { ++		switch (prq->flags & IW_POWER_MODE) { ++		case IW_POWER_UNICAST_R: ++			priv->pm_mcast = 0; ++			priv->pm_on = 1; ++			break; ++		case IW_POWER_ALL_R: ++			priv->pm_mcast = 1; ++			priv->pm_on = 1; ++			break; ++		case IW_POWER_ON: ++			/* No flags : but we may have a value - Jean II */ ++			break; ++		default: ++			err = -EINVAL; ++			goto out; ++		} ++ ++		if (prq->flags & IW_POWER_TIMEOUT) { ++			priv->pm_on = 1; ++			priv->pm_timeout = prq->value / 1000; ++		} ++		if (prq->flags & IW_POWER_PERIOD) { ++			priv->pm_on = 1; ++			priv->pm_period = prq->value / 1000; ++		} ++		/* It's valid to not have a value if we are just toggling ++		 * the flags... Jean II */ ++		if (!priv->pm_on) { ++			err = -EINVAL; ++			goto out; ++		} ++	} ++ ++ out: ++	orinoco_unlock(priv, &flags); ++ ++	return err; ++} ++ ++static int orinoco_ioctl_getpower(struct net_device *dev, ++				  struct iw_request_info *info, ++				  union iwreq_data *wrqu, ++				  char *extra) ++{ ++	struct iw_param *prq = &wrqu->power; ++	struct orinoco_private *priv = ndev_priv(dev); ++	struct hermes *hw = &priv->hw; ++	int err = 0; ++	u16 enable, period, timeout, mcast; ++	unsigned long flags; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	err = hermes_read_wordrec(hw, USER_BAP, ++				  HERMES_RID_CNFPMENABLED, &enable); ++	if (err) ++		goto out; ++ ++	err = hermes_read_wordrec(hw, USER_BAP, ++				  HERMES_RID_CNFMAXSLEEPDURATION, &period); ++	if (err) ++		goto out; ++ ++	err = hermes_read_wordrec(hw, USER_BAP, ++				  HERMES_RID_CNFPMHOLDOVERDURATION, &timeout); ++	if (err) ++		goto out; ++ ++	err = hermes_read_wordrec(hw, USER_BAP, ++				  HERMES_RID_CNFMULTICASTRECEIVE, &mcast); ++	if (err) ++		goto out; ++ ++	prq->disabled = !enable; ++	/* Note : by default, display the period */ ++	if ((prq->flags & IW_POWER_TYPE) == IW_POWER_TIMEOUT) { ++		prq->flags = IW_POWER_TIMEOUT; ++		prq->value = timeout * 1000; ++	} else { ++		prq->flags = IW_POWER_PERIOD; ++		prq->value = period * 1000; ++	} ++	if (mcast) ++		prq->flags |= IW_POWER_ALL_R; ++	else ++		prq->flags |= IW_POWER_UNICAST_R; ++ ++ out: ++	orinoco_unlock(priv, &flags); ++ ++	return err; ++} ++ ++static int orinoco_ioctl_set_encodeext(struct net_device *dev, ++				       struct iw_request_info *info, ++				       union iwreq_data *wrqu, ++				       char *extra) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	struct iw_point *encoding = &wrqu->encoding; ++	struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; ++	int idx, alg = ext->alg, set_key = 1; ++	unsigned long flags; ++	int err = -EINVAL; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	/* Determine and validate the key index */ ++	idx = encoding->flags & IW_ENCODE_INDEX; ++	if (idx) { ++		if ((idx < 1) || (idx > 4)) ++			goto out; ++		idx--; ++	} else ++		idx = priv->tx_key; ++ ++	if (encoding->flags & IW_ENCODE_DISABLED) ++		alg = IW_ENCODE_ALG_NONE; ++ ++	if (priv->has_wpa && (alg != IW_ENCODE_ALG_TKIP)) { ++		/* Clear any TKIP TX key we had */ ++		(void) orinoco_clear_tkip_key(priv, priv->tx_key); ++	} ++ ++	if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY) { ++		priv->tx_key = idx; ++		set_key = ((alg == IW_ENCODE_ALG_TKIP) || ++			   (ext->key_len > 0)) ? 1 : 0; ++	} ++ ++	if (set_key) { ++		/* Set the requested key first */ ++		switch (alg) { ++		case IW_ENCODE_ALG_NONE: ++			priv->encode_alg = ORINOCO_ALG_NONE; ++			err = orinoco_set_key(priv, idx, ORINOCO_ALG_NONE, ++					      NULL, 0, NULL, 0); ++			break; ++ ++		case IW_ENCODE_ALG_WEP: ++			if (ext->key_len <= 0) ++				goto out; ++ ++			priv->encode_alg = ORINOCO_ALG_WEP; ++			err = orinoco_set_key(priv, idx, ORINOCO_ALG_WEP, ++					      ext->key, ext->key_len, NULL, 0); ++			break; ++ ++		case IW_ENCODE_ALG_TKIP: ++		{ ++			u8 *tkip_iv = NULL; ++ ++			if (!priv->has_wpa || ++			    (ext->key_len > sizeof(struct orinoco_tkip_key))) ++				goto out; ++ ++			priv->encode_alg = ORINOCO_ALG_TKIP; ++ ++			if (ext->ext_flags & IW_ENCODE_EXT_RX_SEQ_VALID) ++				tkip_iv = &ext->rx_seq[0]; ++ ++			err = orinoco_set_key(priv, idx, ORINOCO_ALG_TKIP, ++					      ext->key, ext->key_len, tkip_iv, ++					      ORINOCO_SEQ_LEN); ++ ++			err = __orinoco_hw_set_tkip_key(priv, idx, ++				 ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY, ++				 priv->keys[idx].key, priv->keys[idx].key_len, ++				 tkip_iv, ORINOCO_SEQ_LEN, NULL, 0); ++			if (err) ++				printk(KERN_ERR "%s: Error %d setting TKIP key" ++				       "\n", dev->name, err); ++ ++			goto out; ++		} ++		default: ++			goto out; ++		} ++	} ++	err = -EINPROGRESS; ++ out: ++	orinoco_unlock(priv, &flags); ++ ++	return err; ++} ++ ++static int orinoco_ioctl_get_encodeext(struct net_device *dev, ++				       struct iw_request_info *info, ++				       union iwreq_data *wrqu, ++				       char *extra) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	struct iw_point *encoding = &wrqu->encoding; ++	struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; ++	int idx, max_key_len; ++	unsigned long flags; ++	int err; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	err = -EINVAL; ++	max_key_len = encoding->length - sizeof(*ext); ++	if (max_key_len < 0) ++		goto out; ++ ++	idx = encoding->flags & IW_ENCODE_INDEX; ++	if (idx) { ++		if ((idx < 1) || (idx > 4)) ++			goto out; ++		idx--; ++	} else ++		idx = priv->tx_key; ++ ++	encoding->flags = idx + 1; ++	memset(ext, 0, sizeof(*ext)); ++ ++	switch (priv->encode_alg) { ++	case ORINOCO_ALG_NONE: ++		ext->alg = IW_ENCODE_ALG_NONE; ++		ext->key_len = 0; ++		encoding->flags |= IW_ENCODE_DISABLED; ++		break; ++	case ORINOCO_ALG_WEP: ++		ext->alg = IW_ENCODE_ALG_WEP; ++		ext->key_len = min(priv->keys[idx].key_len, max_key_len); ++		memcpy(ext->key, priv->keys[idx].key, ext->key_len); ++		encoding->flags |= IW_ENCODE_ENABLED; ++		break; ++	case ORINOCO_ALG_TKIP: ++		ext->alg = IW_ENCODE_ALG_TKIP; ++		ext->key_len = min(priv->keys[idx].key_len, max_key_len); ++		memcpy(ext->key, priv->keys[idx].key, ext->key_len); ++		encoding->flags |= IW_ENCODE_ENABLED; ++		break; ++	} ++ ++	err = 0; ++ out: ++	orinoco_unlock(priv, &flags); ++ ++	return err; ++} ++ ++static int orinoco_ioctl_set_auth(struct net_device *dev, ++				  struct iw_request_info *info, ++				  union iwreq_data *wrqu, char *extra) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	struct hermes *hw = &priv->hw; ++	struct iw_param *param = &wrqu->param; ++	unsigned long flags; ++	int ret = -EINPROGRESS; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	switch (param->flags & IW_AUTH_INDEX) { ++	case IW_AUTH_WPA_VERSION: ++	case IW_AUTH_CIPHER_PAIRWISE: ++	case IW_AUTH_CIPHER_GROUP: ++	case IW_AUTH_RX_UNENCRYPTED_EAPOL: ++	case IW_AUTH_PRIVACY_INVOKED: ++	case IW_AUTH_DROP_UNENCRYPTED: ++		/* ++		 * orinoco does not use these parameters ++		 */ ++		break; ++ ++	case IW_AUTH_MFP: ++		/* Management Frame Protection not supported. ++		 * Only fail if set to required. ++		 */ ++		if (param->value == IW_AUTH_MFP_REQUIRED) ++			ret = -EINVAL; ++		break; ++ ++	case IW_AUTH_KEY_MGMT: ++		/* wl_lkm implies value 2 == PSK for Hermes I ++		 * which ties in with WEXT ++		 * no other hints tho :( ++		 */ ++		priv->key_mgmt = param->value; ++		break; ++ ++	case IW_AUTH_TKIP_COUNTERMEASURES: ++		/* When countermeasures are enabled, shut down the ++		 * card; when disabled, re-enable the card. This must ++		 * take effect immediately. ++		 * ++		 * TODO: Make sure that the EAPOL message is getting ++		 *       out before card disabled ++		 */ ++		if (param->value) { ++			priv->tkip_cm_active = 1; ++			ret = hermes_disable_port(hw, 0); ++		} else { ++			priv->tkip_cm_active = 0; ++			ret = hermes_enable_port(hw, 0); ++		} ++		break; ++ ++	case IW_AUTH_80211_AUTH_ALG: ++		if (param->value & IW_AUTH_ALG_SHARED_KEY) ++			priv->wep_restrict = 1; ++		else if (param->value & IW_AUTH_ALG_OPEN_SYSTEM) ++			priv->wep_restrict = 0; ++		else ++			ret = -EINVAL; ++		break; ++ ++	case IW_AUTH_WPA_ENABLED: ++		if (priv->has_wpa) { ++			priv->wpa_enabled = param->value ? 1 : 0; ++		} else { ++			if (param->value) ++				ret = -EOPNOTSUPP; ++			/* else silently accept disable of WPA */ ++			priv->wpa_enabled = 0; ++		} ++		break; ++ ++	default: ++		ret = -EOPNOTSUPP; ++	} ++ ++	orinoco_unlock(priv, &flags); ++	return ret; ++} ++ ++static int orinoco_ioctl_get_auth(struct net_device *dev, ++				  struct iw_request_info *info, ++				  union iwreq_data *wrqu, char *extra) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	struct iw_param *param = &wrqu->param; ++	unsigned long flags; ++	int ret = 0; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	switch (param->flags & IW_AUTH_INDEX) { ++	case IW_AUTH_KEY_MGMT: ++		param->value = priv->key_mgmt; ++		break; ++ ++	case IW_AUTH_TKIP_COUNTERMEASURES: ++		param->value = priv->tkip_cm_active; ++		break; ++ ++	case IW_AUTH_80211_AUTH_ALG: ++		if (priv->wep_restrict) ++			param->value = IW_AUTH_ALG_SHARED_KEY; ++		else ++			param->value = IW_AUTH_ALG_OPEN_SYSTEM; ++		break; ++ ++	case IW_AUTH_WPA_ENABLED: ++		param->value = priv->wpa_enabled; ++		break; ++ ++	default: ++		ret = -EOPNOTSUPP; ++	} ++ ++	orinoco_unlock(priv, &flags); ++	return ret; ++} ++ ++static int orinoco_ioctl_set_genie(struct net_device *dev, ++				   struct iw_request_info *info, ++				   union iwreq_data *wrqu, char *extra) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	u8 *buf; ++	unsigned long flags; ++ ++	/* cut off at IEEE80211_MAX_DATA_LEN */ ++	if ((wrqu->data.length > IEEE80211_MAX_DATA_LEN) || ++	    (wrqu->data.length && (extra == NULL))) ++		return -EINVAL; ++ ++	if (wrqu->data.length) { ++		buf = kmemdup(extra, wrqu->data.length, GFP_KERNEL); ++		if (buf == NULL) ++			return -ENOMEM; ++	} else ++		buf = NULL; ++ ++	if (orinoco_lock(priv, &flags) != 0) { ++		kfree(buf); ++		return -EBUSY; ++	} ++ ++	kfree(priv->wpa_ie); ++	priv->wpa_ie = buf; ++	priv->wpa_ie_len = wrqu->data.length; ++ ++	if (priv->wpa_ie) { ++		/* Looks like wl_lkm wants to check the auth alg, and ++		 * somehow pass it to the firmware. ++		 * Instead it just calls the key mgmt rid ++		 *   - we do this in set auth. ++		 */ ++	} ++ ++	orinoco_unlock(priv, &flags); ++	return 0; ++} ++ ++static int orinoco_ioctl_get_genie(struct net_device *dev, ++				   struct iw_request_info *info, ++				   union iwreq_data *wrqu, char *extra) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	unsigned long flags; ++	int err = 0; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	if ((priv->wpa_ie_len == 0) || (priv->wpa_ie == NULL)) { ++		wrqu->data.length = 0; ++		goto out; ++	} ++ ++	if (wrqu->data.length < priv->wpa_ie_len) { ++		err = -E2BIG; ++		goto out; ++	} ++ ++	wrqu->data.length = priv->wpa_ie_len; ++	memcpy(extra, priv->wpa_ie, priv->wpa_ie_len); ++ ++out: ++	orinoco_unlock(priv, &flags); ++	return err; ++} ++ ++static int orinoco_ioctl_set_mlme(struct net_device *dev, ++				  struct iw_request_info *info, ++				  union iwreq_data *wrqu, char *extra) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	struct iw_mlme *mlme = (struct iw_mlme *)extra; ++	unsigned long flags; ++	int ret = 0; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	switch (mlme->cmd) { ++	case IW_MLME_DEAUTH: ++		/* silently ignore */ ++		break; ++ ++	case IW_MLME_DISASSOC: ++ ++		ret = orinoco_hw_disassociate(priv, mlme->addr.sa_data, ++					      mlme->reason_code); ++		break; ++ ++	default: ++		ret = -EOPNOTSUPP; ++	} ++ ++	orinoco_unlock(priv, &flags); ++	return ret; ++} ++ ++static int orinoco_ioctl_reset(struct net_device *dev, ++			       struct iw_request_info *info, ++			       union iwreq_data *wrqu, ++			       char *extra) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++ ++	if (!capable(CAP_NET_ADMIN)) ++		return -EPERM; ++ ++	if (info->cmd == (SIOCIWFIRSTPRIV + 0x1)) { ++		printk(KERN_DEBUG "%s: Forcing reset!\n", dev->name); ++ ++		/* Firmware reset */ ++		orinoco_reset(&priv->reset_work); ++	} else { ++		printk(KERN_DEBUG "%s: Force scheduling reset!\n", dev->name); ++ ++		schedule_work(&priv->reset_work); ++	} ++ ++	return 0; ++} ++ ++static int orinoco_ioctl_setibssport(struct net_device *dev, ++				     struct iw_request_info *info, ++				     union iwreq_data *wrqu, ++				     char *extra) ++ ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	int val = *((int *) extra); ++	unsigned long flags; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	priv->ibss_port = val; ++ ++	/* Actually update the mode we are using */ ++	set_port_type(priv); ++ ++	orinoco_unlock(priv, &flags); ++	return -EINPROGRESS;		/* Call commit handler */ ++} ++ ++static int orinoco_ioctl_getibssport(struct net_device *dev, ++				     struct iw_request_info *info, ++				     union iwreq_data *wrqu, ++				     char *extra) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	int *val = (int *) extra; ++ ++	*val = priv->ibss_port; ++	return 0; ++} ++ ++static int orinoco_ioctl_setport3(struct net_device *dev, ++				  struct iw_request_info *info, ++				  union iwreq_data *wrqu, ++				  char *extra) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	int val = *((int *) extra); ++	int err = 0; ++	unsigned long flags; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	switch (val) { ++	case 0: /* Try to do IEEE ad-hoc mode */ ++		if (!priv->has_ibss) { ++			err = -EINVAL; ++			break; ++		} ++		priv->prefer_port3 = 0; ++ ++		break; ++ ++	case 1: /* Try to do Lucent proprietary ad-hoc mode */ ++		if (!priv->has_port3) { ++			err = -EINVAL; ++			break; ++		} ++		priv->prefer_port3 = 1; ++		break; ++ ++	default: ++		err = -EINVAL; ++	} ++ ++	if (!err) { ++		/* Actually update the mode we are using */ ++		set_port_type(priv); ++		err = -EINPROGRESS; ++	} ++ ++	orinoco_unlock(priv, &flags); ++ ++	return err; ++} ++ ++static int orinoco_ioctl_getport3(struct net_device *dev, ++				  struct iw_request_info *info, ++				  union iwreq_data *wrqu, ++				  char *extra) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	int *val = (int *) extra; ++ ++	*val = priv->prefer_port3; ++	return 0; ++} ++ ++static int orinoco_ioctl_setpreamble(struct net_device *dev, ++				     struct iw_request_info *info, ++				     union iwreq_data *wrqu, ++				     char *extra) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	unsigned long flags; ++	int val; ++ ++	if (!priv->has_preamble) ++		return -EOPNOTSUPP; ++ ++	/* 802.11b has recently defined some short preamble. ++	 * Basically, the Phy header has been reduced in size. ++	 * This increase performance, especially at high rates ++	 * (the preamble is transmitted at 1Mb/s), unfortunately ++	 * this give compatibility troubles... - Jean II */ ++	val = *((int *) extra); ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	if (val) ++		priv->preamble = 1; ++	else ++		priv->preamble = 0; ++ ++	orinoco_unlock(priv, &flags); ++ ++	return -EINPROGRESS;		/* Call commit handler */ ++} ++ ++static int orinoco_ioctl_getpreamble(struct net_device *dev, ++				     struct iw_request_info *info, ++				     union iwreq_data *wrqu, ++				     char *extra) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	int *val = (int *) extra; ++ ++	if (!priv->has_preamble) ++		return -EOPNOTSUPP; ++ ++	*val = priv->preamble; ++	return 0; ++} ++ ++/* ioctl interface to hermes_read_ltv() ++ * To use with iwpriv, pass the RID as the token argument, e.g. ++ * iwpriv get_rid [0xfc00] ++ * At least Wireless Tools 25 is required to use iwpriv. ++ * For Wireless Tools 25 and 26 append "dummy" are the end. */ ++static int orinoco_ioctl_getrid(struct net_device *dev, ++				struct iw_request_info *info, ++				union iwreq_data *wrqu, ++				char *extra) ++{ ++	struct iw_point *data = &wrqu->data; ++	struct orinoco_private *priv = ndev_priv(dev); ++	struct hermes *hw = &priv->hw; ++	int rid = data->flags; ++	u16 length; ++	int err; ++	unsigned long flags; ++ ++	/* It's a "get" function, but we don't want users to access the ++	 * WEP key and other raw firmware data */ ++	if (!capable(CAP_NET_ADMIN)) ++		return -EPERM; ++ ++	if (rid < 0xfc00 || rid > 0xffff) ++		return -EINVAL; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return -EBUSY; ++ ++	err = hw->ops->read_ltv(hw, USER_BAP, rid, MAX_RID_LEN, &length, ++				extra); ++	if (err) ++		goto out; ++ ++	data->length = min_t(u16, HERMES_RECLEN_TO_BYTES(length), ++			     MAX_RID_LEN); ++ ++ out: ++	orinoco_unlock(priv, &flags); ++	return err; ++} ++ ++ ++/* Commit handler, called after set operations */ ++static int orinoco_ioctl_commit(struct net_device *dev, ++				struct iw_request_info *info, ++				union iwreq_data *wrqu, ++				char *extra) ++{ ++	struct orinoco_private *priv = ndev_priv(dev); ++	unsigned long flags; ++	int err = 0; ++ ++	if (!priv->open) ++		return 0; ++ ++	if (orinoco_lock(priv, &flags) != 0) ++		return err; ++ ++	err = orinoco_commit(priv); ++ ++	orinoco_unlock(priv, &flags); ++	return err; ++} ++ ++static const struct iw_priv_args orinoco_privtab[] = { ++	{ SIOCIWFIRSTPRIV + 0x0, 0, 0, "force_reset" }, ++	{ SIOCIWFIRSTPRIV + 0x1, 0, 0, "card_reset" }, ++	{ SIOCIWFIRSTPRIV + 0x2, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, ++	  0, "set_port3" }, ++	{ SIOCIWFIRSTPRIV + 0x3, 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, ++	  "get_port3" }, ++	{ SIOCIWFIRSTPRIV + 0x4, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, ++	  0, "set_preamble" }, ++	{ SIOCIWFIRSTPRIV + 0x5, 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, ++	  "get_preamble" }, ++	{ SIOCIWFIRSTPRIV + 0x6, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, ++	  0, "set_ibssport" }, ++	{ SIOCIWFIRSTPRIV + 0x7, 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, ++	  "get_ibssport" }, ++	{ SIOCIWFIRSTPRIV + 0x9, 0, IW_PRIV_TYPE_BYTE | MAX_RID_LEN, ++	  "get_rid" }, ++}; ++ ++ ++/* ++ * Structures to export the Wireless Handlers ++ */ ++ ++static const iw_handler	orinoco_handler[] = { ++	IW_HANDLER(SIOCSIWCOMMIT,	orinoco_ioctl_commit), ++	IW_HANDLER(SIOCGIWNAME,		cfg80211_wext_giwname), ++	IW_HANDLER(SIOCSIWFREQ,		orinoco_ioctl_setfreq), ++	IW_HANDLER(SIOCGIWFREQ,		orinoco_ioctl_getfreq), ++	IW_HANDLER(SIOCSIWMODE,		cfg80211_wext_siwmode), ++	IW_HANDLER(SIOCGIWMODE,		cfg80211_wext_giwmode), ++	IW_HANDLER(SIOCSIWSENS,		orinoco_ioctl_setsens), ++	IW_HANDLER(SIOCGIWSENS,		orinoco_ioctl_getsens), ++	IW_HANDLER(SIOCGIWRANGE,	cfg80211_wext_giwrange), ++	IW_HANDLER(SIOCSIWAP,		orinoco_ioctl_setwap), ++	IW_HANDLER(SIOCGIWAP,		orinoco_ioctl_getwap), ++	IW_HANDLER(SIOCSIWSCAN,		cfg80211_wext_siwscan), ++	IW_HANDLER(SIOCGIWSCAN,		cfg80211_wext_giwscan), ++	IW_HANDLER(SIOCSIWESSID,	orinoco_ioctl_setessid), ++	IW_HANDLER(SIOCGIWESSID,	orinoco_ioctl_getessid), ++	IW_HANDLER(SIOCSIWRATE,		orinoco_ioctl_setrate), ++	IW_HANDLER(SIOCGIWRATE,		orinoco_ioctl_getrate), ++	IW_HANDLER(SIOCSIWRTS,		cfg80211_wext_siwrts), ++	IW_HANDLER(SIOCGIWRTS,		cfg80211_wext_giwrts), ++	IW_HANDLER(SIOCSIWFRAG,		cfg80211_wext_siwfrag), ++	IW_HANDLER(SIOCGIWFRAG,		cfg80211_wext_giwfrag), ++	IW_HANDLER(SIOCGIWRETRY,	cfg80211_wext_giwretry), ++	IW_HANDLER(SIOCSIWENCODE,	orinoco_ioctl_setiwencode), ++	IW_HANDLER(SIOCGIWENCODE,	orinoco_ioctl_getiwencode), ++	IW_HANDLER(SIOCSIWPOWER,	orinoco_ioctl_setpower), ++	IW_HANDLER(SIOCGIWPOWER,	orinoco_ioctl_getpower), ++	IW_HANDLER(SIOCSIWGENIE,	orinoco_ioctl_set_genie), ++	IW_HANDLER(SIOCGIWGENIE,	orinoco_ioctl_get_genie), ++	IW_HANDLER(SIOCSIWMLME,		orinoco_ioctl_set_mlme), ++	IW_HANDLER(SIOCSIWAUTH,		orinoco_ioctl_set_auth), ++	IW_HANDLER(SIOCGIWAUTH,		orinoco_ioctl_get_auth), ++	IW_HANDLER(SIOCSIWENCODEEXT,	orinoco_ioctl_set_encodeext), ++	IW_HANDLER(SIOCGIWENCODEEXT,	orinoco_ioctl_get_encodeext), ++}; ++ ++ ++/* ++  Added typecasting since we no longer use iwreq_data -- Moustafa ++ */ ++static const iw_handler	orinoco_private_handler[] = { ++	[0] = orinoco_ioctl_reset, ++	[1] = orinoco_ioctl_reset, ++	[2] = orinoco_ioctl_setport3, ++	[3] = orinoco_ioctl_getport3, ++	[4] = orinoco_ioctl_setpreamble, ++	[5] = orinoco_ioctl_getpreamble, ++	[6] = orinoco_ioctl_setibssport, ++	[7] = orinoco_ioctl_getibssport, ++	[9] = orinoco_ioctl_getrid, ++}; ++ ++const struct iw_handler_def orinoco_handler_def = { ++	.num_standard = ARRAY_SIZE(orinoco_handler), ++	.num_private = ARRAY_SIZE(orinoco_private_handler), ++	.num_private_args = ARRAY_SIZE(orinoco_privtab), ++	.standard = orinoco_handler, ++	.private = orinoco_private_handler, ++	.private_args = orinoco_privtab, ++	.get_wireless_stats = orinoco_get_wireless_stats, ++}; +diff -Nur linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/wext.h linux-6.15.6/drivers/net/wireless/intersil/orinoco/wext.h +--- linux-6.15.6.orig/drivers/net/wireless/intersil/orinoco/wext.h	1970-01-01 01:00:00.000000000 +0100 ++++ linux-6.15.6/drivers/net/wireless/intersil/orinoco/wext.h	2025-08-03 15:01:59.393129374 +0200 +@@ -0,0 +1,13 @@ ++/* Wireless extensions support. ++ * ++ * See copyright notice in main.c ++ */ ++#ifndef _ORINOCO_WEXT_H_ ++#define _ORINOCO_WEXT_H_ ++ ++#include <net/iw_handler.h> ++ ++/* Structure defining all our WEXT handlers */ ++extern const struct iw_handler_def orinoco_handler_def; ++ ++#endif /* _ORINOCO_WEXT_H_ */ diff --git a/target/linux/patches/6.6.82/armnommu-fix-thread-registers.patch b/target/linux/patches/6.6.88/armnommu-fix-thread-registers.patch index 8ab2196dc..8ab2196dc 100644 --- a/target/linux/patches/6.6.82/armnommu-fix-thread-registers.patch +++ b/target/linux/patches/6.6.88/armnommu-fix-thread-registers.patch diff --git a/target/linux/patches/6.6.82/armnommu-versatile.patch b/target/linux/patches/6.6.88/armnommu-versatile.patch index f8f10f50b..f8f10f50b 100644 --- a/target/linux/patches/6.6.82/armnommu-versatile.patch +++ b/target/linux/patches/6.6.88/armnommu-versatile.patch diff --git a/target/linux/patches/6.6.82/hppa-cross-compile.patch b/target/linux/patches/6.6.88/hppa-cross-compile.patch index 51c24fff2..51c24fff2 100644 --- a/target/linux/patches/6.6.82/hppa-cross-compile.patch +++ b/target/linux/patches/6.6.88/hppa-cross-compile.patch diff --git a/target/linux/patches/6.6.88/linksys-nslu2.patch b/target/linux/patches/6.6.88/linksys-nslu2.patch new file mode 100644 index 000000000..20958062e --- /dev/null +++ b/target/linux/patches/6.6.88/linksys-nslu2.patch @@ -0,0 +1,12 @@ +diff -Nur linux-6.6.82.orig/arch/arm/boot/dts/intel/ixp/intel-ixp42x-linksys-nslu2.dts linux-6.6.82/arch/arm/boot/dts/intel/ixp/intel-ixp42x-linksys-nslu2.dts +--- linux-6.6.82.orig/arch/arm/boot/dts/intel/ixp/intel-ixp42x-linksys-nslu2.dts	2025-03-09 09:55:04.000000000 +0100 ++++ linux-6.6.82/arch/arm/boot/dts/intel/ixp/intel-ixp42x-linksys-nslu2.dts	2025-04-08 19:11:26.464512676 +0200 +@@ -21,7 +21,7 @@ + 	}; +  + 	chosen { +-		bootargs = "console=ttyS0,115200n8 root=/dev/mtdblock2 rw rootfstype=squashfs,jffs2 rootwait"; ++		bootargs = "console=ttyS0,115200n8 root=/dev/mtdblock4 rootfstype=squashfs rootwait"; + 		stdout-path = "uart0:115200n8"; + 	}; +  diff --git a/target/linux/patches/6.6.82/macsonic.patch b/target/linux/patches/6.6.88/macsonic.patch index 51e76113b..51e76113b 100644 --- a/target/linux/patches/6.6.82/macsonic.patch +++ b/target/linux/patches/6.6.88/macsonic.patch diff --git a/target/linux/patches/6a2f2e4198eaff63ee75f6085ce9f966c47b4441/flat-fix-debug-output.patch b/target/linux/patches/6a2f2e4198eaff63ee75f6085ce9f966c47b4441/flat-fix-debug-output.patch new file mode 100644 index 000000000..8ca77b3c7 --- /dev/null +++ b/target/linux/patches/6a2f2e4198eaff63ee75f6085ce9f966c47b4441/flat-fix-debug-output.patch @@ -0,0 +1,39 @@ +--- /home/mirabilos/q/linux-6a2f2e4198eaff63ee75f6085ce9f966c47b4441/arch/lm32/kernel/flat.c	2025-04-13 20:33:20.000000000 +0000 ++++ linux-6a2f2e4198eaff63ee75f6085ce9f966c47b4441/arch/lm32/kernel/flat.c	2025-04-14 02:40:22.277112693 +0000 +@@ -23,13 +20,13 @@ unsigned long lm32_get_addr_from_rp(unsi +  + 	switch (type) { + 	case FLAT_LM32_RELOC_TYPE_32_BIT: +-		pr_debug("*ptr = %lx", get_unaligned(ptr)); ++		pr_debug("*ptr = %lx at %p\n", get_unaligned(ptr), ptr); + 		val = get_unaligned(ptr); + 		break; +  + 	case FLAT_LM32_RELOC_TYPE_LO16_BIT: + 	case FLAT_LM32_RELOC_TYPE_HI16_BIT: +-		pr_debug("*usptr = %x", get_unaligned(usptr)); ++		pr_debug("*usptr = %x at %p\n", get_unaligned(usptr), usptr); + 		val = get_unaligned(usptr) & 0xffff; + 		val += *persistent; + 		break; +@@ -56,17 +53,17 @@ void lm32_put_addr_at_rp(unsigned long * + 	switch (type) { + 	case FLAT_LM32_RELOC_TYPE_32_BIT: + 		put_unaligned(addr, ptr); +-		pr_debug("new ptr =%lx", get_unaligned(ptr)); ++		pr_debug("new value %lx at %p\n", get_unaligned(ptr), ptr); + 		break; +  + 	case FLAT_LM32_RELOC_TYPE_LO16_BIT: + 		put_unaligned(addr, usptr); +-		pr_debug("new value %x at %p", get_unaligned(usptr), usptr); ++		pr_debug("new value %x (lo) at %p\n", get_unaligned(usptr), usptr); + 		break; +  + 	case FLAT_LM32_RELOC_TYPE_HI16_BIT: + 		put_unaligned(addr >> 16, usptr); +-		pr_debug("new value %x at %p", get_unaligned(usptr), usptr); ++		pr_debug("new value %x (hi) at %p\n", get_unaligned(usptr), usptr); + 		break; +  + 	} diff --git a/target/linux/patches/dd03775ac7638ec56fb6aec35e7932755f282f60/defconfig.patch b/target/linux/patches/dd03775ac7638ec56fb6aec35e7932755f282f60/defconfig.patch new file mode 100644 index 000000000..1bd5e00ed --- /dev/null +++ b/target/linux/patches/dd03775ac7638ec56fb6aec35e7932755f282f60/defconfig.patch @@ -0,0 +1,38 @@ +diff -Nur linux-dd03775ac7638ec56fb6aec35e7932755f282f60.orig/arch/arm64/configs/bcm2711_defconfig linux-dd03775ac7638ec56fb6aec35e7932755f282f60/arch/arm64/configs/bcm2711_defconfig +--- linux-dd03775ac7638ec56fb6aec35e7932755f282f60.orig/arch/arm64/configs/bcm2711_defconfig	2025-04-01 05:59:45.000000000 +0200 ++++ linux-dd03775ac7638ec56fb6aec35e7932755f282f60/arch/arm64/configs/bcm2711_defconfig	2025-04-01 18:37:38.341421368 +0200 +@@ -1,4 +1,4 @@ +-CONFIG_LOCALVERSION="-v8" ++CONFIG_LOCALVERSION="" + # CONFIG_LOCALVERSION_AUTO is not set + CONFIG_SYSVIPC=y + CONFIG_POSIX_MQUEUE=y +@@ -78,8 +78,7 @@ + CONFIG_MODULE_UNLOAD=y + CONFIG_MODVERSIONS=y + CONFIG_MODULE_SRCVERSION_ALL=y +-CONFIG_MODULE_COMPRESS=y +-CONFIG_MODULE_COMPRESS_XZ=y ++# CONFIG_MODULE_COMPRESS is not set + CONFIG_BLK_DEV_THROTTLING=y + CONFIG_PARTITION_ADVANCED=y + CONFIG_MAC_PARTITION=y +diff -Nur linux-dd03775ac7638ec56fb6aec35e7932755f282f60.orig/arch/arm64/configs/bcm2712_defconfig linux-dd03775ac7638ec56fb6aec35e7932755f282f60/arch/arm64/configs/bcm2712_defconfig +--- linux-dd03775ac7638ec56fb6aec35e7932755f282f60.orig/arch/arm64/configs/bcm2712_defconfig	2025-04-01 05:59:45.000000000 +0200 ++++ linux-dd03775ac7638ec56fb6aec35e7932755f282f60/arch/arm64/configs/bcm2712_defconfig	2025-04-01 18:37:14.313420820 +0200 +@@ -1,4 +1,4 @@ +-CONFIG_LOCALVERSION="-v8-16k" ++CONFIG_LOCALVERSION="" + # CONFIG_LOCALVERSION_AUTO is not set + CONFIG_SYSVIPC=y + CONFIG_POSIX_MQUEUE=y +@@ -81,8 +81,7 @@ + CONFIG_MODULE_UNLOAD=y + CONFIG_MODVERSIONS=y + CONFIG_MODULE_SRCVERSION_ALL=y +-CONFIG_MODULE_COMPRESS=y +-CONFIG_MODULE_COMPRESS_XZ=y ++# CONFIG_MODULE_COMPRESS is not set + CONFIG_BLK_DEV_THROTTLING=y + CONFIG_PARTITION_ADVANCED=y + CONFIG_MAC_PARTITION=y diff --git a/target/lm32/uclibc-ng-nommu.config b/target/lm32/uclibc-ng-nommu.config index dbdf5613c..b540d0fbb 100644 --- a/target/lm32/uclibc-ng-nommu.config +++ b/target/lm32/uclibc-ng-nommu.config @@ -1,6 +1,6 @@  #  # Automatically generated file; DO NOT EDIT. -# uClibc-ng 1.0.44 C Library Configuration +# uClibc-ng 1.0.52 C Library Configuration  #  # TARGET_aarch64 is not set  # TARGET_alpha is not set @@ -45,7 +45,6 @@ FORCE_OPTIONS_FOR_ARCH=y  TARGET_SUBARCH=""  UCLIBC_FORMAT_FLAT=y  # UCLIBC_FORMAT_FLAT_SEP_DATA is not set -# UCLIBC_FORMAT_SHARED_FLAT is not set  ARCH_HAS_DEPRECATED_SYSCALLS=y  ARCH_BIG_ENDIAN=y @@ -73,8 +72,11 @@ HAVE_DOT_CONFIG=y  HAVE_NO_PIC=y  ARCH_HAS_NO_SHARED=y  ARCH_HAS_NO_LDSO=y +UCLIBC_CTOR_DTOR=y  HAS_NO_THREADS=y  # UCLIBC_HAS_LINUXTHREADS is not set +PTHREADS_STACK_DEFAULT_SIZE=2097152 +UCLIBC_HAS_SYSLOG=y  UCLIBC_HAS_LFS=y  # MALLOC is not set  MALLOC_SIMPLE=y @@ -129,7 +131,20 @@ UCLIBC_HAS_CRYPT_IMPL=y  UCLIBC_HAS_SHA256_CRYPT_IMPL=y  UCLIBC_HAS_SHA512_CRYPT_IMPL=y  UCLIBC_HAS_CRYPT=y -# UCLIBC_HAS_NETWORK_SUPPORT is not set +UCLIBC_HAS_NETWORK_SUPPORT=y +UCLIBC_HAS_SOCKET=y +UCLIBC_HAS_IPV4=y +UCLIBC_HAS_IPV6=y +UCLIBC_USE_NETLINK=y +UCLIBC_SUPPORT_AI_ADDRCONFIG=y +# UCLIBC_HAS_BSD_RES_CLOSE is not set +UCLIBC_HAS_COMPAT_RES_STATE=y +# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set +UCLIBC_HAS_RESOLVER_SUPPORT=y +# UCLIBC_DNSRAND_MODE_URANDOM is not set +# UCLIBC_DNSRAND_MODE_CLOCK is not set +UCLIBC_DNSRAND_MODE_PRNGPLUS=y +# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set  #  # String and Stdio Support @@ -180,11 +195,14 @@ UCLIBC_HAS_GNU_GETSUBOPT=y  #  # Big and Tall  # -# UCLIBC_HAS_REGEX is not set -# UCLIBC_HAS_FNMATCH is not set -# UCLIBC_HAS_NFTW is not set -# UCLIBC_HAS_FTW is not set -# UCLIBC_HAS_FTS is not set +UCLIBC_HAS_REGEX=y +UCLIBC_HAS_FNMATCH=y +UCLIBC_HAS_WORDEXP=y +UCLIBC_HAS_NFTW=y +UCLIBC_HAS_FTW=y +UCLIBC_HAS_FTS=y +UCLIBC_HAS_GLOB=y +UCLIBC_HAS_GNU_GLOB=y  #  # Library Installation Options diff --git a/target/m68k/uclibc-ng.config b/target/m68k/uclibc-ng.config index 0e96278b4..897f183c7 100644 --- a/target/m68k/uclibc-ng.config +++ b/target/m68k/uclibc-ng.config @@ -1,6 +1,6 @@  #  # Automatically generated file; DO NOT EDIT. -# uClibc-ng 1.0.51 C Library Configuration +# uClibc-ng 1.0.52 C Library Configuration  #  # TARGET_aarch64 is not set  # TARGET_alpha is not set @@ -59,6 +59,7 @@ UCLIBC_HAS_FLOATS=y  UCLIBC_HAS_FPU=y  DO_C99_MATH=y  DO_XSI_MATH=y +UCLIBC_HAS_FENV=y  UCLIBC_HAS_LONG_DOUBLE_MATH=y  KERNEL_HEADERS=""  HAVE_DOT_CONFIG=y diff --git a/target/mips/uclibc-ng.config b/target/mips/uclibc-ng.config index 55f5c4ea3..64c805f03 100644 --- a/target/mips/uclibc-ng.config +++ b/target/mips/uclibc-ng.config @@ -1,6 +1,6 @@  #  # Automatically generated file; DO NOT EDIT. -# uClibc-ng 1.0.47 C Library Configuration +# uClibc-ng 1.0.51 C Library Configuration  #  # TARGET_aarch64 is not set  # TARGET_alpha is not set @@ -64,6 +64,7 @@ UCLIBC_HAS_FLOATS=y  UCLIBC_HAS_FPU=y  DO_C99_MATH=y  DO_XSI_MATH=y +UCLIBC_HAS_FENV=y  UCLIBC_HAS_LONG_DOUBLE_MATH=y  KERNEL_HEADERS=""  HAVE_DOT_CONFIG=y diff --git a/target/mips64/uclibc-ng.config b/target/mips64/uclibc-ng.config index 796f76a61..6ee0e37c5 100644 --- a/target/mips64/uclibc-ng.config +++ b/target/mips64/uclibc-ng.config @@ -1,6 +1,6 @@  #  # Automatically generated file; DO NOT EDIT. -# uClibc-ng 1.0.25 C Library Configuration +# uClibc-ng 1.0.52 C Library Configuration  #  # TARGET_aarch64 is not set  # TARGET_alpha is not set @@ -10,11 +10,13 @@  # TARGET_bfin is not set  # TARGET_c6x is not set  # TARGET_cris is not set +# TARGET_csky is not set  # TARGET_frv is not set  # TARGET_h8300 is not set  # TARGET_hppa is not set  # TARGET_i386 is not set  # TARGET_ia64 is not set +# TARGET_kvx is not set  # TARGET_lm32 is not set  # TARGET_m68k is not set  # TARGET_metag is not set @@ -24,11 +26,16 @@ TARGET_mips=y  # TARGET_nios2 is not set  # TARGET_or1k is not set  # TARGET_powerpc is not set +# TARGET_riscv64 is not set +# TARGET_riscv32 is not set  # TARGET_sh is not set  # TARGET_sparc is not set  # TARGET_sparc64 is not set +# TARGET_tile is not set  # TARGET_x86_64 is not set  # TARGET_xtensa is not set +TARGET_LDSO_NAME="ld64-uClibc" +TARGET_ARCH_BITS=64  #  # Target Architecture Features and Options @@ -57,7 +64,7 @@ UCLIBC_HAS_FLOATS=y  UCLIBC_HAS_FPU=y  DO_C99_MATH=y  DO_XSI_MATH=y -# UCLIBC_HAS_FENV is not set +UCLIBC_HAS_FENV=y  UCLIBC_HAS_LONG_DOUBLE_MATH=y  KERNEL_HEADERS=""  HAVE_DOT_CONFIG=y @@ -66,7 +73,9 @@ HAVE_DOT_CONFIG=y  # General Library Settings  #  DOPIC=y +# STATIC_PIE is not set  ARCH_HAS_UCONTEXT=y +HAVE_LDSO=y  HAVE_SHARED=y  # FORCE_SHAREABLE_TEXT_SEGMENTS is not set  LDSO_LDD_SUPPORT=y @@ -76,21 +85,22 @@ LDSO_CACHE_SUPPORT=y  LDSO_BASE_FILENAME="ld.so"  # LDSO_STANDALONE_SUPPORT is not set  # LDSO_PRELINK_SUPPORT is not set +ARCH_VDSO_SUPPORT=y +# VDSO_SUPPORT is not set  # UCLIBC_STATIC_LDCONFIG is not set  LDSO_RUNPATH=y  LDSO_RUNPATH_OF_EXECUTABLE=y  LDSO_SAFE_RUNPATH=y  LDSO_SEARCH_INTERP_PATH=y  LDSO_LD_LIBRARY_PATH=y -LDSO_NO_CLEANUP=y  UCLIBC_CTOR_DTOR=y -# LDSO_GNU_HASH_SUPPORT is not set  # HAS_NO_THREADS is not set  # UCLIBC_HAS_LINUXTHREADS is not set  UCLIBC_HAS_THREADS_NATIVE=y  UCLIBC_HAS_THREADS=y  UCLIBC_HAS_TLS=y  PTHREADS_DEBUG_SUPPORT=y +PTHREADS_STACK_DEFAULT_SIZE=2097152  UCLIBC_HAS_SYSLOG=y  UCLIBC_HAS_LFS=y  # MALLOC is not set @@ -135,6 +145,7 @@ UCLIBC_HAS_GNU_ERROR=y  UCLIBC_BSD_SPECIFIC=y  UCLIBC_HAS_BSD_ERR=y  UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y +# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set  # UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set  # UCLIBC_NTP_LEGACY is not set  UCLIBC_SV4_DEPRECATED=y @@ -157,6 +168,10 @@ UCLIBC_HAS_BSD_RES_CLOSE=y  UCLIBC_HAS_COMPAT_RES_STATE=y  # UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set  UCLIBC_HAS_RESOLVER_SUPPORT=y +# UCLIBC_DNSRAND_MODE_URANDOM is not set +# UCLIBC_DNSRAND_MODE_CLOCK is not set +UCLIBC_DNSRAND_MODE_PRNGPLUS=y +# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set  #  # String and Stdio Support @@ -227,7 +242,6 @@ HARDWIRED_ABSPATH=y  # Security options  #  # UCLIBC_BUILD_PIE is not set -# UCLIBC_HAS_ARC4RANDOM is not set  # UCLIBC_HAS_SSP is not set  # UCLIBC_BUILD_RELRO is not set  # UCLIBC_BUILD_NOW is not set diff --git a/target/or1k/uclibc-ng.config b/target/or1k/uclibc-ng.config index 881c73107..666ce5abb 100644 --- a/target/or1k/uclibc-ng.config +++ b/target/or1k/uclibc-ng.config @@ -1,6 +1,6 @@  #  # Automatically generated file; DO NOT EDIT. -# uClibc-ng 1.0.45 C Library Configuration +# uClibc-ng 1.0.55 C Library Configuration  #  # TARGET_aarch64 is not set  # TARGET_alpha is not set @@ -58,6 +58,7 @@ UCLIBC_HAS_FLOATS=y  UCLIBC_HAS_FPU=y  DO_C99_MATH=y  DO_XSI_MATH=y +# UCLIBC_HAS_FENV is not set  UCLIBC_HAS_LONG_DOUBLE_MATH=y  KERNEL_HEADERS=""  HAVE_DOT_CONFIG=y diff --git a/target/riscv32/Makefile b/target/riscv32/Makefile index 6bcede1ff..1d628402f 100644 --- a/target/riscv32/Makefile +++ b/target/riscv32/Makefile @@ -10,9 +10,7 @@ QEMU_ARGS:=-M virt -m 512 -nographic  ifeq ($(ADK_TARGET_WITH_MMU),)  QEMU_ARGS+=-bios none -cpu rv32,mmu=off  endif -ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y)  QEMU_ARGS+=-netdev user,id=eth0 -device virtio-net-device,netdev=eth0 -endif  ifeq ($(ADK_TARGET_FS),archive)  QEMU_ARGS+=-device virtio-blk-device,drive=vda -drive file=qemu-${ADK_TARGET_CPU_ARCH}.img,if=none,id=vda,format=raw  endif diff --git a/target/riscv32/uclibc-ng.config b/target/riscv32/uclibc-ng.config index 63047370c..a647ca86e 100644 --- a/target/riscv32/uclibc-ng.config +++ b/target/riscv32/uclibc-ng.config @@ -1,6 +1,6 @@  #  # Automatically generated file; DO NOT EDIT. -# uClibc-ng 1.0.45 C Library Configuration +# uClibc-ng 1.0.55 C Library Configuration  #  # TARGET_aarch64 is not set  # TARGET_alpha is not set @@ -58,6 +58,7 @@ UCLIBC_HAS_FLOATS=y  UCLIBC_HAS_FPU=y  DO_C99_MATH=y  DO_XSI_MATH=y +# UCLIBC_HAS_FENV is not set  UCLIBC_HAS_LONG_DOUBLE_MATH=y  KERNEL_HEADERS=""  HAVE_DOT_CONFIG=y @@ -66,6 +67,7 @@ HAVE_DOT_CONFIG=y  # General Library Settings  #  DOPIC=y +# STATIC_PIE is not set  HAVE_LDSO=y  HAVE_SHARED=y  # FORCE_SHAREABLE_TEXT_SEGMENTS is not set @@ -85,6 +87,7 @@ LDSO_LD_LIBRARY_PATH=y  UCLIBC_CTOR_DTOR=y  # LDSO_GNU_HASH_SUPPORT is not set  # HAS_NO_THREADS is not set +# UCLIBC_HAS_LINUXTHREADS is not set  UCLIBC_HAS_THREADS_NATIVE=y  UCLIBC_HAS_THREADS=y  UCLIBC_HAS_TLS=y diff --git a/target/riscv64/Makefile b/target/riscv64/Makefile index 55134d24e..4283064e5 100644 --- a/target/riscv64/Makefile +++ b/target/riscv64/Makefile @@ -10,10 +10,7 @@ QEMU_ARGS:=-M virt -m 512 -nographic  ifeq ($(ADK_TARGET_WITH_MMU),)  QEMU_ARGS+=-bios none -cpu rv64,mmu=off  endif - -ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y)  QEMU_ARGS+=-netdev user,id=eth0 -device virtio-net-device,netdev=eth0 -endif  ifeq ($(ADK_TARGET_FS),archive)  QEMU_ARGS+=-device virtio-blk-device,drive=vda -drive file=qemu-${ADK_TARGET_CPU_ARCH}.img,if=none,id=vda,format=raw  endif @@ -54,6 +51,9 @@ endif  ifeq ($(ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT),y)  	@echo 'sudo python3 scripts/kflash.py -p /dev/ttyUSB0 -b 1500000 -t $(FW_DIR)/$(TARGET_KERNEL)'  endif +ifeq ($(ADK_TARGET_SYSTEM_SIPEED_MAIXDUINO),y) +	@echo 'sudo python3 scripts/kflash.py -p /dev/ttyUSB0 -b 1500000 -t $(FW_DIR)/$(TARGET_KERNEL)' +endif  endif  ifeq ($(ADK_TARGET_FS),genimage)  targethelp: diff --git a/target/riscv64/kernel/sipeed-maixduino b/target/riscv64/kernel/sipeed-maixduino new file mode 100644 index 000000000..713afd415 --- /dev/null +++ b/target/riscv64/kernel/sipeed-maixduino @@ -0,0 +1,9 @@ +CONFIG_RISCV=y +CONFIG_SOC_CANAAN=y +CONFIG_SOC_CANAAN_K210_DTB_BUILTIN=y +CONFIG_SOC_CANAAN_K210_DTB_SOURCE="sipeed_maixduino" +CONFIG_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_CMDLINE="earlycon console=ttySIF0" +CONFIG_CMDLINE_FORCE=y +CONFIG_SECTION_MISMATCH_WARN_ONLY=y diff --git a/target/riscv64/systems/sipeed-maixduino b/target/riscv64/systems/sipeed-maixduino new file mode 100644 index 000000000..e3261d66a --- /dev/null +++ b/target/riscv64/systems/sipeed-maixduino @@ -0,0 +1,7 @@ +config ADK_TARGET_SYSTEM_SIPEED_MAIXDUINO +	bool "Sipeed MAiXDUiNO" +	select ADK_TARGET_CPU_RISCV64 +	select ADK_TARGET_WITH_SERIAL +	select ADK_TARGET_KERNEL_IMAGE +	help +	  Sipeed MAiXDUiNO support. diff --git a/target/riscv64/uclibc-ng.config b/target/riscv64/uclibc-ng.config index a0f4ee9fc..bcc79d8a4 100644 --- a/target/riscv64/uclibc-ng.config +++ b/target/riscv64/uclibc-ng.config @@ -1,6 +1,6 @@  #  # Automatically generated file; DO NOT EDIT. -# uClibc-ng 1.0.46 C Library Configuration +# uClibc-ng 1.0.55 C Library Configuration  #  # TARGET_aarch64 is not set  # TARGET_alpha is not set @@ -35,7 +35,7 @@ TARGET_riscv64=y  # TARGET_x86_64 is not set  # TARGET_xtensa is not set  TARGET_LDSO_NAME="ld-uClibc" -TARGET_ARCH_BITS=32 +TARGET_ARCH_BITS=64  #  # Target Architecture Features and Options @@ -58,6 +58,7 @@ UCLIBC_HAS_FLOATS=y  UCLIBC_HAS_FPU=y  DO_C99_MATH=y  DO_XSI_MATH=y +# UCLIBC_HAS_FENV is not set  UCLIBC_HAS_LONG_DOUBLE_MATH=y  KERNEL_HEADERS=""  HAVE_DOT_CONFIG=y @@ -86,6 +87,7 @@ LDSO_LD_LIBRARY_PATH=y  UCLIBC_CTOR_DTOR=y  # LDSO_GNU_HASH_SUPPORT is not set  # HAS_NO_THREADS is not set +# UCLIBC_HAS_LINUXTHREADS is not set  UCLIBC_HAS_THREADS_NATIVE=y  UCLIBC_HAS_THREADS=y  UCLIBC_HAS_TLS=y diff --git a/target/sh/hp-jornada/Autorun.inf b/target/sh/hp-jornada/Autorun.inf Binary files differnew file mode 100755 index 000000000..454164cf1 --- /dev/null +++ b/target/sh/hp-jornada/Autorun.inf diff --git a/target/sh/hp-jornada/shlo.exe b/target/sh/hp-jornada/shlo.exe Binary files differnew file mode 100644 index 000000000..e80c5637c --- /dev/null +++ b/target/sh/hp-jornada/shlo.exe diff --git a/target/sh/hp-jornada/shlo.txt.680 b/target/sh/hp-jornada/shlo.txt.680 new file mode 100644 index 000000000..a2bd2f10a --- /dev/null +++ b/target/sh/hp-jornada/shlo.txt.680 @@ -0,0 +1,15 @@ +platform        = hp680 +boot page       = 0x0c000000 + +load file       = 0x0c210000 zImage +#load file       = 0x0c400000 initrd.gz  # ram disk image +start address   = 0x8c210000 + + +set long        = 0x8c001000 0                  # MOUNT_ROOT_RDONLY +set long        = 0x8c001004 0                  # RAMDISK_FLAGS +set long        = 0x8c001008 0x0100             # ORIG_ROOT_DEV +set long        = 0x8c00100c 1                  # LOADER_TYPE +#set string = 0x8c001100 mem=32M root=/dev/hda2 console=ttySC1,115200 init=/bin/sh + +set string = 0x8c001100 mem=16M root=/dev/sda3  diff --git a/target/sh/hp-jornada/shlo.txt.690 b/target/sh/hp-jornada/shlo.txt.690 new file mode 100644 index 000000000..1a36b593e --- /dev/null +++ b/target/sh/hp-jornada/shlo.txt.690 @@ -0,0 +1,15 @@ +platform        = hp690 +boot page       = 0x0c000000 + +load file       = 0x0c210000 zImage +#load file       = 0x0c400000 initrd.gz  # ram disk image +start address   = 0x8c210000 + + +set long        = 0x8c001000 0                  # MOUNT_ROOT_RDONLY +set long        = 0x8c001004 0                  # RAMDISK_FLAGS +set long        = 0x8c001008 0x0100             # ORIG_ROOT_DEV +set long        = 0x8c00100c 1                  # LOADER_TYPE +#set string = 0x8c001100 mem=32M root=/dev/hda2 console=ttySC1,115200 init=/bin/sh + +set string = 0x8c001100 mem=32M root=/dev/sda3  diff --git a/target/sh/kernel/hp-jornada b/target/sh/kernel/hp-jornada new file mode 100644 index 000000000..c1b123ea6 --- /dev/null +++ b/target/sh/kernel/hp-jornada @@ -0,0 +1,2152 @@ +# +# General setup +# +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_COMPILE_TEST is not set +# CONFIG_WERROR is not set +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_BUILD_SALT="" +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_XZ is not set +# CONFIG_KERNEL_LZO is not set +CONFIG_DEFAULT_INIT="" +CONFIG_DEFAULT_HOSTNAME="(none)" +# CONFIG_SYSVIPC is not set +# CONFIG_POSIX_MQUEUE is not set +# CONFIG_WATCH_QUEUE is not set +CONFIG_CROSS_MEMORY_ATTACH=y +# CONFIG_USELIB is not set +# CONFIG_AUDIT is not set +CONFIG_HAVE_ARCH_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +# end of IRQ subsystem + +CONFIG_GENERIC_CLOCKEVENTS=y + +# +# Timers subsystem +# +CONFIG_HZ_PERIODIC=y +# CONFIG_NO_HZ_IDLE is not set +# CONFIG_NO_HZ is not set +# CONFIG_HIGH_RES_TIMERS is not set +# end of Timers subsystem + +CONFIG_BPF=y + +# +# BPF subsystem +# +CONFIG_BPF_SYSCALL=y +CONFIG_BPF_UNPRIV_DEFAULT_OFF=y +# CONFIG_BPF_PRELOAD is not set +# end of BPF subsystem + +CONFIG_PREEMPT_NONE_BUILD=y +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_BSD_PROCESS_ACCT=y +# CONFIG_BSD_PROCESS_ACCT_V3 is not set +# CONFIG_TASKSTATS is not set +# CONFIG_PSI is not set +# end of CPU/Task time and stats accounting + +# +# RCU Subsystem +# +CONFIG_TINY_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_TINY_SRCU=y +CONFIG_TASKS_RCU_GENERIC=y +CONFIG_TASKS_TRACE_RCU=y +CONFIG_RCU_NEED_SEGCBLIST=y +# end of RCU Subsystem + +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +# CONFIG_IKHEADERS is not set +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_GENERIC_SCHED_CLOCK=y + +# +# Scheduler features +# +# end of Scheduler features + +CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" +CONFIG_GCC11_NO_ARRAY_BOUNDS=y +CONFIG_CC_NO_ARRAY_BOUNDS=y +CONFIG_GCC_NO_STRINGOP_OVERFLOW=y +CONFIG_CC_NO_STRINGOP_OVERFLOW=y +# CONFIG_CGROUPS is not set +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +# CONFIG_USER_NS is not set +CONFIG_PID_NS=y +CONFIG_NET_NS=y +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_RELAY is not set +# CONFIG_BLK_DEV_INITRD is not set +# CONFIG_BOOT_CONFIG is not set +CONFIG_INITRAMFS_PRESERVE_MTIME=y +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_HAVE_UID16=y +# CONFIG_EXPERT is not set +CONFIG_UID16=y +CONFIG_MULTIUSER=y +CONFIG_SGETMASK_SYSCALL=y +CONFIG_SYSFS_SYSCALL=y +CONFIG_FHANDLE=y +CONFIG_POSIX_TIMERS=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_IO_URING=y +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_CACHESTAT_SYSCALL=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_SELFTEST is not set +CONFIG_KALLSYMS_BASE_RELATIVE=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_PERF_USE_VMALLOC=y + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# end of Kernel Performance Events And Counters + +# CONFIG_PROFILING is not set + +# +# Kexec and crash features +# +CONFIG_CRASH_RESERVE=y +CONFIG_VMCORE_INFO=y +CONFIG_KEXEC_CORE=y +CONFIG_KEXEC=y +CONFIG_CRASH_DUMP=y +# end of Kexec and crash features +# end of General setup + +CONFIG_SUPERH=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_DMA_NONCOHERENT=y +CONFIG_PGTABLE_LEVELS=2 + +# +# System type +# +CONFIG_CPU_SH3=y +# CONFIG_CPU_SUBTYPE_SH7619 is not set +# CONFIG_CPU_SUBTYPE_J2 is not set +# CONFIG_CPU_SUBTYPE_SH7201 is not set +# CONFIG_CPU_SUBTYPE_SH7203 is not set +# CONFIG_CPU_SUBTYPE_SH7206 is not set +# CONFIG_CPU_SUBTYPE_SH7263 is not set +# CONFIG_CPU_SUBTYPE_SH7264 is not set +# CONFIG_CPU_SUBTYPE_SH7269 is not set +# CONFIG_CPU_SUBTYPE_MXG is not set +# CONFIG_CPU_SUBTYPE_SH7705 is not set +# CONFIG_CPU_SUBTYPE_SH7706 is not set +# CONFIG_CPU_SUBTYPE_SH7707 is not set +# CONFIG_CPU_SUBTYPE_SH7708 is not set +CONFIG_CPU_SUBTYPE_SH7709=y +# CONFIG_CPU_SUBTYPE_SH7710 is not set +# CONFIG_CPU_SUBTYPE_SH7712 is not set +# CONFIG_CPU_SUBTYPE_SH7720 is not set +# CONFIG_CPU_SUBTYPE_SH7721 is not set +# CONFIG_CPU_SUBTYPE_SH7750 is not set +# CONFIG_CPU_SUBTYPE_SH7091 is not set +# CONFIG_CPU_SUBTYPE_SH7750R is not set +# CONFIG_CPU_SUBTYPE_SH7750S is not set +# CONFIG_CPU_SUBTYPE_SH7751 is not set +# CONFIG_CPU_SUBTYPE_SH7751R is not set +# CONFIG_CPU_SUBTYPE_SH7760 is not set +# CONFIG_CPU_SUBTYPE_SH7723 is not set +# CONFIG_CPU_SUBTYPE_SH7724 is not set +# CONFIG_CPU_SUBTYPE_SH7734 is not set +# CONFIG_CPU_SUBTYPE_SH7757 is not set +# CONFIG_CPU_SUBTYPE_SH7763 is not set +# CONFIG_CPU_SUBTYPE_SH7770 is not set +# CONFIG_CPU_SUBTYPE_SH7780 is not set +# CONFIG_CPU_SUBTYPE_SH7785 is not set +# CONFIG_CPU_SUBTYPE_SH7786 is not set +# CONFIG_CPU_SUBTYPE_SHX3 is not set +# CONFIG_CPU_SUBTYPE_SH7343 is not set +# CONFIG_CPU_SUBTYPE_SH7722 is not set +# CONFIG_CPU_SUBTYPE_SH7366 is not set + +# +# Memory management options +# +CONFIG_MMU=y +CONFIG_PAGE_OFFSET=0x80000000 +CONFIG_ARCH_FORCE_MAX_ORDER=10 +CONFIG_MEMORY_START=0x0d000000 +CONFIG_MEMORY_SIZE=0x2000000 +CONFIG_29BIT=y +CONFIG_VSYSCALL=y +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_UNCACHED_MAPPING=y +CONFIG_PAGE_SIZE_4KB=y +# end of Memory management options + +# +# Cache configuration +# +CONFIG_CACHE_WRITEBACK=y +# CONFIG_CACHE_WRITETHROUGH is not set +# CONFIG_CACHE_OFF is not set +# end of Cache configuration + +# +# Processor features +# +CONFIG_CPU_LITTLE_ENDIAN=y +# CONFIG_CPU_BIG_ENDIAN is not set +# CONFIG_SH_FPU_EMU is not set +CONFIG_SH_ADC=y +CONFIG_CPU_HAS_INTEVT=y +CONFIG_CPU_HAS_SR_RB=y +# end of Processor features + +# +# Board support +# +CONFIG_SH_CUSTOM_CLK=y +# CONFIG_SH_SOLUTION_ENGINE is not set +CONFIG_SH_HP6XX=y +# CONFIG_SH_POLARIS is not set +# end of Board support + +# +# Timer and clock configuration +# +CONFIG_SH_PCLK_FREQ=22110000 +CONFIG_SH_CLK_CPG=y +CONFIG_SH_CLK_CPG_LEGACY=y +# end of Timer and clock configuration + +# +# CPU Frequency scaling +# + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set +# end of CPU Frequency scaling +# end of CPU Frequency scaling + +# +# DMA support +# +CONFIG_SH_DMA=y +CONFIG_SH_DMA_API=y +CONFIG_NR_ONCHIP_DMA_CHANNELS=4 +# end of DMA support + +# +# Companion Chips +# +CONFIG_HD6446X_SERIES=y +CONFIG_HD64461=y +CONFIG_HD64461_IRQ=52 +CONFIG_HD64461_ENABLER=y +# end of Companion Chips + +# +# Additional SuperH Device Drivers +# +# CONFIG_HEARTBEAT is not set +# CONFIG_PUSH_SWITCH is not set +# end of Additional SuperH Device Drivers +# end of System type + +# +# Kernel features +# +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_ARCH_SUPPORTS_KEXEC=y +CONFIG_ARCH_SUPPORTS_CRASH_DUMP=y +CONFIG_ARCH_SUPPORTS_KEXEC_JUMP=y +CONFIG_PHYSICAL_START=0x0d000000 +CONFIG_GUSA=y +# CONFIG_GUSA_RB is not set + +# +# SuperH / SH-Mobile Driver Options +# +CONFIG_SH_INTC=y + +# +# Interrupt controller options +# +# end of SuperH / SH-Mobile Driver Options +# end of Kernel features + +# +# Boot options +# +CONFIG_ZERO_PAGE_OFFSET=0x00001000 +CONFIG_BOOT_LINK_OFFSET=0x00800000 +CONFIG_ENTRY_OFFSET=0x00001000 +CONFIG_CMDLINE_OVERWRITE=y +# CONFIG_CMDLINE_EXTEND is not set +CONFIG_CMDLINE="root=/dev/sda3 rootwait console=tty0" +# end of Boot options + +# +# Bus options +# +# end of Bus options + +# +# Power management options (EXPERIMENTAL) +# +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +# CONFIG_HIBERNATION is not set +CONFIG_PM_SLEEP=y +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_USERSPACE_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +CONFIG_APM_EMULATION=y +CONFIG_PM_CLK=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set + +# +# CPU Idle +# +# CONFIG_CPU_IDLE is not set +# end of CPU Idle +# end of Power management options (EXPERIMENTAL) + +# +# General architecture-dependent options +# +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_NMI=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_IDLE_POLL_SETUP=y +CONFIG_ARCH_HAS_CPU_FINALIZE_INIT=y +CONFIG_ARCH_32BIT_OFF_T=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y +CONFIG_MMU_LAZY_TLB_REFCOUNT=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +CONFIG_HAVE_ARCH_SECCOMP=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP=y +CONFIG_SECCOMP_FILTER=y +# CONFIG_SECCOMP_CACHE_DEBUG is not set +CONFIG_HAVE_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_LTO_NONE=y +CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_PAGE_SIZE_LESS_THAN_64KB=y +CONFIG_PAGE_SIZE_LESS_THAN_256KB=y +CONFIG_OLD_SIGSUSPEND=y +CONFIG_OLD_SIGACTION=y +CONFIG_COMPAT_32BIT_TIME=y +CONFIG_CPU_NO_EFFICIENT_FFS=y + +# +# GCOV-based kernel profiling +# +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +# end of GCOV-based kernel profiling + +CONFIG_FUNCTION_ALIGNMENT=0 +# end of General architecture-dependent options + +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +# CONFIG_MODULES is not set +CONFIG_BLOCK=y +CONFIG_BLOCK_LEGACY_AUTOLOAD=y +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +CONFIG_BLK_DEV_WRITE_MOUNTED=y +# CONFIG_BLK_DEV_ZONED is not set +# CONFIG_BLK_WBT is not set +# CONFIG_BLK_INLINE_ENCRYPTION is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_EFI_PARTITION=y +# end of Partition Types + +CONFIG_BLK_PM=y + +# +# IO Schedulers +# +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=y +# CONFIG_IOSCHED_BFQ is not set +# end of IO Schedulers + +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_FREEZER=y + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_ELFCORE=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_BINFMT_SCRIPT=y +# CONFIG_BINFMT_MISC is not set +CONFIG_COREDUMP=y +# end of Executable file formats + +# +# Memory Management options +# +CONFIG_SWAP=y +# CONFIG_ZSWAP is not set + +# +# Slab allocator options +# +CONFIG_SLUB=y +CONFIG_SLAB_MERGE_DEFAULT=y +# CONFIG_SLAB_FREELIST_RANDOM is not set +# CONFIG_SLAB_FREELIST_HARDENED is not set +# CONFIG_SLUB_STATS is not set +# CONFIG_RANDOM_KMALLOC_CACHES is not set +# end of Slab allocator options + +# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set +CONFIG_COMPAT_BRK=y +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_SPARSEMEM_STATIC=y +CONFIG_HAVE_FAST_GUP=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_COMPACTION=y +CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1 +# CONFIG_PAGE_REPORTING is not set +CONFIG_MIGRATION=y +CONFIG_PCP_BATCH_SCALE_MAX=5 +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_NEED_PER_CPU_KM=y +# CONFIG_CMA is not set +# CONFIG_IDLE_PAGE_TRACKING is not set +CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y +CONFIG_VM_EVENT_COUNTERS=y +# CONFIG_PERCPU_STATS is not set + +# +# GUP_TEST needs to have DEBUG_FS enabled +# +# CONFIG_DMAPOOL_TEST is not set +CONFIG_ARCH_HAS_PTE_SPECIAL=y +CONFIG_MEMFD_CREATE=y +# CONFIG_ANON_VMA_NAME is not set +# CONFIG_USERFAULTFD is not set +# CONFIG_LRU_GEN is not set +CONFIG_LOCK_MM_AND_FIND_VMA=y + +# +# Data Access Monitoring +# +# CONFIG_DAMON is not set +# end of Data Access Monitoring +# end of Memory Management options + +CONFIG_NET=y +CONFIG_NET_INGRESS=y +CONFIG_NET_EGRESS=y +CONFIG_NET_XGRESS=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_DIAG is not set +CONFIG_UNIX=y +CONFIG_AF_UNIX_OOB=y +# CONFIG_UNIX_DIAG is not set +# CONFIG_TLS is not set +# CONFIG_XFRM_USER is not set +# CONFIG_NET_KEY is not set +CONFIG_XDP_SOCKETS=y +# CONFIG_XDP_SOCKETS_DIAG is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE_DEMUX is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_NET_IPVTI is not set +# CONFIG_NET_FOU is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +CONFIG_INET_TABLE_PERTURB_ORDER=16 +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_INET_UDP_DIAG is not set +# CONFIG_INET_RAW_DIAG is not set +# CONFIG_INET_DIAG_DESTROY is not set +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +# CONFIG_IPV6 is not set +# CONFIG_MPTCP is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +# CONFIG_NETFILTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_L2TP is not set +# CONFIG_BRIDGE is not set +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_LLC2 is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# CONFIG_DCB is not set +# CONFIG_BATMAN_ADV is not set +# CONFIG_OPENVSWITCH is not set +# CONFIG_VSOCKETS is not set +# CONFIG_NETLINK_DIAG is not set +# CONFIG_MPLS is not set +# CONFIG_NET_NSH is not set +# CONFIG_HSR is not set +# CONFIG_NET_SWITCHDEV is not set +# CONFIG_NET_L3_MASTER_DEV is not set +# CONFIG_QRTR is not set +# CONFIG_NET_NCSI is not set +CONFIG_MAX_SKB_FRAGS=17 +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# end of Network testing +# end of Networking options + +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_AF_KCM is not set +# CONFIG_MCTP is not set +CONFIG_WIRELESS=y +# CONFIG_CFG80211 is not set + +# +# CFG80211 needs to be enabled for MAC80211 +# +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set +# CONFIG_NFC is not set +# CONFIG_PSAMPLE is not set +# CONFIG_NET_IFE is not set +# CONFIG_LWTUNNEL is not set +CONFIG_NET_SOCK_MSG=y +CONFIG_PAGE_POOL=y +# CONFIG_PAGE_POOL_STATS is not set +# CONFIG_FAILOVER is not set +CONFIG_ETHTOOL_NETLINK=y + +# +# Device Drivers +# +CONFIG_PCCARD=y +CONFIG_PCMCIA=y +CONFIG_PCMCIA_LOAD_CIS=y + +# +# PC-card bridges +# +CONFIG_PCMCIA_HD6446X_PCC=y + +# +# Generic Driver Options +# +# CONFIG_UEVENT_HELPER is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_DEVTMPFS_SAFE is not set +# CONFIG_STANDALONE is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# Firmware loader +# +CONFIG_FW_LOADER=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_FW_LOADER_USER_HELPER is not set +# CONFIG_FW_LOADER_COMPRESS is not set +CONFIG_FW_CACHE=y +# CONFIG_FW_UPLOAD is not set +# end of Firmware loader + +CONFIG_ALLOW_DEV_COREDUMP=y +# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set +# end of Generic Driver Options + +# +# Bus devices +# +# CONFIG_MHI_BUS is not set +# CONFIG_MHI_BUS_EP is not set +# end of Bus devices + +# +# Cache Drivers +# +# end of Cache Drivers + +# CONFIG_CONNECTOR is not set + +# +# Firmware Drivers +# + +# +# ARM System Control and Management Interface Protocol +# +# end of ARM System Control and Management Interface Protocol + +# CONFIG_GOOGLE_FIRMWARE is not set + +# +# Qualcomm firmware drivers +# +# end of Qualcomm firmware drivers + +# +# Tegra firmware driver +# +# end of Tegra firmware driver +# end of Firmware Drivers + +# CONFIG_GNSS is not set +# CONFIG_MTD is not set +# CONFIG_OF is not set +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_RBD is not set +# CONFIG_BLK_DEV_UBLK is not set + +# +# NVME Support +# +# CONFIG_NVME_FC is not set +# CONFIG_NVME_TCP is not set +# end of NVME Support + +# +# Misc devices +# +# CONFIG_DUMMY_IRQ is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_SRAM is not set +# CONFIG_XILINX_SDFEC is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +# CONFIG_EEPROM_93CX6 is not set +# end of EEPROM support + +# +# Texas Instruments shared transport line discipline +# +# end of Texas Instruments shared transport line discipline + +# +# Altera FPGA firmware download module (requires I2C) +# +# CONFIG_ECHO is not set +# CONFIG_PVPANIC is not set +# end of Misc devices + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI_COMMON=y +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +# end of SCSI Transports + +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_LOWLEVEL_PCMCIA=y +# CONFIG_SCSI_DH is not set +# end of SCSI device support + +CONFIG_HAVE_PATA_PLATFORM=y +CONFIG_ATA=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_FORCE=y + +# +# Controllers with non-SFF native interface +# +# CONFIG_SATA_AHCI_PLATFORM is not set +# CONFIG_AHCI_DWC is not set +CONFIG_ATA_SFF=y + +# +# SFF controllers with custom DMA interface +# +CONFIG_ATA_BMDMA=y + +# +# SATA SFF controllers with BMDMA +# + +# +# PATA SFF controllers with BMDMA +# + +# +# PIO-only SFF controllers +# +CONFIG_PATA_PCMCIA=y +CONFIG_PATA_PLATFORM=y + +# +# Generic fallback / legacy drivers +# +# CONFIG_MD is not set +# CONFIG_TARGET_CORE is not set +CONFIG_NETDEVICES=y +CONFIG_NET_CORE=y +# CONFIG_BONDING is not set +# CONFIG_DUMMY is not set +# CONFIG_WIREGUARD is not set +# CONFIG_EQUALIZER is not set +# CONFIG_NET_TEAM is not set +# CONFIG_MACVLAN is not set +# CONFIG_IPVLAN is not set +# CONFIG_VXLAN is not set +# CONFIG_GENEVE is not set +# CONFIG_BAREUDP is not set +# CONFIG_GTP is not set +# CONFIG_MACSEC is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_TUN is not set +# CONFIG_TUN_VNET_CROSS_LE is not set +# CONFIG_VETH is not set +# CONFIG_NLMON is not set +# CONFIG_NETKIT is not set +# CONFIG_ARCNET is not set +CONFIG_ETHERNET=y +CONFIG_NET_VENDOR_3COM=y +CONFIG_PCMCIA_3C574=y +CONFIG_PCMCIA_3C589=y +CONFIG_NET_VENDOR_ALACRITECH=y +# CONFIG_ALTERA_TSE is not set +CONFIG_NET_VENDOR_AMAZON=y +CONFIG_NET_VENDOR_AMD=y +# CONFIG_PCMCIA_NMCLAN is not set +CONFIG_NET_VENDOR_AQUANTIA=y +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ASIX=y +CONFIG_NET_VENDOR_BROADCOM=y +# CONFIG_B44 is not set +# CONFIG_BCMGENET is not set +# CONFIG_SYSTEMPORT is not set +CONFIG_NET_VENDOR_CADENCE=y +CONFIG_NET_VENDOR_CAVIUM=y +CONFIG_NET_VENDOR_CORTINA=y +CONFIG_NET_VENDOR_DAVICOM=y +# CONFIG_DNET is not set +CONFIG_NET_VENDOR_ENGLEDER=y +# CONFIG_TSNEP is not set +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_FUJITSU=y +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_NET_VENDOR_FUNGIBLE=y +CONFIG_NET_VENDOR_GOOGLE=y +CONFIG_NET_VENDOR_HUAWEI=y +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_LITEX=y +CONFIG_NET_VENDOR_MARVELL=y +# CONFIG_MVMDIO is not set +CONFIG_NET_VENDOR_MICREL=y +# CONFIG_KS8851_MLL is not set +CONFIG_NET_VENDOR_MICROCHIP=y +# CONFIG_VCAP is not set +CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_NET_VENDOR_MICROSOFT=y +CONFIG_NET_VENDOR_NI=y +# CONFIG_NI_XGE_MANAGEMENT_ENET is not set +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_NETRONOME=y +CONFIG_NET_VENDOR_8390=y +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_AX88796 is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_STNIC is not set +# CONFIG_ETHOC is not set +CONFIG_NET_VENDOR_PENSANDO=y +CONFIG_NET_VENDOR_QUALCOMM=y +# CONFIG_QCOM_EMAC is not set +# CONFIG_RMNET is not set +CONFIG_NET_VENDOR_RENESAS=y +# CONFIG_SH_ETH is not set +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +# CONFIG_SXGBE_ETH is not set +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SOLARFLARE=y +CONFIG_NET_VENDOR_SMSC=y +# CONFIG_SMC91X is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_SMSC911X is not set +CONFIG_NET_VENDOR_SOCIONEXT=y +CONFIG_NET_VENDOR_STMICRO=y +# CONFIG_STMMAC_ETH is not set +CONFIG_NET_VENDOR_SYNOPSYS=y +# CONFIG_DWC_XLGMAC is not set +CONFIG_NET_VENDOR_VERTEXCOM=y +CONFIG_NET_VENDOR_VIA=y +CONFIG_NET_VENDOR_WANGXUN=y +CONFIG_NET_VENDOR_WIZNET=y +# CONFIG_WIZNET_W5100 is not set +# CONFIG_WIZNET_W5300 is not set +CONFIG_NET_VENDOR_XILINX=y +# CONFIG_XILINX_EMACLITE is not set +# CONFIG_XILINX_LL_TEMAC is not set +CONFIG_NET_VENDOR_XIRCOM=y +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_PHYLIB is not set +# CONFIG_PSE_CONTROLLER is not set +# CONFIG_MDIO_DEVICE is not set + +# +# PCS device drivers +# +# end of PCS device drivers + +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Host-side USB support is needed for USB Network Adapter support +# +CONFIG_WLAN=y +CONFIG_WLAN_VENDOR_ADMTEK=y +CONFIG_WLAN_VENDOR_ATH=y +# CONFIG_ATH_DEBUG is not set +CONFIG_WLAN_VENDOR_ATMEL=y +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_WLAN_VENDOR_INTEL=y +CONFIG_WLAN_VENDOR_INTERSIL=y +CONFIG_WLAN_VENDOR_MARVELL=y +CONFIG_WLAN_VENDOR_MEDIATEK=y +CONFIG_WLAN_VENDOR_MICROCHIP=y +CONFIG_WLAN_VENDOR_PURELIFI=y +CONFIG_WLAN_VENDOR_RALINK=y +CONFIG_WLAN_VENDOR_REALTEK=y +CONFIG_WLAN_VENDOR_RSI=y +CONFIG_WLAN_VENDOR_SILABS=y +CONFIG_WLAN_VENDOR_ST=y +CONFIG_WLAN_VENDOR_TI=y +CONFIG_WLAN_VENDOR_ZYDAS=y +CONFIG_WLAN_VENDOR_QUANTENNA=y +# CONFIG_WAN is not set + +# +# Wireless WAN +# +# CONFIG_WWAN is not set +# end of Wireless WAN + +# CONFIG_NET_FAILOVER is not set +# CONFIG_ISDN is not set + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_FF_MEMLESS=y +# CONFIG_INPUT_SPARSEKMAP is not set +# CONFIG_INPUT_MATRIXKMAP is not set + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ATKBD is not set +# CONFIG_KEYBOARD_LKKBD is not set +CONFIG_KEYBOARD_HP6XX=y +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_SAMSUNG is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +CONFIG_INPUT_TOUCHSCREEN=y +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set +# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set +# CONFIG_TOUCHSCREEN_DYNAPRO is not set +# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set +# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +CONFIG_TOUCHSCREEN_HP600=y +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TSC_SERIO is not set +# CONFIG_INPUT_MISC is not set +# CONFIG_RMI4_CORE is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +# CONFIG_SERIO_SERPORT is not set +# CONFIG_SERIO_LIBPS2 is not set +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_USERIO is not set +# CONFIG_GAMEPORT is not set +# end of Hardware I/O ports +# end of Input device support + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=64 +CONFIG_LEGACY_TIOCSTI=y +CONFIG_LDISC_AUTOLOAD=y + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +CONFIG_SERIAL_8250_16550A_VARIANTS=y +# CONFIG_SERIAL_8250_FINTEK is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +CONFIG_SERIAL_8250_CS=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_DW is not set +# CONFIG_SERIAL_8250_RT288X is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_SH_SCI=y +CONFIG_SERIAL_SH_SCI_NR_UARTS=10 +CONFIG_SERIAL_SH_SCI_CONSOLE=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_ARC is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_FSL_LINFLEXUART is not set +# end of Serial drivers + +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_IPWIRELESS is not set +# CONFIG_N_GSM is not set +# CONFIG_NULL_TTY is not set +# CONFIG_SERIAL_DEV_BUS is not set +# CONFIG_VIRTIO_CONSOLE is not set +# CONFIG_IPMI_HANDLER is not set +CONFIG_HW_RANDOM=y +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +# CONFIG_HW_RANDOM_BA431 is not set +# CONFIG_HW_RANDOM_XIPHERA is not set +CONFIG_DEVMEM=y +CONFIG_DEVPORT=y +# CONFIG_TCG_TPM is not set +# end of Character devices + +# +# I2C support +# +# CONFIG_I2C is not set +# end of I2C support + +# CONFIG_I3C is not set +# CONFIG_SPI is not set +# CONFIG_SPMI is not set +# CONFIG_HSI is not set +# CONFIG_PPS is not set + +# +# PTP clock support +# +# CONFIG_PTP_1588_CLOCK is not set +CONFIG_PTP_1588_CLOCK_OPTIONAL=y + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +# end of PTP clock support + +# CONFIG_PINCTRL is not set +# CONFIG_GPIOLIB is not set +# CONFIG_W1 is not set +# CONFIG_POWER_RESET is not set +# CONFIG_POWER_SUPPLY is not set +# CONFIG_HWMON is not set +# CONFIG_THERMAL is not set +# CONFIG_WATCHDOG is not set +CONFIG_SSB_POSSIBLE=y +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_MADERA is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SYSCON is not set +# CONFIG_MFD_TQMX86 is not set +# end of Multifunction device drivers + +# CONFIG_REGULATOR is not set +# CONFIG_RC_CORE is not set + +# +# CEC support +# +# CONFIG_MEDIA_CEC_SUPPORT is not set +# end of CEC support + +# CONFIG_MEDIA_SUPPORT is not set + +# +# Graphics support +# +CONFIG_VIDEO=y +# CONFIG_AUXDISPLAY is not set +# CONFIG_DRM is not set + +# +# Frame buffer Devices +# +CONFIG_FB=y +# CONFIG_FB_OPENCORES is not set +# CONFIG_FB_S1D13XXX is not set +CONFIG_FB_HIT=y +CONFIG_FB_SH_MOBILE_LCDC=y +# CONFIG_FB_IBM_GXT4500 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_SIMPLE is not set +CONFIG_FB_CORE=y +CONFIG_FB_NOTIFY=y +CONFIG_FIRMWARE_EDID=y +CONFIG_FB_DEVICE=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_SYSMEM_FOPS=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_DMAMEM_HELPERS=y +CONFIG_FB_IOMEM_FOPS=y +CONFIG_FB_BACKLIGHT=y +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +# CONFIG_BACKLIGHT_KTD2801 is not set +CONFIG_BACKLIGHT_HP680=y +# CONFIG_BACKLIGHT_QCOM_WLED is not set +# end of Backlight & LCD device support + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set +# end of Console display driver support + +# CONFIG_LOGO is not set +# end of Graphics support + +# CONFIG_SOUND is not set +CONFIG_HID_SUPPORT=y +CONFIG_HID=y +# CONFIG_HID_BATTERY_STRENGTH is not set +# CONFIG_HIDRAW is not set +# CONFIG_UHID is not set +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=y +# CONFIG_HID_ACRUX is not set +# CONFIG_HID_AUREAL is not set +CONFIG_HID_BELKIN=y +CONFIG_HID_CHERRY=y +# CONFIG_HID_COUGAR is not set +# CONFIG_HID_MACALLY is not set +# CONFIG_HID_CMEDIA is not set +CONFIG_HID_CYPRESS=y +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_EVISION is not set +CONFIG_HID_EZKEY=y +# CONFIG_HID_GEMBIRD is not set +# CONFIG_HID_GFRM is not set +# CONFIG_HID_GLORIOUS is not set +# CONFIG_HID_GOOGLE_STADIA_FF is not set +# CONFIG_HID_VIVALDI is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_WALTOP is not set +# CONFIG_HID_VIEWSONIC is not set +# CONFIG_HID_VRC2 is not set +# CONFIG_HID_XIAOMI is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_ICADE is not set +CONFIG_HID_ITE=y +# CONFIG_HID_JABRA is not set +# CONFIG_HID_TWINHAN is not set +CONFIG_HID_KENSINGTON=y +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LENOVO is not set +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_MALTRON is not set +# CONFIG_HID_MAYFLASH is not set +CONFIG_HID_REDRAGON=y +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +# CONFIG_HID_MULTITOUCH is not set +# CONFIG_HID_NTI is not set +# CONFIG_HID_ORTEK is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_PICOLCD is not set +# CONFIG_HID_PLANTRONICS is not set +# CONFIG_HID_PXRC is not set +# CONFIG_HID_RAZER is not set +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_SAITEK is not set +# CONFIG_HID_SEMITEK is not set +# CONFIG_HID_SPEEDLINK is not set +# CONFIG_HID_STEAM is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_RMI is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TIVO is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_TOPRE is not set +# CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_XINMO is not set +# CONFIG_HID_ZEROPLUS is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set +# end of Special HID drivers + +# +# HID-BPF support +# +# end of HID-BPF support + +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_SUPPORT is not set +# CONFIG_MMC is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_MEMSTICK is not set +# CONFIG_NEW_LEDS is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_NVMEM=y + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# + +# +# SPI RTC drivers +# + +# +# SPI and I2C RTC drivers +# + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1685_FAMILY is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_DS2404 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_RP5C01 is not set + +# +# on-CPU RTC drivers +# +CONFIG_RTC_DRV_SH=y +# CONFIG_RTC_DRV_GENERIC is not set +# CONFIG_RTC_DRV_FTRTC010 is not set + +# +# HID Sensor RTC drivers +# +# CONFIG_RTC_DRV_GOLDFISH is not set +# CONFIG_DMADEVICES is not set + +# +# DMABUF options +# +# CONFIG_SYNC_FILE is not set +# CONFIG_DMABUF_HEAPS is not set +# end of DMABUF options + +# CONFIG_UIO is not set +# CONFIG_VFIO is not set +# CONFIG_VIRT_DRIVERS is not set +CONFIG_VIRTIO_MENU=y +# CONFIG_VIRTIO_MMIO is not set +# CONFIG_VDPA is not set +CONFIG_VHOST_MENU=y +# CONFIG_VHOST_NET is not set +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set + +# +# Microsoft Hyper-V guest support +# +# end of Microsoft Hyper-V guest support + +# CONFIG_GREYBUS is not set +# CONFIG_COMEDI is not set +# CONFIG_STAGING is not set +# CONFIG_GOLDFISH is not set +CONFIG_HAVE_CLK=y +CONFIG_HAVE_LEGACY_CLK=y +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_SYS_SUPPORTS_SH_TMU=y +CONFIG_SH_TIMER_TMU=y +# end of Clock Source drivers + +# CONFIG_MAILBOX is not set +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +# end of Generic IOMMU Pagetable Support + +# CONFIG_IOMMUFD is not set + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set +# end of Remoteproc drivers + +# +# Rpmsg drivers +# +# CONFIG_RPMSG_VIRTIO is not set +# end of Rpmsg drivers + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# +# end of Amlogic SoC drivers + +# +# Broadcom SoC drivers +# +# end of Broadcom SoC drivers + +# +# NXP/Freescale QorIQ SoC drivers +# +# end of NXP/Freescale QorIQ SoC drivers + +# +# fujitsu SoC drivers +# +# end of fujitsu SoC drivers + +# +# i.MX SoC drivers +# +# end of i.MX SoC drivers + +# +# Enable LiteX SoC Builder specific drivers +# +# end of Enable LiteX SoC Builder specific drivers + +# CONFIG_WPCM450_SOC is not set + +# +# Qualcomm SoC drivers +# +# end of Qualcomm SoC drivers + +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# end of Xilinx SoC drivers +# end of SOC (System On Chip) specific Drivers + +# +# PM Domains +# + +# +# Amlogic PM Domains +# +# end of Amlogic PM Domains + +# +# Broadcom PM Domains +# +# end of Broadcom PM Domains + +# +# i.MX PM Domains +# +# end of i.MX PM Domains + +# +# Qualcomm PM Domains +# +# end of Qualcomm PM Domains +# end of PM Domains + +# CONFIG_PM_DEVFREQ is not set +# CONFIG_EXTCON is not set +# CONFIG_MEMORY is not set +# CONFIG_IIO is not set +# CONFIG_PWM is not set + +# +# IRQ chip support +# +# end of IRQ chip support + +# CONFIG_IPACK_BUS is not set +# CONFIG_RESET_CONTROLLER is not set + +# +# PHY Subsystem +# +# CONFIG_GENERIC_PHY is not set +# CONFIG_PHY_CAN_TRANSCEIVER is not set + +# +# PHY drivers for Broadcom platforms +# +# CONFIG_BCM_KONA_USB2_PHY is not set +# end of PHY drivers for Broadcom platforms + +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# end of PHY Subsystem + +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +# end of Performance monitor support + +# CONFIG_RAS is not set + +# +# Android +# +# CONFIG_ANDROID_BINDER_IPC is not set +# end of Android + +# CONFIG_DAX is not set +CONFIG_NVMEM=y +CONFIG_NVMEM_SYSFS=y +# CONFIG_NVMEM_LAYOUTS is not set +# CONFIG_NVMEM_RMEM is not set + +# +# HW tracing support +# +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# end of HW tracing support + +# CONFIG_FPGA is not set +# CONFIG_SIOX is not set +# CONFIG_SLIMBUS is not set +# CONFIG_INTERCONNECT is not set +# CONFIG_COUNTER is not set +# CONFIG_PECI is not set +# CONFIG_HTE is not set +# end of Device Drivers + +# +# File systems +# +# CONFIG_VALIDATE_FS_PARSER is not set +CONFIG_FS_IOMAP=y +CONFIG_BUFFER_HEAD=y +CONFIG_LEGACY_DIRECT_IO=y +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +CONFIG_EXT3_FS=y +# CONFIG_EXT3_FS_POSIX_ACL is not set +# CONFIG_EXT3_FS_SECURITY is not set +CONFIG_EXT4_FS=y +# CONFIG_EXT4_FS_POSIX_ACL is not set +# CONFIG_EXT4_FS_SECURITY is not set +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +# CONFIG_BCACHEFS_FS is not set +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +# CONFIG_FS_ENCRYPTION is not set +# CONFIG_FS_VERITY is not set +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_FUSE_FS is not set +# CONFIG_OVERLAY_FS is not set + +# +# Caches +# +# end of Caches + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set +# end of CD-ROM/DVD Filesystems + +# +# DOS/FAT/EXFAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_FAT_DEFAULT_UTF8 is not set +# CONFIG_EXFAT_FS is not set +# CONFIG_NTFS3_FS is not set +# end of DOS/FAT/EXFAT/NT Filesystems + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_VMCORE=y +# CONFIG_PROC_VMCORE_DEVICE_DUMP is not set +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +# CONFIG_PROC_CHILDREN is not set +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_TMPFS_XATTR is not set +# CONFIG_TMPFS_QUOTA is not set +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y +# CONFIG_CONFIGFS_FS is not set +# end of Pseudo filesystems + +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ORANGEFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_SQUASHFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_PSTORE is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_EROFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +# CONFIG_NFS_FS is not set +# CONFIG_NFSD is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_SMB_SERVER is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +CONFIG_NLS_CODEPAGE_850=y +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_UNICODE is not set +CONFIG_IO_WQ=y +# end of File systems + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +# CONFIG_HARDENED_USERCOPY is not set +# CONFIG_STATIC_USERMODEHELPER is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,bpf" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO_BARE=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y +CONFIG_INIT_STACK_NONE=y +# CONFIG_INIT_STACK_ALL_PATTERN is not set +# CONFIG_INIT_STACK_ALL_ZERO is not set +# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set +# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set +CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y +# CONFIG_ZERO_CALL_USED_REGS is not set +# end of Memory initialization + +# +# Hardening of kernel data structures +# +# CONFIG_LIST_HARDENED is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# end of Hardening of kernel data structures + +CONFIG_RANDSTRUCT_NONE=y +# end of Kernel hardening options +# end of Security options + +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_SIG2=y +CONFIG_CRYPTO_SKCIPHER=y +CONFIG_CRYPTO_SKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_KPP2=y +CONFIG_CRYPTO_ACOMP2=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_USER is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# end of Crypto core or helper + +# +# Public-key cryptography +# +# CONFIG_CRYPTO_RSA is not set +# CONFIG_CRYPTO_DH is not set +# CONFIG_CRYPTO_ECDH is not set +# CONFIG_CRYPTO_ECDSA is not set +# CONFIG_CRYPTO_ECRDSA is not set +# CONFIG_CRYPTO_SM2 is not set +# CONFIG_CRYPTO_CURVE25519 is not set +# end of Public-key cryptography + +# +# Block ciphers +# +# CONFIG_CRYPTO_AES is not set +# CONFIG_CRYPTO_AES_TI is not set +# CONFIG_CRYPTO_ARIA is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_SM4_GENERIC is not set +# CONFIG_CRYPTO_TWOFISH is not set +# end of Block ciphers + +# +# Length-preserving ciphers and modes +# +# CONFIG_CRYPTO_ADIANTUM is not set +# CONFIG_CRYPTO_CHACHA20 is not set +CONFIG_CRYPTO_CBC=y +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=y +# CONFIG_CRYPTO_HCTR2 is not set +# CONFIG_CRYPTO_KEYWRAP is not set +# CONFIG_CRYPTO_LRW is not set +CONFIG_CRYPTO_PCBC=y +# CONFIG_CRYPTO_XTS is not set +# end of Length-preserving ciphers and modes + +# +# AEAD (authenticated encryption with associated data) ciphers +# +# CONFIG_CRYPTO_AEGIS128 is not set +# CONFIG_CRYPTO_CHACHA20POLY1305 is not set +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_SEQIV is not set +# CONFIG_CRYPTO_ECHAINIV is not set +# CONFIG_CRYPTO_ESSIV is not set +# end of AEAD (authenticated encryption with associated data) ciphers + +# +# Hashes, digests, and MACs +# +# CONFIG_CRYPTO_BLAKE2B is not set +# CONFIG_CRYPTO_CMAC is not set +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_MD4 is not set +CONFIG_CRYPTO_MD5=y +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_POLY1305 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_SHA1 is not set +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_SHA3 is not set +# CONFIG_CRYPTO_SM3_GENERIC is not set +# CONFIG_CRYPTO_STREEBOG is not set +# CONFIG_CRYPTO_VMAC is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_XXHASH is not set +# end of Hashes, digests, and MACs + +# +# CRCs (cyclic redundancy checks) +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_CRC32 is not set +CONFIG_CRYPTO_CRCT10DIF=y +# end of CRCs (cyclic redundancy checks) + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_LZO is not set +# CONFIG_CRYPTO_842 is not set +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set +# CONFIG_CRYPTO_ZSTD is not set +# end of Compression + +# +# Random number generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_DRBG_MENU is not set +# CONFIG_CRYPTO_JITTERENTROPY is not set +# end of Random number generation + +# +# Userspace interface +# +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +# CONFIG_CRYPTO_USER_API_RNG is not set +# CONFIG_CRYPTO_USER_API_AEAD is not set +# end of Userspace interface + +# CONFIG_CRYPTO_HW is not set + +# +# Certificates for signature checking +# +# end of Certificates for signature checking + +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +# CONFIG_PACKING is not set +CONFIG_BITREVERSE=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +# CONFIG_CORDIC is not set +# CONFIG_PRIME_NUMBERS is not set + +# +# Crypto library routines +# +CONFIG_CRYPTO_LIB_UTILS=y +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +# CONFIG_CRYPTO_LIB_CHACHA is not set +# CONFIG_CRYPTO_LIB_CURVE25519 is not set +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1 +# CONFIG_CRYPTO_LIB_POLY1305 is not set +# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set +CONFIG_CRYPTO_LIB_SHA1=y +# end of Crypto library routines + +# CONFIG_CRC_CCITT is not set +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +# CONFIG_CRC64_ROCKSOFT is not set +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC64 is not set +# CONFIG_CRC4 is not set +# CONFIG_CRC7 is not set +# CONFIG_LIBCRC32C is not set +# CONFIG_CRC8 is not set +# CONFIG_RANDOM32_SELFTEST is not set +# CONFIG_XZ_DEC is not set +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_DMA_DECLARE_COHERENT=y +CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y +CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y +CONFIG_DMA_NONCOHERENT_MMAP=y +CONFIG_DMA_COHERENT_POOL=y +CONFIG_DMA_DIRECT_REMAP=y +# CONFIG_DMA_API_DEBUG is not set +CONFIG_SGL_ALLOC=y +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +CONFIG_GENERIC_ATOMIC64=y +# CONFIG_IRQ_POLL is not set +CONFIG_FONT_SUPPORT=y +CONFIG_FONTS=y +# CONFIG_FONT_8x8 is not set +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_7x14 is not set +CONFIG_FONT_PEARL_8x8=y +# CONFIG_FONT_ACORN_8x8 is not set +# CONFIG_FONT_MINI_4x6 is not set +# CONFIG_FONT_6x10 is not set +# CONFIG_FONT_10x18 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_TER16x32 is not set +# CONFIG_FONT_6x8 is not set +CONFIG_SG_POOL=y +CONFIG_STACKDEPOT=y +CONFIG_STACKDEPOT_MAX_FRAMES=64 +CONFIG_SBITMAP=y +# CONFIG_LWQ_TEST is not set +# end of Library routines + +CONFIG_GENERIC_IOREMAP=y +CONFIG_GENERIC_LIB_ASHLDI3=y +CONFIG_GENERIC_LIB_ASHRDI3=y +CONFIG_GENERIC_LIB_LSHRDI3=y + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +# CONFIG_PRINTK_TIME is not set +# CONFIG_PRINTK_CALLER is not set +# CONFIG_STACKTRACE_BUILD_ID is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_CONSOLE_LOGLEVEL_QUIET=4 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +# CONFIG_DYNAMIC_DEBUG is not set +# CONFIG_DYNAMIC_DEBUG_CORE is not set +CONFIG_SYMBOLIC_ERRNAME=y +CONFIG_DEBUG_BUGVERBOSE=y +# end of printk and dmesg options + +# CONFIG_DEBUG_KERNEL is not set + +# +# Compile-time checks and compiler options +# +CONFIG_AS_HAS_NON_CONST_ULEB128=y +CONFIG_FRAME_WARN=1024 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_HEADERS_INSTALL is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +# end of Compile-time checks and compiler options + +# +# Generic Kernel Debugging Instruments +# +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_FS is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_UBSAN is not set +CONFIG_HAVE_KCSAN_COMPILER=y +# end of Generic Kernel Debugging Instruments + +# +# Networking Debugging +# +# end of Networking Debugging + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +CONFIG_SLUB_DEBUG=y +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_PAGE_POISONING is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y +# end of Memory Debugging + +# +# Debug Oops, Lockups and Hangs +# +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# end of Debug Oops, Lockups and Hangs + +# +# Scheduler Debugging +# +# end of Scheduler Debugging + +# CONFIG_DEBUG_TIMEKEEPING is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +CONFIG_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_WW_MUTEX_SELFTEST is not set +# end of Lock Debugging (spinlocks, mutexes, etc...) + +# CONFIG_DEBUG_IRQFLAGS is not set +CONFIG_STACKTRACE=y +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +CONFIG_HAVE_DEBUG_BUGVERBOSE=y + +# +# Debug kernel data structures +# +# end of Debug kernel data structures + +CONFIG_SYSVIPC=y +CONFIG_PCMCIA=y +CONFIG_NET_VENDOR_3COM=y +CONFIG_PCMCIA_3C574=y +CONFIG_PCMCIA_3C589=y +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_CFG80211_WEXT=y +CONFIG_WLAN=y +CONFIG_WLAN_VENDOR_INTERSIL=y +CONFIG_HERMES=y +CONFIG_PCMCIA_HERMES=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_SUPERH=y +CONFIG_SND_SH_DAC_AUDIO=y diff --git a/target/sh/systems/hp-jornada b/target/sh/systems/hp-jornada new file mode 100644 index 000000000..90e2473da --- /dev/null +++ b/target/sh/systems/hp-jornada @@ -0,0 +1,14 @@ +config ADK_TARGET_SYSTEM_HP_JORNADA +	bool "HP Jornada 6xx" +	select ADK_TARGET_LITTLE_ENDIAN +	select ADK_TARGET_CPU_SH_SH3 +	select ADK_TARGET_WITH_SERIAL +	select ADK_TARGET_WITH_BLOCK +	select ADK_TARGET_WITH_INPUT +	select ADK_TARGET_WITH_NETDEVICE +	select ADK_TARGET_WITH_VGA +	select ADK_TARGET_WITH_NET +	select ADK_TARGET_KERNEL_ZIMAGE +	help +	  Support for HP Jornada 6XX + diff --git a/target/sh/uclibc-ng.config b/target/sh/uclibc-ng.config index d8dea4776..660e08b36 100644 --- a/target/sh/uclibc-ng.config +++ b/target/sh/uclibc-ng.config @@ -1,6 +1,6 @@  #  # Automatically generated file; DO NOT EDIT. -# uClibc-ng 1.0.45 C Library Configuration +# uClibc-ng 1.0.52 C Library Configuration  #  # TARGET_aarch64 is not set  # TARGET_alpha is not set @@ -64,6 +64,7 @@ UCLIBC_HAS_FLOATS=y  UCLIBC_HAS_FPU=y  DO_C99_MATH=y  DO_XSI_MATH=y +UCLIBC_HAS_FENV=y  UCLIBC_HAS_LONG_DOUBLE_MATH=y  KERNEL_HEADERS=""  HAVE_DOT_CONFIG=y diff --git a/target/sparc/uclibc-ng.config b/target/sparc/uclibc-ng.config index c3ff0877b..1c694c993 100644 --- a/target/sparc/uclibc-ng.config +++ b/target/sparc/uclibc-ng.config @@ -1,6 +1,6 @@  #  # Automatically generated file; DO NOT EDIT. -# uClibc-ng 1.0.45 C Library Configuration +# uClibc-ng 1.0.52 C Library Configuration  #  # TARGET_aarch64 is not set  # TARGET_alpha is not set @@ -61,6 +61,7 @@ UCLIBC_HAS_FLOATS=y  UCLIBC_HAS_FPU=y  DO_C99_MATH=y  DO_XSI_MATH=y +UCLIBC_HAS_FENV=y  UCLIBC_HAS_LONG_DOUBLE_MATH=y  KERNEL_HEADERS=""  HAVE_DOT_CONFIG=y diff --git a/target/x86/Makefile b/target/x86/Makefile index b9bbc72a3..9298c3cbb 100644 --- a/target/x86/Makefile +++ b/target/x86/Makefile @@ -10,7 +10,15 @@ KERNEL:=$(LINUX_DIR)/arch/x86/boot/bzImage  QEMU_ARCH:=i386  QEMU_ARGS:=-M pc  QEMU_ARGS+=${ADK_QEMU_ARGS} + +ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y) +QEMU_ARGS+=-net nic,model=virtio -net user +ifeq ($(ADK_TARGET_FS),archive) +QEMU_ARGS+=-drive file=qemu-${ADK_TARGET_CPU_ARCH}.img,if=virtio +endif +else  QEMU_ARGS+=-net user -net nic,model=e1000 +endif  ifeq ($(ADK_PACKAGE_GRUB_EFI_X86),y)  QEMU_ARGS+=-L . -bios bios-x86.bin @@ -40,7 +48,11 @@ ifeq ($(ADK_TARGET_QEMU),y)  	@echo "$(CREATE) qemu-${ADK_TARGET_CPU_ARCH}.img $(FW_DIR)/$(ROOTFSTARBALL)"  	@echo "Start qemu with following options:"  ifeq ($(ADK_TARGET_QEMU_WITH_BOOTLOADER),y) +ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y) +	@echo 'qemu-system-${QEMU_ARCH} ${QEMU_ARGS}' +else  	@echo 'qemu-system-${QEMU_ARCH} ${QEMU_ARGS} qemu-${ADK_TARGET_CPU_ARCH}.img' +endif  else  	@echo 'qemu-system-${QEMU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) qemu-${ADK_TARGET_CPU_ARCH}.img'  endif diff --git a/target/x86/kernel/qemu-x86 b/target/x86/kernel/qemu-x86 index 1049b23d8..bb28f8ec4 100644 --- a/target/x86/kernel/qemu-x86 +++ b/target/x86/kernel/qemu-x86 @@ -1,3 +1,4 @@  CONFIG_X86=y  CONFIG_X86_32=y  CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE_OVERRIDE=y diff --git a/target/x86_64/Makefile b/target/x86_64/Makefile index 2c5bcd253..d9cb4ca62 100644 --- a/target/x86_64/Makefile +++ b/target/x86_64/Makefile @@ -10,11 +10,21 @@ KERNEL:=$(LINUX_DIR)/arch/x86/boot/bzImage  QEMU_ARCH:=x86_64  QEMU_ARGS:=-M pc -m 256 +QEMU_ARGS+=${ADK_QEMU_ARGS} +  ifeq ($(ADK_PACKAGE_GRUB_EFI_X86_64),y)  QEMU_ARGS+=-L . -bios bios-x86_64.bin  endif -QEMU_ARGS+=${ADK_QEMU_ARGS} + +ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y) +QEMU_ARGS+=-net nic,model=virtio -net user +ifeq ($(ADK_TARGET_FS),archive) +QEMU_ARGS+=-drive file=qemu-${ADK_TARGET_CPU_ARCH}.img,if=virtio +endif +else  QEMU_ARGS+=-net user -net nic,model=e1000 +endif +  ifeq ($(ADK_TARGET_QEMU_WITH_AUDIO),y)  QEMU_ARGS+=-device AC97  endif @@ -39,7 +49,11 @@ ifeq ($(ADK_TARGET_QEMU),y)  	@echo "$(CREATE) qemu-${ADK_TARGET_CPU_ARCH}.img $(FW_DIR)/$(ROOTFSTARBALL)"  	@echo "Start qemu with following options:"  ifeq ($(ADK_TARGET_QEMU_WITH_BOOTLOADER),y) +ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y) +	@echo 'qemu-system-${QEMU_ARCH} ${QEMU_ARGS}' +else  	@echo 'qemu-system-${QEMU_ARCH} ${QEMU_ARGS} qemu-${ADK_TARGET_CPU_ARCH}.img' +endif  else  	@echo 'qemu-system-${QEMU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) qemu-${ADK_TARGET_CPU_ARCH}.img'  endif diff --git a/target/x86_64/kernel/qemu-x86_64 b/target/x86_64/kernel/qemu-x86_64 index 9e9c1197f..073a4c7ca 100644 --- a/target/x86_64/kernel/qemu-x86_64 +++ b/target/x86_64/kernel/qemu-x86_64 @@ -11,3 +11,4 @@ CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y  CONFIG_AMD_NB=y  CONFIG_IA32_EMULATION=y  CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE_OVERRIDE=y diff --git a/target/x86_64/qemu-x86_64/genimage-dual.cfg b/target/x86_64/qemu-x86_64/genimage-dual.cfg index 647a2bcb5..c9b73170d 100644 --- a/target/x86_64/qemu-x86_64/genimage-dual.cfg +++ b/target/x86_64/qemu-x86_64/genimage-dual.cfg @@ -8,6 +8,7 @@ image disk.img {      image = "boot.img"      offset = 0      size = 512 +    holes = {"(440; 512)"}    }    partition grub { diff --git a/target/x86_64/qemu-x86_64/genimage-efi-dual.cfg b/target/x86_64/qemu-x86_64/genimage-efi-dual.cfg index ff3cb08d2..247511d57 100644 --- a/target/x86_64/qemu-x86_64/genimage-efi-dual.cfg +++ b/target/x86_64/qemu-x86_64/genimage-efi-dual.cfg @@ -22,14 +22,14 @@ image disk.img {    partition root1 {      partition-type-uuid = 44479540-f297-41b2-9af7-d131d5f0458a -    image = "rootfs.ext" -    size = 128M +    image = "rootfs1.ext" +    size = 64M    }    partition root2 {      partition-type-uuid = 44479540-f297-41b2-9af7-d131d5f0458a -    image = "rootfs.ext" -    size = 128M +    image = "rootfs2.ext" +    size = 64M    }    partition cfgfs { diff --git a/toolchain/binutils/Makefile.inc b/toolchain/binutils/Makefile.inc index 9e9e9a4c4..1ce4bd821 100644 --- a/toolchain/binutils/Makefile.inc +++ b/toolchain/binutils/Makefile.inc @@ -2,6 +2,13 @@  # material, please see the LICENCE file in the top-level directory.  PKG_NAME:=		binutils +ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_45),y) +PKG_VERSION:=		2.45 +PKG_RELEASE:=		1 +PKG_HASH:=		8a3eb4b10e7053312790f21ee1a38f7e2bbd6f4096abb590d3429e5119592d96 +PKG_SITES:=		${MASTER_SITE_GNU:=binutils/} +DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz +endif  ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_44),y)  PKG_VERSION:=		2.44  PKG_RELEASE:=		1 @@ -58,6 +65,13 @@ PKG_HASH:=		c44968b97cd86499efbc4b4ab7d98471f673e5414c554ef54afa930062dbbfcb  PKG_SITES:=		${MASTER_SITE_GNU:=binutils/}  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  endif +ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_26),y) +PKG_VERSION:=		2.26 +PKG_RELEASE:=		1 +PKG_HASH:=		9615feddaeedc214d1a1ecd77b6697449c952eab69d79ab2125ea050e944bcc1 +PKG_SITES:=		${MASTER_SITE_GNU:=binutils/} +DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz +endif  ifeq ($(ADK_TOOLCHAIN_BINUTILS_KVX),y)  PKG_VERSION:=		782547a4e2bdf1308728032853678ca69bb154ea  PKG_GIT:=		hash @@ -66,7 +80,7 @@ PKG_SITES:=		https://github.com/kalray/gdb-binutils.git  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  endif  ifeq ($(ADK_TOOLCHAIN_BINUTILS_ARC),y) -PKG_VERSION:=		arc-2023.09 +PKG_VERSION:=		arc-2024.12  PKG_GIT:=		tag  PKG_RELEASE:=		1  PKG_SITES:=		https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb.git diff --git a/toolchain/binutils/patches/2.26/0001-Relax-assertion-in-BFIN-linker-to-allow-for-discard-.patch b/toolchain/binutils/patches/2.26/0001-Relax-assertion-in-BFIN-linker-to-allow-for-discard-.patch new file mode 100644 index 000000000..074317a24 --- /dev/null +++ b/toolchain/binutils/patches/2.26/0001-Relax-assertion-in-BFIN-linker-to-allow-for-discard-.patch @@ -0,0 +1,38 @@ +From ed3056ebdb9795446157af03d3e08fbb93c1b01d Mon Sep 17 00:00:00 2001 +From: Nick Clifton <nickc@redhat.com> +Date: Tue, 29 Mar 2016 10:24:16 +0100 +Subject: [PATCH] Relax assertion in BFIN linker to allow for discard GOT + relocs. + +	PR 17334 +	* elf32-bfin.c (elf32_bfinfdpic_finish_dynamic_sections): Relax +	assertion on the size of the got section to allow it to be bigger +	than the number of relocs. + +Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> +--- + bfd/elf32-bfin.c | 8 +++++++- + 2 files changed, 14 insertions(+), 1 deletion(-) + +diff --git a/bfd/elf32-bfin.c b/bfd/elf32-bfin.c +index 7cc8b6d851e..b2fcf38b470 100644 +--- a/bfd/elf32-bfin.c ++++ b/bfd/elf32-bfin.c +@@ -4457,7 +4457,13 @@ elf32_bfinfdpic_finish_dynamic_sections (bfd *output_bfd, +   if (bfinfdpic_got_section (info)) +     { +       BFD_ASSERT (bfinfdpic_gotrel_section (info)->size +-		  == (bfinfdpic_gotrel_section (info)->reloc_count ++		  /* PR 17334: It appears that the GOT section can end up ++		     being bigger than the number of relocs.  Presumably ++		     because some relocs have been deleted.  A test case has ++		     yet to be generated for verify this, but in the meantime ++		     the test below has been changed from == to >= so that ++		     applications can continue to be built.  */ ++		  >= (bfinfdpic_gotrel_section (info)->reloc_count + 		      * sizeof (Elf32_External_Rel))); +  +       if (bfinfdpic_gotfixup_section (info)) +--  +2.39.5 + diff --git a/toolchain/binutils/patches/2.44/lm32.patch b/toolchain/binutils/patches/2.44/lm32.patch new file mode 100644 index 000000000..dcbb0d541 --- /dev/null +++ b/toolchain/binutils/patches/2.44/lm32.patch @@ -0,0 +1,24 @@ +diff -Nur binutils-2.41.orig/bfd/config.bfd binutils-2.41/bfd/config.bfd +--- binutils-2.41.orig/bfd/config.bfd	2023-07-03 01:00:00.000000000 +0200 ++++ binutils-2.41/bfd/config.bfd	2023-09-07 17:03:12.853045008 +0200 +@@ -803,7 +803,7 @@ +     ;; +  +   lm32-*-*linux*) +-    targ_defvec=lm32_elf32_fdpic_vec ++    targ_defvec=lm32_elf32_vec +     targ_selvecs=lm32_elf32_vec +     ;; +  +diff -Nur binutils-2.41.orig/ld/configure.tgt binutils-2.41/ld/configure.tgt +--- binutils-2.41.orig/ld/configure.tgt	2023-07-03 01:00:00.000000000 +0200 ++++ binutils-2.41/ld/configure.tgt	2023-09-07 17:03:44.364298973 +0200 +@@ -468,7 +468,7 @@ + 			targ_extra_emuls="elf32iq10" + 			targ_extra_ofiles=ldelfgen.o + 			;; +-lm32-*-*linux*)		targ_emul=elf32lm32fd ++lm32-*-*linux*)		targ_emul=elf32lm32 + 			;; + lm32-*-*)		targ_emul=elf32lm32 + 			targ_extra_emuls="elf32lm32fd" diff --git a/toolchain/elf2flt/Makefile b/toolchain/elf2flt/Makefile index 4177d54d7..30c42b2b9 100644 --- a/toolchain/elf2flt/Makefile +++ b/toolchain/elf2flt/Makefile @@ -10,6 +10,10 @@ ifeq ($(ADK_TOOLCHAIN_BINUTILS_GIT),y)  BINUTILS_VERSION:=	git  BFDLIB:=		.libs/libbfd.a  endif +ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_45),y) +BINUTILS_VERSION:=	2.45 +BFDLIB:=		.libs/libbfd.a +endif  ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_44),y)  BINUTILS_VERSION:=	2.44  BFDLIB:=		.libs/libbfd.a @@ -46,6 +50,10 @@ ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_28),y)  BINUTILS_VERSION:=	2.28  BFDLIB:=		libbfd.a  endif +ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_26),y) +BINUTILS_VERSION:=	2.26 +BFDLIB:=		libbfd.a +endif  $(WRKBUILD)/.configured:  	(cd $(WRKBUILD); PATH='${HOST_PATH}' autoreconf -vif;) diff --git a/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0001-lm32.patch b/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0001-lm32.patch deleted file mode 100644 index 5ec55337b..000000000 --- a/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0001-lm32.patch +++ /dev/null @@ -1,159 +0,0 @@ -diff -Nur elf2flt-6d80ab6c93409e796f85da404bde84b841231531.orig/elf2flt.c elf2flt-6d80ab6c93409e796f85da404bde84b841231531/elf2flt.c ---- elf2flt-6d80ab6c93409e796f85da404bde84b841231531.orig/elf2flt.c	2017-09-27 06:06:04.000000000 +0200 -+++ elf2flt-6d80ab6c93409e796f85da404bde84b841231531/elf2flt.c	2017-09-27 06:07:51.032597579 +0200 -@@ -61,6 +61,8 @@ - #include <elf/bfin.h> - #elif defined(TARGET_h8300) - #include <elf/h8.h> -+#elif defined(TARGET_lm32) -+#include <elf/lm32.h> - #elif defined(TARGET_m68k) - #include <elf/m68k.h> - #elif defined(TARGET_microblaze) -@@ -120,6 +122,11 @@ - #define ARCH	"nios" - #elif defined(TARGET_nios2) - #define ARCH	"nios2" -+#elif defined(TARGET_lm32) -+#define ARCH	"lm32" -+#define FLAT_LM32_RELOC_TYPE_32_BIT   0 -+#define FLAT_LM32_RELOC_TYPE_HI16_BIT 1 -+#define FLAT_LM32_RELOC_TYPE_LO16_BIT 2 - #elif defined(TARGET_xtensa) - #define ARCH	"xtensa" - #else -@@ -357,7 +364,7 @@ -   int			bad_relocs = 0; -   asymbol		**symb; -   long			nsymb; --#ifdef TARGET_bfin -+#if defined (TARGET_bfin) || defined (TARGET_lm32) -   unsigned long		persistent_data = 0; - #endif -    -@@ -682,6 +689,36 @@ - 					break; - 				default: - 					goto bad_resolved_reloc; -+#elif defined(TARGET_lm32) -+				case R_LM32_HI16: -+				case R_LM32_LO16: -+					if (q->howto->type == R_LM32_HI16) { -+						pflags = FLAT_LM32_RELOC_TYPE_HI16_BIT << 29; -+					} else { -+						pflags = FLAT_LM32_RELOC_TYPE_LO16_BIT << 29; -+					} -+ -+					relocation_needed = 1; -+ -+					/* remember the upper 16 bits */ -+				    if ((0xffff0000 & sym_addr) != persistent_data) { -+						flat_relocs = (uint32_t *) -+							(realloc (flat_relocs, (flat_reloc_count + 1) * sizeof (uint32_t))); -+						if (verbose) -+							printf ("New persistent data for %08lx\n", sym_addr); -+						persistent_data = 0xffff0000 & sym_addr; -+						flat_relocs[flat_reloc_count++] = (sym_addr >> 16) | (3 << 29); -+					} -+					break; -+				case R_LM32_32: -+					pflags = FLAT_LM32_RELOC_TYPE_32_BIT << 29; -+					relocation_needed = 1; -+					break; -+				case R_LM32_CALL: -+					relocation_needed = 0; -+					break; -+				default: -+					goto bad_resolved_reloc; - #elif defined(TARGET_m68k) - 				case R_68K_32: - 					goto good_32bit_resolved_reloc; -@@ -1459,6 +1496,63 @@ - #undef _30BITS_RELOC - #undef _28BITS_RELOC - #endif -+#ifdef TARGET_lm32 -+				case R_LM32_32: -+				{ -+					pflags = FLAT_LM32_RELOC_TYPE_32_BIT << 29; -+					sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section); -+					sym_addr += sym_vma + q->addend; -+					relocation_needed = 1; -+					break; -+				} -+				case R_LM32_CALL: -+				{ -+					sym_vma = 0; -+					sym_addr += sym_vma + q->addend; -+					sym_addr -= q->address; -+					sym_addr = (int32_t)sym_addr >> q->howto->rightshift; -+ -+					if ((int32_t)sym_addr < -0x8000000 || (int32_t)sym_addr > 0x7ffffff) { -+						printf("ERROR: Relocation overflow for R_LM32_CALL relocation against %s\n", sym_name); -+						bad_relocs++; -+						continue; -+					} -+ -+					r_mem[0] |= (sym_addr >> 24) & 0x03; -+					r_mem[1] = (sym_addr >> 16) & 0xff; -+					r_mem[2] = (sym_addr >> 8) & 0xff; -+					r_mem[3] = sym_addr & 0xff; -+					break; -+				} -+				case R_LM32_HI16: -+				case R_LM32_LO16: -+				{ -+					if (q->howto->type == R_LM32_HI16) { -+						pflags = FLAT_LM32_RELOC_TYPE_HI16_BIT << 29; -+					} else { -+						pflags = FLAT_LM32_RELOC_TYPE_LO16_BIT << 29; -+					} -+ -+					sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section); -+					sym_addr += sym_vma + q->addend; -+ -+					relocation_needed = 1; -+ -+					/* remember the upper 16 bits */ -+				    if ((0xffff0000 & sym_addr) != persistent_data) { -+						flat_relocs = (uint32_t *) -+							(realloc (flat_relocs, (flat_reloc_count + 1) * sizeof (uint32_t))); -+						if (verbose) -+							printf ("New persistent data for %08lx\n", sym_addr); -+						persistent_data = 0xffff0000 & sym_addr; -+						flat_relocs[flat_reloc_count++] = (sym_addr >> 16) | (3 << 29); -+					} -+ -+					r_mem[2] = (sym_addr >> 8) & 0xff; -+					r_mem[3] = sym_addr & 0xff; -+					break; -+				} -+#endif /* TARGET_lm32 */ - 				default: - 					/* missing support for other types of relocs */ - 					printf("ERROR: bad reloc type %d\n", (*p)->howto->type); -@@ -1596,6 +1690,13 @@ - 					break; - #endif -  -+#ifdef TARGET_lm32 -+				case R_LM32_HI16: -+				case R_LM32_LO16: -+				case R_LM32_CALL: -+					/* entry has already been written */ -+					break; -+#endif - 				default: - 					/* The alignment of the build host - 					   might be stricter than that of the -diff -Nur elf2flt-6d80ab6c93409e796f85da404bde84b841231531.orig/elf2flt.ld.in elf2flt-6d80ab6c93409e796f85da404bde84b841231531/elf2flt.ld.in ---- elf2flt-6d80ab6c93409e796f85da404bde84b841231531.orig/elf2flt.ld.in	2017-09-27 06:06:04.000000000 +0200 -+++ elf2flt-6d80ab6c93409e796f85da404bde84b841231531/elf2flt.ld.in	2017-09-29 18:11:30.999698955 +0200 -@@ -34,6 +34,7 @@ - W_RODAT		*(.rodata1) - W_RODAT		*(.rodata.*) - W_RODAT		*(.gnu.linkonce.r*) -+W_RODAT		*(.rofixup) -  - 		/* .ARM.extab name sections containing exception unwinding information */ - 		*(.ARM.extab* .gnu.linkonce.armextab.*) diff --git a/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0006-lm32.patch b/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0006-lm32.patch new file mode 100644 index 000000000..0e0a96092 --- /dev/null +++ b/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0006-lm32.patch @@ -0,0 +1,190 @@ +--- elf2flt-453398f917d167f8c308c8f997270c48ae8f8b12.orig/elf2flt.c	2025-04-14 19:50:51.016711969 +0000 ++++ elf2flt-453398f917d167f8c308c8f997270c48ae8f8b12/elf2flt.c	2025-04-14 21:41:22.134771290 +0000 +@@ -62,6 +62,8 @@ const char *elf2flt_progname; + #include <elf/bfin.h> + #elif defined(TARGET_h8300) + #include <elf/h8.h> ++#elif defined(TARGET_lm32) ++#include <elf/lm32.h> + #elif defined(TARGET_m68k) + #include <elf/m68k.h> + #elif defined(TARGET_microblaze) +@@ -115,6 +117,12 @@ const char *elf2flt_progname; + #define	ARCH	"sh2" + #elif defined(TARGET_h8300) + #define	ARCH	"h8300" ++#elif defined(TARGET_lm32) ++#define ARCH	"lm32" ++#define FLAT_LM32_RELOC_TYPE_32_BIT   0 ++#define FLAT_LM32_RELOC_TYPE_HI16_BIT 1 ++#define FLAT_LM32_RELOC_TYPE_LO16_BIT 2 ++#define FLAT_LM32_RELOC_TYPE_PERSIST  3 + #elif defined(TARGET_microblaze) + #define ARCH	"microblaze" + #elif defined(TARGET_e1) +@@ -375,7 +383,7 @@ output_relocs ( +   int			bad_relocs = 0; +   asymbol		**symb; +   long			nsymb; +-#ifdef TARGET_bfin ++#if defined(TARGET_bfin) || defined(TARGET_lm32) +   unsigned long		persistent_data = 0; + #endif +    +@@ -674,6 +682,40 @@ output_relocs ( + 					break; + 				default: + 					goto bad_resolved_reloc; ++#elif defined(TARGET_lm32) ++				case R_LM32_HI16: ++				case R_LM32_LO16: ++					sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section); ++					sym_addr += sym_vma + q->addend; ++					/* remember the upper 16 bits */ ++					if ((0xFFFF0000UL & sym_addr) != persistent_data) { ++						flat_relocs = (uint32_t *)realloc(flat_relocs, ++						    (flat_reloc_count + 1) * sizeof (uint32_t)); ++						if (verbose) ++							printf("New persistent data for %08"PRIx32"\n", sym_addr); ++						persistent_data = 0xFFFF0000UL & sym_addr; ++						pflags = FLAT_LM32_RELOC_TYPE_PERSIST; ++						pflags <<= 29; ++						flat_relocs[flat_reloc_count++] = pflags | (sym_addr >> 16); ++					} ++					pflags = q->howto->type == R_LM32_HI16 ? ++					    FLAT_LM32_RELOC_TYPE_HI16_BIT : ++					    FLAT_LM32_RELOC_TYPE_LO16_BIT; ++					pflags <<= 29; ++					relocation_needed = 1; ++					break; ++				case R_LM32_32: ++					sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section); ++					sym_addr += sym_vma + q->addend; ++					pflags = FLAT_LM32_RELOC_TYPE_32_BIT; ++					pflags <<= 29; ++					relocation_needed = 1; ++					break; ++				case R_LM32_CALL: ++					relocation_needed = 0; ++					break; ++				default: ++					goto bad_resolved_reloc; + #elif defined(TARGET_m68k) + 				case R_68K_32: + 					goto good_32bit_resolved_reloc; +@@ -1010,6 +1052,63 @@ output_relocs ( + 					continue; + #endif +  ++#ifdef TARGET_lm32 ++				case R_LM32_HI16: ++				case R_LM32_LO16: ++					sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section); ++					sym_addr += sym_vma + q->addend; ++					/* remember the upper 16 bits */ ++					if ((0xFFFF0000UL & sym_addr) != persistent_data) { ++						flat_relocs = (uint32_t *)realloc(flat_relocs, ++						    (flat_reloc_count + 1) * sizeof (uint32_t)); ++						if (verbose) ++							printf("New persistent data for %08"PRIx32"\n", sym_addr); ++						persistent_data = 0xFFFF0000UL & sym_addr; ++						pflags = FLAT_LM32_RELOC_TYPE_PERSIST; ++						pflags <<= 29; ++						flat_relocs[flat_reloc_count++] = pflags | (sym_addr >> 16); ++					} ++					pflags = q->howto->type == R_LM32_HI16 ? ++					    FLAT_LM32_RELOC_TYPE_HI16_BIT : ++					    FLAT_LM32_RELOC_TYPE_LO16_BIT; ++					pflags <<= 29; ++					relocation_needed = 1; ++					break; ++				case R_LM32_32: ++					sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section); ++					sym_addr += sym_vma + q->addend; ++					pflags = FLAT_LM32_RELOC_TYPE_32_BIT; ++					pflags <<= 29; ++					relocation_needed = 1; ++					break; ++				case R_LM32_CALL: ++					sym_vma = 0; ++					sym_addr += sym_vma + q->addend; ++					sym_addr -= q->address; ++					sym_addr = (int32_t)sym_addr >> q->howto->rightshift; ++					{ ++						union { ++							uint32_t u; ++							int32_t s; ++						} rangecheck; ++ ++						rangecheck.u = (unsigned)sym_addr << 6; ++						rangecheck.s >>= 6; ++						if (rangecheck.u != sym_addr) { ++							printf("ERROR: Relocation overflow for R_LM32_CALL relocation against %s\n", sym_name); ++							++bad_relocs; ++							continue; ++						} ++					} ++					relocation_needed = 0; ++					r_mem[0] = (r_mem[0] & 0xFCU) | ++					          ((sym_addr >> 24) & 0x03U); ++					r_mem[1] = (sym_addr >> 16) & 0xFFU; ++					r_mem[2] = (sym_addr >>  8) & 0xFFU; ++					r_mem[3] =  sym_addr        & 0xFFU; ++					break; ++#endif ++ + #ifdef TARGET_microblaze + 				case R_MICROBLAZE_64: + 		/* The symbol is split over two consecutive instructions.   +@@ -1596,6 +1695,21 @@ DIS29_RELOCATION: + 					break; + #endif +  ++#ifdef TARGET_lm32 ++				case R_LM32_HI16: ++				case R_LM32_LO16: ++					r_mem[2] = (sym_addr >>  8) & 0xFFU; ++					r_mem[3] =  sym_addr        & 0xFFU; ++					break; ++				case R_LM32_CALL: ++					/* ++					 * use_resolved=… ++					 * 0: already written above ++					 * 1: no write necessary ++					 */ ++					break; ++#endif ++ + 				default: + 					/* The alignment of the build host + 					   might be stricter than that of the +--- elf2flt-453398f917d167f8c308c8f997270c48ae8f8b12.orig/elf2flt.ld.in	2025-04-14 19:50:51.020711942 +0000 ++++ elf2flt-453398f917d167f8c308c8f997270c48ae8f8b12/elf2flt.ld.in	2025-04-14 22:23:40.078052838 +0000 +@@ -34,6 +34,7 @@ W_RODAT		*(.rodata) + W_RODAT		*(.rodata1) + W_RODAT		*(.rodata.*) + W_RODAT		*(.gnu.linkonce.r*) ++W_RODAT		*(.rofixup) +  + 		/* .ARM.extab name sections containing exception unwinding information */ + 		*(.ARM.extab* .gnu.linkonce.armextab.*) +--- elf2flt-453398f917d167f8c308c8f997270c48ae8f8b12.orig/flthdr.c	2025-04-14 19:50:43.924759193 +0000 ++++ elf2flt-453398f917d167f8c308c8f997270c48ae8f8b12/flthdr.c	2025-04-14 22:01:24.467101158 +0000 +@@ -33,6 +33,8 @@ const char *elf2flt_progname; +  + #if defined TARGET_bfin + # define flat_get_relocate_addr(addr) (addr & 0x03ffffff) ++#elif defined(TARGET_lm32) ++# define flat_get_relocate_addr(addr) ((addr) & 0x1FFFFFFFU) + #else + # define flat_get_relocate_addr(addr) (addr) + #endif +@@ -173,6 +175,8 @@ process_file(const char *ifile, const ch + 				addr = ntohl(addr); + 				if (r & 1) + 					addr &= 0x00ffffff; ++#elif defined(TARGET_lm32) ++				addr = ntohl(addr); + #endif + 				printf("%"PRIx32"\n", addr); + 			} diff --git a/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0007-dont-waste-space.patch b/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0007-dont-waste-space.patch new file mode 100644 index 000000000..66b0c12f1 --- /dev/null +++ b/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0007-dont-waste-space.patch @@ -0,0 +1,10 @@ +--- elf2flt-453398f917d167f8c308c8f997270c48ae8f8b12.orig/elf2flt.ld.in	2025-04-14 19:50:51.020711942 +0000 ++++ elf2flt-453398f917d167f8c308c8f997270c48ae8f8b12/elf2flt.ld.in	2025-04-14 22:23:40.078052838 +0000 +@@ -13,7 +13,6 @@ PHDRS { + SECTIONS { +  + 	.text 0x0 : { +-		. = . + 4; + 		. = ALIGN(0x4) ; + 		@SYMBOL_PREFIX@_stext = . ; + 		*(.literal .text) diff --git a/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0009-no-build-date.patch b/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0009-no-build-date.patch new file mode 100644 index 000000000..06273ef4b --- /dev/null +++ b/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0009-no-build-date.patch @@ -0,0 +1,11 @@ +--- elf2flt-453398f917d167f8c308c8f997270c48ae8f8b12.orig/elf2flt.c	2025-04-14 19:50:51.016711969 +0000 ++++ elf2flt-453398f917d167f8c308c8f997270c48ae8f8b12/elf2flt.c	2025-04-14 23:14:52.212092781 +0000 +@@ -2132,7 +2132,7 @@ int main(int argc, char *argv[]) + 	  | (pic_with_got ? FLAT_FLAG_GOTPIC : 0) + 	  | (docompress ? (docompress == 2 ? FLAT_FLAG_GZDATA : FLAT_FLAG_GZIP) : 0) + 	  ); +-  hdr.build_date = htonl((uint32_t)get_build_date()); ++  hdr.build_date = 0; +   memset(hdr.filler, 0x00, sizeof(hdr.filler)); +  +   for (i=0; i<reloc_len; i++) reloc[i] = htonl(reloc[i]); diff --git a/toolchain/expat/Makefile b/toolchain/expat/Makefile index 6d1c6215b..fedceb2a0 100644 --- a/toolchain/expat/Makefile +++ b/toolchain/expat/Makefile @@ -6,10 +6,6 @@ include Makefile.inc  include ../rules.mk  include ${ADK_TOPDIR}/mk/buildhlp.mk -ifeq (${ADK_MAKE_PARALLEL},y) -MPC_MAKEOPTS+=		-j${ADK_MAKE_JOBS} -endif -  $(WRKBUILD)/.configured:  	(cd $(WRKBUILD); \  		$(WRKBUILD)/configure \ @@ -17,6 +13,7 @@ $(WRKBUILD)/.configured:  		--enable-static \  		--disable-shared \  		--without-docbook \ +		--without-tests \  	);  	touch $@ diff --git a/toolchain/expat/Makefile.inc b/toolchain/expat/Makefile.inc index 7baf7f48d..b5b9f8932 100644 --- a/toolchain/expat/Makefile.inc +++ b/toolchain/expat/Makefile.inc @@ -2,8 +2,8 @@  # material, please see the LICENCE file in the top-level directory.  PKG_NAME:=		expat -PKG_VERSION:=		2.7.0 +PKG_VERSION:=		2.7.1  PKG_RELEASE:=		1 -PKG_HASH:=		362e89ca6b8a0d46fc5740a917eb2a8b4d6356edbe016eee09f49c0781215844 -PKG_SITES:=		https://github.com/libexpat/libexpat/releases/download/R_2_7_0/ +PKG_HASH:=		0cce2e6e69b327fc607b8ff264f4b66bdf71ead55a87ffd5f3143f535f15cfa2 +PKG_SITES:=		https://github.com/libexpat/libexpat/releases/download/R_2_7_1/  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz diff --git a/toolchain/gcc/Makefile b/toolchain/gcc/Makefile index fb03e9633..87ab35248 100644 --- a/toolchain/gcc/Makefile +++ b/toolchain/gcc/Makefile @@ -132,8 +132,10 @@ GCC_CONFOPTS+=		--with-arch=$(ADK_TARGET_GCC_ARCH)  endif  ifneq ($(ADK_TARGET_FLOAT),) +ifneq ($(ADK_TARGET_ARCH_OR1K),y)  GCC_CONFOPTS+=		--with-float=$(ADK_TARGET_FLOAT)  endif +endif  ifneq ($(ADK_TARGET_FPU),)  GCC_CONFOPTS+=		--with-fpu=$(ADK_TARGET_FPU) @@ -399,7 +401,7 @@ $(WRKBUILD)/.installed: $(WRKBUILD)/.compiled  	# remove duplicate tools, convert hardlinks to symlinks  	set -e; \  	cd $(TOOLCHAIN_DIR)/usr/$(GNU_TARGET_NAME)/bin; \ -		for app in ar as c++ g++ gcc ld ld.gold ld.bfd nm objcopy objdump ranlib strip; do \ +		for app in ar as c++ g++ gcc ld ld.bfd nm objcopy objdump ranlib strip; do \  			ln -sf ../../bin/$(GNU_TARGET_NAME)-$${app} $${app}; \  		done;  	(cd $(TOOLCHAIN_DIR)/usr/bin && \ @@ -412,6 +414,8 @@ $(WRKBUILD)/.final:  ifeq ($(ADK_TARGET_CPU_CF),y)  	find $(STAGING_TARGET_DIR) -name libgcc.a -print | while read t; do $(GNU_TARGET_NAME)-ar dv "$t" _ctors.o; done  endif +	# install libatomic including .so symlink +	-$(CP) $(GCC_BUILD_DIR_FINAL)/$(GNU_TARGET_NAME)/libatomic/.libs/libatomic*.so* $(STAGING_TARGET_DIR)/usr/lib  	# cleanup unneeded docs  	rm -rf $(TOOLCHAIN_DIR)/usr/share  	# cleanup unneeded libtool files diff --git a/toolchain/gcc/Makefile.inc b/toolchain/gcc/Makefile.inc index bc0740cc9..50279e549 100644 --- a/toolchain/gcc/Makefile.inc +++ b/toolchain/gcc/Makefile.inc @@ -2,25 +2,33 @@  # material, please see the LICENCE file in the top-level directory.  PKG_NAME:=		gcc +ifeq ($(ADK_TOOLCHAIN_GCC_15),y) +PKG_VERSION:=		15.2.0 +PKG_HASH:=		7294d65cc1a0558cb815af0ca8c7763d86f7a31199794ede3f630c0d1b0a5723 +PKG_SITES:=		${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/} +PKG_RELEASE:=		1 +DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz +LIBSTDCXXVER:=		31 +endif  ifeq ($(ADK_TOOLCHAIN_GCC_14),y) -PKG_VERSION:=		14.2.0 -PKG_HASH:=		7d376d445f93126dc545e2c0086d0f647c3094aae081cdb78f42ce2bc25e7293 +PKG_VERSION:=		14.3.0 +PKG_HASH:=		ace8b8b0dbfe6abfc22f821cb093e195aa5498b7ccf7cd23e4424b9f14afed22  PKG_SITES:=		${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}  PKG_RELEASE:=		1  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  LIBSTDCXXVER:=		30  endif  ifeq ($(ADK_TOOLCHAIN_GCC_13),y) -PKG_VERSION:=		13.3.0 -PKG_HASH:=		3a2b10cab86e32358fdac871546d57e2700e9bdb5875ef33fff5b601265b9e32 +PKG_VERSION:=		13.4.0 +PKG_HASH:=		bf0baf3e570c9c74c17c8201f0196c6924b4bd98c90e69d6b2ac0cd823f33bbc  PKG_SITES:=		${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}  PKG_RELEASE:=		1  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  LIBSTDCXXVER:=		29  endif  ifeq ($(ADK_TOOLCHAIN_GCC_12),y) -PKG_VERSION:=		12.4.0 -PKG_HASH:=		5a30de2be740062bb3ddd3fd13c9b1bb4584d8f85616d33f23a713439d714148 +PKG_VERSION:=		12.5.0 +PKG_HASH:=		f2dfac9c026c58b04251732aa459db614ae1017d32a18a296b1ae5af3dcad927  PKG_SITES:=		${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}  PKG_RELEASE:=		1  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz @@ -91,7 +99,7 @@ DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  LIBSTDCXXVER:=		20  endif  ifeq ($(ADK_TOOLCHAIN_GCC_ARC),y) -PKG_VERSION:=		arc-2023.09 +PKG_VERSION:=		arc-2024.12  PKG_GIT:=		tag  PKG_SITES:=		https://github.com/foss-for-synopsys-dwc-arc-processors/gcc.git  PKG_RELEASE:=		1 diff --git a/toolchain/gcc/patches/11.4.0/add-crtreloc.frv b/toolchain/gcc/patches/11.5.0/add-crtreloc.frv index 30de24cdc..30de24cdc 100644 --- a/toolchain/gcc/patches/11.4.0/add-crtreloc.frv +++ b/toolchain/gcc/patches/11.5.0/add-crtreloc.frv diff --git a/toolchain/gcc/patches/11.4.0/c6x-disable-multilib.patch b/toolchain/gcc/patches/11.5.0/c6x-disable-multilib.patch index cbee6f785..cbee6f785 100644 --- a/toolchain/gcc/patches/11.4.0/c6x-disable-multilib.patch +++ b/toolchain/gcc/patches/11.5.0/c6x-disable-multilib.patch diff --git a/toolchain/gcc/patches/11.4.0/csky.patch b/toolchain/gcc/patches/11.5.0/csky.patch index ee352951b..ee352951b 100644 --- a/toolchain/gcc/patches/11.4.0/csky.patch +++ b/toolchain/gcc/patches/11.5.0/csky.patch diff --git a/toolchain/gcc/patches/11.4.0/ia64-fix-libgcc.patch b/toolchain/gcc/patches/11.5.0/ia64-fix-libgcc.patch index f1f3c8d2d..f1f3c8d2d 100644 --- a/toolchain/gcc/patches/11.4.0/ia64-fix-libgcc.patch +++ b/toolchain/gcc/patches/11.5.0/ia64-fix-libgcc.patch diff --git a/toolchain/gcc/patches/11.4.0/nios2-softfp.patch b/toolchain/gcc/patches/11.5.0/nios2-softfp.patch index c677c6c2f..c677c6c2f 100644 --- a/toolchain/gcc/patches/11.4.0/nios2-softfp.patch +++ b/toolchain/gcc/patches/11.5.0/nios2-softfp.patch diff --git a/toolchain/gcc/patches/12.3.0/csky.patch b/toolchain/gcc/patches/12.5.0/csky.patch index ee352951b..ee352951b 100644 --- a/toolchain/gcc/patches/12.3.0/csky.patch +++ b/toolchain/gcc/patches/12.5.0/csky.patch diff --git a/toolchain/gcc/patches/12.3.0/nios2-softfp.patch b/toolchain/gcc/patches/12.5.0/nios2-softfp.patch index c677c6c2f..c677c6c2f 100644 --- a/toolchain/gcc/patches/12.3.0/nios2-softfp.patch +++ b/toolchain/gcc/patches/12.5.0/nios2-softfp.patch diff --git a/toolchain/gcc/patches/13.3.0/csky.patch b/toolchain/gcc/patches/13.4.0/csky.patch index ee352951b..ee352951b 100644 --- a/toolchain/gcc/patches/13.3.0/csky.patch +++ b/toolchain/gcc/patches/13.4.0/csky.patch diff --git a/toolchain/gcc/patches/13.3.0/nios2-softfp.patch b/toolchain/gcc/patches/13.4.0/nios2-softfp.patch index c677c6c2f..c677c6c2f 100644 --- a/toolchain/gcc/patches/13.3.0/nios2-softfp.patch +++ b/toolchain/gcc/patches/13.4.0/nios2-softfp.patch diff --git a/toolchain/gcc/patches/14.3.0/add-crtreloc.frv b/toolchain/gcc/patches/14.3.0/add-crtreloc.frv new file mode 100644 index 000000000..30de24cdc --- /dev/null +++ b/toolchain/gcc/patches/14.3.0/add-crtreloc.frv @@ -0,0 +1,12 @@ +diff -Nur gcc-8.3.0.orig/gcc/config/frv/linux.h gcc-8.3.0/gcc/config/frv/linux.h +--- gcc-8.3.0.orig/gcc/config/frv/linux.h	2018-01-03 11:03:58.000000000 +0100 ++++ gcc-8.3.0/gcc/config/frv/linux.h	2019-10-08 10:52:00.176295821 +0200 +@@ -27,7 +27,7 @@ +  + #undef STARTFILE_SPEC + #define STARTFILE_SPEC \ +-  "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ ++  "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} crtreloc.o%s \ +    crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}" +  + #undef ENDFILE_SPEC diff --git a/toolchain/gcc/patches/14.2.0/csky.patch b/toolchain/gcc/patches/14.3.0/csky.patch index ee352951b..ee352951b 100644 --- a/toolchain/gcc/patches/14.2.0/csky.patch +++ b/toolchain/gcc/patches/14.3.0/csky.patch diff --git a/toolchain/gcc/patches/14.2.0/libgcc-fdpic-bfin.patch b/toolchain/gcc/patches/14.3.0/libgcc-fdpic-bfin.patch index df0b94fc9..df0b94fc9 100644 --- a/toolchain/gcc/patches/14.2.0/libgcc-fdpic-bfin.patch +++ b/toolchain/gcc/patches/14.3.0/libgcc-fdpic-bfin.patch diff --git a/toolchain/gcc/patches/14.2.0/nios2-softfp.patch b/toolchain/gcc/patches/14.3.0/nios2-softfp.patch index c677c6c2f..c677c6c2f 100644 --- a/toolchain/gcc/patches/14.2.0/nios2-softfp.patch +++ b/toolchain/gcc/patches/14.3.0/nios2-softfp.patch diff --git a/toolchain/gcc/patches/15.1.0/add-crtreloc.frv b/toolchain/gcc/patches/15.1.0/add-crtreloc.frv new file mode 100644 index 000000000..30de24cdc --- /dev/null +++ b/toolchain/gcc/patches/15.1.0/add-crtreloc.frv @@ -0,0 +1,12 @@ +diff -Nur gcc-8.3.0.orig/gcc/config/frv/linux.h gcc-8.3.0/gcc/config/frv/linux.h +--- gcc-8.3.0.orig/gcc/config/frv/linux.h	2018-01-03 11:03:58.000000000 +0100 ++++ gcc-8.3.0/gcc/config/frv/linux.h	2019-10-08 10:52:00.176295821 +0200 +@@ -27,7 +27,7 @@ +  + #undef STARTFILE_SPEC + #define STARTFILE_SPEC \ +-  "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ ++  "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} crtreloc.o%s \ +    crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}" +  + #undef ENDFILE_SPEC diff --git a/toolchain/gcc/patches/15.1.0/csky.patch b/toolchain/gcc/patches/15.1.0/csky.patch new file mode 100644 index 000000000..ee352951b --- /dev/null +++ b/toolchain/gcc/patches/15.1.0/csky.patch @@ -0,0 +1,12 @@ +diff -Nur gcc-11.2.0.orig/libgcc/config/csky/linux-atomic.c gcc-11.2.0/libgcc/config/csky/linux-atomic.c +--- gcc-11.2.0.orig/libgcc/config/csky/linux-atomic.c	2021-07-28 08:55:08.760307899 +0200 ++++ gcc-11.2.0/libgcc/config/csky/linux-atomic.c	2021-12-14 14:19:23.685729233 +0100 +@@ -24,7 +24,7 @@ +    <http://www.gnu.org/licenses/>.	 */ +  + /* Kernel helper for compare-and-exchange.  */ +-inline int ++int + __kernel_cmpxchg (int oldval, int newval, volatile int *ptr) + { +   register int _a0 asm ("a0") = oldval; diff --git a/toolchain/gcc/patches/15.1.0/libgcc-fdpic-bfin.patch b/toolchain/gcc/patches/15.1.0/libgcc-fdpic-bfin.patch new file mode 100644 index 000000000..df0b94fc9 --- /dev/null +++ b/toolchain/gcc/patches/15.1.0/libgcc-fdpic-bfin.patch @@ -0,0 +1,12 @@ +diff -Nur gcc-14.2.0.orig/libgcc/unwind-pe.h gcc-14.2.0/libgcc/unwind-pe.h +--- gcc-14.2.0.orig/libgcc/unwind-pe.h	2024-08-01 10:17:17.000000000 +0200 ++++ gcc-14.2.0/libgcc/unwind-pe.h	2025-03-10 10:40:25.191585648 +0100 +@@ -264,7 +264,7 @@ +  +       if (result != 0) + 	{ +-#if __FDPIC__ ++#if defined(__FDPIC__) && !defined(__BFIN_FDPIC__) + 	  /* FDPIC relative addresses imply taking the GOT address + 	     into account.  */ + 	  if ((encoding & DW_EH_PE_pcrel) && (encoding & DW_EH_PE_indirect)) diff --git a/toolchain/gcc/patches/9.4.0/or1k.patch b/toolchain/gcc/patches/9.5.0/or1k.patch index 8ec5ec956..8ec5ec956 100644 --- a/toolchain/gcc/patches/9.4.0/or1k.patch +++ b/toolchain/gcc/patches/9.5.0/or1k.patch diff --git a/toolchain/gdb/Makefile.inc b/toolchain/gdb/Makefile.inc index 0fac2ecb9..e8e29d4c3 100644 --- a/toolchain/gdb/Makefile.inc +++ b/toolchain/gdb/Makefile.inc @@ -42,7 +42,7 @@ ifeq ($(ADK_TOOLCHAIN_GDB_H8300_GIT),y)  PKG_VERSION:=		ysato-h8300  PKG_RELEASE:=		1  PKG_GIT:=		branch -PKG_SITES:=		git://git.pf.osdn.jp/gitroot/y/ys/ysato/binutils_gdb.git +PKG_SITES:=		https://github.com/ysat0/binutils-gdb.git  DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  endif  ifeq ($(ADK_TOOLCHAIN_GDB_GIT),y) diff --git a/toolchain/gdb/patches/ysato-h8300/no_extern_inline.patch b/toolchain/gdb/patches/ysato-h8300/no_extern_inline.patch new file mode 100644 index 000000000..bbae1d774 --- /dev/null +++ b/toolchain/gdb/patches/ysato-h8300/no_extern_inline.patch @@ -0,0 +1,32 @@ +--- a/sim/common/sim-arange.c ++++ b/sim/common/sim-arange.c +@@ -280,11 +280,7 @@ sim_addr_range_delete (ADDR_RANGE *ar, a +   build_search_tree (ar); + } +  +-#endif /* DEFINE_NON_INLINE_P */ +- +-#if DEFINE_INLINE_P +- +-SIM_ARANGE_INLINE int ++int + sim_addr_range_hit_p (ADDR_RANGE *ar, address_word addr) + { +   ADDR_RANGE_TREE *t = ar->range_tree; +@@ -301,4 +297,4 @@ sim_addr_range_hit_p (ADDR_RANGE *ar, ad +   return 0; + } +  +-#endif /* DEFINE_INLINE_P */ ++#endif /* DEFINE_NON_INLINE_P */ +--- a/sim/common/sim-arange.h ++++ b/sim/common/sim-arange.h +@@ -62,7 +62,7 @@ extern void sim_addr_range_delete (ADDR_ +  + /* Return non-zero if ADDR is in range AR, traversing the entire tree. +    If no range is specified, that is defined to mean "everything".  */ +-extern INLINE int ++extern int + sim_addr_range_hit_p (ADDR_RANGE * /*ar*/, address_word /*addr*/); + #define ADDR_RANGE_HIT_P(ar, addr) \ +   ((ar)->range_tree == NULL || sim_addr_range_hit_p ((ar), (addr))) diff --git a/toolchain/glibc/Makefile.inc b/toolchain/glibc/Makefile.inc index 4f35b1e94..b2c16fdb1 100644 --- a/toolchain/glibc/Makefile.inc +++ b/toolchain/glibc/Makefile.inc @@ -3,16 +3,16 @@  PKG_NAME:=		glibc  ifeq ($(ADK_LIBC_VERSION),git) -PKG_VERSION:=		2.41.90 -PKG_GLIBCVER:=		2.41.9000 +PKG_VERSION:=		2.42.90 +PKG_GLIBCVER:=		2.42.9000  PKG_SITES:=		https://sourceware.org/git/glibc.git  PKG_RELEASE:=		1  endif -ifeq ($(ADK_TARGET_LIB_GLIBC_2_41),y) -PKG_VERSION:=		2.41 -PKG_GLIBCVER:=		2.41 +ifeq ($(ADK_TARGET_LIB_GLIBC_2_42),y) +PKG_VERSION:=		2.42 +PKG_GLIBCVER:=		2.42  PKG_RELEASE:=		1  PKG_SITES:=		${MASTER_SITE_GNU:=glibc/} -PKG_HASH:=		c7be6e25eeaf4b956f5d4d56a04d23e4db453fc07760f872903bb61a49519b80 +PKG_HASH:=		d4468d3e3267068c1b0623ca6424aac9a28766df774c8d8fb4978127fca7125a  endif  DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tar.gz diff --git a/toolchain/mpfr/Makefile.inc b/toolchain/mpfr/Makefile.inc index 4aa9f0e9b..02641e48c 100644 --- a/toolchain/mpfr/Makefile.inc +++ b/toolchain/mpfr/Makefile.inc @@ -2,7 +2,7 @@  # material, please see the LICENCE file in the top-level directory.  PKG_NAME:=		mpfr -PKG_VERSION:=		4.2.1 +PKG_VERSION:=		4.2.2  PKG_RELEASE:=		1 -PKG_HASH:=		277807353a6726978996945af13e52829e3abd7a9a5b7fb2793894e18f1fcbb2 +PKG_HASH:=		b67ba0383ef7e8a8563734e2e889ef5ec3c3b898a01d00fa0a6869ad81c6ce01  PKG_SITES:=		http://www.mpfr.org/mpfr-current/ diff --git a/toolchain/musl/Makefile.inc b/toolchain/musl/Makefile.inc index b5e1800f0..9f4dc17b0 100644 --- a/toolchain/musl/Makefile.inc +++ b/toolchain/musl/Makefile.inc @@ -6,7 +6,7 @@ ifeq ($(ADK_LIBC_VERSION),git)  PKG_VERSION:=		git  PKG_RELEASE:=		1  PKG_SITES:=		git://git.musl-libc.org/musl -DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.xz +DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz  endif  ifeq ($(ADK_TARGET_LIB_MUSL_1_2_5),y)  PKG_VERSION:=		1.2.5 diff --git a/toolchain/uclibc-ng/Makefile b/toolchain/uclibc-ng/Makefile index 6b1fd31ce..52e86c60e 100644 --- a/toolchain/uclibc-ng/Makefile +++ b/toolchain/uclibc-ng/Makefile @@ -71,6 +71,12 @@ else  endif  ifeq ($(ADK_TARGET_SOFT_FLOAT),y)  	$(SED) 's/.*\(UCLIBC_HAS_FPU\).*/# \1 is not set/' ${WRKBUILD}/.config +	$(SED) 's/.*\(UCLIBC_HAS_FENV\).*/# \1 is not set/' ${WRKBUILD}/.config +	$(SED) 's/.*\(UCLIBC_HAS_SOFT_FLOAT\).*/#\1=y/' ${WRKBUILD}/.config +endif +ifeq ($(ADK_TARGET_SOFTFP_FLOAT),y) +	$(SED) 's/.*\(UCLIBC_HAS_FPU\).*/# \1 is not set/' ${WRKBUILD}/.config +	$(SED) 's/.*\(UCLIBC_HAS_FENV\).*/# \1 is not set/' ${WRKBUILD}/.config  	$(SED) 's/.*\(UCLIBC_HAS_SOFT_FLOAT\).*/#\1=y/' ${WRKBUILD}/.config  endif  ifeq ($(ADK_TARGET_HARD_FLOAT),y) diff --git a/toolchain/uclibc-ng/Makefile.inc b/toolchain/uclibc-ng/Makefile.inc index 1f89a22b1..4947abe10 100644 --- a/toolchain/uclibc-ng/Makefile.inc +++ b/toolchain/uclibc-ng/Makefile.inc @@ -7,10 +7,10 @@ PKG_VERSION:=		git  PKG_RELEASE:=		1  PKG_SITES:=		https://git.uclibc-ng.org/git/uclibc-ng.git  endif -ifeq ($(ADK_TARGET_LIB_UCLIBC_NG_1_0_51),y) -PKG_VERSION:=		1.0.51 +ifeq ($(ADK_TARGET_LIB_UCLIBC_NG_1_0_55),y) +PKG_VERSION:=		1.0.55  PKG_RELEASE:=		1 -PKG_SITES:=		http://downloads.uclibc-ng.org/releases/1.0.51/ -PKG_HASH:=		46f772e5192605f422ae190526c9d867eb715271da1937bd37afb754e18e730e +PKG_SITES:=		http://downloads.uclibc-ng.org/releases/1.0.55/ +PKG_HASH:=		005aed346789fad2c043f76e99425258a95af3121ebf3e255d33086930ad1272  endif  DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tar.gz diff --git a/toolchain/uclibc-ng/patches/1.0.50/warn-instead-of-error.patch b/toolchain/uclibc-ng/patches/1.0.50/warn-instead-of-error.patch deleted file mode 100644 index 09877c29e..000000000 --- a/toolchain/uclibc-ng/patches/1.0.50/warn-instead-of-error.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff -Nur uClibc-ng-1.0.50.orig/libc/sysdeps/linux/common/clock_adjtime.c uClibc-ng-1.0.50/libc/sysdeps/linux/common/clock_adjtime.c ---- uClibc-ng-1.0.50.orig/libc/sysdeps/linux/common/clock_adjtime.c	2024-08-13 04:08:05.000000000 +0200 -+++ uClibc-ng-1.0.50/libc/sysdeps/linux/common/clock_adjtime.c	2024-12-14 11:28:37.188207576 +0100 -@@ -15,5 +15,5 @@ - #elif defined(__NR_clock_adjtime) - _syscall2(int, clock_adjtime, clockid_t, clock_id, struct timex*, ntx) - #else --#error "clock_adjtime syscall is not defined!" -+#warning "clock_adjtime syscall is not defined!" - #endif  | 
