From owner-freebsd-arm@freebsd.org Sat Jun 27 17:58:53 2020 Return-Path: Delivered-To: freebsd-arm@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 41B513588F7 for ; Sat, 27 Jun 2020 17:58:53 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 49vM231K7pz4G7p for ; Sat, 27 Jun 2020 17:58:50 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.15.2/8.15.2) with ESMTPS id 05RHwaib063086 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Sat, 27 Jun 2020 20:58:39 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 05RHwaib063086 Received: (from kostik@localhost) by tom.home (8.15.2/8.15.2/Submit) id 05RHwZ3w063085; Sat, 27 Jun 2020 20:58:35 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sat, 27 Jun 2020 20:58:35 +0300 From: Konstantin Belousov To: adr@sdf.org Cc: freebsd-arm@freebsd.org Subject: Re: calling mmap from assembly, invalid argument Message-ID: <20200627175835.GC32126@kib.kiev.ua> References: <20200627155110.GA22042@SDF.ORG> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200627155110.GA22042@SDF.ORG> X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on tom.home X-Rspamd-Queue-Id: 49vM231K7pz4G7p X-Spamd-Bar: + Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=fail reason="No valid SPF, No valid DKIM" header.from=gmail.com (policy=none); spf=softfail (mx1.freebsd.org: 2001:470:d5e7:1::1 is neither permitted nor denied by domain of kostikbel@gmail.com) smtp.mailfrom=kostikbel@gmail.com X-Spamd-Result: default: False [1.09 / 15.00]; ARC_NA(0.00)[]; RCVD_TLS_ALL(0.00)[]; FROM_HAS_DN(0.00)[]; FREEMAIL_FROM(0.00)[gmail.com]; NEURAL_SPAM_SHORT(0.49)[0.488]; MIME_GOOD(-0.10)[text/plain]; HAS_XAW(0.00)[]; TO_DN_NONE(0.00)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; NEURAL_SPAM_MEDIUM(0.50)[0.500]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCPT_COUNT_TWO(0.00)[2]; NEURAL_SPAM_LONG(0.10)[0.102]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_COUNT_TWO(0.00)[2]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US]; FREEMAIL_ENVFROM(0.00)[gmail.com]; DMARC_POLICY_SOFTFAIL(0.10)[gmail.com : No valid SPF, No valid DKIM,none] X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 27 Jun 2020 17:58:53 -0000 On Sat, Jun 27, 2020 at 03:51:10PM +0000, adr@SDF.ORG wrote: > Hello, > > I can't make a simple call to mmap. > > I'm not using system calls because I've to use other c functions > in the real code, so there is not gain following the possible > changes on the syscalls. > > I should be missing something. > I've used clang in openbsd without a problem. > > I'll appreciate any help. > > adr > ============================================ > % uname -a > FreeBSD fbsd 13.0-CURRENT FreeBSD 13.0-CURRENT #0 r362037: Thu Jun 11 05:06:50 UTC 2020 > root@releng1.nyi.freebsd.org:/usr/obj/usr/src/arm.armv7/sys/GENERIC arm > > It doesn't matter if I assemble the code with gas. > > % clang -o test test.s > % ./test > > Invalid argument > mmap addr: 0xffffffff > > ============================== > .syntax unified > > @ /usr/include/sys/mman.h > PROT_READ = 1 > PROT_WRITE = 2 > MAP_PRIVATE = 2 > MAP_ANONYMOUS = 0x1000 > > .data > ostr: > .string "mmap addr: %#x\n" > .align > > .text > .global main > > main: > mov r5, 0 @ offset > mov r4, -1 @ fd > push {r4, r5} Offset has off_t type which is 64 bit and requires proper alignment. In this code, some random garbage on the stack is interpreted as offset. Our mmap(2) is strict by requiring offset equal to zero for MAP_ANON. You would see it yourself with either ktrace/kdump or truss. > mov r3, MAP_ANONYMOUS|MAP_PRIVATE > mov r2, PROT_READ|PROT_WRITE > mov r1, 4096 @ len > mov r0, 0 @ addr > bl mmap > mov r5, r0 > mov r0, 0 > bl perror > ldr r0, =ostr > mov r1, r5 > bl printf > mov r0, 0 > bl fflush > b exit > _______________________________________________ > freebsd-arm@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-arm > To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org"