From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 128323 invoked by alias); 11 Sep 2017 09:11:53 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 128309 invoked by uid 89); 11 Sep 2017 09:11:51 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.6 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-HELO: EUR01-HE1-obe.outbound.protection.outlook.com Message-ID: <59B65347.503@arm.com> Date: Mon, 11 Sep 2017 09:11:00 -0000 From: Szabolcs Nagy User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: wangboshi , libc-alpha@sourceware.org CC: nd@arm.com Subject: Re: [RFC][PATCH] AArch64: use movz/movk instead of literal pools in start.S References: In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: HE1PR0301CA0015.eurprd03.prod.outlook.com (2603:10a6:3:76::25) To VI1PR0802MB2494.eurprd08.prod.outlook.com (2603:10a6:800:b6::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 278f5d48-5642-45eb-617c-08d4f8f51d3b X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:VI1PR0802MB2494; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2494;3:ctxc2FWbzvNlZieemIKjWGrZYWX4us4WTa+6A92hyq6KLibR70RYGWbx5M2rA+W7/TVMcmvKalWF5g/P5s4Dz5XNGUEE2vhS4pT+Ta+G6v0qgIZSyZXRR/jIh9HcjUKl+oUmcFsBQQ5UYk4UOj6LnDytt/wqAY8NWl70oAYH6/z1wr+v9nU+1TDPEZpJYADHUTB7docsO1G8kA1L3X9hdKt01B7pDKpX3tjDuVycTPayMlaOZSVma6/4hsl7xgtf;25:6OqqPcsrDSmyvlVPT1ZkIfStAa/dTI8mL85faZzog+YxiTGh/5VC1C7zWbdoZmAvclDYfa+q/t0U2hZkqsSnEZTynpwfIsN82SKXfH5lxZXDhm1t8PDQ/3InPl6pGU0onTMhSgZk3D/UkY1yKHudQgOX/OjhZBqir9lz8lzuo7OWCfr70BgCnEUMCck1eRoJU3ekWfszyY79NYwgunCt8BzPmwGMgAPTG+IVddo/7fC7MD+piUcLxu2sSsdi77WQe1nAsl3C6AlCs46ImzUcRmgn8hukk66y/n2+77Q6jTNfxd4C7gmrbRLdpFzGL/c0pgxxS2OQ5TCJS27vrfPiJg==;31:+zDww2jQWgPB61pXPm3CA1l3hdu9Jj3MZG0HenpymfxVJYjTE/ey9PlpSC3YTQzUO8YQXhoPO5o4qsHWUxsvItsN2xPHa0Dyg8pjrksIMHP6r+OtAFGNohflFMbfg6qitxjfeeNV41rzsxB1UDFvmPqCC6DOWSPb7QdDH/VrL84P9D67CnBxBiySY8ew7qbUDZBB6yOCMG8Mh95ygeBzSkoJXaQFa0qsIZMVcx3cHgI= X-MS-TrafficTypeDiagnostic: VI1PR0802MB2494: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Szabolcs.Nagy@arm.com; NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2494;20:xO/ZebyWha/mBMgkmRdVicJG1/DmAkB1ffedKGCkRjzT5ygc1AUxHAxnwWuHA7SEMUd2Is+lUZMw1iVXuZQ8uHjHIOo/HoBqzbWmWgr3kPVgHVSxeSMB44eN9/pPYV0lLp83IZ8PQkTBHF6w/LRL1fv7F6zq2f8JIr6WyLN5Fg0=;4:gVh4P7pnX+5tVbE6SgwNKKq2zHGdCKjMqPgdsIPnTfDVuTo9mzGWRiDtNppsgOPYAnTSVMV4qR4toHW/ibgj/Vqjxh5Hk2bNgdXwfCsECqDltMcNodwEmFwwZMijVrSiBATyGHu7mwIaQIHwwOocAOqDCSS9yJxViriu/+fPAco3+0UcprFHJBi2KrzOU8Oo2GEmutPZEm7s3ML7yNUtA4vjfKK5zjJIrTT95ZBFNj0vZZOyWSTrhHwyb+wj1cMzeLjhHanGmarbmuOk3BVA6ohx6lX9pP7EFvFZJy3uG1M= X-Exchange-Antispam-Report-Test: UriScan:(50582790962513); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(10201501046)(100000703101)(100105400095)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123555025)(20161123560025)(20161123558100)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:VI1PR0802MB2494;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:VI1PR0802MB2494; X-Forefront-PRVS: 04270EF89C X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(7370300001)(4630300001)(6049001)(6009001)(39860400002)(24454002)(199003)(189002)(377424004)(64126003)(33656002)(4001350100001)(50466002)(6246003)(101416001)(230700001)(2950100002)(97736004)(7350300001)(6486002)(77096006)(229853002)(110136004)(2906002)(53936002)(478600001)(72206003)(53546010)(83506001)(6666003)(36756003)(305945005)(189998001)(3846002)(6116002)(65816999)(50986999)(5660300001)(81166006)(42186005)(81156014)(76176999)(54356999)(105586002)(106356001)(7736002)(23676002)(47776003)(68736007)(65806001)(65956001)(66066001)(4326008)(86362001)(8676002)(25786009);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0802MB2494;H:[10.2.206.69];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjA4MDJNQjI0OTQ7MjM6Y3dqTWtGR1lTQnJVeGZDNWZhNXRibi8z?= =?utf-8?B?WG5nVWZLUUFlZ0ZBdUJISDhpNjY1dXdrc1U5cHAyS29MczdCSzVRdGlNbDVJ?= =?utf-8?B?UWdIN3pwL09JZENJU3NiMTU3dkV3akx2UWJBRGxvRzZLblZTLzByRVd2T0Rs?= =?utf-8?B?ak43Tm9hTzFQSHhhWDAwWXZIcTEyakFGZnoyYmE2WnAvNHliTXpYRjJBcnls?= =?utf-8?B?d0xNTjBDdmV0S25uVFNmYTgwMElSYXo2cm1wSmpvVldHZitqNmVzVXRIUWFS?= =?utf-8?B?b0cvbUNBVVFKcms1OEVzVUxEaEVhcVkwUUZwT3ZKU2xXcVhjTmJKTTRhdm1y?= =?utf-8?B?WWNEZ1NhL2d2VUVYMGVGaTA5M0ptRXd3OFhPKzRrdUhaVUNEN24xQmVuYUZK?= =?utf-8?B?QW9BV1Y1TUlQTEkwQ25FajJuQkFGQlRFc1d6WldCVzFLUm9LS1lDVHIwT1Fv?= =?utf-8?B?RVBnMHhDeDhnVTYvOEh5T1UweDhqUUpMOUlwaHNyQ2FWa1FIOGFhWFFNbFRX?= =?utf-8?B?T2E3VGhpNEl5ZS9UMForWkJOYk16dHltb1g5OU5CK1Z5blFSYVB4RGZsQzRX?= =?utf-8?B?Q25YVWZ5djFSSldHZUY4M3NSdWU0SzhaQldUM2lkTmNwaUd4UGgxY1hIWnh6?= =?utf-8?B?Ry9BR3Vaa0lpQm5HeGp0cVUvOEo5ei9JZGdVSVZSRlliNmtWcGhXQ3dlSUhl?= =?utf-8?B?RnhaMWx1LzM0SXljMUJnRVBtejhqRXlTMFRXMkFCVFYzeU9EcWRFUVBnQS94?= =?utf-8?B?QitUamt5Z1p2WFpUZTRGL0Z4UE53UFRCcndHOGtnTVFGTndGOXNEdDVsaUp0?= =?utf-8?B?bnhIbTVTZEkvdm1CTzJnaThOMkhlWGJTOVNpZ04rZEVTUWp2dmIvb1VDMC9X?= =?utf-8?B?VmZva1diNlFNQWVXZEFzZ0RENjZ5eVhrSFFzMnhoYU1UL21ydXFFcklwWGM3?= =?utf-8?B?SHdENUErdkpKT3BXSEV1VVlZZ1B5dGNlbDFEVkw0ZnpKUDE2Tld2V3Z3K2dl?= =?utf-8?B?OXpyZmZJbEszWklBSTVXSy9FeWpyei9vQ3BzZ3kxSlpRSnZIWUtrQzdHY0pn?= =?utf-8?B?Q1ZydVhvU0gvZ0cwc095NFAxam56T1lORUQ5RG5zQ1VKc0dtbEQ2NVpOcmhj?= =?utf-8?B?ZU01NmRlWFBRSE1YOUxKVmxNUDd1bWJ5eVVsZlhtRjdGd0Q1S3g5RzFQVFNM?= =?utf-8?B?MlhlQUMzZFZXVHhhVVdaaHVFWjJ2ZGtlZDEzZ0hxanhCVjBicTNWVkd1SUkv?= =?utf-8?B?Ylk3VjVuSDFDZnk5RzRTOE1wYWsxUkw1TWxTT0R1dHFVaS8yK29xQnpWTk9n?= =?utf-8?B?T25OZmZNV0U4RXNidE9LbW1vNVNMQ09xMHhpaHBwbWEyaklPT2VaaHJpUVNy?= =?utf-8?B?RkJTblVqVWVJcytnOTl0eDFyRzA0OVkrcXNvSExOQ05NSEdBTm14b3hXYlRa?= =?utf-8?B?WkZaOFp6Ty9hMXZnOVhhQllkWWlhMndlaHJ5dFBLSlRGZjJPeU9QSWI5ZGsr?= =?utf-8?B?T2JsWUNDTGVlUDlLLy9QNmtUem0rV3F5cHBTdWJhd3BlUTZ5OSswOElOVUhi?= =?utf-8?B?WXRKSzVBTW1EcUZzL3lPdHBNdzJ1L2RGV01ZQmFjM0ZPS0ZwUENKOFFZQThm?= =?utf-8?B?UkozMmJIY3BHaS9lTkRJdXRYd3hjM0h5dFNYelJNTlp4SkloVHFvb0c2VHZ5?= =?utf-8?B?bVM3ckYvUDZsamtERUdNSmEwcjdWNlhNUDFjWlEwV0tKRUFIQ3lpRkZkcXhk?= =?utf-8?B?OHlLbFRTUGhGS1RSVVZKVzhzRCtoMDVINmlFU01sdmloSGY2eVV2eDRLWVFk?= =?utf-8?B?c0lnRE92OWtuME5QVUZoUkliU1dWNTRsRExhaEJLU3VMdWNhUT09?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2494;6:x3iMfL+GrZiFRFJcJJyuOM02r9ao8Hv+C/OYE5Z1S1TdV2UhnDvBCmQNACQy7xaSScFWlbnaIR3Ll2PdtVhNQMc6wOsDInUN74Qxxja/+mEXuX5WlwE34f7Zomfn+VJMhvYr4gUpFQvOoZLaE5nq+0CMt68WWLk8xWyvEIHGFYhtTvd/xwMXYyThclKAph1czjqDCdpLmxIc+s6Cd1tS+7/+YxQyObGrey6flnPOWdfbPvScwFuumY1GZeicJ/ee3ShLjHqlnaHV/lfIBhSPod/y8+WmuLPY2Rno+7W6XtNi70glm9807SCJXvS3YeoEYRU1m0hAt2NHZE4o9km/bA==;5:AEqa89jvJafrHqvzOfd57qDptre+Zt9lCw3H+uM46UzS/o7mKga/DnCwMsufyEwE8nijJB3RnfSNVjJGb9KYwV5U8ljsPRFEyYrh+rpMZmbtNOAZuEpLbV1iHCULWbUDCfPTF9AVEdyXOx14VZqEyA==;24:lMkhNC3F3BZTXwuqaEgN6HJtQJYStgD7gYwoC2479/XOl8q46atbWclIZ+OhdtjpmqutXrN9fRDYVQbh2d+mbvtPqcd3c68lMhO+7P6LJmw=;7:4JqMKTb9jBRbm8b6m2bMKluLSNJ7gPRiYufpfywlqWWHZgVmdFH/XdWuHkx1bKscvFuyzUN3olxyma4acuxJDRLEZqe419seVtiAiDy3DvnN5erGLbWFhcXntJD+4NUNbl4c8puObR3sLzEAvybiDwPjAStAqEIJ8tq/03ZxF0X2ryjtYMqkuyhHu/zm4MDsd5Jg7ja1QJFvSmjf/N23lHBwYZoqfsdgIqk+6fy7U7k= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2017 09:11:39.9064 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2494 X-SW-Source: 2017-09/txt/msg00439.txt.bz2 On 07/09/17 08:33, wangboshi wrote: > eXecute-Only Memory (XOM) is a protection mechanism against some ROP attacks. XOM sets the code as executable > and unreadable, so the access to any data, like literal pools, in the code section causes the fault with XOM. > The compiler can disable literal pools for C source files, but not for assembly files, so I use movz/movk > instead of literal pools in start.S for XOM. > > I add MOVL macro with movz/movk instructions like movl pseudo-instruction in armasm, and use the macro instead > of literal pools. > > > 2017-09-07 Wang Boshi > > * sysdeps/aarch64/start.S: Use MOVL instead of literal pools. > * sysdeps/aarch64/sysdep.h (MOVL): Add MOVL macro. > thanks, the patch looks good to me (except for a nit below), do you have copyright assignment? do you have commit rights to the glibc repo? > diff --git a/sysdeps/aarch64/start.S b/sysdeps/aarch64/start.S > index df1c642..51e8e82 100644 > --- a/sysdeps/aarch64/start.S > +++ b/sysdeps/aarch64/start.S > @@ -71,9 +71,9 @@ _start: > ldr PTR_REG (4), [x4, #:got_lo12:__libc_csu_fini] > #else > /* Set up the other arguments in registers */ > - ldr PTR_REG (0), =main > - ldr PTR_REG (3), =__libc_csu_init > - ldr PTR_REG (4), =__libc_csu_fini > + MOVL(0, main) > + MOVL(3, __libc_csu_init) > + MOVL(4, __libc_csu_fini) > #endif > > /* __libc_start_main (main, argc, argv, init, fini, rtld_fini, > diff --git a/sysdeps/aarch64/sysdep.h b/sysdeps/aarch64/sysdep.h > index a749a70..0a11b57 100644 > --- a/sysdeps/aarch64/sysdep.h > +++ b/sysdeps/aarch64/sysdep.h > @@ -137,6 +137,20 @@ > ldr PTR_REG (T), [x##T, #:got_lo12:EXPR]; \ > OP PTR_REG (R), [x##T]; > > +/* Load an immediate into R. > + Note R is a register number and not a register name. */ either rename the macro argument to R or use N in the comment. > +#ifdef __LP64__ > +# define MOVL(n, name) \ > + movz PTR_REG(n), #:abs_g3:name; \ > + movk PTR_REG(n), #:abs_g2_nc:name; \ > + movk PTR_REG(n), #:abs_g1_nc:name; \ > + movk PTR_REG(n), #:abs_g0_nc:name; > +#else > +# define MOVL(n, name) \ > + movz PTR_REG(n), #:abs_g1:name; \ > + movk PTR_REG(n), #:abs_g0_nc:name; > +#endif > + > /* Since C identifiers are not normally prefixed with an underscore > on this system, the asm identifier `syscall_error' intrudes on the > C name space. Make sure we use an innocuous name. */ > >