From owner-freebsd-mips@freebsd.org Sun Jan 28 06:47:26 2018 Return-Path: Delivered-To: freebsd-mips@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2F6AAEDBB36 for ; Sun, 28 Jan 2018 06:47:26 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-wr0-x235.google.com (mail-wr0-x235.google.com [IPv6:2a00:1450:400c:c0c::235]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9CF666E3A7; Sun, 28 Jan 2018 06:47:25 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: by mail-wr0-x235.google.com with SMTP id i56so3844395wra.7; Sat, 27 Jan 2018 22:47:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=tv8/r0NAuV9tXm3u+4GA1+P1evzyy2gd6cc/GHZL93A=; b=doOq9xEcLxgaG/E5IeRuE/wEGylLTodXrJIzLX/gWjgLvj5YCKE9gBQmqjMRrCFJjt NcBQdIqtk9BfPsbz8rYX684IiuEw/2bhxYObrWAmfJy7zcc8yIcDzvB4IJMLZ73fttOm awY9huWg+hRQ0c5Is5SS9SQZgWDLASDW6Nmoce4CaGASRLi5GjkBSeuEBsxSa6eT7cYv qI7QT+kOQZ4+7cjwU2aRd/q9YtyBE0YwDsNejVzP1YRhVJ1ci6GUhG1m/TzFTUDu0bSc R4rOrKpYhY522l4ZuZLJ0w4XVZcDbqEvdjOOpB8mzWWrDBleO6lU3MdSgMzQPouyGTMu K4cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=tv8/r0NAuV9tXm3u+4GA1+P1evzyy2gd6cc/GHZL93A=; b=WNY8ezE7DsfFOg2IyRhTr5AsWoS0Ja0Unbbu3hFrJB2DvqAOSpJyiqmkVvZBaCoJbp eVfcj/MzrKWRO+lDiPhQ9sfj5p0Orx8HY/UimyMoE/08dV/H96mQk8yr3Cxuo36UsA93 ytbN9gBifrc1UgwIkrT3wX/45iAQ588NpbxKNdDM5gyjHNV4zyOJLEx3aOoDN9VfNWoz YzU6f59On0TeNylxIlrVlz4ZKePcydArJ2E+cc7Jqt+g7tcH+GEA6bYG+EuLnYHlDpJG 3DHDbDAJ6CkmLQSvwtpN4zAd7rvyo2ib+vKp9XBQDxnYeappJrJnqFLPDff+NM1VqhzW rG2g== X-Gm-Message-State: AKwxytd6LRlv3e4YVw5sSVdC1Wdea1xh/8z+5qXAxlAoY8tOl/keoMMY MBsxAIMk6POuUYyi5lCaAAU8eSaucOcfENoY5IY= X-Google-Smtp-Source: AH8x226c9HyuDmWlN6//NoNDzwcU9i+SKrcSaevu4KOqe+BJ+O9fWo4Gk6zrNJmDSS3PyM/H1H2AowfNk07xQhSSPS8= X-Received: by 10.223.153.120 with SMTP id x111mr10461969wrb.249.1517122044055; Sat, 27 Jan 2018 22:47:24 -0800 (PST) MIME-Version: 1.0 Sender: adrian.chadd@gmail.com Received: by 10.28.181.3 with HTTP; Sat, 27 Jan 2018 22:47:22 -0800 (PST) In-Reply-To: References: <87596.64393.qm@web101718.mail.ssk.yahoo.co.jp> From: Adrian Chadd Date: Sat, 27 Jan 2018 22:47:22 -0800 X-Google-Sender-Auth: r8JLKRLMB0zj7HNn-9RWxruvI9Q Message-ID: Subject: Re: kld not work on Atheros To: Michael Zhilin Cc: Mori Hiroki , "freebsd-mips@freebsd.org" , John Baldwin Content-Type: text/plain; charset="UTF-8" X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Jan 2018 06:47:26 -0000 hi, yes; i did this: Index: sys/kern/link_elf_obj.c =================================================================== --- sys/kern/link_elf_obj.c (revision 328277) +++ sys/kern/link_elf_obj.c (working copy) @@ -1093,7 +1093,8 @@ base = findbase(ef, ef->reltab[i].sec); if (base == 0) { link_elf_error(ef->lf.filename, "lost base for reltab"); - return (ENOEXEC); + //return (ENOEXEC); + continue; } for ( ; rel < rellim; rel++) { symidx = ELF_R_SYM(rel->r_info); @@ -1461,7 +1462,8 @@ base = findbase(ef, ef->reltab[i].sec); if (base == 0) { link_elf_error(ef->lf.filename, "lost base for reltab"); - return (ENOEXEC); + //return (ENOEXEC); + continue; } for ( ; rel < rellim; rel++) { symidx = ELF_R_SYM(rel->r_info); @@ -1487,7 +1489,8 @@ base = findbase(ef, ef->relatab[i].sec); if (base == 0) { link_elf_error(ef->lf.filename, "lost base for reltab"); - return (ENOEXEC); + //return (ENOEXEC); + continue; } for ( ; rela < relalim; rela++) { symidx = ELF_R_SYM(rela->r_info); jhb - what should we do to fix this in the short term? -a On 25 January 2018 at 02:02, Michael Zhilin wrote: > Hi Hiroki-san, > > This topic discussed by adrian@ and jhb@ few days ago. > Please use pre-r328101 revisions for a while. > > + Adrian and John in loop > > Thanks! > > On Thu, Jan 25, 2018 at 12:53 PM, Mori Hiroki wrote: >> >> hi >> >> I build current today. I can't use kld on AR9341(Big Endian). >> >> kldload: geom_md.ko: lost base for reltab >> linker_load_file: /boot/kernel/geom_md.ko - unsupported file type >> >> Regards >> >> Hiroki Mori >> _______________________________________________ >> freebsd-mips@freebsd.org mailing list >> https://lists.freebsd.org/mailman/listinfo/freebsd-mips >> To unsubscribe, send any mail to "freebsd-mips-unsubscribe@freebsd.org" > > From owner-freebsd-mips@freebsd.org Wed Jan 31 22:12:45 2018 Return-Path: Delivered-To: freebsd-mips@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1209EEE5248 for ; Wed, 31 Jan 2018 22:12:45 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-wm0-x22a.google.com (mail-wm0-x22a.google.com [IPv6:2a00:1450:400c:c09::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8011E7BB53; Wed, 31 Jan 2018 22:12:44 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: by mail-wm0-x22a.google.com with SMTP id 143so2017605wma.5; Wed, 31 Jan 2018 14:12:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=WLsIPusDvGb8WWhW24+R/CJAUc9XozfBkmIOPhZrJ1c=; b=QIEeutj/4YFqJ0K4sXs0qmI6gd5bar2hKolDFTCu5SBrUONYn5ywzSZxPO6OY+qrfc sT1lQjknL78IliLyg8QR8Hs5MgdhOos6P70xJwRnA9nIFeof08sYKP9wTpsf7IRb1Bst LIpZEiSieNfdqyVej5ksdPXstH6LTT8jUXWxDUFJ7lIqJFvNx1wXT4pqMnDhqh30N5CT dtX4Qd3f8zfXYDGTbKboasSkp+w9MXF7cq/fdc3YlFNSDtk1Zxn1HUG9OTGJpegBpfl4 XLACWDz4nR2YsEGzWB1H71E+nEj9+s3oWOHS/s/h65m9Mf8GF3kIbhA1wItIKG03NH7v qyQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=WLsIPusDvGb8WWhW24+R/CJAUc9XozfBkmIOPhZrJ1c=; b=SVzzzSAxfFKLf8qhVIzemC7vF8anZnVYlJf+yieWt/dq3bNsgcn7G5/ad6gCIZlasc 8wOlNh5+cCUGf/ht1Lz9K9g9vRyF2kwFrf9Ox7xrMyFZpODBXBYnb/Y2W/i5OhOa1ud7 CgFUANiv2NqL6We8r4d4iCddhMr1MVVuLfzE902dX898Rusz4uiyWKZsykloGNOL/noo leWvLN9lmMskCHDDE32jNj9l8R1vq1CXz7MUVvNzDLSmrPBlbBAZkteW5WMirXO9ew3c EB7Qtlxe15o7x7DvDPbqmxx0Fjn7czUEoubZ5DoTDGK6+jPsXhaQgOFjRYtyE7Uj7DvJ XEqw== X-Gm-Message-State: AKwxytfV9P6Mce+C/gBVqvxmiRFlW2cxV3r8NBzuMi/f9VU/7CMttTls DxxYg9VaEKBkOKTnJvL2l775EzotVaqKlyeLtL8= X-Google-Smtp-Source: AH8x224+/VuZ6WOiZPjM341OPp92qeodhH4gsSW/zuTZ/Kc4HFGIYETtZqKC92F2kLCaOgmgzAo3OSnoVpk/kwI1JAM= X-Received: by 10.28.0.212 with SMTP id 203mr22887377wma.128.1517436763068; Wed, 31 Jan 2018 14:12:43 -0800 (PST) MIME-Version: 1.0 Sender: adrian.chadd@gmail.com Received: by 10.28.181.3 with HTTP; Wed, 31 Jan 2018 14:12:42 -0800 (PST) In-Reply-To: References: <87596.64393.qm@web101718.mail.ssk.yahoo.co.jp> From: Adrian Chadd Date: Wed, 31 Jan 2018 14:12:42 -0800 X-Google-Sender-Auth: 4viJeCIa4I8zOroEVNHE4sIS9O4 Message-ID: Subject: Re: kld not work on Atheros To: Michael Zhilin Cc: Mori Hiroki , "freebsd-mips@freebsd.org" , John Baldwin Content-Type: text/plain; charset="UTF-8" X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 31 Jan 2018 22:12:45 -0000 Hi, Bump - do I just put in an #ifdef MIPS around this workaround for now, or what's the cleaner solution? :) -a On 27 January 2018 at 22:47, Adrian Chadd wrote: > hi, > > yes; i did this: > > Index: sys/kern/link_elf_obj.c > =================================================================== > --- sys/kern/link_elf_obj.c (revision 328277) > +++ sys/kern/link_elf_obj.c (working copy) > @@ -1093,7 +1093,8 @@ > base = findbase(ef, ef->reltab[i].sec); > if (base == 0) { > link_elf_error(ef->lf.filename, "lost base for reltab"); > - return (ENOEXEC); > + //return (ENOEXEC); > + continue; > } > for ( ; rel < rellim; rel++) { > symidx = ELF_R_SYM(rel->r_info); > @@ -1461,7 +1462,8 @@ > base = findbase(ef, ef->reltab[i].sec); > if (base == 0) { > link_elf_error(ef->lf.filename, "lost base for reltab"); > - return (ENOEXEC); > + //return (ENOEXEC); > + continue; > } > for ( ; rel < rellim; rel++) { > symidx = ELF_R_SYM(rel->r_info); > @@ -1487,7 +1489,8 @@ > base = findbase(ef, ef->relatab[i].sec); > if (base == 0) { > link_elf_error(ef->lf.filename, "lost base for reltab"); > - return (ENOEXEC); > + //return (ENOEXEC); > + continue; > } > for ( ; rela < relalim; rela++) { > symidx = ELF_R_SYM(rela->r_info); > > > jhb - what should we do to fix this in the short term? > > > -a > > On 25 January 2018 at 02:02, Michael Zhilin wrote: >> Hi Hiroki-san, >> >> This topic discussed by adrian@ and jhb@ few days ago. >> Please use pre-r328101 revisions for a while. >> >> + Adrian and John in loop >> >> Thanks! >> >> On Thu, Jan 25, 2018 at 12:53 PM, Mori Hiroki wrote: >>> >>> hi >>> >>> I build current today. I can't use kld on AR9341(Big Endian). >>> >>> kldload: geom_md.ko: lost base for reltab >>> linker_load_file: /boot/kernel/geom_md.ko - unsupported file type >>> >>> Regards >>> >>> Hiroki Mori >>> _______________________________________________ >>> freebsd-mips@freebsd.org mailing list >>> https://lists.freebsd.org/mailman/listinfo/freebsd-mips >>> To unsubscribe, send any mail to "freebsd-mips-unsubscribe@freebsd.org" >> >> From owner-freebsd-mips@freebsd.org Thu Feb 1 20:06:14 2018 Return-Path: Delivered-To: freebsd-mips@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D0F29EC308E for ; Thu, 1 Feb 2018 20:06:13 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from mail.baldwin.cx (bigwig.baldwin.cx [96.47.65.170]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 7074D83162; Thu, 1 Feb 2018 20:06:13 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (ralph.baldwin.cx [66.234.199.215]) by mail.baldwin.cx (Postfix) with ESMTPSA id CAAED10A7DB; Thu, 1 Feb 2018 15:06:11 -0500 (EST) From: John Baldwin To: Adrian Chadd Cc: Michael Zhilin , Mori Hiroki , "freebsd-mips@freebsd.org" Subject: Re: kld not work on Atheros Date: Thu, 01 Feb 2018 12:06:08 -0800 Message-ID: <4510846.CbLV3ucMtE@ralph.baldwin.cx> User-Agent: KMail/4.14.10 (FreeBSD/11.1-STABLE; KDE/4.14.30; amd64; ; ) In-Reply-To: References: <87596.64393.qm@web101718.mail.ssk.yahoo.co.jp> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.4.3 (mail.baldwin.cx); Thu, 01 Feb 2018 15:06:11 -0500 (EST) X-Virus-Scanned: clamav-milter 0.99.2 at mail.baldwin.cx X-Virus-Status: Clean X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Feb 2018 20:06:14 -0000 On Wednesday, January 31, 2018 02:12:42 PM Adrian Chadd wrote: > Hi, > > Bump - do I just put in an #ifdef MIPS around this workaround for now, > or what's the cleaner solution? :) Cleaner solution is to not load reltabs or relatabs for sections that don't have SHF_ALLOC set. That is, earlier in load_elf_obj.c (in loader) and in link_elf_obj.c when looping over SHT_RELTAB and SHT_RELTABA sections, ignore relocation tables whose associated section doesn't have SHF_ALLOC set. Try this (untested): diff --git a/stand/common/load_elf_obj.c b/stand/common/load_elf_obj.c index b58dde0dfbf8..4c893e17a5b1 100644 --- a/stand/common/load_elf_obj.c +++ b/stand/common/load_elf_obj.c @@ -282,6 +282,8 @@ __elfN(obj_loadimage)(struct preloaded_file *fp, elf_file_t ef, u_int64_t off) switch (shdr[i].sh_type) { case SHT_REL: case SHT_RELA: + if ((shdr[shdr[i].sh_info].sh_flags & SHF_ALLOC) == 0) + break; lastaddr = roundup(lastaddr, shdr[i].sh_addralign); shdr[i].sh_addr = (Elf_Addr)lastaddr; lastaddr += shdr[i].sh_size; diff --git a/sys/kern/link_elf_obj.c b/sys/kern/link_elf_obj.c index 448d5b9c08a5..0bcec40822e1 100644 --- a/sys/kern/link_elf_obj.c +++ b/sys/kern/link_elf_obj.c @@ -272,9 +272,17 @@ link_elf_link_preload(linker_class_t cls, const char *filename, symstrindex = shdr[i].sh_link; break; case SHT_REL: + /* + * Ignore relocation tables for sections not + * loaded by the loader. + */ + if (shdr[shdr[i].sh_info].sh_addr == 0) + break; ef->nreltab++; break; case SHT_RELA: + if (shdr[shdr[i].sh_info].sh_addr == 0) + break; ef->nrelatab++; break; } @@ -398,12 +406,16 @@ link_elf_link_preload(linker_class_t cls, const char *filename, pb++; break; case SHT_REL: + if (shdr[shdr[i].sh_info].sh_addr == 0) + break; ef->reltab[rl].rel = (Elf_Rel *)shdr[i].sh_addr; ef->reltab[rl].nrel = shdr[i].sh_size / sizeof(Elf_Rel); ef->reltab[rl].sec = shdr[i].sh_info; rl++; break; case SHT_RELA: + if (shdr[shdr[i].sh_info].sh_addr == 0) + break; ef->relatab[ra].rela = (Elf_Rela *)shdr[i].sh_addr; ef->relatab[ra].nrela = shdr[i].sh_size / sizeof(Elf_Rela); @@ -620,9 +632,17 @@ link_elf_load_file(linker_class_t cls, const char *filename, symstrindex = shdr[i].sh_link; break; case SHT_REL: + /* + * Ignore relocation tables for unallocated + * sections. + */ + if ((shdr[shdr[i].sh_info].sh_flags & SHF_ALLOC) == 0) + break; ef->nreltab++; break; case SHT_RELA: + if ((shdr[shdr[i].sh_info].sh_flags & SHF_ALLOC) == 0) + break; ef->nrelatab++; break; case SHT_STRTAB: @@ -880,6 +900,8 @@ link_elf_load_file(linker_class_t cls, const char *filename, pb++; break; case SHT_REL: + if ((shdr[shdr[i].sh_info].sh_flags & SHF_ALLOC) == 0) + break; ef->reltab[rl].rel = malloc(shdr[i].sh_size, M_LINKER, M_WAITOK); ef->reltab[rl].nrel = shdr[i].sh_size / sizeof(Elf_Rel); @@ -898,6 +920,8 @@ link_elf_load_file(linker_class_t cls, const char *filename, rl++; break; case SHT_RELA: + if ((shdr[shdr[i].sh_info].sh_flags & SHF_ALLOC) == 0) + break; ef->relatab[ra].rela = malloc(shdr[i].sh_size, M_LINKER, M_WAITOK); ef->relatab[ra].nrela = -- John Baldwin