From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex =?utf-8?Q?Benn=C3=A9e?= Subject: Re: [kvm-unit-tests PATCH 1/6] libcflat: add PRI(dux)32 format types Date: Thu, 12 Jan 2017 17:18:25 +0000 Message-ID: <87fuko2o4e.fsf@linaro.org> References: <20170111162841.15569-1-alex.bennee@linaro.org> <20170111162841.15569-2-alex.bennee@linaro.org> <4286b719-ff75-d2cd-68b5-cb9d9bb89553@redhat.com> <20170112165629.nbczamlqlpsqaauh@hawk.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 9C2DD4066D for ; Thu, 12 Jan 2017 12:16:43 -0500 (EST) Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qu+kAdWmjdCU for ; Thu, 12 Jan 2017 12:16:42 -0500 (EST) Received: from mail-wm0-f43.google.com (mail-wm0-f43.google.com [74.125.82.43]) by mm01.cs.columbia.edu (Postfix) with ESMTPS id 0E8B240194 for ; Thu, 12 Jan 2017 12:16:41 -0500 (EST) Received: by mail-wm0-f43.google.com with SMTP id r126so29137513wmr.0 for ; Thu, 12 Jan 2017 09:18:27 -0800 (PST) In-reply-to: <20170112165629.nbczamlqlpsqaauh@hawk.localdomain> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu To: Andrew Jones Cc: kvm@vger.kernel.org, marc.zyngier@arm.com, linux-arm-kernel@lists.infradead.org, Paolo Bonzini , kvmarm@lists.cs.columbia.edu List-Id: kvmarm@lists.cs.columbia.edu CkFuZHJldyBKb25lcyA8ZHJqb25lc0ByZWRoYXQuY29tPiB3cml0ZXM6Cgo+IE9uIFRodSwgSmFu IDEyLCAyMDE3IGF0IDAxOjI5OjI0UE0gKzAxMDAsIFBhb2xvIEJvbnppbmkgd3JvdGU6Cj4+Cj4+ Cj4+IE9uIDExLzAxLzIwMTcgMTc6MjgsIEFsZXggQmVubsOpZSB3cm90ZToKPj4gPiBTbyB3ZSBj YW4gaGF2ZSBwb3J0YWJsZSBmb3JtYXR0aW5nIG9mIHVpbnQzMl90IHR5cGVzLiBIb3dldmVyIHRo ZXJlIGlzCj4+ID4gYSBjYXRjaC4gRGlmZmVyZW50IGNvbXBpbGVycyBjYW4gdXNlIGxlZ2FsbHkg c3VidGx5IGRpZmZlcmVudCB0eXBlcwo+PiA+IHRob3VnaCBzbyB3ZSBuZWVkIHRvIHByb2JlIHRo ZSBjb21waWxlciBkZWZpbmVkIGludGRlZi5oIGZpcnN0Lgo+Pgo+PiBJbnRlcmVzdGluZywgd2hh dCBwbGF0Zm9ybSBoYXMgbG9uZyB1aW50MzJfdD8gIEkgdGhvdWdodCB0aGUgaXNzdWUgd2FzCj4+ IHdoZXRoZXIgNjQtYml0IGlzIGxvbmcgb3IgImxvbmcgbG9uZyIuCj4+Cj4+IFBhb2xvCj4+Cj4+ ID4gU2lnbmVkLW9mZi1ieTogQWxleCBCZW5uw6llIDxhbGV4LmJlbm5lZUBsaW5hcm8ub3JnPgo+ PiA+IC0tLQo+PiA+ICBNYWtlZmlsZSAgICAgICB8ICAxICsKPj4gPiAgY29uZmlndXJlICAgICAg fCAxMyArKysrKysrKysrKysrCj4+ID4gIGxpYi9saWJjZmxhdC5oIHwgIDkgKysrKysrKysrCj4+ ID4gIDMgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKQo+PiA+Cj4+ID4gZGlmZiAtLWdp dCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKPj4gPiBpbmRleCBhMzIzMzNiLi45ODIyZDlhIDEwMDY0 NAo+PiA+IC0tLSBhL01ha2VmaWxlCj4+ID4gKysrIGIvTWFrZWZpbGUKPj4gPiBAQCAtNTUsNiAr NTUsNyBAQCBDRkxBR1MgKz0gJChmb21pdF9mcmFtZV9wb2ludGVyKQo+PiA+ICBDRkxBR1MgKz0g JChmbm9fc3RhY2tfcHJvdGVjdG9yKQo+PiA+ICBDRkxBR1MgKz0gJChmbm9fc3RhY2tfcHJvdGVj dG9yX2FsbCkKPj4gPiAgQ0ZMQUdTICs9ICQod25vX2ZyYW1lX2FkZHJlc3MpCj4+ID4gK0NGTEFH UyArPSAkKGlmICQoVTMyX0xPTkdfRk1UKSwtRF9fVTMyX0xPTkdfRk1UX18sKQo+PiA+Cj4+ID4g IENYWEZMQUdTICs9ICQoQ0ZMQUdTKQo+PiA+Cj4+ID4gZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBi L2NvbmZpZ3VyZQo+PiA+IGluZGV4IDk5NWM4ZmEuLjEyNzg2OGMgMTAwNzU1Cj4+ID4gLS0tIGEv Y29uZmlndXJlCj4+ID4gKysrIGIvY29uZmlndXJlCj4+ID4gQEAgLTEwOSw2ICsxMDksMTggQEAg aWYgWyAtZiAkdGVzdGRpci9ydW4gXTsgdGhlbgo+PiA+ICAgICAgbG4gLWZzICR0ZXN0ZGlyL3J1 biAkdGVzdGRpci1ydW4KPj4gPiAgZmkKPj4gPgo+PiA+ICsjIGNoZWNrIGlmIHVpbnQzMl90IG5l ZWRzIGEgbG9uZyBmb3JtYXQgbW9kaWZpZXIKPj4gPiArY2F0IDw8IEVPRiA+IGxpYl90ZXN0LmMK Pj4gPiArI2luY2x1ZGUgPGludHR5cGVzLmg+Cj4+ID4gK0VPRgo+PiA+ICsKPj4gPiArJGNyb3Nz X3ByZWZpeCRjYyBsaWJfdGVzdC5jIC1FIHwgZ3JlcCAidHlwZWRlZiIgfCBncmVwICJsb25nIiB8 IGdyZXAgInVpbnQzMl90IiAmPiAvZGV2L251bGwKPgo+IFRoaXMgd29uJ3Qgd29yayB3aXRoIGNy b3NzIGNvbXBpbGVycyB0aGF0IGRvbid0IGhhdmUgaW50dHlwZXMuaCBpbiB0aGVpcgo+IHBhdGgg KGxpa2UgbWluZSkuIEhvdyBhYm91dCBzb21ldGhpbmcgbGlrZQoKSG1tIGdvb2QgcG9pbnQsIGlu IG15IGNhc2UgaW50dHlwZXMuaCBjYW1lIGZyb20gdGhlIGxpYm5ld2xpYi1kZXYgcGFja2FnZS4K Cj4KPiAgY2F0IDw8IEVPRiA+IGxpYl90ZXN0LmMKPiAgX19VSU5UMzJfVFlQRV9fCj4gIEVPRgo+ ICB1MzJfbG9uZz0iYGFhcmNoNjQtbGludXgtZ251LWdjYyBsaWJfdGVzdC5jIC1FIHwgYXdrICcv dW5zaWduZWQvICYmICQyID09ICJsb25nIidgIgoKSG1tIGl0IGlzIG5vdCBjbGVhciBmcm9tIHRo ZSBkb2NzIGlmIHRoaXMgaXMgYSBHQ0Npc20uIElmIGl0IGlzIGRvIHdlCmNhcmU/IEFsc28gdGhl IGRvY3MgZG8gc2F5OgoKIlNvbWUgb2YgdGhlc2UgbWFjcm9zIG1heSBub3QgYmUgZGVmaW5lZCBv biBwYXJ0aWN1bGFyIHN5c3RlbXMgaWYgR0NDIGRvZXMgbm90IHByb3ZpZGUgYSBzdGRpbnQuaCBo ZWFkZXIgb24gdGhvc2Ugc3lzdGVtcy4gIgoKPiBBbHRob3VnaCBJIGZlZWwgdGhlcmUgc2hvdWxk IGJlIGEgY29tcGlsZXIgbWFjcm8gd2F5IHRvIGRvIHRoaXMgd2l0aG91dAo+IGEgbmVlZCBmb3Ig Y29uZmlndXJlL21ha2VmaWxlIHRyaWNrZXJ5IGF0IGFsbC4uLgoKSSBkaWQgYXNrIG91ciB0b29s Y2hhaW4gYm9kcy4gVGhleSBzdGFydGVkIGdvaW5nIG9uIGFib3V0IHBvdGVudGlhbApzb2x1dGlv bnMgdXNpbmcgX0dlbmVyaWMgYnV0IEkgZmVhciB0aGF0IG1pZ2h0IGJlIHdvcnNlIGluIHRoaXMg Y2FzZSEKCj4KPiBUaGFua3MsCj4gZHJldwo+Cj4KPj4gPiArZXhpdD0kPwo+PiA+ICtpZiBbICRl eGl0IC1lcSAwIF07IHRoZW4KPj4gPiArICAgIHUzMl9sb25nPXRydWUKPj4gPiArZmkKPj4gPiAr cm0gLWYgbGliX3Rlc3QuYwo+PiA+ICsKPj4gPiAgIyBjaGVjayBmb3IgZGVwZW5kZW50IDMyIGJp dCBsaWJyYXJpZXMKPj4gPiAgaWYgWyAiJGFyY2giICE9ICJhcm0iIF07IHRoZW4KPj4gPiAgY2F0 IDw8IEVPRiA+IGxpYl90ZXN0LmMKPj4gPiBAQCAtMTU1LDQgKzE2Nyw1IEBAIFRFU1RfRElSPSR0 ZXN0ZGlyCj4+ID4gIEZJUk1XQVJFPSRmaXJtd2FyZQo+PiA+ICBFTkRJQU49JGVuZGlhbgo+PiA+ ICBQUkVUVFlfUFJJTlRfU1RBQ0tTPSRwcmV0dHlfcHJpbnRfc3RhY2tzCj4+ID4gK1UzMl9MT05H X0ZNVD0kdTMyX2xvbmcKPj4gPiAgRU9GCj4+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJjZmxhdC5o IGIvbGliL2xpYmNmbGF0LmgKPj4gPiBpbmRleCAzODAzOTVmLi5lODBmYzUwIDEwMDY0NAo+PiA+ IC0tLSBhL2xpYi9saWJjZmxhdC5oCj4+ID4gKysrIGIvbGliL2xpYmNmbGF0LmgKPj4gPiBAQCAt NTgsMTIgKzU4LDIxIEBAIHR5cGVkZWYgX0Jvb2wJCWJvb2w7Cj4+ID4gICNkZWZpbmUgdHJ1ZSAg MQo+PiA+Cj4+ID4gICNpZiBfX1NJWkVPRl9MT05HX18gPT0gOAo+PiA+ICsjICBkZWZpbmUgX19Q UkkzMl9QUkVGSVgKPj4gPiAgIyAgZGVmaW5lIF9fUFJJNjRfUFJFRklYCSJsIgo+PiA+ICAjICBk ZWZpbmUgX19QUklQVFJfUFJFRklYCSJsIgo+PiA+ICAjZWxzZQo+PiA+ICsjaWYgZGVmaW5lZChf X1UzMl9MT05HX0ZNVF9fKQo+PiA+ICsjICBkZWZpbmUgX19QUkkzMl9QUkVGSVggICAgICAgICJs Igo+PiA+ICsjZWxzZQo+PiA+ICsjICBkZWZpbmUgX19QUkkzMl9QUkVGSVgKPj4gPiArI2VuZGlm Cj4+ID4gICMgIGRlZmluZSBfX1BSSTY0X1BSRUZJWAkibGwiCj4+ID4gICMgIGRlZmluZSBfX1BS SVBUUl9QUkVGSVgKPj4gPiAgI2VuZGlmCj4+ID4gKyNkZWZpbmUgUFJJZDMyICBfX1BSSTMyX1BS RUZJWAkiZCIKPj4gPiArI2RlZmluZSBQUkl1MzIgIF9fUFJJMzJfUFJFRklYCSJ1Igo+PiA+ICsj ZGVmaW5lIFBSSXgzMiAgX19QUkkzMl9QUkVGSVgJIngiCj4+ID4gICNkZWZpbmUgUFJJZDY0ICBf X1BSSTY0X1BSRUZJWAkiZCIKPj4gPiAgI2RlZmluZSBQUkl1NjQgIF9fUFJJNjRfUFJFRklYCSJ1 Igo+PiA+ICAjZGVmaW5lIFBSSXg2NCAgX19QUkk2NF9QUkVGSVgJIngiCj4+ID4KPj4gLS0KPj4g VG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJl IGt2bSIgaW4KPj4gdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5l bC5vcmcKPj4gTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9t YWpvcmRvbW8taW5mby5odG1sCgoKLS0KQWxleCBCZW5uw6llCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmt2bWFybSBtYWlsaW5nIGxpc3QKa3ZtYXJtQGxp c3RzLmNzLmNvbHVtYmlhLmVkdQpodHRwczovL2xpc3RzLmNzLmNvbHVtYmlhLmVkdS9tYWlsbWFu L2xpc3RpbmZvL2t2bWFybQo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: alex.bennee@linaro.org (Alex =?utf-8?Q?Benn=C3=A9e?=) Date: Thu, 12 Jan 2017 17:18:25 +0000 Subject: [kvm-unit-tests PATCH 1/6] libcflat: add PRI(dux)32 format types In-Reply-To: <20170112165629.nbczamlqlpsqaauh@hawk.localdomain> References: <20170111162841.15569-1-alex.bennee@linaro.org> <20170111162841.15569-2-alex.bennee@linaro.org> <4286b719-ff75-d2cd-68b5-cb9d9bb89553@redhat.com> <20170112165629.nbczamlqlpsqaauh@hawk.localdomain> Message-ID: <87fuko2o4e.fsf@linaro.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Andrew Jones writes: > On Thu, Jan 12, 2017 at 01:29:24PM +0100, Paolo Bonzini wrote: >> >> >> On 11/01/2017 17:28, Alex Benn?e wrote: >> > So we can have portable formatting of uint32_t types. However there is >> > a catch. Different compilers can use legally subtly different types >> > though so we need to probe the compiler defined intdef.h first. >> >> Interesting, what platform has long uint32_t? I thought the issue was >> whether 64-bit is long or "long long". >> >> Paolo >> >> > Signed-off-by: Alex Benn?e >> > --- >> > Makefile | 1 + >> > configure | 13 +++++++++++++ >> > lib/libcflat.h | 9 +++++++++ >> > 3 files changed, 23 insertions(+) >> > >> > diff --git a/Makefile b/Makefile >> > index a32333b..9822d9a 100644 >> > --- a/Makefile >> > +++ b/Makefile >> > @@ -55,6 +55,7 @@ CFLAGS += $(fomit_frame_pointer) >> > CFLAGS += $(fno_stack_protector) >> > CFLAGS += $(fno_stack_protector_all) >> > CFLAGS += $(wno_frame_address) >> > +CFLAGS += $(if $(U32_LONG_FMT),-D__U32_LONG_FMT__,) >> > >> > CXXFLAGS += $(CFLAGS) >> > >> > diff --git a/configure b/configure >> > index 995c8fa..127868c 100755 >> > --- a/configure >> > +++ b/configure >> > @@ -109,6 +109,18 @@ if [ -f $testdir/run ]; then >> > ln -fs $testdir/run $testdir-run >> > fi >> > >> > +# check if uint32_t needs a long format modifier >> > +cat << EOF > lib_test.c >> > +#include >> > +EOF >> > + >> > +$cross_prefix$cc lib_test.c -E | grep "typedef" | grep "long" | grep "uint32_t" &> /dev/null > > This won't work with cross compilers that don't have inttypes.h in their > path (like mine). How about something like Hmm good point, in my case inttypes.h came from the libnewlib-dev package. > > cat << EOF > lib_test.c > __UINT32_TYPE__ > EOF > u32_long="`aarch64-linux-gnu-gcc lib_test.c -E | awk '/unsigned/ && $2 == "long"'`" Hmm it is not clear from the docs if this is a GCCism. If it is do we care? Also the docs do say: "Some of these macros may not be defined on particular systems if GCC does not provide a stdint.h header on those systems. " > Although I feel there should be a compiler macro way to do this without > a need for configure/makefile trickery at all... I did ask our toolchain bods. They started going on about potential solutions using _Generic but I fear that might be worse in this case! > > Thanks, > drew > > >> > +exit=$? >> > +if [ $exit -eq 0 ]; then >> > + u32_long=true >> > +fi >> > +rm -f lib_test.c >> > + >> > # check for dependent 32 bit libraries >> > if [ "$arch" != "arm" ]; then >> > cat << EOF > lib_test.c >> > @@ -155,4 +167,5 @@ TEST_DIR=$testdir >> > FIRMWARE=$firmware >> > ENDIAN=$endian >> > PRETTY_PRINT_STACKS=$pretty_print_stacks >> > +U32_LONG_FMT=$u32_long >> > EOF >> > diff --git a/lib/libcflat.h b/lib/libcflat.h >> > index 380395f..e80fc50 100644 >> > --- a/lib/libcflat.h >> > +++ b/lib/libcflat.h >> > @@ -58,12 +58,21 @@ typedef _Bool bool; >> > #define true 1 >> > >> > #if __SIZEOF_LONG__ == 8 >> > +# define __PRI32_PREFIX >> > # define __PRI64_PREFIX "l" >> > # define __PRIPTR_PREFIX "l" >> > #else >> > +#if defined(__U32_LONG_FMT__) >> > +# define __PRI32_PREFIX "l" >> > +#else >> > +# define __PRI32_PREFIX >> > +#endif >> > # define __PRI64_PREFIX "ll" >> > # define __PRIPTR_PREFIX >> > #endif >> > +#define PRId32 __PRI32_PREFIX "d" >> > +#define PRIu32 __PRI32_PREFIX "u" >> > +#define PRIx32 __PRI32_PREFIX "x" >> > #define PRId64 __PRI64_PREFIX "d" >> > #define PRIu64 __PRI64_PREFIX "u" >> > #define PRIx64 __PRI64_PREFIX "x" >> > >> -- >> To unsubscribe from this list: send the line "unsubscribe kvm" in >> the body of a message to majordomo at vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html -- Alex Benn?e