Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Oct 2018 14:27:55 +0000 (UTC)
From:      Glen Barber <gjb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r339255 - in projects/openssl111: crypto/openssh lib/libc/stdtime share/misc sys/fs/nfsserver sys/net sys/netinet sys/netinet6 usr.bin/calendar/calendars usr.sbin/bsdinstall/scripts usr...
Message-ID:  <201810091427.w99ERtRp014979@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gjb
Date: Tue Oct  9 14:27:55 2018
New Revision: 339255
URL: https://svnweb.freebsd.org/changeset/base/339255

Log:
  MFH r338661 through r339253.
  
  Sponsored by:	The FreeBSD Foundation

Added:
  projects/openssl111/usr.sbin/kldxref/ef_riscv.c
     - copied unchanged from r339242, head/usr.sbin/kldxref/ef_riscv.c
Modified:
  projects/openssl111/crypto/openssh/ssh_namespace.h
  projects/openssl111/lib/libc/stdtime/strptime.c
  projects/openssl111/share/misc/committers-ports.dot
  projects/openssl111/sys/fs/nfsserver/nfs_nfsdport.c
  projects/openssl111/sys/net/if_lagg.c
  projects/openssl111/sys/netinet/ip_options.c
  projects/openssl111/sys/netinet6/udp6_usrreq.c
  projects/openssl111/usr.bin/calendar/calendars/calendar.freebsd
  projects/openssl111/usr.sbin/bsdinstall/scripts/mirrorselect
Directory Properties:
  projects/openssl111/   (props changed)
  projects/openssl111/crypto/openssh/   (props changed)

Modified: projects/openssl111/crypto/openssh/ssh_namespace.h
==============================================================================
--- projects/openssl111/crypto/openssh/ssh_namespace.h	Tue Oct  9 14:27:40 2018	(r339254)
+++ projects/openssl111/crypto/openssh/ssh_namespace.h	Tue Oct  9 14:27:55 2018	(r339255)
@@ -8,6 +8,37 @@
 #define Blowfish_expandstate			Fssh_Blowfish_expandstate
 #define Blowfish_initstate			Fssh_Blowfish_initstate
 #define Blowfish_stream2word			Fssh_Blowfish_stream2word
+#define DH_get0_key				Fssh_DH_get0_key
+#define DH_get0_pqg				Fssh_DH_get0_pqg
+#define DH_set0_key				Fssh_DH_set0_key
+#define DH_set0_pqg				Fssh_DH_set0_pqg
+#define DH_set_length				Fssh_DH_set_length
+#define DSA_SIG_get0				Fssh_DSA_SIG_get0
+#define DSA_SIG_set0				Fssh_DSA_SIG_set0
+#define DSA_get0_key				Fssh_DSA_get0_key
+#define DSA_get0_pqg				Fssh_DSA_get0_pqg
+#define DSA_set0_key				Fssh_DSA_set0_key
+#define DSA_set0_pqg				Fssh_DSA_set0_pqg
+#define ECDSA_SIG_get0				Fssh_ECDSA_SIG_get0
+#define ECDSA_SIG_set0				Fssh_ECDSA_SIG_set0
+#define EVP_CIPHER_CTX_get_iv			Fssh_EVP_CIPHER_CTX_get_iv
+#define EVP_CIPHER_CTX_set_iv			Fssh_EVP_CIPHER_CTX_set_iv
+#define EVP_MD_CTX_free				Fssh_EVP_MD_CTX_free
+#define EVP_MD_CTX_new				Fssh_EVP_MD_CTX_new
+#define EVP_PKEY_get0_RSA			Fssh_EVP_PKEY_get0_RSA
+#define RSA_get0_crt_params			Fssh_RSA_get0_crt_params
+#define RSA_get0_factors			Fssh_RSA_get0_factors
+#define RSA_get0_key				Fssh_RSA_get0_key
+#define RSA_meth_dup				Fssh_RSA_meth_dup
+#define RSA_meth_free				Fssh_RSA_meth_free
+#define RSA_meth_get_finish			Fssh_RSA_meth_get_finish
+#define RSA_meth_set1_name			Fssh_RSA_meth_set1_name
+#define RSA_meth_set_finish			Fssh_RSA_meth_set_finish
+#define RSA_meth_set_priv_dec			Fssh_RSA_meth_set_priv_dec
+#define RSA_meth_set_priv_enc			Fssh_RSA_meth_set_priv_enc
+#define RSA_set0_crt_params			Fssh_RSA_set0_crt_params
+#define RSA_set0_factors			Fssh_RSA_set0_factors
+#define RSA_set0_key				Fssh_RSA_set0_key
 #define _ssh__compat_glob			Fssh__ssh__compat_glob
 #define _ssh__compat_globfree			Fssh__ssh__compat_globfree
 #define _ssh_compat_realpath			Fssh__ssh_compat_realpath
