404

[ Avaa Bypassed ]




Upload:

Command:

botdev@18.118.210.110: ~ $
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_ELF_H
#define __ASM_SH_ELF_H

#include <linux/utsname.h>
#include <asm/auxvec.h>
#include <asm/ptrace.h>
#include <asm/user.h>

/* ELF header e_flags defines */
#define EF_SH_PIC		0x100	/* -fpic */
#define EF_SH_FDPIC		0x8000	/* -mfdpic */

/* SH (particularly SHcompact) relocation types  */
#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

/* FDPIC relocs */
#define R_SH_GOT20		201
#define R_SH_GOTOFF20		202
#define R_SH_GOTFUNCDESC	203
#define R_SH_GOTFUNCDESC20	204
#define R_SH_GOTOFFFUNCDESC	205
#define R_SH_GOTOFFFUNCDESC20	206
#define R_SH_FUNCDESC		207
#define R_SH_FUNCDESC_VALUE	208

/* SHmedia relocs */
#define R_SH_IMM_LOW16		246
#define R_SH_IMM_LOW16_PCREL	247
#define R_SH_IMM_MEDLOW16	248
#define R_SH_IMM_MEDLOW16_PCREL	249
/* Keep this the last entry.  */
#define	R_SH_NUM		256

/*
 * ELF register definitions..
 */

typedef unsigned long elf_greg_t;

#define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t))
typedef elf_greg_t elf_gregset_t[ELF_NGREG];

typedef struct user_fpu_struct elf_fpregset_t;

/*
 * These are used to set parameters in the core dumps.
 */
#define ELF_CLASS	ELFCLASS32
#ifdef __LITTLE_ENDIAN__
#define ELF_DATA	ELFDATA2LSB
#else
#define ELF_DATA	ELFDATA2MSB
#endif
#define ELF_ARCH	EM_SH

#ifdef __KERNEL__
/*
 * This is used to ensure we don't load something for the wrong architecture.
 */
#define elf_check_arch(x)		((x)->e_machine == EM_SH)
#define elf_check_fdpic(x)		((x)->e_flags & EF_SH_FDPIC)
#define elf_check_const_displacement(x)	((x)->e_flags & EF_SH_PIC)

/*
 * Enable dump using regset.
 * This covers all of general/DSP/FPU regs.
 */
#define CORE_DUMP_USE_REGSET

#define ELF_FDPIC_CORE_EFLAGS	EF_SH_FDPIC
#define ELF_EXEC_PAGESIZE	PAGE_SIZE

/* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
   use of this is to invoke "./ld.so someprog" to test out a new version of
   the loader.  We need to make sure that it is out of the way of the program
   that it will "exec", and that there is sufficient room for the brk.  */

#define ELF_ET_DYN_BASE         (2 * TASK_SIZE / 3)

#define ELF_CORE_COPY_REGS(_dest,_regs)				\
	memcpy((char *) &_dest, (char *) _regs,			\
	       sizeof(struct pt_regs));

/* This yields a mask that user programs can use to figure out what
   instruction set this CPU supports.  This could be done in user space,
   but it's not easy, and we've already done it here.  */

#define ELF_HWCAP	(boot_cpu_data.flags)

/* This yields a string that ld.so will use to load implementation
   specific libraries for optimization.  This is more specific in
   intent than poking at uname or /proc/cpuinfo.

   For the moment, we have only optimizations for the Intel generations,
   but that could change... */

#define ELF_PLATFORM	(utsname()->machine)

