| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | 
							- diff --git a/elf/syscallas.S b/elf/syscallas.S
 
- new file mode 120000
 
- index 0000000..107bd13
 
- --- /dev/null
 
- +++ b/elf/syscallas.S
 
- @@ -0,0 +1 @@
 
- +../syscallas.S
 
- \ No newline at end of file
 
- diff --git a/elf/syscalldb.c b/elf/syscalldb.c
 
- new file mode 120000
 
- index 0000000..61dca52
 
- --- /dev/null
 
- +++ b/elf/syscalldb.c
 
- @@ -0,0 +1 @@
 
- +../syscalldb.c
 
- \ No newline at end of file
 
- diff --git a/syscallas.S b/syscallas.S
 
- new file mode 100644
 
- index 0000000..07c6ffc
 
- --- /dev/null
 
- +++ b/syscallas.S
 
- @@ -0,0 +1,11 @@
 
- +#include <syscalldb.h>
 
- +
 
- +.weak syscalldb
 
- +.type syscalldb,@function
 
- +
 
- +syscalldb:
 
- +	.cfi_startproc
 
- +	syscall
 
- +	retq
 
- +	.cfi_endproc
 
- +	.size syscalldb,.-syscalldb
 
- diff --git a/syscalldb.c b/syscalldb.c
 
- new file mode 100644
 
- index 0000000..7a56162
 
- --- /dev/null
 
- +++ b/syscalldb.c
 
- @@ -0,0 +1,16 @@
 
- +#include "syscalldb.h"
 
- +#include <stdarg.h>
 
- +#include <errno.h>
 
- +
 
- +int register_library (const char * name, unsigned long load_address)
 
- +	__attribute__((weak));
 
- +
 
- +int register_library (const char * name, unsigned long load_address)
 
- +{
 
- +	return 0;
 
- +}
 
- +
 
- +long int glibc_option (const char * opt)
 
- +{
 
- +	return -EINVAL;
 
- +}
 
- diff --git a/syscalldb.h b/syscalldb.h
 
- new file mode 100644
 
- index 0000000..2833def
 
- --- /dev/null
 
- +++ b/syscalldb.h
 
- @@ -0,0 +1,39 @@
 
- +#ifndef _SYSCALLDB_H_
 
- +#define _SYSCALLDB_H_
 
- +
 
- +#ifdef __ASSEMBLER__
 
- +.weak syscalldb
 
- +.type syscalldb, @function
 
- +
 
- +# if defined(PSEUDO) && defined(SYSCALL_NAME) && defined(SYSCALL_SYMBOL)
 
- +#  define SYSCALLDB                     \
 
- +    subq $128, %rsp;                    \
 
- +    callq *syscalldb@GOTPCREL(%rip);    \
 
- +    addq $128, %rsp
 
- +# else
 
- +#  define SYSCALLDB                             \
 
- +    callq *syscalldb@GOTPCREL(%rip)
 
- +# endif
 
- +
 
- +#else /* !__ASSEMBLER__ */
 
- +asm (
 
- +".weak syscalldb\r\n"
 
- +".type syscalldb, @function\r\n");
 
- +
 
- +#define SYSCALLDB                           \
 
- +    "subq $128, %%rsp\n\t"                  \
 
- +    "callq *syscalldb@GOTPCREL(%%rip)\n\t"  \
 
- +    "addq $128, %%rsp\n\t"
 
- +
 
- +#define SYSCALLDB_ASM                       \
 
- +    "callq *syscalldb@GOTPCREL(%rip)\n\t"
 
- +
 
- +long int glibc_option (const char * opt);
 
- +
 
- +asm (
 
- +".weak glibc_option\r\n"
 
- +".type glibc_option, @function\r\n");
 
- +
 
- +#endif /* Assembler */
 
- +
 
- +#endif /* _SYSCALLDB_H */
 
- diff --git a/sysdeps/unix/sysv/linux/x86_64/syscalldb.h b/sysdeps/unix/sysv/linux/x86_64/syscalldb.h
 
- new file mode 120000
 
- index 0000000..55ab305
 
- --- /dev/null
 
- +++ b/sysdeps/unix/sysv/linux/x86_64/syscalldb.h
 
- @@ -0,0 +1 @@
 
- +../../../../../syscalldb.h
 
- \ No newline at end of file
 
 
  |