@@ -166,7 +197,6 @@
 #define cipher_crypt				Fssh_cipher_crypt
 #define cipher_ctx_is_plaintext			Fssh_cipher_ctx_is_plaintext
 #define cipher_free				Fssh_cipher_free
-#define cipher_get_keycontext			Fssh_cipher_get_keycontext
 #define cipher_get_keyiv			Fssh_cipher_get_keyiv
 #define cipher_get_keyiv_len			Fssh_cipher_get_keyiv_len
 #define cipher_get_length			Fssh_cipher_get_length
@@ -175,7 +205,6 @@
 #define cipher_ivlen				Fssh_cipher_ivlen
 #define cipher_keylen				Fssh_cipher_keylen
 #define cipher_seclen				Fssh_cipher_seclen
-#define cipher_set_keycontext			Fssh_cipher_set_keycontext
 #define cipher_set_keyiv			Fssh_cipher_set_keyiv
 #define cipher_warning_message			Fssh_cipher_warning_message
 #define ciphers_valid				Fssh_ciphers_valid
@@ -630,7 +659,7 @@
 #define ssh_remove_all_identities		Fssh_ssh_remove_all_identities
 #define ssh_remove_identity			Fssh_ssh_remove_identity
 #define ssh_request_reply			Fssh_ssh_request_reply
-#define ssh_rsa_generate_additional_parameters	Fssh_ssh_rsa_generate_additional_parameters
+#define ssh_rsa_complete_crt_parameters		Fssh_ssh_rsa_complete_crt_parameters
 #define ssh_rsa_sign				Fssh_ssh_rsa_sign
 #define ssh_rsa_verify				Fssh_ssh_rsa_verify
 #define ssh_set_app_data			Fssh_ssh_set_app_data
@@ -652,6 +681,7 @@
 #define sshbuf_dump_data			Fssh_sshbuf_dump_data
 #define sshbuf_dup_string			Fssh_sshbuf_dup_string
 #define sshbuf_free				Fssh_sshbuf_free
+#define sshbuf_free_passwd			Fssh_sshbuf_free_passwd
 #define sshbuf_from				Fssh_sshbuf_from
 #define sshbuf_fromb				Fssh_sshbuf_fromb
 #define sshbuf_froms				Fssh_sshbuf_froms
@@ -662,6 +692,7 @@
 #define sshbuf_get_cstring			Fssh_sshbuf_get_cstring
 #define sshbuf_get_ec				Fssh_sshbuf_get_ec
 #define sshbuf_get_eckey			Fssh_sshbuf_get_eckey
+#define sshbuf_get_passwd			Fssh_sshbuf_get_passwd
 #define sshbuf_get_string			Fssh_sshbuf_get_string
 #define sshbuf_get_string_direct		Fssh_sshbuf_get_string_direct
 #define sshbuf_get_stringb			Fssh_sshbuf_get_stringb
@@ -683,6 +714,7 @@
 #define sshbuf_put_cstring			Fssh_sshbuf_put_cstring
 #define sshbuf_put_ec				Fssh_sshbuf_put_ec
 #define sshbuf_put_eckey			Fssh_sshbuf_put_eckey
