From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932474AbbI3Riq (ORCPT ); Wed, 30 Sep 2015 13:38:46 -0400 Received: from relay1.mentorg.com ([192.94.38.131]:43417 "EHLO relay1.mentorg.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753272AbbI3Rio (ORCPT ); Wed, 30 Sep 2015 13:38:44 -0400 Subject: Re: [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h To: Ard Biesheuvel References: <2039A9BE-ADA4-4D28-84F4-C8B9D76834AD@goldelico.com> CC: "H. Nikolaus Schaller" , Szabolcs Nagy , Russell King , Will Deacon , Marek Belisko , LKML , linux-arm-kernel From: Nathan Lynch Message-ID: <560C1DD0.1000907@mentor.com> Date: Wed, 30 Sep 2015 12:37:20 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/30/2015 11:17 AM, Ard Biesheuvel wrote: > On 30 September 2015 at 18:13, H. Nikolaus Schaller wrote: >> >> Am 30.09.2015 um 18:02 schrieb Ard Biesheuvel : >>> >>> Have you tried this? >>> >>> #define bswap_16 __builtin_bswap16 >>> #define bswap_32 __builtin_bswap32 >>> #define bswap_64 __builtin_bswap64 >>> >>> https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html >> >> OS X host uses llvm and I am not sure if these builtins are >> always available. >> > > I am pretty sure recent clang supports these as well. Could you please try it? Well, I think GCC did not provide __builtin_bswap16 consistently until the 4.8 release: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52624 That seems too recent to me. vdsomunge makes only three or four potentially byteswapped accesses to the ELF header. It's not worth a lot of effort to try to use the most optimal implementation available. Why not just use a generic implementation like is found in mips' elf2ecoff? From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nathan_Lynch@mentor.com (Nathan Lynch) Date: Wed, 30 Sep 2015 12:37:20 -0500 Subject: [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h In-Reply-To: References: <2039A9BE-ADA4-4D28-84F4-C8B9D76834AD@goldelico.com> Message-ID: <560C1DD0.1000907@mentor.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 09/30/2015 11:17 AM, Ard Biesheuvel wrote: > On 30 September 2015 at 18:13, H. Nikolaus Schaller wrote: >> >> Am 30.09.2015 um 18:02 schrieb Ard Biesheuvel : >>> >>> Have you tried this? >>> >>> #define bswap_16 __builtin_bswap16 >>> #define bswap_32 __builtin_bswap32 >>> #define bswap_64 __builtin_bswap64 >>> >>> https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html >> >> OS X host uses llvm and I am not sure if these builtins are >> always available. >> > > I am pretty sure recent clang supports these as well. Could you please try it? Well, I think GCC did not provide __builtin_bswap16 consistently until the 4.8 release: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52624 That seems too recent to me. vdsomunge makes only three or four potentially byteswapped accesses to the ELF header. It's not worth a lot of effort to try to use the most optimal implementation available. Why not just use a generic implementation like is found in mips' elf2ecoff?