From owner-svn-src-all@freebsd.org Wed Jul 20 17:32:41 2016 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D6902B9F962; Wed, 20 Jul 2016 17:32:41 +0000 (UTC) (envelope-from ler@lerctr.org) Received: from thebighonker.lerctr.org (thebighonker.lerctr.org [IPv6:2001:470:1f0f:3ad:223:7dff:fe9e:6e8a]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "thebighonker.lerctr.org", Issuer "COMODO RSA Domain Validation Secure Server CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B4A5C1D52; Wed, 20 Jul 2016 17:32:41 +0000 (UTC) (envelope-from ler@lerctr.org) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lerctr.org; s=lerami; h=Message-ID:References:In-Reply-To:Subject:Cc:To:From:Date: Content-Transfer-Encoding:Content-Type:MIME-Version:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=rEBFzUDNlHooGft/Adlxc7XXBz1X3KPkQgmmJSXClIo=; b=t5e4o5d9DV3ETCTBI3JnGkgzHI KNbsNRMr5RInKFdotskxuwYQKUP0kzIzzCU2VWw2jlia2TgiGc0OKAk3ppuWhRIAgeCKbxudqokB3 1niXWbxt6HKmZSPRXQifcdaDPLnzt0CEu8/TBLYQlzbuRUdVGg/0376AndisGaFb2f/A=; Received: from thebighonker.lerctr.org ([2001:470:1f0f:3ad:223:7dff:fe9e:6e8a]:21318 helo=webmail.lerctr.org) by thebighonker.lerctr.org with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.87 (FreeBSD)) (envelope-from ) id 1bPvMP-000DLl-4a; Wed, 20 Jul 2016 12:32:41 -0500 Received: from proxy.na.alcatel-lucent.com ([135.245.48.75]) by webmail.lerctr.org with HTTP (HTTP/1.1 POST); Wed, 20 Jul 2016 12:32:41 -0500 MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Wed, 20 Jul 2016 12:32:41 -0500 From: Larry Rosenman To: "Conrad E. Meyer" Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org, owner-svn-src-all@freebsd.org Subject: Re: svn commit: r303099 - head/sys/kern In-Reply-To: <201607201659.u6KGxaNs010929@repo.freebsd.org> References: <201607201659.u6KGxaNs010929@repo.freebsd.org> Message-ID: <7d98bc0deeedc54964b62911276c41cc@thebighonker.lerctr.org> X-Sender: ler@lerctr.org User-Agent: Roundcube Webmail/1.2.0 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2016 17:32:41 -0000 This broke my build: --- imgact_elf32.o --- In file included from /usr/src/sys/kern/imgact_elf32.c:31: /usr/src/sys/kern/imgact_elf.c:1663:8: error: format specifies type 'size_t' (aka 'unsigned long') but the argument has type 'Elf32_Off' (aka 'unsigned int') [-Werror,-Wformat] ehdr->e_shoff, hdrsize - sizeof(Elf_Shdr))); ^~~~~~~~~~~~~ /usr/src/sys/sys/systm.h:86:17: note: expanded from macro 'KASSERT' kassert_panic msg; \ ^~~ On 2016-07-20 11:59, Conrad E. Meyer wrote: > Author: cem > Date: Wed Jul 20 16:59:36 2016 > New Revision: 303099 > URL: https://svnweb.freebsd.org/changeset/base/303099 > > Log: > Extend ELF coredump to support more than 65535 segments > > The ELF e_phnum field is only 16 bits wide. To support more than > 65535 segments > (program headers), Sun's "Linker and Libraries Guide" table 7-7 (or > 12-7, > depending on document version) prescribes a special first section > header where > sh_info represents the real number of program headers. > > Test code to follow, when it is ready. > > Reference: http://docs.oracle.com/cd/E18752_01/pdf/817-1984.pdf > > Reviewed by: emaste, markj > Sponsored by: EMC / Isilon Storage Division > Differential Revision: https://reviews.freebsd.org/D7255 > > Modified: > head/sys/kern/imgact_elf.c > > Modified: head/sys/kern/imgact_elf.c > ============================================================================== > --- head/sys/kern/imgact_elf.c Wed Jul 20 16:48:25 2016 (r303098) > +++ head/sys/kern/imgact_elf.c Wed Jul 20 16:59:36 2016 (r303099) > @@ -1323,6 +1323,8 @@ __elfN(coredump)(struct thread *td, stru > * Collect info about the core file header area. > */ > hdrsize = sizeof(Elf_Ehdr) + sizeof(Elf_Phdr) * (1 + seginfo.count); > + if (seginfo.count + 1 >= PN_XNUM) > + hdrsize += sizeof(Elf_Shdr); > __elfN(prepare_notes)(td, ¬elst, ¬esz); > coresize = round_page(hdrsize + notesz) + seginfo.size; > > @@ -1618,10 +1620,10 @@ __elfN(puthdr)(struct thread *td, void * > { > Elf_Ehdr *ehdr; > Elf_Phdr *phdr; > + Elf_Shdr *shdr; > struct phdr_closure phc; > > ehdr = (Elf_Ehdr *)hdr; > - phdr = (Elf_Phdr *)((char *)hdr + sizeof(Elf_Ehdr)); > > ehdr->e_ident[EI_MAG0] = ELFMAG0; > ehdr->e_ident[EI_MAG1] = ELFMAG1; > @@ -1645,14 +1647,43 @@ __elfN(puthdr)(struct thread *td, void * > ehdr->e_flags = 0; > ehdr->e_ehsize = sizeof(Elf_Ehdr); > ehdr->e_phentsize = sizeof(Elf_Phdr); > - ehdr->e_phnum = numsegs + 1; > ehdr->e_shentsize = sizeof(Elf_Shdr); > - ehdr->e_shnum = 0; > ehdr->e_shstrndx = SHN_UNDEF; > + if (numsegs + 1 < PN_XNUM) { > + ehdr->e_phnum = numsegs + 1; > + ehdr->e_shnum = 0; > + } else { > + ehdr->e_phnum = PN_XNUM; > + ehdr->e_shnum = 1; > + > + ehdr->e_shoff = ehdr->e_phoff + > + (numsegs + 1) * ehdr->e_phentsize; > + KASSERT(ehdr->e_shoff == hdrsize - sizeof(Elf_Shdr), > + ("e_shoff: %zu, hdrsize - shdr: %zu", > + ehdr->e_shoff, hdrsize - sizeof(Elf_Shdr))); > + > + shdr = (Elf_Shdr *)((char *)hdr + ehdr->e_shoff); > + memset(shdr, 0, sizeof(*shdr)); > + /* > + * A special first section is used to hold large segment and > + * section counts. This was proposed by Sun Microsystems in > + * Solaris and has been adopted by Linux; the standard ELF > + * tools are already familiar with the technique. > + * > + * See table 7-7 of the Solaris "Linker and Libraries Guide" > + * (or 12-7 depending on the version of the document) for more > + * details. > + */ > + shdr->sh_type = SHT_NULL; > + shdr->sh_size = ehdr->e_shnum; > + shdr->sh_link = ehdr->e_shstrndx; > + shdr->sh_info = numsegs + 1; > + } > > /* > * Fill in the program header entries. > */ > + phdr = (Elf_Phdr *)((char *)hdr + ehdr->e_phoff); > > /* The note segement. */ > phdr->p_type = PT_NOTE; > _______________________________________________ > svn-src-all@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/svn-src-all > To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org" -- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 214-642-9640 E-Mail: ler@lerctr.org US Mail: 17716 Limpia Crk, Round Rock, TX 78664-7281