#ifdef __SH5__
#define ELF_PLAT_INIT(_r, load_addr) \
  do { _r->regs[0]=0; _r->regs[1]=0; _r->regs[2]=0; _r->regs[3]=0; \
       _r->regs[4]=0; _r->regs[5]=0; _r->regs[6]=0; _r->regs[7]=0; \
       _r->regs[8]=0; _r->regs[9]=0; _r->regs[10]=0; _r->regs[11]=0; \
       _r->regs[12]=0; _r->regs[13]=0; _r->regs[14]=0; _r->regs[15]=0; \
       _r->regs[16]=0; _r->regs[17]=0; _r->regs[18]=0; _r->regs[19]=0; \
       _r->regs[20]=0; _r->regs[21]=0; _r->regs[22]=0; _r->regs[23]=0; \
       _r->regs[24]=0; _r->regs[25]=0; _r->regs[26]=0; _r->regs[27]=0; \
       _r->regs[28]=0; _r->regs[29]=0; _r->regs[30]=0; _r->regs[31]=0; \
       _r->regs[32]=0; _r->regs[33]=0; _r->regs[34]=0; _r->regs[35]=0; \
       _r->regs[36]=0; _r->regs[37]=0; _r->regs[38]=0; _r->regs[39]=0; \
       _r->regs[40]=0; _r->regs[41]=0; _r->regs[42]=0; _r->regs[43]=0; \
       _r->regs[44]=0; _r->regs[45]=0; _r->regs[46]=0; _r->regs[47]=0; \
       _r->regs[48]=0; _r->regs[49]=0; _r->regs[50]=0; _r->regs[51]=0; \
       _r->regs[52]=0; _r->regs[53]=0; _r->regs[54]=0; _r->regs[55]=0; \
       _r->regs[56]=0; _r->regs[57]=0; _r->regs[58]=0; _r->regs[59]=0; \
       _r->regs[60]=0; _r->regs[61]=0; _r->regs[62]=0; \
       _r->tregs[0]=0; _r->tregs[1]=0; _r->tregs[2]=0; _r->tregs[3]=0; \
       _r->tregs[4]=0; _r->tregs[5]=0; _r->tregs[6]=0; _r->tregs[7]=0; \
       _r->sr = SR_FD | SR_MMU; } while (0)
#else
#define ELF_PLAT_INIT(_r, load_addr) \
  do { _r->regs[0]=0; _r->regs[1]=0; _r->regs[2]=0; _r->regs[3]=0; \
       _r->regs[4]=0; _r->regs[5]=0; _r->regs[6]=0; _r->regs[7]=0; \
       _r->regs[8]=0; _r->regs[9]=0; _r->regs[10]=0; _r->regs[11]=0; \
       _r->regs[12]=0; _r->regs[13]=0; _r->regs[14]=0; \
       _r->sr = SR_FD; } while (0)

#define ELF_FDPIC_PLAT_INIT(_r, _exec_map_addr, _interp_map_addr,	\
			    _dynamic_addr)				\
do {									\
	_r->regs[0]	= 0;						\
	_r->regs[1]	= 0;						\
	_r->regs[2]	= 0;						\
	_r->regs[3]	= 0;						\
	_r->regs[4]	= 0;						\
	_r->regs[5]	= 0;						\
	_r->regs[6]	= 0;						\
	_r->regs[7]	= 0;						\
	_r->regs[8]	= _exec_map_addr;				\
	_r->regs[9]	= _interp_map_addr;				\
	_r->regs[10]	= _dynamic_addr;				\
	_r->regs[11]	= 0;						\
	_r->regs[12]	= 0;						\
	_r->regs[13]	= 0;						\
	_r->regs[14]	= 0;						\
	_r->sr		= SR_FD;					\
} while (0)
#endif

#define SET_PERSONALITY(ex) \
	set_personality(PER_LINUX_32BIT | (current->personality & (~PER_MASK)))

#ifdef CONFIG_VSYSCALL
/* vDSO has arch_setup_additional_pages */
#define ARCH_HAS_SETUP_ADDITIONAL_PAGES
struct linux_binprm;
extern int arch_setup_additional_pages(struct linux_binprm *bprm,
				       int uses_interp);

extern unsigned int vdso_enabled;
extern void __kernel_vsyscall;

#define VDSO_BASE		((unsigned long)current->mm->context.vdso)
#define VDSO_SYM(x)		(VDSO_BASE + (unsigned long)(x))

#define VSYSCALL_AUX_ENT					\
	if (vdso_enabled)					\
		NEW_AUX_ENT(AT_SYSINFO_EHDR, VDSO_BASE);	\
	else							\
		NEW_AUX_ENT(AT_IGNORE, 0)
