From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 123153 invoked by alias); 20 Apr 2017 13:55:59 -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 123103 invoked by uid 89); 20 Apr 2017 13:55:57 -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.1 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.1 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-DB5-obe.outbound.protection.outlook.com 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=WUiNSeewZX1wDgCUF0+4wShfVapgedlZlpoyvo+HgNo=; b=imEB/lFGvxx0OYEgZLoyIrsIexVOsLQP2ibsLJHfmrXQscX0i/4YU3ucF7aggXf0LQd7eql95XpufHfsR9liJU8eXyZNHxtMFzYWsMiwhq3N1eV89wuLxaqcrCiM0Hrw4NcgIw/zyoarxr3fM12moPzaZqTl0bFbPN5ShbonvRU= Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=qt.io; From: Ulf Hermann Subject: [PATCH] Make __attribute__ conditional in all installed headers To: Message-ID: <86b22af7-30e4-c454-3b09-68499e03157e@qt.io> Date: Thu, 20 Apr 2017 13:55:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.6.0 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [62.220.2.194] X-ClientProxiedBy: AM5PR0502CA0015.eurprd05.prod.outlook.com (10.175.37.153) To VI1PR0201MB1872.eurprd02.prod.outlook.com (10.167.206.150) X-MS-Office365-Filtering-Correlation-Id: 09ad35dc-8df6-4b61-8d58-08d487f4f58c X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:VI1PR0201MB1872; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB1872;3:8HfhhPa7Ul8Dv6UzAlMHQxwFtBXPClBuIcFPFKV/8puTffpUbKgGCKjACnxugIixqf7enVVrFLOqkFhvIYFDg0MImlxiHzy12/Dh1w3hGCHRpCW2QEUgYKOVURSvewRBu+IuWV9FB/zLI47pR12QRszEntD+9cx/0QZ1v0whVYpXQk3pq+hGtMZHuYaDr/VWlOBv+PUTYWNPg5qU/WwS176kjqQm874ZFui89uirK4umjlu9LaO9duJSwn/dXw2gzzHY2uQp9EG+WT/pMsCVDxxikyHyWkfIbMEdY/RzK4drHvEFoJxu4+lpPoRt8cHNmZs9Lp0uo1EOA3yc7LqxjQ==;25:gFD7i4zOt3iQU8zpecx1NfgZ7zqWICu15tUbAh80TVb08OQ0DenaRSDxRte5zITlp/smJdBHr45trsQbZuKzBbndyz6KlC/zSML3lYT1u3t2JiUljgurJADPXz49xUPSuAA5KF7VJPVSWK9zTtAY+g3MTtej6tUB2TgyNkyS41jSyfFc9Wh6JZ0w+nCGgTQvyMO5Sq+lt6kyCUqPOR7E13+wM4GHfKchSGsrpMNgC0IH+VnIO8LBr1tbJrDfn+LrxaY6029DXr09Vq/TfUtWA9j8JzTesFk3MX8F13zLaSJPyjYwzTjLy4UQpQP5zB82JdtEg5MIU+xnF6ySehfmdNiJ2NCSnCj0uYeYD9rmiXs1lPDKrc7waPeTSzhgo8DJ+zfi7QLu1i3wKjsU/5FgIUaDmEOcETMcWnxi6BrRr7EiwDuRqZj/zs8recLswq+WpyaOZ77iLb8PWXtjGbRvMA== X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB1872;31:ZeIutLroOZKjr6br7b58ccFnyNlh2t/XAIsoV8f9mO8JUlKFh88tKM0pLDohNthxO5RyvCl5maV18QD1I2l+jvskZzdPsvlFV/YIF9p84Rj+bb3pOrHxzxhGMGvR5ETpBZVm930I6vV2gL4ecoV4hHxhrEMiunVqA5yb8wsuAy2BOYi9h4tJReodEovNkmv8IcOoGtJz7DAlAQA2GYz85cLfTAtSmtvFPER8tB6IqGacV7Prh7KEOSMHuwttXSmAtktnS4ls4spokUN1hfqqoQ==;20:Zp2drRjWsJELcUq2QJKBCnlKacirDbvKUgnmIfPhyHF9YgC1TOUwjoQD1/3uIUqGILZtEhNi8GlzNfQNnTsfZmyD3mPtmNuSb1aOCuXBjtGEwxyTrdCi2blbVhQySJYcfvFYTtLvodynN2im0PiOxExkV01bRtDsZZLHNxXmQv4tS3+1Vqv6tCq2Ig01hAGm6HvEVr/+L9CKLfl0vIs0TVg+WuiljCzD89rDuGSSrmXlKpE1YP0UGBMIzo6zOZBK X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(6041248)(20161123560025)(20161123555025)(20161123564025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(6072148);SRVR:VI1PR0201MB1872;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0201MB1872; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB1872;4:SC1Yb+yjwo3lfXA/nZcWp01417uzHacg6gssLTFOqlK+8iXcoSh3fxKIYJJhjlDyUAgyHZfanWqUgJKMMiCKGZY5QszxVBTcJcPy9fmxIk+r7hqX5g0YKUlukOlClbcS9nOt9Rtm50BpCPT9+JNqmv4MPdOkt1D3vLFYSEDgnJ3m/XbEvy35WIOgEC/do+C2m5fCqDfTbw/j59m2W5BYGAw44ImjlR2jnyXtfz54vyaVcQjhCCu7BEqkSaGArfCXBq5Mg7VTBY7kcPaGCGNdoTqJ5YBkZmRcWiOZKlgRaFXooujkVlJBSZPjtx8QVXmYu80cJ9UdsiXa5yyVJJuvOul5BmbKEFX0hDb811egtEHsEUcOHDn+EjBNPu9idp4ZNK4Aodg+g/Saw8jAdMJLYtIwOecQJqDgxdeFHC/dCJyVy1IQIDLJwgnO1Jaewb33hGLANz8iiafkuCfR8+094H415FKYu5o3ApBj3RpRmDErf9dqa47Ly90DDMJ5EUaojdW4Gvn4IcWHn90yK8n73pjB3P2WeGFP8knPAMYvFkXrYdsAar0h9GZWiWanyiSgh7o/gyms6TLQqXJbwj7iOjfrOxmo72EdwSfU6eOOudfZ48zHbw1UXVWI+HggxZSB6cWAHKnKiclM2duXEnJJise+o0Hyp8NcZO/dxMGEPSuzf12i0oO6LuAHCvXHJwzGLsqvrqkS6zvNiIEdhrmmHQ== X-Forefront-PRVS: 02830F0362 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(39450400003)(39410400002)(39830400002)(39400400002)(377424004)(25786009)(230700001)(38730400002)(110136004)(305945005)(66066001)(50466002)(3846002)(6116002)(7736002)(2351001)(23676002)(54356999)(50986999)(42186005)(5660300001)(47776003)(189998001)(83506001)(36756003)(8676002)(81166006)(4001350100001)(31686004)(33646002)(74482002)(31696002)(53936002)(575784001)(6666003)(6916009)(2906002)(86362001)(77096006)(6486002)(90366009);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0201MB1872;H:[10.9.78.56];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjAyMDFNQjE4NzI7MjM6bElvTi85VWtCZlhVVWcvTHVBUXJYeFkx?= =?utf-8?B?QWhQWVIvV0tWVkwxbTc2aEMrZHErdnJnOEF6VGw2U0pxNEt5VzNvS3VYZ1J1?= =?utf-8?B?bVdpYzVZak1IRUVQRUNJU1ZiOWhZVFdzZjkzdVdYTVhYYnIzVGVrVWdmeHBI?= =?utf-8?B?aTVFRy9taTRYSk4wYVlMcXN1YldZaVdtMjJ6aXl3MGZkZkhYZ1pZNlgyVTho?= =?utf-8?B?NlZWclNSTHZTYjNpaUlqOFQxRlMyK0lseUg4TUhlWFhXZkRtbWFKcVBhVFhQ?= =?utf-8?B?Z1VHR3A1UCsrMFdtWTMzRzA3Q3FpaXNEZFdNL21kVENPbjFGT2pvb0xySWhn?= =?utf-8?B?UUZmZ2JSNlhia3gyYVh5WXowdFgzRFAzQVpCTUVyRE5mcElMM0ZBd0FDNzR2?= =?utf-8?B?K0xtWW1LWENlZ2JPVXVXYnFqSEJENnlRd3d6QVB5YnluQTZXVnh5YnZseUlW?= =?utf-8?B?YVgrckxwSlJjSmFWdDd5NjIxVlkzNVRhWGplWGhsdWJTZkl2NnAyZnZxMU9O?= =?utf-8?B?SUdUYzFtUkNvQkN4d2plR1U0VXJPcGNINlhZaEdGOFNzS1A2NTZBUUE0ZDhs?= =?utf-8?B?WmJ5aXMvVEE0cXNtR3RUUGRJVEkyR0lMYlN1d1pzQmd6SU1VRGswQXNSOG1o?= =?utf-8?B?SWk2cEZ2ZStKb2tMYU9aMFlCZGJZV25rU0p3cjlxdTh5KytIRkdCSDB3cXpL?= =?utf-8?B?U2RRSUs1aGhVdENqa3BMSTNZTE1VMUR1ZEkxdGpBRzVtZE5YNGg1Mm9IYTVJ?= =?utf-8?B?R2NxSVByOWpDdHEzb1o0aWlDbVVDc2F2MU5PSlpZUm5selVFYVVINmJVeTRR?= =?utf-8?B?NlBLNUJiNm8yRXUvWjFiVHpJOGQzbWtnSCtzZ05JbzMyajBNV2JXeEV5K2Qw?= =?utf-8?B?STJGeXlmRFc0UVk3M1lBZTZzdWlwNko1ZVQ1eHRqeHM3T0Q3RFdHWTRZUERX?= =?utf-8?B?c3NFYWVvOGowbXNlWGxCSG5jaUdlakJZM0h1OUw1SUhTdko4azZ2cUFtUjcv?= =?utf-8?B?REhQTEJqdjZGRVVQaGdRN2dJZndRTmQrYzd0cUJhenhxbnQvSFRrc3g4VDE5?= =?utf-8?B?c0NsditKMk5WMmgwQmprNkR5a1R5bkZGakJWYXhGNkk0WWdEeEkraVFZTVdq?= =?utf-8?B?T2V0bnBCbkVqeGd4VFJObTROc3NqbkVhNWV3VFh2WmtINHRMN05XOFhIWHB2?= =?utf-8?B?ZWpYNkRRUFBJQm10aTJRSFVqdVBjWFAxMHpJVzcxK3Bjc0tiSXhrSzRPdWpH?= =?utf-8?B?ZFNtUDNIODk4OERiVlRYTW4rRkI3T2Nna092djlhMW4rdFJMY2ZRUXlldjAx?= =?utf-8?B?ZGV3WFJqSlBvUkdKdDE5cmpDa1dqUU45YVUzeVZnaUMxR0daK1kxZ1F0YmpG?= =?utf-8?B?SkN6QkRBNWFESXVtUTZvVis5aE5jVGFnUS9oU3NrMnBjLzQ2M0RsT2ZRbzI0?= =?utf-8?B?RE1Yb2ZTQXBOUGU1amo4Nm90U3hua0tuSkJTNkZINVhEalFsd0N1TUFDdFVn?= =?utf-8?Q?/KsTD06jC/fn//9TCvl25v8UVJc=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB1872;6:5tca5SDj32/s/CBFbcDQ31W03MbHBW95CotAm3yXTOB9SRXly5D9UNJcjpiZmhoaIACKdeDHeYQlTxM4RC2wfaWhjOCJhhleGAi/48UmAkcz+8aIILF8dM3K4Ld2aWob+OIKizv2QfPwFNO1bsPKHvfK55cwPhCvVIF/m0sU+Nv2qgvywpxA7Q3YelDGBl9UaZhKyd71FpCWJ4fAgxDYcJ1wcHewD3hN6QUQWjWQKtDZQM1jsD1gIhHsqiq+4NeAvPWxMv4ULRgG24ezos3UTUWOI+VCBY/8stT/gZFieZSg+NBDetdj4G7C/mgkdcjLYk2Bnm1Cvfrx6G2uOgK0bN9V3XRi6qsvMHZGKOc6i9RB2QtyucjP1E5hvh+eYLURfpc5tkZY5HZDm8tB5qq0AyFI8+XcO26gX89KhypRm21wpbrlGjDp7f7lau5ELen7gfQa/uDk/Ad4hjq1laYXy8HUBDw/qLQ//xJ9v9EKBEXs1eYbepAp4kLB5IUYM9/to/RAikNKsoDSYNoZynfSEQ==;5:xl8PnEvsne2mQRe77/83MxdyRJUDCQVO6xd9wRd3v1UBQzm1zVr/eLO006o3aLb81dTUF3gGGBv28vRqdOujjKHx2OELK+YVnfSNWhUhGyT9c60CczPGEZhhu0RVP0UhJaFXCxsjUU/AHVtDNG3uZQ==;24:OgAL2+0Fdt3kTbxDsBulySk4RhpH6y5E/giRK52S+d+bvG394gys72t4XzbOnoG5U90Qb3io4Dtv0XS9qyU7qt5zIns1/Vo6yJTn+2cHNi4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB1872;7:goeUD4ZpXb7uYP9weATSkA2yyKKDW2xy9AyP+1/i3KGtQ4D3cvEsC+6l3x1V9Sle1BnNuwsSWOMYBrNGqVrvXz5fkLT5WrRD+yfNt0Ma11vviYId/9/aGllrFpv9PX4OrZkHyszP5yvd2GjVwmRmMBgY64jvMyCglEa2LTMKg/c55PmXuIIT2lOtYoTCbhantlVEAVGBtLbVXbpZijWZxSyli9V9/3exAbZ4d2M7QQKwxp14mA+e8yKTZhgvcgvh+LE8G5AwLwTc28vuAzrZ2noP0bporWq+7n0FoNA9S8ZGCInbKEZkMjf9+VfTi+A914fEDcoRwpmt9w3NgnJGiw== X-OriginatorOrg: qt.io X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2017 13:55:52.6230 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0201MB1872 X-SW-Source: 2017-q2/txt/msg00055.txt.bz2 __attribute__ is a GNU extension. If we want to link against the libraries using a different compiler, it needs to be disabled. It was already disabled in libdw.h, and this patch extends this to the other headers. We move the defines to libelf.h as that is included in all the others. Signed-off-by: Ulf Hermann --- libdw/ChangeLog | 5 +++++ libdw/libdw.h | 23 +---------------------- libdwfl/ChangeLog | 4 ++++ libdwfl/libdwfl.h | 2 +- libebl/ChangeLog | 4 ++++ libebl/libebl.h | 6 +++--- libelf/ChangeLog | 5 +++++ libelf/libelf.h | 38 +++++++++++++++++++++++++++++++------- 8 files changed, 54 insertions(+), 33 deletions(-) diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 3f63a17..c9ae664 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,8 @@ +2017-04-20 Ulf Hermann + + * libdw.h: Remove attribute macro declarations and use + __noreturn_attribute__ as defined in libelf.h. + 2017-03-30 Mark Wielaard * dwarf_peel_type.c (dwarf_peel_type): Call dwarf_attr_integrate on diff --git a/libdw/libdw.h b/libdw/libdw.h index 473e1a2..9ae80eb 100644 --- a/libdw/libdw.h +++ b/libdw/libdw.h @@ -34,23 +34,6 @@ #include #include - -#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) -# define __nonnull_attribute__(...) __attribute__ ((__nonnull__ (__VA_ARGS__))) -# define __deprecated_attribute__ __attribute__ ((__deprecated__)) -#else -# define __nonnull_attribute__(args...) -# define __deprecated_attribute__ -#endif - - -#ifdef __GNUC_STDC_INLINE__ -# define __libdw_extern_inline extern __inline __attribute__ ((__gnu_inline__)) -#else -# define __libdw_extern_inline extern __inline -#endif - - /* Mode for the session. */ typedef enum { @@ -242,11 +225,7 @@ typedef struct Dwarf Dwarf; /* Out-Of-Memory handler. */ -#if __GNUC__ < 4 -typedef void (*Dwarf_OOM) (void); -#else -typedef void (*__attribute__ ((noreturn)) Dwarf_OOM) (void); -#endif +typedef void (*__noreturn_attribute__ Dwarf_OOM) (void); #ifdef __cplusplus diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 705b93d..0a572ad 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,3 +1,7 @@ +2017-04-20 Ulf Hermann + + * libdwfl.h: Use __const_attribute__. + 2017-04-20 Ulf Hermann * dwfl_frame.c: Drop unused sys/ptrace.h include. diff --git a/libdwfl/libdwfl.h b/libdwfl/libdwfl.h index aea8b99..a0c1d35 100644 --- a/libdwfl/libdwfl.h +++ b/libdwfl/libdwfl.h @@ -385,7 +385,7 @@ extern int dwfl_linux_proc_find_elf (Dwfl_Module *mod, void **userdata, /* Standard argument parsing for using a standard callback set. */ struct argp; -extern const struct argp *dwfl_standard_argp (void) __attribute__ ((const)); +extern const struct argp *dwfl_standard_argp (void) __const_attribute__; /*** Relocation of addresses from Dwfl ***/ diff --git a/libebl/ChangeLog b/libebl/ChangeLog index 719d08d..506915b 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,3 +1,7 @@ +2017-04-20 Ulf Hermann + + * libebl.h: Use __pure_attribute__. + 2017-02-15 Ulf Hermann * eblmachineflagname.c: Include system.h. diff --git a/libebl/libebl.h b/libebl/libebl.h index c8e01fe..87896e4 100644 --- a/libebl/libebl.h +++ b/libebl/libebl.h @@ -73,13 +73,13 @@ extern void ebl_closebackend (Ebl *bh); /* Information about the descriptor. */ /* Get ELF machine. */ -extern int ebl_get_elfmachine (Ebl *ebl) __attribute__ ((__pure__)); +extern int ebl_get_elfmachine (Ebl *ebl) __pure_attribute__; /* Get ELF class. */ -extern int ebl_get_elfclass (Ebl *ebl) __attribute__ ((__pure__)); +extern int ebl_get_elfclass (Ebl *ebl) __pure_attribute__; /* Get ELF data encoding. */ -extern int ebl_get_elfdata (Ebl *ebl) __attribute__ ((__pure__)); +extern int ebl_get_elfdata (Ebl *ebl) __pure_attribute__; /* Function to call the callback functions including default ELF diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 23a4fb9..23cd942 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,8 @@ +2017-04-20 Ulf Hermann + + * libelf.h: Define macros for various function attributes and use + them. + 2017-03-27 Mark Wielaard * elf32_updatefile.c (updatemmap): Always update last_positition. diff --git a/libelf/libelf.h b/libelf/libelf.h index c0d6389..547c0f5 100644 --- a/libelf/libelf.h +++ b/libelf/libelf.h @@ -64,6 +64,30 @@ #define ELFCOMPRESS_HIPROC 0x7fffffff /* End of processor-specific. */ #endif +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) +# define __nonnull_attribute__(...) __attribute__ ((__nonnull__ (__VA_ARGS__))) +# define __deprecated_attribute__ __attribute__ ((__deprecated__)) +# define __pure_attribute__ __attribute__ ((__pure__)) +# define __const_attribute__ __attribute__ ((__const__)) +#else +# define __nonnull_attribute__(...) +# define __deprecated_attribute__ +# define __pure_attribute__ +# define __const_attribute__ +#endif + +#if __GNUC__ < 4 +#define __noreturn_attribute__ +#else +#define __noreturn_attribute__ __attribute__ ((noreturn)) +#endif + +#ifdef __GNUC_STDC_INLINE__ +# define __libdw_extern_inline extern __inline __attribute__ ((__gnu_inline__)) +#else +# define __libdw_extern_inline extern __inline +#endif + /* Known translation types. */ typedef enum { @@ -216,7 +240,7 @@ extern int elf_end (Elf *__elf); extern int64_t elf_update (Elf *__elf, Elf_Cmd __cmd); /* Determine what kind of file is associated with ELF. */ -extern Elf_Kind elf_kind (Elf *__elf) __attribute__ ((__pure__)); +extern Elf_Kind elf_kind (Elf *__elf) __pure_attribute__; /* Get the base offset for an object file. */ extern int64_t elf_getbase (Elf *__elf); @@ -282,7 +306,7 @@ extern int elf_getshdrnum (Elf *__elf, size_t *__dst); It was agreed to make the same functionality available under a different name and obsolete the old name. */ extern int elf_getshnum (Elf *__elf, size_t *__dst) - __attribute__ ((__deprecated__)); + __deprecated_attribute__; /* Get the section index of the section header string table in the ELF @@ -294,7 +318,7 @@ extern int elf_getshdrstrndx (Elf *__elf, size_t *__dst); It was agreed to make the same functionality available under a different name and obsolete the old name. */ extern int elf_getshstrndx (Elf *__elf, size_t *__dst) - __attribute__ ((__deprecated__)); + __deprecated_attribute__; /* Retrieve section header of ELFCLASS32 binary. */ @@ -429,11 +453,11 @@ extern char *elf_rawfile (Elf *__elf, size_t *__nbytes); The result is based on version VERSION of the ELF standard. */ extern size_t elf32_fsize (Elf_Type __type, size_t __count, unsigned int __version) - __attribute__ ((__const__)); + __const_attribute__; /* Similar but this time the binary calls is ELFCLASS64. */ extern size_t elf64_fsize (Elf_Type __type, size_t __count, unsigned int __version) - __attribute__ ((__const__)); + __const_attribute__; /* Convert data structure from the representation in the file represented @@ -472,11 +496,11 @@ extern void elf_fill (int __fill); /* Compute hash value. */ extern unsigned long int elf_hash (const char *__string) - __attribute__ ((__pure__)); + __pure_attribute__; /* Compute hash value using the GNU-specific hash function. */ extern unsigned long int elf_gnu_hash (const char *__string) - __attribute__ ((__pure__)); + __pure_attribute__; /* Compute simple checksum from permanent parts of the ELF file. */ -- 2.1.4