From owner-svn-src-head@freebsd.org Thu Sep 27 18:49:04 2018 Return-Path: Delivered-To: svn-src-head@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 2B00F10B5B02; Thu, 27 Sep 2018 18:49:04 +0000 (UTC) (envelope-from tuexen@freebsd.org) Received: from drew.franken.de (mail-n.franken.de [193.175.24.27]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "*.franken.de", Issuer "COMODO RSA Domain Validation Secure Server CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7DB3D7177D; Thu, 27 Sep 2018 18:49:03 +0000 (UTC) (envelope-from tuexen@freebsd.org) Received: from [IPv6:2003:cd:6f29:a600:9cfb:5004:3a11:4e95] (p200300CD6F29A6009CFB50043A114E95.dip0.t-ipconnect.de [IPv6:2003:cd:6f29:a600:9cfb:5004:3a11:4e95]) (Authenticated sender: macmic) by mail-n.franken.de (Postfix) with ESMTPSA id 0A802721E280C; Thu, 27 Sep 2018 20:48:55 +0200 (CEST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 12.0 \(3445.100.39\)) Subject: Re: svn commit: r338930 - head/libexec/rtld-elf/powerpc From: Michael Tuexen In-Reply-To: <201809251929.w8PJTZl9021331@repo.freebsd.org> Date: Thu, 27 Sep 2018 20:48:54 +0200 Cc: src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: <828EF35C-7216-4847-A73D-464111006E52@freebsd.org> References: <201809251929.w8PJTZl9021331@repo.freebsd.org> To: Andreas Tobler X-Mailer: Apple Mail (2.3445.100.39) X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=disabled version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on mail-n.franken.de X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 Sep 2018 18:49:04 -0000 > On 25. Sep 2018, at 21:29, Andreas Tobler = wrote: >=20 > Author: andreast > Date: Tue Sep 25 19:29:35 2018 > New Revision: 338930 > URL: https://svnweb.freebsd.org/changeset/base/338930 >=20 > Log: > Bring the 32-bit powerpc (PowerMac) back to live. The commit 338486 = reworked > some TLS bits. This broke operation on the PowerMac. Namely one could = not login. > At login the screen/shell was giving back lots of backslashes and the = login > shell dumped core. >=20 > The fix to this issue is to revert the powerpc commit from 338486 and = to > increase the TLS_TCB_SIZE to 16. > Reverting only did not help, login was possible but userland = applications > aborted with strange messages. >=20 > I tested this patch with world/kernel builds and with port upgrades. > Additionally a full gcc8 bootstrap was successfully completed. >=20 > Reviewed by: jhibbits@ > Approved by: re (Glen) >=20 > Modified: > head/libexec/rtld-elf/powerpc/rtld_machdep.h >=20 > Modified: head/libexec/rtld-elf/powerpc/rtld_machdep.h > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/libexec/rtld-elf/powerpc/rtld_machdep.h Tue Sep 25 = 18:54:18 2018 (r338929) > +++ head/libexec/rtld-elf/powerpc/rtld_machdep.h Tue Sep 25 = 19:29:35 2018 (r338930) > @@ -69,12 +69,12 @@ void _rtld_powerpc_pltcall(void); >=20 > #define TLS_TP_OFFSET 0x7000 > #define TLS_DTV_OFFSET 0x8000 > -#define TLS_TCB_SIZE 8 > +#define TLS_TCB_SIZE 16 >=20 > #define round(size, align) \ > (((size) + (align) - 1) & ~((align) - 1)) > #define calculate_first_tls_offset(size, align) \ > - TLS_TCB_SIZE > + round(8, align) > #define calculate_tls_offset(prev_offset, prev_size, size, align) \ > round(prev_offset + prev_size, align) > #define calculate_tls_end(off, size) ((off) + (size)) >=20 After performing a buildworld/buildkernel and running r338956 on a = 32-bit powerpc machine (G4 Mac Mini), the following program: #include #include #include void * f(void * arg) { return (arg); } int main(void) { void *res; pthread_t tid; int err; if ((err =3D pthread_create(&tid, NULL, f, NULL)) !=3D 0) { fprintf(stderr, "pthread_create: %s\n", strerror(err)); } if ((err =3D pthread_join(tid, &res)) !=3D 0) { fprintf(stderr, "pthread_join: %s\n", strerror(err)); } return (0); } is killed: tuexen@bsd5:~ % ./test ld-elf.so.1: assert failed: = /usr/home/tuexen/head/libexec/rtld-elf/rtld.c:4753 Abort (core dumped) gdb shows: tuexen@bsd5:~ % gdb -c test.core test GNU gdb (GDB) 8.1 [GDB v8.1 for FreeBSD] Copyright (C) 2018 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later = This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show = copying" and "show warranty" for details. This GDB was configured as "powerpc-portbld-freebsd12.0". Type "show configuration" for configuration details. For bug reporting instructions, please see: . Find the GDB manual and other documentation resources online at: . For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from test...done. [New LWP 100112] Core was generated by `./test'. Program terminated with signal SIGABRT, Aborted. #0 0x41829a58 in thr_kill () at thr_kill.S:3 3 RSYSCALL(thr_kill) (gdb) bt #0 0x41829a58 in thr_kill () at thr_kill.S:3 #1 0x41829378 in __raise (s=3D6) at /usr/home/tuexen/head/lib/libc/gen/raise.c:52 #2 0x41823b84 in abort () at = /usr/home/tuexen/head/lib/libc/stdlib/abort.c:67 #3 0x41813f58 in allocate_tls (objs=3D0x41843000, oldtcb=3D,=20 tcbsize=3D8, tcbalign=3D) at /usr/home/tuexen/head/libexec/rtld-elf/rtld.c:4753 #4 0x41813fc0 in _rtld_allocate_tls (oldtls=3D0x0, tcbsize=3D8, = tcbalign=3D16) at /usr/home/tuexen/head/libexec/rtld-elf/rtld.c:5030 #5 0x41877438 in _tcb_ctor (thread=3D0x41a8d300, initial=3D) at /usr/home/tuexen/head/lib/libthr/thread/thr_ctrdtr.c:45 #6 0x41876ebc in _thr_alloc (curthread=3D0x41a8d000) at /usr/home/tuexen/head/lib/libthr/thread/thr_list.c:172 #7 0x41867118 in _pthread_create (thread=3D0xffffdc10, attr=3D0x0,=20 start_routine=3D0x180073c , arg=3D0x0) at /usr/home/tuexen/head/lib/libthr/thread/thr_create.c:81 #8 0x01800798 in main () (gdb) quit Any idea what is wrong? Best regards Michael=