svn commit: r340235 - in projects/clang700-import: lib/csu/mips lib/csu/sparc64 libexec/rtld-elf share/man/man8 share/mk stand/common stand/i386/libi386 sys/arm64/arm64 sys/compat/freebsd32 sys/geo...
Dimitry Andric
dim at FreeBSD.org
Wed Nov 7 18:54:29 UTC 2018
Author: dim
Date: Wed Nov 7 18:54:24 2018
New Revision: 340235
URL: https://svnweb.freebsd.org/changeset/base/340235
Log:
Merge ^/head r340213 through r340234.
Modified:
projects/clang700-import/lib/csu/mips/crt.h
projects/clang700-import/lib/csu/sparc64/crt.h
projects/clang700-import/libexec/rtld-elf/rtld.c
projects/clang700-import/share/man/man8/rc.subr.8
projects/clang700-import/share/mk/src.opts.mk
projects/clang700-import/stand/common/disk.c
projects/clang700-import/stand/common/part.c
projects/clang700-import/stand/i386/libi386/biosdisk.c
projects/clang700-import/sys/arm64/arm64/elf_machdep.c
projects/clang700-import/sys/compat/freebsd32/freebsd32_systrace_args.c
projects/clang700-import/sys/compat/freebsd32/syscalls.master
projects/clang700-import/sys/geom/geom_io.c
projects/clang700-import/sys/kern/imgact_elf.c
projects/clang700-import/sys/kern/makesyscalls.sh
projects/clang700-import/sys/kern/syscalls.master
projects/clang700-import/sys/kern/systrace_args.c
projects/clang700-import/sys/riscv/riscv/elf_machdep.c
projects/clang700-import/sys/sys/elf_common.h
projects/clang700-import/tools/tools/syscall_timing/syscall_timing.c
Directory Properties:
projects/clang700-import/ (props changed)
Modified: projects/clang700-import/lib/csu/mips/crt.h
==============================================================================
--- projects/clang700-import/lib/csu/mips/crt.h Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/lib/csu/mips/crt.h Wed Nov 7 18:54:24 2018 (r340235)
@@ -27,5 +27,25 @@
#define _CRT_H_
#define HAVE_CTORS
+#define CTORS_CONSTRUCTORS
+#ifdef __mips_o32
+#define INIT_CALL_SEQ(func) \
+ ".set noreorder \n" \
+ "bal 1f \n" \
+ "nop \n" \
+ "1: \n" \
+ ".cpload $ra \n" \
+ ".set reorder \n" \
+ "jal " __STRING(func)
+#else
+#define INIT_CALL_SEQ(func) \
+ ".set noreorder \n" \
+ "bal 1f \n" \
+ "nop \n" \
+ "1: \n" \
+ ".set reorder \n" \
+ ".cpsetup $ra, $v0, 1b \n" \
+ "jal " __STRING(func)
+#endif
#endif
Modified: projects/clang700-import/lib/csu/sparc64/crt.h
==============================================================================
--- projects/clang700-import/lib/csu/sparc64/crt.h Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/lib/csu/sparc64/crt.h Wed Nov 7 18:54:24 2018 (r340235)
@@ -27,5 +27,7 @@
#define _CRT_H_
#define HAVE_CTORS
+#define CTORS_CONSTRUCTORS
+#define INIT_CALL_SEQ(func) "call " __STRING(func) "; nop"
#endif
Modified: projects/clang700-import/libexec/rtld-elf/rtld.c
==============================================================================
--- projects/clang700-import/libexec/rtld-elf/rtld.c Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/libexec/rtld-elf/rtld.c Wed Nov 7 18:54:24 2018 (r340235)
@@ -1264,6 +1264,13 @@ digest_dynamic1(Obj_Entry *obj, int early, const Elf_D
*((Elf_Addr *)(dynp->d_un.d_ptr)) = (Elf_Addr) &r_debug;
break;
+ case DT_MIPS_RLD_MAP_REL:
+ // The MIPS_RLD_MAP_REL tag stores the offset to the .rld_map
+ // section relative to the address of the tag itself.
+ *((Elf_Addr *)(__DECONST(char*, dynp) + dynp->d_un.d_val)) =
+ (Elf_Addr) &r_debug;
+ break;
+
case DT_MIPS_PLTGOT:
obj->mips_pltgot = (Elf_Addr *)(obj->relocbase +
dynp->d_un.d_ptr);
Modified: projects/clang700-import/share/man/man8/rc.subr.8
==============================================================================
--- projects/clang700-import/share/man/man8/rc.subr.8 Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/share/man/man8/rc.subr.8 Wed Nov 7 18:54:24 2018 (r340235)
@@ -29,7 +29,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd June 19, 2018
+.Dd November 7, 2018
.Dt RC.SUBR 8
.Os
.Sh NAME
@@ -491,16 +491,22 @@ Check for the existence of the listed directories
before running the
.Cm start
method.
+The list is checked before running
+.Va start_precmd .
.It Va required_files
Check for the readability of the listed files
before running the
.Cm start
method.
+The list is checked before running
+.Va start_precmd .
.It Va required_modules
Ensure that the listed kernel modules are loaded
before running the
.Cm start
method.
+The list is checked after running
+.Va start_precmd .
This is done after invoking the commands from
.Va start_precmd
so that the missing modules are not loaded in vain
@@ -531,6 +537,8 @@ on each of the list variables
before running the
.Cm start
method.
+The list is checked after running
+.Va start_precmd .
.It Va ${name}_chdir
Directory to
.Ic cd
Modified: projects/clang700-import/share/mk/src.opts.mk
==============================================================================
--- projects/clang700-import/share/mk/src.opts.mk Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/share/mk/src.opts.mk Wed Nov 7 18:54:24 2018 (r340235)
@@ -193,6 +193,7 @@ __DEFAULT_YES_OPTIONS = \
ZONEINFO
__DEFAULT_NO_OPTIONS = \
+ BSD_CRTBEGIN \
BSD_GREP \
CLANG_EXTRAS \
DTRACE_TESTS \
@@ -383,13 +384,6 @@ BROKEN_OPTIONS+=HYPERV
# NVME is only x86 and powerpc64
.if ${__T} != "amd64" && ${__T} != "i386" && ${__T} != "powerpc64"
BROKEN_OPTIONS+=NVME
-.endif
-
-.if ${__T} == "aarch64" || ${__T} == "amd64" || ${__T} == "i386" || \
- ${__T} == "powerpc64"
-__DEFAULT_NO_OPTIONS+=BSD_CRTBEGIN
-.else
-BROKEN_OPTIONS+=BSD_CRTBEGIN
.endif
.include <bsd.mkopt.mk>
Modified: projects/clang700-import/stand/common/disk.c
==============================================================================
--- projects/clang700-import/stand/common/disk.c Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/stand/common/disk.c Wed Nov 7 18:54:24 2018 (r340235)
@@ -265,9 +265,7 @@ disk_open(struct disk_devdesc *dev, uint64_t mediasize
rc = ENXIO;
goto out;
}
- if (mediasize > od->mediasize) {
- od->mediasize = mediasize;
- }
+ od->mediasize = mediasize;
if (ptable_gettype(od->table) == PTABLE_BSD &&
partition >= 0) {
Modified: projects/clang700-import/stand/common/part.c
==============================================================================
--- projects/clang700-import/stand/common/part.c Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/stand/common/part.c Wed Nov 7 18:54:24 2018 (r340235)
@@ -323,8 +323,7 @@ ptable_gptread(struct ptable *table, void *dev, diskre
* Note, this is still not a foolproof way to get disk's size. For
* example, an image file can be truncated when copied to smaller media.
*/
- if (hdr.hdr_lba_alt + 1 > table->sectors)
- table->sectors = hdr.hdr_lba_alt + 1;
+ table->sectors = hdr.hdr_lba_alt + 1;
for (i = 0; i < size / hdr.hdr_entsz; i++) {
ent = (struct gpt_ent *)(tbl + i * hdr.hdr_entsz);
Modified: projects/clang700-import/stand/i386/libi386/biosdisk.c
==============================================================================
--- projects/clang700-import/stand/i386/libi386/biosdisk.c Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/stand/i386/libi386/biosdisk.c Wed Nov 7 18:54:24 2018 (r340235)
@@ -439,6 +439,33 @@ bd_print(int verbose)
}
/*
+ * Read disk size from partition.
+ * This is needed to work around buggy BIOS systems returning
+ * wrong (truncated) disk media size.
+ * During bd_probe() we tested if the multiplication of bd_sectors
+ * would overflow so it should be safe to perform here.
+ */
+static uint64_t
+bd_disk_get_sectors(struct disk_devdesc *dev)
+{
+ struct disk_devdesc disk;
+ uint64_t size;
+
+ disk.dd.d_dev = dev->dd.d_dev;
+ disk.dd.d_unit = dev->dd.d_unit;
+ disk.d_slice = -1;
+ disk.d_partition = -1;
+ disk.d_offset = 0;
+
+ size = BD(dev).bd_sectors * BD(dev).bd_sectorsize;
+ if (disk_open(&disk, size, BD(dev).bd_sectorsize) == 0) {
+ (void) disk_ioctl(&disk, DIOCGMEDIASIZE, &size);
+ disk_close(&disk);
+ }
+ return (size / BD(dev).bd_sectorsize);
+}
+
+/*
* Attempt to open the disk described by (dev) for use by (f).
*
* Note that the philosophy here is "give them exactly what
@@ -452,9 +479,7 @@ static int
bd_open(struct open_file *f, ...)
{
struct disk_devdesc *dev;
- struct disk_devdesc disk;
va_list ap;
- uint64_t size;
int rc;
va_start(ap, f);
@@ -470,33 +495,12 @@ bd_open(struct open_file *f, ...)
if ((BD(dev).bd_flags & BD_NO_MEDIA) == BD_NO_MEDIA)
return (EIO);
}
- BD(dev).bd_open++;
if (BD(dev).bd_bcache == NULL)
BD(dev).bd_bcache = bcache_allocate();
- /*
- * Read disk size from partition.
- * This is needed to work around buggy BIOS systems returning
- * wrong (truncated) disk media size.
- * During bd_probe() we tested if the mulitplication of bd_sectors
- * would overflow so it should be safe to perform here.
- */
- disk.dd.d_dev = dev->dd.d_dev;
- disk.dd.d_unit = dev->dd.d_unit;
- disk.d_slice = -1;
- disk.d_partition = -1;
- disk.d_offset = 0;
-
- if (disk_open(&disk, BD(dev).bd_sectors * BD(dev).bd_sectorsize,
- BD(dev).bd_sectorsize) == 0) {
-
- if (disk_ioctl(&disk, DIOCGMEDIASIZE, &size) == 0) {
- size /= BD(dev).bd_sectorsize;
- if (size > BD(dev).bd_sectors)
- BD(dev).bd_sectors = size;
- }
- disk_close(&disk);
- }
+ if (BD(dev).bd_open == 0)
+ BD(dev).bd_sectors = bd_disk_get_sectors(dev);
+ BD(dev).bd_open++;
rc = disk_open(dev, BD(dev).bd_sectors * BD(dev).bd_sectorsize,
BD(dev).bd_sectorsize);
Modified: projects/clang700-import/sys/arm64/arm64/elf_machdep.c
==============================================================================
--- projects/clang700-import/sys/arm64/arm64/elf_machdep.c Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/sys/arm64/arm64/elf_machdep.c Wed Nov 7 18:54:24 2018 (r340235)
@@ -107,21 +107,6 @@ static Elf64_Brandinfo freebsd_brand_info = {
SYSINIT(elf64, SI_SUB_EXEC, SI_ORDER_FIRST,
(sysinit_cfunc_t)elf64_insert_brand_entry, &freebsd_brand_info);
-static Elf64_Brandinfo freebsd_brand_oinfo = {
- .brand = ELFOSABI_FREEBSD,
- .machine = EM_AARCH64,
- .compat_3_brand = "FreeBSD",
- .emul_path = NULL,
- .interp_path = "/usr/libexec/ld-elf.so.1",
- .sysvec = &elf64_freebsd_sysvec,
- .interp_newpath = NULL,
- .brand_note = &elf64_freebsd_brandnote,
- .flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE
-};
-
-SYSINIT(oelf64, SI_SUB_EXEC, SI_ORDER_ANY,
- (sysinit_cfunc_t)elf64_insert_brand_entry, &freebsd_brand_oinfo);
-
void
elf64_dump_thread(struct thread *td __unused, void *dst __unused,
size_t *off __unused)
Modified: projects/clang700-import/sys/compat/freebsd32/freebsd32_systrace_args.c
==============================================================================
--- projects/clang700-import/sys/compat/freebsd32/freebsd32_systrace_args.c Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/sys/compat/freebsd32/freebsd32_systrace_args.c Wed Nov 7 18:54:24 2018 (r340235)
@@ -8839,7 +8839,7 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
/* break */
case 17:
if (ndx == 0 || ndx == 1)
- p = "caddr_t";
+ p = "void *";
break;
/* getpid */
case 20:
@@ -9388,7 +9388,7 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
/* shmat */
case 228:
if (ndx == 0 || ndx == 1)
- p = "int";
+ p = "void *";
break;
/* shmdt */
case 230:
@@ -10139,7 +10139,7 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
/* freebsd32_mmap */
case 477:
if (ndx == 0 || ndx == 1)
- p = "caddr_t";
+ p = "void *";
break;
/* freebsd32_lseek */
case 478:
@@ -10170,7 +10170,7 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
/* freebsd32_mmap */
case 477:
if (ndx == 0 || ndx == 1)
- p = "caddr_t";
+ p = "void *";
break;
/* freebsd32_lseek */
case 478:
Modified: projects/clang700-import/sys/compat/freebsd32/syscalls.master
==============================================================================
--- projects/clang700-import/sys/compat/freebsd32/syscalls.master Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/sys/compat/freebsd32/syscalls.master Wed Nov 7 18:54:24 2018 (r340235)
@@ -88,7 +88,7 @@
int mode, int dev); }
15 AUE_CHMOD NOPROTO { int chmod(const char *path, mode_t mode); }
16 AUE_CHOWN NOPROTO { int chown(const char *path, int uid, int gid); }
-17 AUE_NULL NOPROTO { caddr_t break(char *nsize); }
+17 AUE_NULL NOPROTO { void *break(char *nsize); }
18 AUE_GETFSSTAT COMPAT4 { int freebsd32_getfsstat( \
struct statfs32 *buf, long bufsize, \
int mode); }
@@ -175,7 +175,7 @@
68 AUE_NULL OBSOL vwrite
69 AUE_SBRK NOPROTO { int sbrk(int incr); }
70 AUE_SSTK NOPROTO { int sstk(int incr); }
-71 AUE_MMAP COMPAT|NOPROTO { int mmap(void *addr, int len, \
+71 AUE_MMAP COMPAT|NOPROTO { void *mmap(void *addr, int len, \
int prot, int flags, int fd, int pos); }
72 AUE_O_VADVISE COMPAT11|NOPROTO { int vadvise(int anom); }
73 AUE_MUNMAP NOPROTO { int munmap(void *addr, size_t len); }
@@ -373,7 +373,7 @@
__setrlimit_args int
196 AUE_GETDIRENTRIES COMPAT11 { int freebsd32_getdirentries(int fd, \
char *buf, u_int count, int32_t *basep); }
-197 AUE_MMAP COMPAT6 { caddr_t freebsd32_mmap(void *addr, \
+197 AUE_MMAP COMPAT6 { void *freebsd32_mmap(void *addr, \
size_t len, int prot, int flags, int fd, \
int pad, uint32_t pos1, uint32_t pos2); }
198 AUE_NULL NOPROTO { int nosys(void); } __syscall \
@@ -432,7 +432,7 @@
size_t msgsz, int msgflg); }
227 AUE_MSGRCV NOSTD { int freebsd32_msgrcv(int msqid, void *msgp, \
size_t msgsz, long msgtyp, int msgflg); }
-228 AUE_SHMAT NOSTD|NOPROTO { int shmat(int shmid, void *shmaddr, \
+228 AUE_SHMAT NOSTD|NOPROTO { void *shmat(int shmid, void *shmaddr, \
int shmflg); }
229 AUE_SHMCTL COMPAT7|NOSTD { int freebsd32_shmctl( \
int shmid, int cmd, \
@@ -876,7 +876,7 @@
const void *buf, size_t nbyte, \
int pad, \
uint32_t offset1, uint32_t offset2); }
-477 AUE_MMAP STD { caddr_t freebsd32_mmap(void *addr, \
+477 AUE_MMAP STD { void *freebsd32_mmap(void *addr, \
size_t len, int prot, int flags, int fd, \
int pad, \
uint32_t pos1, uint32_t pos2); }
@@ -897,7 +897,7 @@
476 AUE_PWRITE STD { ssize_t freebsd32_pwrite(int fd, \
const void *buf, size_t nbyte, \
uint32_t offset1, uint32_t offset2); }
-477 AUE_MMAP STD { caddr_t freebsd32_mmap(void *addr, \
+477 AUE_MMAP STD { void *freebsd32_mmap(void *addr, \
size_t len, int prot, int flags, int fd, \
uint32_t pos1, uint32_t pos2); }
478 AUE_LSEEK STD { off_t freebsd32_lseek(int fd, \
Modified: projects/clang700-import/sys/geom/geom_io.c
==============================================================================
--- projects/clang700-import/sys/geom/geom_io.c Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/sys/geom/geom_io.c Wed Nov 7 18:54:24 2018 (r340235)
@@ -420,8 +420,6 @@ g_io_check(struct bio *bp)
return (EIO);
if (bp->bio_offset > pp->mediasize)
return (EIO);
- if (bp->bio_offset == pp->mediasize && bp->bio_length > 0)
- return (EIO);
/* Truncate requests to the end of providers media. */
excess = bp->bio_offset + bp->bio_length;
Modified: projects/clang700-import/sys/kern/imgact_elf.c
==============================================================================
--- projects/clang700-import/sys/kern/imgact_elf.c Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/sys/kern/imgact_elf.c Wed Nov 7 18:54:24 2018 (r340235)
@@ -120,7 +120,8 @@ SYSCTL_INT(_debug, OID_AUTO, __elfN(legacy_coredump),
int __elfN(nxstack) =
#if defined(__amd64__) || defined(__powerpc64__) /* both 64 and 32 bit */ || \
- (defined(__arm__) && __ARM_ARCH >= 7) || defined(__aarch64__)
+ (defined(__arm__) && __ARM_ARCH >= 7) || defined(__aarch64__) || \
+ defined(__riscv)
1;
#else
0;
Modified: projects/clang700-import/sys/kern/makesyscalls.sh
==============================================================================
--- projects/clang700-import/sys/kern/makesyscalls.sh Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/sys/kern/makesyscalls.sh Wed Nov 7 18:54:24 2018 (r340235)
@@ -325,6 +325,7 @@ sed -e '
}
function parseline() {
f=4 # toss number, type, audit event
+ ret_inc = 0
argc= 0;
argssize = "0"
thr_flag = "SY_THR_STATIC"
@@ -340,12 +341,15 @@ sed -e '
funcalias=""
argalias=""
rettype="int"
+ if ($(f+2) == "*") {
+ ret_inc = 1
+ }
end=NF
}
if (flag("NODEF")) {
auditev="AUE_NULL"
- funcname=$4
- argssize = "AS(" $6 ")"
+ funcname=$(4 + ret_inc)
+ argssize = "AS(" $(6 + ret_inc) ")"
return
}
if ($f != "{")
@@ -363,6 +367,11 @@ sed -e '
syscallret=$f
f++
+ while (ret_inc > 0) {
+ syscallret=syscallret " " $f
+ f++
+ ret_inc--
+ }
funcname=$f
Modified: projects/clang700-import/sys/kern/syscalls.master
==============================================================================
--- projects/clang700-import/sys/kern/syscalls.master Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/sys/kern/syscalls.master Wed Nov 7 18:54:24 2018 (r340235)
@@ -180,7 +180,7 @@
);
}
17 AUE_NULL STD {
- caddr_t break(
+ void *break(
_In_ char *nsize
);
}
@@ -480,7 +480,7 @@
);
}
71 AUE_MMAP COMPAT {
- int mmap(
+ void *mmap(
_In_ void *addr,
int len,
int prot,
@@ -1168,7 +1168,7 @@
);
}
197 AUE_MMAP COMPAT6 {
- caddr_t mmap(
+ void *mmap(
_In_ void *addr,
size_t len,
int prot,
@@ -1317,7 +1317,7 @@
);
}
228 AUE_SHMAT NOSTD {
- int shmat(
+ void *shmat(
int shmid,
_In_ const void *shmaddr,
int shmflg
@@ -2543,7 +2543,7 @@
);
}
477 AUE_MMAP STD {
- caddr_t mmap(
+ void *mmap(
_In_ void *addr,
size_t len,
int prot,
Modified: projects/clang700-import/sys/kern/systrace_args.c
==============================================================================
--- projects/clang700-import/sys/kern/systrace_args.c Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/sys/kern/systrace_args.c Wed Nov 7 18:54:24 2018 (r340235)
@@ -8788,7 +8788,7 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
/* break */
case 17:
if (ndx == 0 || ndx == 1)
- p = "caddr_t";
+ p = "void *";
break;
/* getpid */
case 20:
@@ -9357,7 +9357,7 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
/* shmat */
case 228:
if (ndx == 0 || ndx == 1)
- p = "int";
+ p = "void *";
break;
/* shmdt */
case 230:
@@ -10187,7 +10187,7 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
/* mmap */
case 477:
if (ndx == 0 || ndx == 1)
- p = "caddr_t";
+ p = "void *";
break;
/* lseek */
case 478:
Modified: projects/clang700-import/sys/riscv/riscv/elf_machdep.c
==============================================================================
--- projects/clang700-import/sys/riscv/riscv/elf_machdep.c Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/sys/riscv/riscv/elf_machdep.c Wed Nov 7 18:54:24 2018 (r340235)
@@ -83,10 +83,12 @@ struct sysentvec elf64_freebsd_sysvec = {
.sv_setregs = exec_setregs,
.sv_fixlimit = NULL,
.sv_maxssiz = NULL,
- .sv_flags = SV_ABI_FREEBSD | SV_LP64,
+ .sv_flags = SV_ABI_FREEBSD | SV_LP64 | SV_SHP,
.sv_set_syscall_retval = cpu_set_syscall_retval,
.sv_fetch_syscall_args = cpu_fetch_syscall_args,
.sv_syscallnames = syscallnames,
+ .sv_shared_page_base = SHAREDPAGE,
+ .sv_shared_page_len = PAGE_SIZE,
.sv_schedtail = NULL,
.sv_thread_detach = NULL,
.sv_trap = NULL,
@@ -108,22 +110,6 @@ static Elf64_Brandinfo freebsd_brand_info = {
SYSINIT(elf64, SI_SUB_EXEC, SI_ORDER_FIRST,
(sysinit_cfunc_t) elf64_insert_brand_entry,
&freebsd_brand_info);
-
-static Elf64_Brandinfo freebsd_brand_oinfo = {
- .brand = ELFOSABI_FREEBSD,
- .machine = EM_RISCV,
- .compat_3_brand = "FreeBSD",
- .emul_path = NULL,
- .interp_path = "/usr/libexec/ld-elf.so.1",
- .sysvec = &elf64_freebsd_sysvec,
- .interp_newpath = NULL,
- .brand_note = &elf64_freebsd_brandnote,
- .flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE
-};
-
-SYSINIT(oelf64, SI_SUB_EXEC, SI_ORDER_ANY,
- (sysinit_cfunc_t) elf64_insert_brand_entry,
- &freebsd_brand_oinfo);
static int debug_kld;
SYSCTL_INT(_kern, OID_AUTO, debug_kld,
Modified: projects/clang700-import/sys/sys/elf_common.h
==============================================================================
--- projects/clang700-import/sys/sys/elf_common.h Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/sys/sys/elf_common.h Wed Nov 7 18:54:24 2018 (r340235)
@@ -707,6 +707,7 @@ typedef struct {
#define DT_MIPS_PLTGOT 0x70000032
#define DT_MIPS_RLD_OBJ_UPDATE 0x70000033
#define DT_MIPS_RWPLT 0x70000034
+#define DT_MIPS_RLD_MAP_REL 0x70000035
#define DT_PPC_GOT 0x70000000
#define DT_PPC_TLSOPT 0x70000001
Modified: projects/clang700-import/tools/tools/syscall_timing/syscall_timing.c
==============================================================================
--- projects/clang700-import/tools/tools/syscall_timing/syscall_timing.c Wed Nov 7 18:52:28 2018 (r340234)
+++ projects/clang700-import/tools/tools/syscall_timing/syscall_timing.c Wed Nov 7 18:54:24 2018 (r340235)
@@ -335,6 +335,23 @@ test_getuid(uintmax_t num, uintmax_t int_arg __unused,
}
static uintmax_t
+test_lstat(uintmax_t num, uintmax_t int_arg __unused, const char *path)
+{
+ struct stat sb;
+ uintmax_t i;
+ int error;
+
+ benchmark_start();
+ BENCHMARK_FOREACH(i, num) {
+ error = lstat(path, &sb);
+ if (error != 0)
+ err(-1, "lstat");
+ }
+ benchmark_stop();
+ return (i);
+}
+
+static uintmax_t
test_memcpy(uintmax_t num, uintmax_t int_arg, const char *path __unused)
{
char buf[int_arg], buf2[int_arg];
@@ -824,6 +841,23 @@ test_socketpair_dgram(uintmax_t num, uintmax_t int_arg
}
static uintmax_t
+test_readlink(uintmax_t num, uintmax_t int_arg __unused, const char *path)
+{
+ char buf[PATH_MAX];
+ ssize_t rv;
+ uintmax_t i;
+
+ benchmark_start();
+ BENCHMARK_FOREACH(i, num) {
+ rv = readlink(path, buf, sizeof(buf));
+ if (rv < 0 && errno != EINVAL)
+ err(-1, "readlink");
+ }
+ benchmark_stop();
+ return (i);
+}
+
+static uintmax_t
test_vfork(uintmax_t num, uintmax_t int_arg __unused, const char *path __unused)
{
pid_t pid;
@@ -904,6 +938,7 @@ static const struct test tests[] = {
{ "getresuid", test_getresuid, .t_flags = 0 },
{ "gettimeofday", test_gettimeofday, .t_flags = 0 },
{ "getuid", test_getuid, .t_flags = 0 },
+ { "lstat", test_lstat, .t_flags = FLAG_PATH },
{ "memcpy_1", test_memcpy, .t_flags = 0, .t_int = 1 },
{ "memcpy_10", test_memcpy, .t_flags = 0, .t_int = 10 },
{ "memcpy_100", test_memcpy, .t_flags = 0, .t_int = 100 },
@@ -962,6 +997,7 @@ static const struct test tests[] = {
{ "socketpair_dgram", test_socketpair_dgram, .t_flags = 0 },
{ "socket_tcp", test_socket_stream, .t_int = PF_INET },
{ "socket_udp", test_socket_dgram, .t_int = PF_INET },
+ { "readlink", test_readlink, .t_flags = FLAG_PATH },
{ "vfork", test_vfork, .t_flags = 0 },
{ "vfork_exec", test_vfork_exec, .t_flags = 0 },
};
More information about the svn-src-projects
mailing list