get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/638455/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 638455,
    "url": "http://patchwork.ozlabs.org/api/patches/638455/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/glibc/patch/1466485631-3532-7-git-send-email-ynorov@caviumnetworks.com/",
    "project": {
        "id": 41,
        "url": "http://patchwork.ozlabs.org/api/projects/41/?format=api",
        "name": "GNU C Library",
        "link_name": "glibc",
        "list_id": "libc-alpha.sourceware.org",
        "list_email": "libc-alpha@sourceware.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<1466485631-3532-7-git-send-email-ynorov@caviumnetworks.com>",
    "list_archive_url": null,
    "date": "2016-06-21T05:06:49",
    "name": "[05/27,AARCH64] Use PTR_REG in crti.S.",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "2c2f3374382caa57b7bcac6963cd00a8432eee0f",
    "submitter": {
        "id": 68471,
        "url": "http://patchwork.ozlabs.org/api/people/68471/?format=api",
        "name": "Yury Norov",
        "email": "ynorov@caviumnetworks.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/glibc/patch/1466485631-3532-7-git-send-email-ynorov@caviumnetworks.com/mbox/",
    "series": [],
    "comments": "http://patchwork.ozlabs.org/api/patches/638455/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/638455/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<libc-alpha-return-70815-incoming=patchwork.ozlabs.org@sourceware.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": [
            "patchwork-incoming@bilbo.ozlabs.org",
            "mailing list libc-alpha@sourceware.org"
        ],
        "Received": [
            "from sourceware.org (server1.sourceware.org [209.132.180.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3rYbNv5zW0z9sdQ\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 21 Jun 2016 15:09:03 +1000 (AEST)",
            "(qmail 107475 invoked by alias); 21 Jun 2016 05:08:56 -0000",
            "(qmail 107455 invoked by uid 89); 21 Jun 2016 05:08:56 -0000"
        ],
        "Authentication-Results": [
            "ozlabs.org; dkim=pass (1024-bit key;\n\tsecure) header.d=sourceware.org header.i=@sourceware.org\n\theader.b=wlbPbk3n; dkim-atps=neutral",
            "sourceware.org; auth=none",
            "spf=none (sender IP is )\n\tsmtp.mailfrom=Yuri.Norov@caviumnetworks.com; "
        ],
        "DomainKey-Signature": "a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id\n\t:list-unsubscribe:list-subscribe:list-archive:list-post\n\t:list-help:sender:from:to:cc:subject:date:message-id:in-reply-to\n\t:references:mime-version:content-type; q=dns; s=default; b=GIdzg\n\tfjps2LhvsNP+K9XSHQV3aFeBh+c8/JoiDqRC2bDX1eBHaeR8hXAg2hu+EagWURTx\n\tTtSuQrAkeYLq/EwLlxx2x642slHIJ3Lv4dulgFZULA9Kx/WR8FaBJ2ATtSSV+G4K\n\txyfGx6mZivi7pAaYyd8yffm6toaimCT9pt3OK8=",
        "DKIM-Signature": "v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id\n\t:list-unsubscribe:list-subscribe:list-archive:list-post\n\t:list-help:sender:from:to:cc:subject:date:message-id:in-reply-to\n\t:references:mime-version:content-type; s=default; bh=BNbOhh36zcw\n\tGWtKvgIZiHAt3mVs=; b=wlbPbk3n4EPYkHJFurMkouJ+RdIJJZrKoRnzGjYNt7D\n\t/eCSeoD2H2uKpVAx0IElU0WyVpakDYuGVs3T5S7JgiW/9e3145NDocpSAKofYZRF\n\t6wLuoPvtAYj+haE1gCyMDxQ5pVv+jl3uDpch89JLbFCkN1OObZ7kk4LdfvtkrK7g\n\t=",
        "Mailing-List": "contact libc-alpha-help@sourceware.org; run by ezmlm",
        "Precedence": "bulk",
        "List-Id": "<libc-alpha.sourceware.org>",
        "List-Unsubscribe": "<mailto:libc-alpha-unsubscribe-incoming=patchwork.ozlabs.org@sourceware.org>",
        "List-Subscribe": "<mailto:libc-alpha-subscribe@sourceware.org>",
        "List-Archive": "<http://sourceware.org/ml/libc-alpha/>",
        "List-Post": "<mailto:libc-alpha@sourceware.org>",
        "List-Help": "<mailto:libc-alpha-help@sourceware.org>,\n\t<http://sourceware.org/ml/#faqs>",
        "Sender": "libc-alpha-owner@sourceware.org",
        "X-Virus-Found": "No",
        "X-Spam-SWARE-Status": "No, score=-1.0 required=5.0 tests=AWL, BAYES_00,\n\tRCVD_IN_DNSWL_NONE,\n\tSPF_HELO_PASS autolearn=ham version=3.3.2 spammy=39, 7, cbz",
        "X-HELO": "na01-bn1-obe.outbound.protection.outlook.com",
        "From": "Yury Norov <ynorov@caviumnetworks.com>",
        "To": "<libc-alpha@sourceware.org>, <linux-kernel@vger.kernel.org>",
        "CC": "<arnd@arndb.de>, <catalin.marinas@arm.com>, <marcus.shawcroft@arm.com>, \n\t<philb@gnu.org>, <davem@davemloft.net>, <szabolcs.nagy@arm.com>,\n\t<maxim.kuvyrkov@linaro.org>, <joseph@codesourcery.com>,\n\t<pinskia@gmail.com>, Andrew Pinski <apinski@cavium.com>,\n\tYury Norov <ynorov@caviumnetworks.com>",
        "Subject": "[PATCH 05/27] [AARCH64] Use PTR_REG in crti.S.",
        "Date": "Tue, 21 Jun 2016 08:06:49 +0300",
        "Message-ID": "<1466485631-3532-7-git-send-email-ynorov@caviumnetworks.com>",
        "In-Reply-To": "<1466485631-3532-1-git-send-email-ynorov@caviumnetworks.com>",
        "References": "<1466485631-3532-1-git-send-email-ynorov@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "HE1PR03CA0022.eurprd03.prod.outlook.com (10.163.170.160)\n\tTo BN4PR07MB2242.namprd07.prod.outlook.com (10.164.63.148)",
        "X-MS-Office365-Filtering-Correlation-Id": "28d977c0-d8a2-4b87-bb9e-08d399921bf7",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BN4PR07MB2242;\n\t2:/FT9SuBesrHUYXMzohmf6yyBxe+m0Fa8HduHffVXh/ctvTpV8USmF6+i5HuTrCS/dy5KzSV6qBdqhnXNSP5CUK1p6oEDNn42wX+fZ0vU1sBeALSzLLVv9Sm7DSf+NXEcNW8zR10U2dGhAXDJ8b/WfxDHe1FvG8UnZWPjcQ13pb6ayAoKgjV3dqOHQK5fl16j;\n\t3:3LHXsIN0BtfkA0gUfrRLRWyTtOjw/rT1uAe4tPE0lSAk94KYQN/3PlJrHkg06Srcmbp9uBOcApkjbq0FLZrON2R5vYBF7sXIzX5jZfYg4Cv51HNOKOLlsnpBVsQFr/AV;\n\t25:8y3JSLTQrMqCpqcElsf84JzuJgpTmhnPz4K6edj6apJvnMpO5kAh5p1go8J4Wz3BgB32dpMsMk1IUEr1ryImn6VP/lRbiZCmxW96vNTXHuhmNqkdizinZOSX0llXpdBB83Cr25aeSI+Wuq45eJRjSBNLk9SWEx2PioRC4Cubeo8VM5XEzmCIUdwMkV+VCW3k29w/v69l6N7u8s20RRQvOclfgT8TcyfcPmtFT1MlvTAOVSklck8ZYgkXGG9jWsGRtEm4XIW3lI7X2X0hLjsA/vP0tWyfCGafqlqrvJMJSWiavjP8rTOQy5dhQ/PKaG2DUuUS75EG+xbapezbnHTjmIexrhXYZLVQxGhWsoeuqR8uvNC+HhXjj/RFRBVWveCBgTVHFpVAHYejWVqVNkc864SbvmQNrN752lApXYmLGCE=",
            "1; BN4PR07MB2242;\n\t20:ORuEhaMnESZWUa3ljNHN1Z4pu3IT2d5ydI0g7zL3i8tnSiDNumVzNjVoA3GNflB7D93kmMe+TnuKHJ5J2OqGDnNbJVPICZltMDaB2Y1S/4zLDbJdNv4XLcYLf4SL7mJOPDBFd11BuGX/Fxy3ABQbWO/HaWWHUp+yU9DAqSKaNap3gCo2i2CzyDuRWs0gkQ+hfOjuB13I5E4rfMTcSX6SPjtbvflZaNggGwg0BGqFhJ3N5ykVx3oQ0/02AlNTbzu445kfi4W0zpQiU8V+J/9rmVyzW4AsCqymYVZzitGXKjeyfgYZIsia3tiGVDoE9wVs+PXhBmXKKwvNm6vQKdm2eotzgNdVKMG4Ett4N3cKFeXGSpmFKkWAVNYc5nDHQBoO3Is07mzQt5oTT0Dt21ZcPU1LBPy0tvCdCOicS2H6JTJEqoHfEuBE7thId+r1kTmivOH7l8NWOml7aKN/N1E8kZTlShrBQRhU3bfS5Bcntz/pST6frjSYimw3RDX3Le9qgvbdrcEe+dKsuEo4P6e9NMRgvzToaUqVczzX+3mPrndE6zgxqCV6PK38/Q3IABMnLdtGNZAK29HVqii+l3JDl6Qja+kcaxAUO0Mxr3Aj9Hs=",
            "1; BN4PR07MB2242;\n\t4:4dqQ7M9qmduEcIhx63T1sHS1W0A8i7B2RFi3735rOTowabKxqV/hIV1Rod7FBLfv1DJlTDlQTiARBLJUOrvysDu86tdw62baXCBNNirB+Cb8iXxVcvLRvDPw7ePHiHWEjfH8zcM3rI8KUMEA2D5O79C8FU/rlz8qtS5HnKCC3An4FX2PvkoT2jginxNOf8Tp3t9FfCK4H9nduAPGb5WlFEIz3ytVnl2ZffuGVl2vmAbfNOgllRFr4rttahhVUv4MxGU905GaWyPRsAt0dtWzszr4NEU2XDcvEpvSts/0+B6zCYgxxrRrRQPUV0JqkSI06kiVhwgWe94h9hUwnkAxyZs5WXVGarNzQFo3qUJ8aaeLZ6pgKR50xz18+QydxL8M",
            "=?us-ascii?Q?1; BN4PR07MB2242;\n\t23:H4rJuDHyRg+8cbb56Bf8XdQOC9oCd5kvo2aMG8Zht?=\n\t=?us-ascii?Q?0ra0BdWRgi9v7IXhMkfdeoxYIpP1jQmYx61I5/uqQPjvb++zCPe5yoT0mbx3?=\n\t=?us-ascii?Q?J7qiAhjjuI+U8SNentn3Gb1PuC+zI/aatTmwfXaGKkfMyXPUuTM7bEoDc86k?=\n\t=?us-ascii?Q?2mXxbQxWY61/3lghrsfZ5vEYtP/e6ZdkSOXId/WTGG3CuoZreIoS+skDD+Yv?=\n\t=?us-ascii?Q?p+mYIoWG9AB1OaCzoF5hRoVXPm5RFPZyw2JVcUSoAuIvoZJYNDLvrw22cVvb?=\n\t=?us-ascii?Q?6jYfQWFIDGQbCDHQ9318t6Dao7A002dwwlaMoq/nuKbBMfi1eRMXpiu1kJxZ?=\n\t=?us-ascii?Q?hrni2tikgTbkrL3CjokcBCIhODSYomzwBcmqxi8jg2Gq5MyQQP6XqPdVVt+X?=\n\t=?us-ascii?Q?h93qpgFwIoz1YtxVbqb4MGiv2xaiKSVZvpVUVTDIaozHMh0BzL9+JjC+nVdt?=\n\t=?us-ascii?Q?dOvl/rAZK3dIlB+rAIICbch5jqNboDvohLKiR9JG93Llhgl3QPXMCp4L0Veh?=\n\t=?us-ascii?Q?MG6eDblZl59AhMwEp7PwxIi6sdWLteHK8TRsjF7RB9KPnQH5bBdcTjNQ41Ud?=\n\t=?us-ascii?Q?r2TT5dWWka22HmUg5P3HA/vlk81WHn9f8ivugunTpxWR8ohwx6K6e3OS4qiM?=\n\t=?us-ascii?Q?kFj7gjRVJvJQnEnxDjaoyOJFyme33UPOv4/S2SpZ0oYeobltzjeiiMHWxrLB?=\n\t=?us-ascii?Q?GoRkMELHuk4v1XxmQwtHi2a4YogwzIiZdBfJVvKrSrRNDCc1pyms45rBNLI4?=\n\t=?us-ascii?Q?HA7e7rsZNov4Dz+ZpBm30tR7SkqH1gPcel8zTt4eeZ13Id5TU8yLP6a4aMCm?=\n\t=?us-ascii?Q?PgJEyL4jCDzyGw7P7QiB+wmvw+fVLOB8jR34ubOhOwAp/qrpnTWgHMyjj7HY?=\n\t=?us-ascii?Q?yQRBI/mdfKeBKg0Xks9kY+7Vh+06NFXyqmK/tzXw6o84Uu2Txyu/an6pS6pA?=\n\t=?us-ascii?Q?L0wzlqZihooUUUv5rbsavEUTf24iAL5NO5WEA6P4GNcx8Lq+9mkpWoZ0tKJe?=\n\t=?us-ascii?Q?8KSJJQioBfDYIVLWohj1vhit18hPw5sHoV/KBwpgk/k3apjg0EdIe6QD8Hx9?=\n\t=?us-ascii?Q?cvz8v76CGqFpQOLUNT036VdM93ppZLr7vLjotWPXYiER7WW22q+GgDbxdwRG?=\n\t=?us-ascii?Q?fNV3mNs9D9uYbWNAE79a20PYbIr1an4?=",
            "1; BN4PR07MB2242;\n\t6:VoRKNxiHTwOniLeHbVXstlgm8jANC6Bc5lV5xY37Aupjm7kB6m6XybwGvOk9YydI43xCMNiEanrPWzw5/VXdark+Sq96a/yYwdWEHbOiuKUswR9/YvpFJWEKyfCtYQpWww1CNYy6lbZgWqzbgQYutSN0/ADZm5mMTJV0JUAetnFOreBWNMGZcEk5bL0VHGGv1E0Ky0rckT+pWb6SMZvr5WAgYuoEZs3IZOSvfLXNnlCyquUmHqsqDrqyGsuZU8Au4/TC1zXsEpAXGNVCpSX7WZ2vZYQlQ95IwwKICz2r2jI=;\n\t5:9atJblRfYxCU+lbQ5AoDf1FiBQ8uwhIEvr8AJhB0DWm70KXPS5sxojh98+z6N8q6OrXXMEpH8fdUKYW8B1/QK0k8qqSaIlJwi9nWugViQT1nMhglNGXXKpIeY7lZ1tvopV2iYqZhrltCIsY1dQS6tA==;\n\t24:BYHnM2xPs+GFfb+OqUaC/SxTpdQTqQ9OfCC79BLtCzHZEyNHYCGqcMarIZ8OvwJD4Rovkg9jZGVCTc1cwCMYpTWfBsJQhScCbGnEVG54ipQ=;\n\t7:hxo/FPN5mnSQKpOjRrc7RgHSxcW+7vo/+H/6nKVM7T+IEQvaWL0JpkUAxYLgKZQnrb4BbwjPk2A9VRSIzZ7lMMJU6wFzhhp2A5RmvXNYN5kXlpKxrlUTwKLd/oK5vQGxboxj+EqxP6Ln9obP/C4C9WM6j4/t5M6lnzL+naNL5OjqhChtj0Ob74YTs00KY4+EcJ5+ObD9TvTic1tKVk+FUhNEhqFY/lb3iTdhmStxRhX4rUlXH1HMdwHruDVb2+zy"
        ],
        "X-Microsoft-Antispam": "UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN4PR07MB2242;",
        "X-Microsoft-Antispam-PRVS": "<BN4PR07MB2242703E9186F8559B95439FEE2B0@BN4PR07MB2242.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:;",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001);\n\tSRVR:BN4PR07MB2242; BCL:0; PCL:0; RULEID:; SRVR:BN4PR07MB2242;",
        "X-Forefront-PRVS": "098076C36C",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(199003)(57704003)(189002)(19580395003)(42186005)(19580405001)(77096005)(76506005)(229853001)(5003940100001)(7736002)(586003)(3846002)(6116002)(4001430100002)(105586002)(92566002)(81156014)(107886002)(2906002)(48376002)(5001770100001)(4326007)(2950100001)(76176999)(7846002)(50986999)(66066001)(50466002)(33646002)(50226002)(47776003)(8676002)(101416001)(106356001)(36756003)(189998001)(97736004)(68736007)(81166006)(2101003);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BN4PR07MB2242; H:localhost;\n\tFPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; ",
        "Received-SPF": "None (protection.outlook.com: caviumnetworks.com does not\n\tdesignate permitted sender hosts)",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "21 Jun 2016 05:08:39.8623\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BN4PR07MB2242"
    },
    "content": "From: Andrew Pinski <apinski@cavium.com>\n\ncall_weak_fn loads from a pointer, so use PTR_REG so the load\nis 32bits for ILP32.\n\n* sysdeps/aarch64/crti.S: Include sysdep.h\n(call_weak_fn): Use PTR_REG when loading from\nPREINIT_FUNCTION.\n\nAARCH64: Make RTLD_START paramatizable\n\nMake RTLD_START paramatizable for ILP32 and LP64 usage and provides common\ncode between ILP32.\n\n* sysdeps/aarch64/dl-machine.h (RTLD_START): Rename to ...\n(RTLD_START_1): This and add PTR, PTR_SIZE_LOG, and PTR_SP arguments.\n(RTLD_START): New macro which uses RTLD_START_1.\n\nSigned-off-by: Yury Norov <ynorov@caviumnetworks.com>\n---\n sysdeps/aarch64/crti.S       |   3 +-\n sysdeps/aarch64/dl-machine.h | 128 ++++++++++++++++++++++---------------------\n 2 files changed, 69 insertions(+), 62 deletions(-)",
    "diff": "diff --git a/sysdeps/aarch64/crti.S b/sysdeps/aarch64/crti.S\nindex 53ccb42..6e149b5 100644\n--- a/sysdeps/aarch64/crti.S\n+++ b/sysdeps/aarch64/crti.S\n@@ -39,6 +39,7 @@\n    they can be called as functions.  The symbols _init and _fini are\n    magic and cause the linker to emit DT_INIT and DT_FINI.  */\n \n+#include <sysdep.h>\n #include <libc-symbols.h>\n \n #ifndef PREINIT_FUNCTION\n@@ -60,7 +61,7 @@\n \t.type\tcall_weak_fn, %function\n call_weak_fn:\n \tadrp\tx0, :got:PREINIT_FUNCTION\n-\tldr\tx0, [x0, #:got_lo12:PREINIT_FUNCTION]\n+\tldr\tPTR_REG(0), [x0, #:got_lo12:PREINIT_FUNCTION]\n \tcbz\tx0, 1f\n \tb\tPREINIT_FUNCTION\n 1:\ndiff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h\nindex a16cb11..7a49852 100644\n--- a/sysdeps/aarch64/dl-machine.h\n+++ b/sysdeps/aarch64/dl-machine.h\n@@ -126,68 +126,74 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)\n /* Initial entry point for the dynamic linker. The C function\n    _dl_start is the real entry point, its return value is the user\n    program's entry point */\n+#ifdef __LP64__\n+#define RTLD_START RTLD_START_1(\"x\", \"3\", \"sp\")\n+#else\n+#define RTLD_START RTLD_START_1(\"w\", \"2\", \"wsp\")\n+#endif\n+\n \n-#define RTLD_START asm (\"\\\n-.text\t\t\t\t\t\t\t\t\\n\\\n-.globl _start\t\t\t\t\t\t\t\\n\\\n-.type _start, %function\t\t\t\t\t\t\\n\\\n-.globl _dl_start_user\t\t\t\t\t\t\\n\\\n-.type _dl_start_user, %function\t\t\t\t\t\\n\\\n-_start:\t\t\t\t\t\t\t\t\\n\\\n-\tmov\tx0,\tsp\t\t\t\t\t\\n\\\n-\tbl\t_dl_start\t\t\t\t\t\\n\\\n-\t// returns user entry point in x0\t\t\t\\n\\\n-\tmov\tx21, x0\t\t\t\t\t\t\\n\\\n-_dl_start_user:\t\t\t\t\t\t\t\\n\\\n-\t// get the original arg count\t\t\t\t\\n\\\n-\tldr\tx1, [sp]\t\t\t\t\t\\n\\\n-\t// get the argv address\t\t\t\t\t\\n\\\n-\tadd\tx2, sp, #8\t\t\t\t\t\\n\\\n-\t// get _dl_skip_args to see if we were\t\t\t\\n\\\n-\t// invoked as an executable\t\t\t\t\\n\\\n-\tadrp\tx4, _dl_skip_args\t\t\t\t\\n\\\n-        ldr\tw4, [x4, #:lo12:_dl_skip_args]\t\t\t\\n\\\n-\t// do we need to adjust argc/argv\t\t\t\\n\\\n-        cmp\tw4, 0\t\t\t\t\t\t\\n\\\n-\tbeq\t.L_done_stack_adjust\t\t\t\t\\n\\\n-\t// subtract _dl_skip_args from original arg count\t\\n\\\n-\tsub\tx1, x1, x4\t\t\t\t\t\\n\\\n-\t// store adjusted argc back to stack\t\t\t\\n\\\n-\tstr\tx1, [sp]\t\t\t\t\t\\n\\\n-\t// find the first unskipped argument\t\t\t\\n\\\n-\tmov\tx3, x2\t\t\t\t\t\t\\n\\\n-\tadd\tx4, x2, x4, lsl #3\t\t\t\t\\n\\\n-\t// shuffle argv down\t\t\t\t\t\\n\\\n-1:\tldr\tx5, [x4], #8\t\t\t\t\t\\n\\\n-\tstr\tx5, [x3], #8\t\t\t\t\t\\n\\\n-\tcmp\tx5, #0\t\t\t\t\t\t\\n\\\n-\tbne\t1b\t\t\t\t\t\t\\n\\\n-\t// shuffle envp down\t\t\t\t\t\\n\\\n-1:\tldr\tx5, [x4], #8\t\t\t\t\t\\n\\\n-\tstr\tx5, [x3], #8\t\t\t\t\t\\n\\\n-\tcmp\tx5, #0\t\t\t\t\t\t\\n\\\n-\tbne\t1b\t\t\t\t\t\t\\n\\\n-\t// shuffle auxv down\t\t\t\t\t\\n\\\n-1:\tldp\tx0, x5, [x4, #16]!\t\t\t\t\\n\\\n-\tstp\tx0, x5, [x3], #16\t\t\t\t\\n\\\n-\tcmp\tx0, #0\t\t\t\t\t\t\\n\\\n-\tbne\t1b\t\t\t\t\t\t\\n\\\n-\t// Update _dl_argv\t\t\t\t\t\\n\\\n-\tadrp\tx3, _dl_argv\t\t\t\t\t\\n\\\n-\tstr\tx2, [x3, #:lo12:_dl_argv]\t\t\t\\n\\\n-.L_done_stack_adjust:\t\t\t\t\t\t\\n\\\n-\t// compute envp\t\t\t\t\t\t\\n\\\n-\tadd\tx3, x2, x1, lsl #3\t\t\t\t\\n\\\n-\tadd\tx3, x3, #8\t\t\t\t\t\\n\\\n-\tadrp\tx16, _rtld_local\t\t\t\t\\n\\\n-        add\tx16, x16, #:lo12:_rtld_local\t\t\t\\n\\\n-        ldr\tx0, [x16]\t\t\t\t\t\\n\\\n-\tbl\t_dl_init\t\t\t\t\t\\n\\\n-\t// load the finalizer function\t\t\t\t\\n\\\n-\tadrp\tx0, _dl_fini\t\t\t\t\t\\n\\\n-\tadd\tx0, x0, #:lo12:_dl_fini\t\t\t\t\\n\\\n-\t// jump to the user_s entry point\t\t\t\\n\\\n-\tbr      x21\t\t\t\t\t\t\\n\\\n+#define RTLD_START_1(PTR, PTR_SIZE_LOG, PTR_SP) asm (\"\\\n+.text\t\t\t\t\t\t\t\t\t\\n\\\n+.globl _start\t\t\t\t\t\t\t\t\\n\\\n+.type _start, %function\t\t\t\t\t\t\t\\n\\\n+.globl _dl_start_user\t\t\t\t\t\t\t\\n\\\n+.type _dl_start_user, %function\t\t\t\t\t\t\\n\\\n+_start:\t\t\t\t\t\t\t\t\t\\n\\\n+\tmov\t\" PTR \"0, \" PTR_SP \"\t\t\t\t\t\\n\\\n+\tbl\t_dl_start\t\t\t\t\t\t\\n\\\n+\t// returns user entry point in x0\t\t\t\t\\n\\\n+\tmov\tx21, x0\t\t\t\t\t\t\t\\n\\\n+_dl_start_user:\t\t\t\t\t\t\t\t\\n\\\n+\t// get the original arg count\t\t\t\t\t\\n\\\n+\tldr\t\" PTR \"1, [sp]\t\t\t\t\t\t\\n\\\n+\t// get the argv address\t\t\t\t\t\t\\n\\\n+\tadd\t\" PTR \"2, \" PTR_SP \", #(1<<\"  PTR_SIZE_LOG \")\t\t\\n\\\n+\t// get _dl_skip_args to see if we were\t\t\t\t\\n\\\n+\t// invoked as an executable\t\t\t\t\t\\n\\\n+\tadrp\tx4, _dl_skip_args\t\t\t\t\t\\n\\\n+        ldr\tw4, [x4, #:lo12:_dl_skip_args]\t\t\t\t\\n\\\n+\t// do we need to adjust argc/argv\t\t\t\t\\n\\\n+        cmp\tw4, 0\t\t\t\t\t\t\t\\n\\\n+\tbeq\t.L_done_stack_adjust\t\t\t\t\t\\n\\\n+\t// subtract _dl_skip_args from original arg count\t\t\\n\\\n+\tsub\t\" PTR \"1, \" PTR \"1, \" PTR \"4\t\t\t\t\\n\\\n+\t// store adjusted argc back to stack\t\t\t\t\\n\\\n+\tstr\t\" PTR \"1, [sp]\t\t\t\t\t\t\\n\\\n+\t// find the first unskipped argument\t\t\t\t\\n\\\n+\tmov\t\" PTR \"3, \" PTR \"2\t\t\t\t\t\\n\\\n+\tadd\t\" PTR \"4, \" PTR \"2, \" PTR \"4, lsl #\" PTR_SIZE_LOG \"\t\\n\\\n+\t// shuffle argv down\t\t\t\t\t\t\\n\\\n+1:\tldr\t\" PTR \"5, [x4], #(1<<\"  PTR_SIZE_LOG \")\t\t\t\\n\\\n+\tstr\t\" PTR \"5, [x3], #(1<<\"  PTR_SIZE_LOG \")\t\t\t\\n\\\n+\tcmp\t\" PTR \"5, #0\t\t\t\t\t\t\\n\\\n+\tbne\t1b\t\t\t\t\t\t\t\\n\\\n+\t// shuffle envp down\t\t\t\t\t\t\\n\\\n+1:\tldr\t\" PTR \"5, [x4], #(1<<\"  PTR_SIZE_LOG \")\t\t\t\\n\\\n+\tstr\t\" PTR \"5, [x3], #(1<<\"  PTR_SIZE_LOG \")\t\t\t\\n\\\n+\tcmp\t\" PTR \"5, #0\t\t\t\t\t\t\\n\\\n+\tbne\t1b\t\t\t\t\t\t\t\\n\\\n+\t// shuffle auxv down\t\t\t\t\t\t\\n\\\n+1:\tldp\t\" PTR \"0, \" PTR \"5, [x4, #(2<<\"  PTR_SIZE_LOG \")]!\t\\n\\\n+\tstp\t\" PTR \"0, \" PTR \"5, [x3], #(2<<\"  PTR_SIZE_LOG \")\t\\n\\\n+\tcmp\t\" PTR \"0, #0\t\t\t\t\t\t\\n\\\n+\tbne\t1b\t\t\t\t\t\t\t\\n\\\n+\t// Update _dl_argv\t\t\t\t\t\t\\n\\\n+\tadrp\tx3, _dl_argv\t\t\t\t\t\t\\n\\\n+\tstr\t\" PTR \"2, [x3, #:lo12:_dl_argv]\t\t\t\t\\n\\\n+.L_done_stack_adjust:\t\t\t\t\t\t\t\\n\\\n+\t// compute envp\t\t\t\t\t\t\t\\n\\\n+\tadd\t\" PTR \"3, \" PTR \"2, \" PTR \"1, lsl #\" PTR_SIZE_LOG \"\t\\n\\\n+\tadd\t\" PTR \"3, \" PTR \"3, #(1<<\"  PTR_SIZE_LOG \")\t\t\\n\\\n+\tadrp\tx16, _rtld_local\t\t\t\t\t\\n\\\n+        add\t\" PTR \"16, \" PTR \"16, #:lo12:_rtld_local\t\t\\n\\\n+        ldr\t\" PTR \"0, [x16]\t\t\t\t\t\t\\n\\\n+\tbl\t_dl_init\t\t\t\t\t\t\\n\\\n+\t// load the finalizer function\t\t\t\t\t\\n\\\n+\tadrp\tx0, _dl_fini\t\t\t\t\t\t\\n\\\n+\tadd\t\" PTR \"0, \" PTR \"0, #:lo12:_dl_fini\t\t\t\\n\\\n+\t// jump to the user_s entry point\t\t\t\t\\n\\\n+\tbr      x21\t\t\t\t\t\t\t\\n\\\n \");\n \n #define elf_machine_type_class(type)\t\t\t\t\t\\\n",
    "prefixes": [
        "05/27",
        "AARCH64"
    ]
}