From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14201 invoked by alias); 28 Aug 2013 04:23:38 -0000 Mailing-List: contact libc-ports-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: libc-ports-owner@sourceware.org Received: (qmail 14184 invoked by uid 89); 28 Aug 2013 04:23:38 -0000 Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 28 Aug 2013 04:23:38 +0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-5.1 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r7S4NYPh008347 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 28 Aug 2013 00:23:34 -0400 Received: from [10.3.113.100] (ovpn-113-100.phx2.redhat.com [10.3.113.100]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id r7S4NXld028801; Wed, 28 Aug 2013 00:23:33 -0400 Message-ID: <521D7B45.5040604@redhat.com> Date: Wed, 28 Aug 2013 04:23:00 -0000 From: "Carlos O'Donell" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: "libc-ports@sourceware.org" , "Joseph S. Myers" CC: Kyle McMartin Subject: [PATCH] arm: Fix R_ARM_IRELATIVE for REL relocs. Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-SW-Source: 2013-08/txt/msg00053.txt.bz2 Joseph, While running glibc on 32-bit ARM hardware with multiarch enabled, VFP ABI, but no NEON, almost the entire testsuite fails with SIGILL. Debugging shows glibc trying to execute the NEON optimized routines although no NEON is present and the kernel has indicated that via the HWCAP. This is because ARM's dl-machine.h fails to pass dl_hwcap to the IFUNC resolver function for REL relocs in elf_machine_rel. The RELA case was fixed by Will Newton here: http://sourceware.org/ml/libc-ports/2013-07/msg00000.html Verified by building on ARM with no regressions. OK to checkin? ports/Changelog.arm 2013-08-28 Kyle McMartin Carlos O'Donell * sysdeps/arm/dl-machine [!RTLD_BOOTSTRAP] (elf_machine_rel): Pass GLRO(dl_hwcap) to the IFUNC resolver. diff --git a/ports/sysdeps/arm/dl-machine.h b/ports/sysdeps/arm/dl-machine.h index d251527..85dba67 100644 --- a/ports/sysdeps/arm/dl-machine.h +++ b/ports/sysdeps/arm/dl-machine.h @@ -503,7 +503,7 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, break; case R_ARM_IRELATIVE: value = map->l_addr + *reloc_addr; - value = ((Elf32_Addr (*) (void)) value) (); + value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap)); *reloc_addr = value; break; #endif --- Cheers, Carlos.