+#define sshbuf_put_passwd			Fssh_sshbuf_put_passwd
 #define sshbuf_put_string			Fssh_sshbuf_put_string
 #define sshbuf_put_stringb			Fssh_sshbuf_put_stringb
 #define sshbuf_put_u16				Fssh_sshbuf_put_u16
@@ -697,7 +729,6 @@
 #define sshbuf_reset				Fssh_sshbuf_reset
 #define sshbuf_set_max_size			Fssh_sshbuf_set_max_size
 #define sshbuf_set_parent			Fssh_sshbuf_set_parent
-#define sshkey_add_private			Fssh_sshkey_add_private
 #define sshkey_alg_list				Fssh_sshkey_alg_list
 #define sshkey_cert_check_authority		Fssh_sshkey_cert_check_authority
 #define sshkey_cert_copy			Fssh_sshkey_cert_copy
@@ -709,7 +740,6 @@
 #define sshkey_curve_name_to_nid		Fssh_sshkey_curve_name_to_nid
 #define sshkey_curve_nid_to_bits		Fssh_sshkey_curve_nid_to_bits
 #define sshkey_curve_nid_to_name		Fssh_sshkey_curve_nid_to_name
-#define sshkey_demote				Fssh_sshkey_demote
 #define sshkey_drop_cert			Fssh_sshkey_drop_cert
 #define sshkey_dump_ec_key			Fssh_sshkey_dump_ec_key
 #define sshkey_dump_ec_point			Fssh_sshkey_dump_ec_point

Modified: projects/openssl111/lib/libc/stdtime/strptime.c
==============================================================================
--- projects/openssl111/lib/libc/stdtime/strptime.c	Tue Oct  9 14:27:40 2018	(r339254)
+++ projects/openssl111/lib/libc/stdtime/strptime.c	Tue Oct  9 14:27:55 2018	(r339255)
@@ -419,7 +419,7 @@ label:
 				i += *buf - '0';
 				len--;
 			}
-			if (i > 31)
+			if (i == 0 || i > 31)
 				return (NULL);
 
 			tm->tm_mday = i;

