From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13465 invoked by alias); 18 Aug 2017 12:05:33 -0000 Mailing-List: contact elfutils-devel-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Post: List-Help: List-Subscribe: Sender: elfutils-devel-owner@sourceware.org Received: (qmail 12051 invoked by uid 89); 18 Aug 2017 12:05:32 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.99.2 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.8 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy= X-Spam-Status: No, score=-25.8 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on sourceware.org X-Spam-Level: X-HELO: EUR03-VE1-obe.outbound.protection.outlook.com Received: from mail-eopbgr50136.outbound.protection.outlook.com (HELO EUR03-VE1-obe.outbound.protection.outlook.com) (40.107.5.136) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 18 Aug 2017 12:05:22 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qtcompany.onmicrosoft.com; s=selector1-qt-io; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=EupSeHJNma/GDIwvYD2eMmlRKjQO+yCenQDWbApDHvc=; b=H54q8aPuisFI1iGwUipeHul5lctvYCM/7kQJjU/4Ubbzbx21aF474mAq3ezvTF3hdt0pe3XDMQ05hfUBzZIZyxl5y6aH+hFDnodfzB9SqB83vkWE1dH4ZL/ff8QjwqpSFK0c7RPxVt+BQd8C+blKgICvR1d2x8/7DmAUNk2sDgg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ulf.hermann@qt.io; Received: from [10.9.78.66] (62.220.2.194) by VI1PR0201MB1840.eurprd02.prod.outlook.com (2603:10a6:800:10::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1341.21; Fri, 18 Aug 2017 12:05:13 +0000 From: Ulf Hermann Subject: [PATCH v2] Make sure packed structs follow the gcc memory layout To: elfutils-devel@sourceware.org Message-ID: <01f496b4-a384-64a0-4263-7df28098e8fe@qt.io> Date: Fri, 18 Aug 2017 12:05:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [62.220.2.194] X-ClientProxiedBy: DB6PR0202CA0022.eurprd02.prod.outlook.com (2603:10a6:4:29::32) To VI1PR0201MB1840.eurprd02.prod.outlook.com (2603:10a6:800:10::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 414fce5d-3ddc-4b3e-bd67-08d4e63161d1 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:VI1PR0201MB1840; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB1840;3:AIovBJmw/FbCJGjJ0VLETtfpZ343gi7THIpMqT6YZB4Dy8perCZiwLcPo+BQD4vfnRcYLswEZIdO0Iw+NcklZr5bxFvdZgH1Eeu+3EqUM3IBlYghIuDw2q4zNqgZ9J4kd4yoK4x9wBqgxsytFpXSurcGvWpwRIP7jGVA7R9LOX5Gwd+pKkhvL1GDhYALnMXWkFLz+1bidf7412IR5Y7HBhIOergUJUvelUxR+TjigSCx1/c25xutNQhnF6RvvGxH;25:8vJ1nyu3T0KFNNvZuYbDmBOsjP3Yk8oWn4A//4tTmeJDFjGkcwhXPMk8FMutZDatZCcFN/SwlcElw6Yj1KsX0f2nq03ZDLQvjQ/6IdkDcEWbCe4v+KA1ULRySr9/opZxgvOUeSgsvQFbpRWkjKV6kFEIL853GMJ5ZprUAa1tuKaNLwsAAA1YrlF7S6+RsJjDPCucaJy8Kj5C4Bb3TR5UdUVXjHFaDengoLAJiPTtiap+VElInzP7PSBpY8i00AlRW1TpcNkdM4Z/meUmJhEuMCrVYIIp3GFNYMRg6SKtezY2ZaSXrRrnJK8TJISdQN05g6JpSEKsk2HufRfTeFAy9Q==;31:NwnGMkHbgfBq1tNlYzv/BYQqZk3r+ahKkQPJsfERQx5YjiovlX/ZMk4j9wZZEz/PGlEunkZT/Wk766IS6wCZCKt3+HW6Rwng8yFZ0VGQKoz67yhz5I2vIDovie5WbQFkvzVRZH5hrBD76rHB4nFzyGsWsh1FuLlE6RrIP9h/2dlDAfsPz8W87Bc/kWU8aqeCZM9rPbhQVcj0O0D7l/nOzzQYA/MGW3kyaeT/vcDrTGk= X-MS-TrafficTypeDiagnostic: VI1PR0201MB1840: X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB1840;20:HNeoXXh1Skw3dUkvqUamDRVwAjjGIqwo0+HquA0D5Ba03x0iXKPSgJFUqOdKPdmy8pgtvZ9I4KWd1Poe/BvYzM1NZjsZ9ipL7QdvDYqE5qS5XnAwHNHRpamPzO4zNtRNb9P0zwCykJzA60oeHRdwkBGc4vG6Eek3GyOEEjawyru34lgKv4+emQ8ifEb7Y923oglWu62a1s5VZ2x+U80d9gAz0pK9TP26fNqWoTO5afP3/vhDTNBGBFl4mXtND6Rkl6f5jRXzpumdiUaU/kLIc62UCoEqeXhHBsdvshCSIjPyutayR18g10zF9xLC8ODSTc5ud4EoouDxHTsSDzpCIupvflhA6D18pLhKhZn2D8i/DNDLJIwygH/6SMIJYHrOkVv2DGtqiwiUs6pBV/7hvw8JltTuAsyj1gmT9CdZGnIrVOPDDSYj3Ve3DLt1Tw3PkceflOjGbKLJGFIyrKIEbN8TcTo7TiblhCLzmY/JVIDAtquvSNnbPG67MLahHVsV;4:SDSI8BNJmm4RUXEHwiKNmpuIY5yuW17xWf990tMpcdrpDOFdKeRNRGTT2Ro+I/ixdrULO87aU/s0XN3hXofYY3+rcE7URV+vgXAkPTd2zGf4MPJY/8sw8JoklY6oXJ/+9FVcQQnI2T2s9R03FEVEP8bGhWA7G2igy8pF3qIxuRbuec/AXl6ARnDa89z5sc5RF31bKQl7nG4/Arp0kxXaJnionJflDDAnsmfMpTbG9hCRGPI2UCWmBT7c/Ypz9Jja X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(3002001)(6041248)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123555025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:VI1PR0201MB1840;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:VI1PR0201MB1840; X-Forefront-PRVS: 040359335D X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(7370300001)(4630300001)(6009001)(6049001)(199003)(377424004)(189002)(54534003)(101416001)(575784001)(2351001)(31686004)(53936002)(6486002)(6916009)(106356001)(105586002)(110136004)(77096006)(42186005)(33646002)(64126003)(50466002)(86362001)(65826007)(31696002)(5660300001)(2361001)(74482002)(7350300001)(36756003)(50986999)(54356999)(189998001)(65956001)(65806001)(66066001)(83506001)(47776003)(305945005)(7736002)(68736007)(478600001)(3846002)(6116002)(81156014)(81166006)(25786009)(23676002)(97736004)(8676002)(4001350100001)(2906002)(230700001);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0201MB1840;H:[10.9.78.66];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; Received-SPF: None (protection.outlook.com: qt.io does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjAyMDFNQjE4NDA7MjM6YnVlNTk0SnNMQWw2WVNLdnVpWlVaMFdx?= =?utf-8?B?NDVpZHNKUEFrNWt5Q0JYN3F2TFY1TzQwbDl1VThFRWVhU1dnSXk2UFUvcFhK?= =?utf-8?B?cEdTZzllM01xandVU29CSDlucnBxR3haQ1hSMmsxamNIUm9kSmpJMEhOT3JT?= =?utf-8?B?c0lkRDNsZ1NHajFWQnYvTDBKdytKbkQwc2RqMVBhVXo5anRFS0p5ZTBScmh2?= =?utf-8?B?RDkraENpQUhrb0FwcEVYV1N5Zm5BclJyNFl5bFBBOG51aFRGdlEzRGxPdzdy?= =?utf-8?B?RlNUcFYzQ2oxRWEvdUtzeVFCUnI5Rk5ZcVBER3hpalFiSnpuWi9iOGRNcU1X?= =?utf-8?B?d0N4V2VCVThnY3NkS1pqazNrd0FvRWhzMkFheVh4QUxlT21tdDUvb21QcytH?= =?utf-8?B?WmhpNjNKQ0w4U2l2NU1EbVJNcFluNTB6RndEZEc2S3BnTEU4bnJkbGZIdlVK?= =?utf-8?B?NGpVSGlGMzhTNUJPY0o2dHJDWXZNNE4xOUpJd0U5cHlTOWRzY1Vnei8yUVUy?= =?utf-8?B?R0NoNDVmWGxsMmQ5SkgwUHg1ZkpWNkM2M1d2amZHS2V3c3U4Z3NOSGdkQ3JD?= =?utf-8?B?VXloY0JvU0M2RDFINmpObXBhTUdVV2grNzdQVzdZZFlQZHE2RFFHaTFVeXJu?= =?utf-8?B?ZlgvbkFPWkNiYWVpZ3UwVHQ3U2FlNlY5SVQ5MzB6VEQ5ckl2S3Z2Q0N4d0hV?= =?utf-8?B?ZEFTV1MwYk9oTy9wRGpmQ1JZejIwQkVSTzFZWGJHMmgyRDlaV1l5Q2YxWTc4?= =?utf-8?B?N0dydmlmbmFZemJRb0NYVEF1QWYxcUhldEJ3Uy9YM2QyQjJiMFF3aTV5M0k0?= =?utf-8?B?UEVDc2JHODB6RFIrUnI2OVAwSlRFTjFubDFuczMwbTF3S09idUhlK2pUYUN6?= =?utf-8?B?alhoR2l4ZlhYNGN4c1p4K21iajNpM2VxQzhKd3dpN2JQQ1lsWStMcWRhUG9D?= =?utf-8?B?YlV5TEpWYmtZZElzS1QvZ3g4eCtac1B4d2VUTGZ3OXBRU1JvSWI5NjJPRWxH?= =?utf-8?B?SkRHdGdSbFRoRkc2WW5KZ3hFVTk5cEp6bmx3R1lha1hNT0tSd3J1bTZ5TUZE?= =?utf-8?B?TEJ5amZsTk1mUGx0aVFkK2NjNjAwbi93bEpDcDhFRGgxMTdGeWdkQ2lpZFcz?= =?utf-8?B?d28xNmM3b3VlL1Awb0prdlRZTkdwWGtRb3pSakRQL0lBdHJDSlgxcHBoTlQ3?= =?utf-8?B?UmthVkdJWTZuWUVERTV0NGtBMmdoT3hHdTdZWUpEYWc1Z3pxZWJTVDN3UjFi?= =?utf-8?B?dGFmTys2dWd3YzRieWZZNitYZ3ljQUdSeGFCNG90UStLT000Q1MxUUZyYTF1?= =?utf-8?B?MUVSbjhqOHNtQ0U1cHZNbnJlOEU2Z1JHR2llTnVhWGFST21HUS9WZVN5WGV3?= =?utf-8?B?MGgydjdCeDFtTUtVRnQvV1FIU2ZpeUR5K0x4bFlwa0dvM3MzbEdwNlVUakpS?= =?utf-8?B?cVRCYUJEdGl2QXAxYjVkU1RnMzdVdUFkS0VxdHB5V2dXbmVrNER4eldURUd0?= =?utf-8?B?WHlpNXBPUzhUTmZ1STh2RkZWTzl5SHJ4aFBZMkRMTXh1Z3RpQWNIY000eUNj?= =?utf-8?B?dzRGWTJrZ0V4K2xKdkQwRHg3ek9DQjZXTmVEVmZjbk10bDAyQVVBczBiaGtr?= =?utf-8?B?TVZXekZFQjE1OXBNRURJTExVSmtmalJTSGtNYTh6bUVkR25RRkl6WkJwRFRB?= =?utf-8?B?czBUVklNMTR4ZVhxWitvUHFKOVZpRGxaNFczRkhNRmZuYjJ1TjQ2ckRMdjVP?= =?utf-8?Q?3YwoHQ1E2mrLKqhkUdJ2zOyVBqdILRqeZDPqIbI=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB1840;6:gQ8RH1Sp8yXHd+WkuchDguL4teSraC47TF56pa/B7d3QWH18Gas5kJtsL6fjt4qRj7JrPQCtqQ1QQ89O4lPtysgJ4ORziuiQjDIl5bEkOrM7g6B24axsl1uelzs1mrLZ7UhSLePK5mqBQskgLCy8PBoBD/toT5zKbXf/GEnDy5639JLfY5C7DZWkVYp+tQmQwCUXgYDQBVkGHw3blRRWATaVnCSu6/1VZ1zHW/+tXmp1FIheu/f1quJxWnkQHj3W1+aDkjbIrMg3zmrDzdGuzFz2gbi8BR66Tb/WoH9e+04JN054MeDg3qQvdW0JNpSAxv1Fy4laghFP5AMaPNYmTQ==;5:bUFMaENijwXZd7hDAiGlONu21mjaHTlzrnoj5QY6Pqb5+s3k6LRDa+x1Smfjn1xlOQTpaGgNgA0fe1mQr4FQDRVLmibEAk2KP6BDQhISfHCPcocb+Q2mfl1WUUDwkuzTVtJnUuJS6uSeHTC3lqf+sg==;24:TEhgU8wwWjxrH0iXwjY/iGjfR9AZWeWo4e8PAcQ0aF9VKYhjIy/sLAsPSovzM3lnBwtZlZRZ9YdLNl3yhgIoCda7v5gp1jQH9QQT6wFg1PE=;7:iJvunHmCAXP9aiM0Qs7RKVzsctGll58etxjQNbHtTdT3d6WYZLzalKhNHfj5MrNwLIPPmLjRMbtKOivcuBydTPwmPr7xFZgc/FAndmzsI1CH7ZkYoKuAHPEp+Uqt1biMZT3VHf2mY8Jv1zrY2Ft7zACPp8vWmCLf3u39ke1X9U7/1WCWOKFwS4w3fs2+i7+rKctSXkLOfQC88c+sH3sbzL+4uv+QTVZq7AUdoxG6nqQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: qt.io X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2017 12:05:13.2972 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0201MB1840 X-IsSubscribed: yes X-SW-Source: 2017-q3/txt/msg00079.txt.bz2 gcc defaults to using struct layouts that follow the native conventions, even if __attribute__((packed)) is given. In order to get the layout we expect, we need to tell gcc to always use the gcc struct layout, at least for packed structs. To do this, we can use the gcc_struct attribute. This is important, not only for porting to windows, but also potentially for other platforms, as the bugs resulting from struct layout differences are rather subtle and hard to find. (I'm reposting this patch, rebased, with extended commit message and ChangeLog entries. v1 apparently slipped through the cracks.) Signed-off-by: Ulf Hermann --- ChangeLog | 5 +++++ backends/ChangeLog | 4 ++++ backends/linux-core-note.c | 2 +- configure.ac | 13 +++++++++++++ lib/ChangeLog | 5 +++++ lib/eu-config.h | 8 ++++++++ libcpu/ChangeLog | 4 ++++ libcpu/memory-access.h | 2 +- libdw/ChangeLog | 4 ++++ libdw/memory-access.h | 2 +- libelf/ChangeLog | 4 ++++ libelf/gelf_xlate.c | 2 +- 12 files changed, 51 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 84fd2555..d2695721 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2017-08-18 Ulf Hermann + + * configure.ac: Check if the compiler supports + __attribute__((gcc_struct)). + 2017-04-27 Ulf Hermann * configure.ac: Check if the compiler supports diff --git a/backends/ChangeLog b/backends/ChangeLog index 79b50ebf..8c3f42c6 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,7 @@ +2017-08-18 Ulf Hermann + + * linux-core-note.c: Use attribute_packed. + 2017-04-27 Ulf Hermann * Makefile.am: Use dso_LDFLAGS. diff --git a/backends/linux-core-note.c b/backends/linux-core-note.c index 67638d70..08282ba4 100644 --- a/backends/linux-core-note.c +++ b/backends/linux-core-note.c @@ -111,7 +111,7 @@ struct EBLHOOK(prstatus) FIELD (INT, pr_fpvalid); } #ifdef ALIGN_PRSTATUS - __attribute__ ((packed, aligned (ALIGN_PRSTATUS))) + attribute_packed __attribute__ ((aligned (ALIGN_PRSTATUS))) #endif ; diff --git a/configure.ac b/configure.ac index c4fc7e3d..25ab19b3 100644 --- a/configure.ac +++ b/configure.ac @@ -143,6 +143,19 @@ if test "$ac_cv_visibility" = "yes"; then [Defined if __attribute__((visibility())) is supported]) fi +AC_CACHE_CHECK([whether gcc supports __attribute__((gcc_struct))], + ac_cv_gcc_struct, [dnl +save_CFLAGS="$CFLAGS" +CFLAGS="$save_CFLAGS -Werror" +AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl +struct test { int x; } __attribute__((gcc_struct)); +])], ac_cv_gcc_struct=yes, ac_cv_gcc_struct=no) +CFLAGS="$save_CFLAGS"]) +if test "$ac_cv_gcc_struct" = "yes"; then + AC_DEFINE([HAVE_GCC_STRUCT], [1], + [Defined if __attribute__((gcc_struct)) is supported]) +fi + AC_CACHE_CHECK([whether gcc supports -fPIC], ac_cv_fpic, [dnl save_CFLAGS="$CFLAGS" CFLAGS="$save_CFLAGS -fPIC -Werror" diff --git a/lib/ChangeLog b/lib/ChangeLog index 23c0f41b..61230453 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,8 @@ +2017-08-18 Ulf Hermann + + * eu-config.h: Define attribute_packed to either + __attribute__((packed)) or __attribute__((packed, gcc_struct)). + 2017-04-27 Ulf Hermann * eu-config.h: Define attribute_hidden to be empty if the compiler diff --git a/lib/eu-config.h b/lib/eu-config.h index 07098282..135803e7 100644 --- a/lib/eu-config.h +++ b/lib/eu-config.h @@ -75,6 +75,14 @@ #define attribute_hidden /* empty */ #endif +#ifdef HAVE_GCC_STRUCT +#define attribute_packed \ + __attribute__ ((packed, gcc_struct)) +#else +#define attribute_packed \ + __attribute__ ((packed)) +#endif + /* Define ALLOW_UNALIGNED if the architecture allows operations on unaligned memory locations. */ #define SANITIZE_UNDEFINED 1 diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog index 173defe6..c710e5af 100644 --- a/libcpu/ChangeLog +++ b/libcpu/ChangeLog @@ -1,3 +1,7 @@ +2017-08-18 Ulf Hermann + + * memory-access.h: Use attribute_packed. + 2017-02-27 Ulf Hermann * Makefile.am: Use fpic_CFLAGS. diff --git a/libcpu/memory-access.h b/libcpu/memory-access.h index 44210e2f..779825fa 100644 --- a/libcpu/memory-access.h +++ b/libcpu/memory-access.h @@ -90,7 +90,7 @@ union unaligned int16_t s2; int32_t s4; int64_t s8; - } __attribute__ ((packed)); + } attribute_packed; static inline uint16_t read_2ubyte_unaligned (const void *p) diff --git a/libdw/ChangeLog b/libdw/ChangeLog index c13344af..94e9c9ab 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,7 @@ +2017-08-18 Ulf Hermann + + * memory-access.h: Use attribute_packed. + 2017-02-27 Ulf Hermann * libdwP.h: Use attribute_hidden. diff --git a/libdw/memory-access.h b/libdw/memory-access.h index a749b5a9..afb651fc 100644 --- a/libdw/memory-access.h +++ b/libdw/memory-access.h @@ -170,7 +170,7 @@ union unaligned int16_t s2; int32_t s4; int64_t s8; - } __attribute__ ((packed)); + } attribute_packed; # define read_2ubyte_unaligned(Dbg, Addr) \ read_2ubyte_unaligned_1 ((Dbg)->other_byte_order, (Addr)) diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 9793d068..7bd9e1bc 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,7 @@ +2017-08-18 Ulf Hermann + + * gelf_xlate.c: Use attribute_packed. + 2017-04-27 Ulf Hermann * libelfP.h: Use attribute_hidden. diff --git a/libelf/gelf_xlate.c b/libelf/gelf_xlate.c index f3d3b7a0..479f1436 100644 --- a/libelf/gelf_xlate.c +++ b/libelf/gelf_xlate.c @@ -74,7 +74,7 @@ union unaligned uint16_t u16; uint32_t u32; uint64_t u64; - } __attribute__ ((packed)); + } attribute_packed; #define FETCH(Bits, ptr) (((const union unaligned *) ptr)->u##Bits) #define STORE(Bits, ptr, val) (((union unaligned *) ptr)->u##Bits = val) -- 2.11.0