#else
#define VSYSCALL_AUX_ENT	NEW_AUX_ENT(AT_IGNORE, 0)
#endif /* CONFIG_VSYSCALL */

#ifdef CONFIG_SH_FPU
#define FPU_AUX_ENT	NEW_AUX_ENT(AT_FPUCW, FPSCR_INIT)
#else
#define FPU_AUX_ENT	NEW_AUX_ENT(AT_IGNORE, 0)
#endif

extern int l1i_cache_shape, l1d_cache_shape, l2_cache_shape;

/* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes */
#define ARCH_DLINFO						\
do {								\
	/* Optional FPU initialization */			\
	FPU_AUX_ENT;						\
								\
	/* Optional vsyscall entry */				\
	VSYSCALL_AUX_ENT;					\
								\
	/* Cache desc */					\
	NEW_AUX_ENT(AT_L1I_CACHESHAPE, l1i_cache_shape);	\
	NEW_AUX_ENT(AT_L1D_CACHESHAPE, l1d_cache_shape);	\
	NEW_AUX_ENT(AT_L2_CACHESHAPE, l2_cache_shape);		\
} while (0)

#endif /* __KERNEL__ */
#endif /* __ASM_SH_ELF_H */

Filemanager

Name Type Size Permission Actions
Kbuild File 467 B 0644
adc.h File 253 B 0644
addrspace.h File 2.03 KB 0644
alignment.h File 654 B 0644
asm-offsets.h File 35 B 0644
atomic-grb.h File 2.6 KB 0644
atomic-irq.h File 1.63 KB 0644
atomic-llsc.h File 2.12 KB 0644
atomic.h File 1.78 KB 0644
barrier.h File 1.52 KB 0644
bitops-cas.h File 1.73 KB 0644
bitops-grb.h File 6.21 KB 0644
bitops-llsc.h File 2.79 KB 0644
bitops-op32.h File 3.78 KB 0644
bitops.h File 2.38 KB 0644
bl_bit.h File 216 B 0644
bl_bit_32.h File 639 B 0644
bl_bit_64.h File 979 B 0644
bug.h File 2.77 KB 0644
bugs.h File 1.38 KB 0644
cache.h File 1.2 KB 0644
cache_insns.h File 242 B 0644
cache_insns_32.h File 642 B 0644
cache_insns_64.h File 839 B 0644
cacheflush.h File 3.58 KB 0644
checksum.h File 140 B 0644
checksum_32.h File 5.21 KB 0644
clock.h File 436 B 0644
cmpxchg-cas.h File 549 B 0644
cmpxchg-grb.h File 2.8 KB 0644
cmpxchg-irq.h File 1.04 KB 0644
cmpxchg-llsc.h File 1.06 KB 0644
cmpxchg-xchg.h File 1.33 KB 0644
cmpxchg.h File 1.77 KB 0644
device.h File 450 B 0644
dma-mapping.h File 694 B 0644
dma-register.h File 1.8 KB 0644
dma.h File 3.74 KB 0644
dmabrg.h File 536 B 0644
dwarf.h File 9.8 KB 0644
elf.h File 7.28 KB 0644
entry-macros.S File 1.85 KB 0644
extable.h File 227 B 0644
fb.h File 375 B 0644
fixmap.h File 2.92 KB 0644
flat.h File 1.23 KB 0644
fpu.h File 1.77 KB 0644
freq.h File 472 B 0644
ftrace.h File 1.11 KB 0644
futex-cas.h File 728 B 0644
futex-irq.h File 482 B 0644
futex-llsc.h File 870 B 0644
futex.h File 1.5 KB 0644
gpio.h File 1017 B 0644
hardirq.h File 440 B 0644
hd64461.h File 11.79 KB 0644
heartbeat.h File 383 B 0644
hugetlb.h File 1.96 KB 0644
hw_breakpoint.h File 1.88 KB 0644
hw_irq.h File 915 B 0644
i2c-sh7760.h File 406 B 0644
io.h File 11.33 KB 0644
io_generic.h File 661 B 0644
io_noioport.h File 1.09 KB 0644
io_trapped.h File 1.44 KB 0644
irq.h File 1.68 KB 0644
irqflags.h File 226 B 0644
kdebug.h File 406 B 0644
kexec.h File 2.61 KB 0644
kgdb.h File 851 B 0644
kmap_types.h File 265 B 0644
kprobes.h File 1.51 KB 0644
linkage.h File 154 B 0644
machvec.h File 939 B 0644
mmu.h File 2.18 KB 0644
mmu_context.h File 4.44 KB 0644
mmu_context_32.h File 1.28 KB 0644
mmu_context_64.h File 1.97 KB 0644
mmzone.h File 1.1 KB 0644
module.h File 1005 B 0644
page.h File 6.06 KB 0644
pci.h File 3.19 KB 0644
perf_event.h File 797 B 0644
pgalloc.h File 1.86 KB 0644
pgtable-2level.h File 598 B 0644
pgtable-3level.h File 1.54 KB 0644
pgtable.h File 4 KB 0644
pgtable_32.h File 16.37 KB 0644
pgtable_64.h File 11.32 KB 0644
posix_types.h File 146 B 0644
processor.h File 4.41 KB 0644
processor_32.h File 4.67 KB 0644
processor_64.h File 5.54 KB 0644
ptrace.h File 3.39 KB 0644
ptrace_32.h File 307 B 0644
ptrace_64.h File 312 B 0644
push-switch.h File 755 B 0644
reboot.h File 472 B 0644
romimage-macros.h File 1.1 KB 0644
rtc.h File 383 B 0644
seccomp.h File 280 B 0644
sections.h File 311 B 0644
segment.h File 879 B 0644
setup.h File 725 B 0644
sfp-machine.h File 3.43 KB 0644
sh7760fb.h File 5.61 KB 0644
sh_bios.h File 743 B 0644
shmparam.h File 629 B 0644
siu.h File 539 B 0644
smc37c93x.h File 5.56 KB 0644
smp-ops.h File 1012 B 0644
smp.h File 1.83 KB 0644
sparsemem.h File 443 B 0644
spi.h File 265 B 0644
spinlock-cas.h File 2.09 KB 0644
spinlock-llsc.h File 4.13 KB 0644
spinlock.h File 578 B 0644
spinlock_types.h File 463 B 0644
sram.h File 670 B 0644
stackprotector.h File 711 B 0644
stacktrace.h File 606 B 0644
string.h File 131 B 0644
string_32.h File 2.66 KB 0644
string_64.h File 499 B 0644
suspend.h File 2.52 KB 0644
switch_to.h File 492 B 0644
switch_to_32.h File 3.55 KB 0644
switch_to_64.h File 968 B 0644
syscall.h File 267 B 0644
syscall_32.h File 2.42 KB 0644
syscall_64.h File 1.79 KB 0644
syscalls.h File 564 B 0644
syscalls_32.h File 1022 B 0644
syscalls_64.h File 441 B 0644
thread_info.h File 5.32 KB 0644
timex.h File 637 B 0644
tlb.h File 4.12 KB 0644
tlb_64.h File 2.08 KB 0644
tlbflush.h File 1.77 KB 0644
topology.h File 645 B 0644
traps.h File 487 B 0644
traps_32.h File 1.31 KB 0644
traps_64.h File 851 B 0644
types.h File 411 B 0644
uaccess.h File 4.83 KB 0644
uaccess_32.h File 3.77 KB 0644
uaccess_64.h File 2.2 KB 0644
unaligned-sh4a.h File 4.51 KB 0644
unaligned.h File 359 B 0644
uncached.h File 1.34 KB 0644
unistd.h File 952 B 0644
unwinder.h File 856 B 0644
user.h File 2.52 KB 0644
vga.h File 98 B 0644
vmlinux.lds.h File 558 B 0644
watchdog.h File 4.14 KB 0644
word-at-a-time.h File 1.29 KB 0644