Modified: projects/openssl111/share/misc/committers-ports.dot
==============================================================================
--- projects/openssl111/share/misc/committers-ports.dot	Tue Oct  9 14:27:40 2018	(r339254)
+++ projects/openssl111/share/misc/committers-ports.dot	Tue Oct  9 14:27:55 2018	(r339255)
@@ -100,6 +100,7 @@ dumbbell [label="Jean-Sebastien Pedron\ndumbbell@FreeB
 dvl [label="Dan Langille\ndvl@FreeBSD.org\n2014/08/10"]
 eadler [label="Eitan Adler\neadler@FreeBSD.org\n2011/08/17"]
 edwin [label="Edwin Groothuis\nedwin@FreeBSD.org\n2002/10/22"]
+egypcio [label="Vin&iacute;cius Zavam\negypcio@FreeBSD.org\n2018/10/04"]
 ehaupt [label="Emanuel Haupt\nehaupt@FreeBSD.org\n2005/10/03"]
 eik [label="Oliver Eikemeier\neik@FreeBSD.org\n2003/11/12"]
 ericbsd [label="Eric Turgeon\nericbsd@FreeBSD.org\n2018/03/17"]
@@ -297,6 +298,7 @@ amdmi3 -> arrowd
 
 antoine -> dumbbell
 
+araujo -> egypcio
 araujo -> jhixson
 araujo -> lippe
 araujo -> pclin
@@ -332,6 +334,7 @@ bapt -> rpaulo
 bapt -> sbruno
 
 beat -> decke
+beat -> egypcio
 beat -> marius
 beat -> sperber
 beat -> uqs
@@ -633,6 +636,7 @@ rakuco -> tcberner
 rene -> bar
 rene -> cmt
 rene -> crees
+rene -> egypcio
 rene -> jgh
 rene -> jmd
 rene -> joneum

Modified: projects/openssl111/sys/fs/nfsserver/nfs_nfsdport.c
==============================================================================
--- projects/openssl111/sys/fs/nfsserver/nfs_nfsdport.c	Tue Oct  9 14:27:40 2018	(r339254)
+++ projects/openssl111/sys/fs/nfsserver/nfs_nfsdport.c	Tue Oct  9 14:27:55 2018	(r339255)
@@ -133,7 +133,7 @@ static void nfsrv_pnfssetfh(struct vnode *, struct pnf
 static int nfsrv_dsremove(struct vnode *, char *, struct ucred *, NFSPROC_T *);
 static int nfsrv_dssetacl(struct vnode *, struct acl *, struct ucred *,
     NFSPROC_T *);
-static int nfsrv_pnfsstatfs(struct statfs *);
+static int nfsrv_pnfsstatfs(struct statfs *, struct mount *);
 
 int nfs_pnfsio(task_fn_t *, void *);
 
@@ -1593,7 +1593,7 @@ nfsvno_statfs(struct vnode *vp, struct statfs *sf)
 	if (nfsrv_devidcnt > 0) {
 		/* For a pNFS service, get the DS numbers. */
 		tsf = malloc(sizeof(*tsf), M_TEMP, M_WAITOK | M_ZERO);
-		error = nfsrv_pnfsstatfs(tsf);
+		error = nfsrv_pnfsstatfs(tsf, vp->v_mount);
 		if (error != 0) {
 			free(tsf, M_TEMP);
 			tsf = NULL;
@@ -1774,7 +1774,7 @@ nfsvno_fillattr(struct nfsrv_descript *nd, struct moun
 	     NFSISSET_ATTRBIT(attrbitp, NFSATTRBIT_SPACEFREE) ||
 	     NFSISSET_ATTRBIT(attrbitp, NFSATTRBIT_SPACETOTAL))) {
 		sf = malloc(sizeof(*sf), M_TEMP, M_WAITOK | M_ZERO);
-		error = nfsrv_pnfsstatfs(sf);
+		error = nfsrv_pnfsstatfs(sf, mp);
 		if (error != 0) {
 			free(sf, M_TEMP);
 			sf = NULL;
@@ -5578,7 +5578,7 @@ nfsrv_killrpcs(struct nfsmount *nmp)
  * receive the total for all DSs.
  */
 static int
-nfsrv_pnfsstatfs(struct statfs *sf)
+nfsrv_pnfsstatfs(struct statfs *sf, struct mount *mp)
 {
 	struct statfs *tsf;
 	struct nfsdevice *ds;
@@ -5595,11 +5595,28 @@ nfsrv_pnfsstatfs(struct statfs *sf)
 	tdvpp = dvpp;
 	i = 0;
 	NFSDDSLOCK();
+	/* First, search for matches for same file system. */
 	TAILQ_FOREACH(ds, &nfsrv_devidhead, nfsdev_list) {
-		if (ds->nfsdev_nmp != NULL) {
+		if (ds->nfsdev_nmp != NULL && ds->nfsdev_mdsisset != 0 &&
+		    ds->nfsdev_mdsfsid.val[0] == mp->mnt_stat.f_fsid.val[0] &&
+		    ds->nfsdev_mdsfsid.val[1] == mp->mnt_stat.f_fsid.val[1]) {
 			if (++i > nfsrv_devidcnt)
 				break;
 			*tdvpp++ = ds->nfsdev_dvp;
+		}
+	}
+	/*
+	 * If no matches for same file system, total all servers not assigned
+	 * to a file system.
+	 */
+	if (i == 0) {
+		TAILQ_FOREACH(ds, &nfsrv_devidhead, nfsdev_list) {
+			if (ds->nfsdev_nmp != NULL &&
+			    ds->nfsdev_mdsisset == 0) {
+				if (++i > nfsrv_devidcnt)
+					break;
+				*tdvpp++ = ds->nfsdev_dvp;
+			}
 		}
 	}
 	NFSDDSUNLOCK();

Modified: projects/openssl111/sys/net/if_lagg.c
==============================================================================
--- projects/openssl111/sys/net/if_lagg.c	Tue Oct  9 14:27:40 2018	(r339254)
+++ projects/openssl111/sys/net/if_lagg.c	Tue Oct  9 14:27:55 2018	(r339255)
@@ -2033,15 +2033,18 @@ lagg_lb_porttable(struct lagg_softc *sc, struct lagg_p
 {
 	struct lagg_lb *lb = (struct lagg_lb *)sc->sc_psc;
 	struct lagg_port *lp_next;
-	int i = 0;
+	int i = 0, rv;
 
+	rv = 0;
 	bzero(&lb->lb_ports, sizeof(lb->lb_ports));
 	LAGG_RLOCK();
 	CK_SLIST_FOREACH(lp_next, &sc->sc_ports, lp_entries) {
 		if (lp_next == lp)
 			continue;
-		if (i >= LAGG_MAX_PORTS)
-			return (EINVAL);
+		if (i >= LAGG_MAX_PORTS) {
+			rv = EINVAL;
+			break;
+		}
 		if (sc->sc_ifflags & IFF_DEBUG)
 			printf("%s: port %s at index %d\n",
 			    sc->sc_ifname, lp_next->lp_ifp->if_xname, i);
@@ -2049,7 +2052,7 @@ lagg_lb_porttable(struct lagg_softc *sc, struct lagg_p
 	}
 	LAGG_RUNLOCK();
 
-	return (0);
+	return (rv);
 }
 
 static int

Modified: projects/openssl111/sys/netinet/ip_options.c
==============================================================================
--- projects/openssl111/sys/netinet/ip_options.c	Tue Oct  9 14:27:40 2018	(r339254)
+++ projects/openssl111/sys/netinet/ip_options.c	Tue Oct  9 14:27:55 2018	(r339255)
@@ -110,16 +110,16 @@ ip_dooptions(struct mbuf *m, int pass)
 	struct nhop4_extended nh_ext;
 	struct	sockaddr_in ipaddr = { sizeof(ipaddr), AF_INET };
 
-	NET_EPOCH_ENTER();
 	/* Ignore or reject packets with IP options. */
 	if (V_ip_doopts == 0)
 		return 0;
 	else if (V_ip_doopts == 2) {
 		type = ICMP_UNREACH;
 		code = ICMP_UNREACH_FILTER_PROHIB;
-		goto bad;
+		goto bad_unlocked;
 	}
 
+	NET_EPOCH_ENTER();
 	dst = ip->ip_dst;
 	cp = (u_char *)(ip + 1);
 	cnt = (ip->ip_hl << 2) - sizeof (struct ip);
@@ -388,6 +388,7 @@ dropit:
 	return (0);
 bad:
 	NET_EPOCH_EXIT();
+bad_unlocked:
 	icmp_error(m, type, code, 0, 0);
 	IPSTAT_INC(ips_badoptions);
 	return (1);

Modified: projects/openssl111/sys/netinet6/udp6_usrreq.c
==============================================================================
--- projects/openssl111/sys/netinet6/udp6_usrreq.c	Tue Oct  9 14:27:40 2018	(r339254)
+++ projects/openssl111/sys/netinet6/udp6_usrreq.c	Tue Oct  9 14:27:55 2018	(r339255)
@@ -434,8 +434,8 @@ udp6_input(struct mbuf **mp, int *offp, int proto)
 				INP_RUNLOCK(last);
 		} else
 			INP_RUNLOCK(last);
-		INP_INFO_RUNLOCK_ET(pcbinfo, et);
 	inp_lost:
+		INP_INFO_RUNLOCK_ET(pcbinfo, et);
 		return (IPPROTO_DONE);
 	}
 	/*

Modified: projects/openssl111/usr.bin/calendar/calendars/calendar.freebsd
==============================================================================
--- projects/openssl111/usr.bin/calendar/calendars/calendar.freebsd	Tue Oct  9 14:27:40 2018	(r339254)
+++ projects/openssl111/usr.bin/calendar/calendars/calendar.freebsd	Tue Oct  9 14:27:55 2018	(r339255)
@@ -85,6 +85,7 @@
 02/22	Jake Burkholder <jake@FreeBSD.org> born in Maynooth, Ontario, Canada, 1979
 02/23	Peter Wemm <peter@FreeBSD.org> born in Perth, Western Australia, Australia, 1971
 02/23	Mathieu Arnold <mat@FreeBSD.org> born in Champigny sur Marne, Val de Marne, France, 1978
+02/23	Vinícius Zavam <egypcio@FreeBSD.org> born in Fortaleza, Ceará, Brazil, 1986
 02/24	Johan Karlsson <johan@FreeBSD.org> born in Mariannelund, Sweden, 1974
 02/24	Colin Percival <cperciva@FreeBSD.org> born in Burnaby, Canada, 1981
 02/24	Kevin Bowling <kbowling@FreeBSD.org> born in Scottsdale, Arizona, United States, 1989

Modified: projects/openssl111/usr.sbin/bsdinstall/scripts/mirrorselect
==============================================================================
--- projects/openssl111/usr.sbin/bsdinstall/scripts/mirrorselect	Tue Oct  9 14:27:40 2018	(r339254)
+++ projects/openssl111/usr.sbin/bsdinstall/scripts/mirrorselect	Tue Oct  9 14:27:55 2018	(r339255)
@@ -161,7 +161,7 @@ _UNAME_R=`uname -r`
 _UNAME_R=${_UNAME_R%-p*}
 
 case ${_UNAME_R} in
-	*-CURRENT|*-STABLE|*-PRERELEASE)
+	*-ALPHA*|*-CURRENT|*-STABLE|*-PRERELEASE)
 		RELDIR="snapshots"
 		;;
 	*)

Copied: projects/openssl111/usr.sbin/kldxref/ef_riscv.c (from r339242, head/usr.sbin/kldxref/ef_riscv.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/openssl111/usr.sbin/kldxref/ef_riscv.c	Tue Oct  9 14:27:55 2018	(r339255, copy of r339242, head/usr.sbin/kldxref/ef_riscv.c)
@@ -0,0 +1,78 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2018 John Baldwin <jhb@FreeBSD.org>
+ *
+ * This software was developed by SRI International and the University of
+ * Cambridge Computer Laboratory (Department of Computer Science and
+ * Technology) under DARPA contract HR0011-18-C-0016 ("ECATS"), as part of the
+ * DARPA SSITH research programme.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <machine/elf.h>
+
+#include <err.h>
+#include <errno.h>
+
+#include "ef.h"
+
+int
+ef_reloc(struct elf_file *ef, const void *reldata, int reltype, Elf_Off relbase,
+    Elf_Off dataoff, size_t len, void *dest)
+{
+	Elf_Addr *where, val;
+	const Elf_Rela *rela;
+	Elf_Addr addend, addr;
+	Elf_Size rtype;
+
+	switch (reltype) {
+	case EF_RELOC_RELA:
+		rela = (const Elf_Rela *)reldata;
+		where = (Elf_Addr *)((char *)dest + relbase + rela->r_offset -
+		    dataoff);
+		addend = rela->r_addend;
+		rtype = ELF_R_TYPE(rela->r_info);
+		break;
+	default:
+		return (EINVAL);
+	}
+
+	if ((char *)where < (char *)dest || (char *)where >= (char *)dest + len)
+		return (0);
+
+	switch (rtype) {
+	case R_RISCV_RELATIVE:	/* B + A */
+		addr = addend + relbase;
+		val = addr;
+		*where = val;
+		break;
+	default:
+		warnx("unhandled relocation type %d", (int)rtype);
+	}
+	return (0);
+}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201810091427.w99ERtRp014979>