Show a cover letter.

GET /api/covers/52597/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 52597,
    "url": "http://patches.dpdk.org/api/covers/52597/?format=api",
    "web_url": "http://patches.dpdk.org/cover/52597/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk"
    },
    "msgid": "<20190410134517.63896-1-bruce.richardson@intel.com>",
    "date": "2019-04-10T13:45:15",
    "name": "[0/2] remove use of weak functions from libraries",
    "submitter": {
        "id": 20,
        "url": "http://patches.dpdk.org/api/people/20/?format=api",
        "name": "Bruce Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "mbox": "http://patches.dpdk.org/cover/52597/mbox/",
    "series": [
        {
            "id": 4242,
            "url": "http://patches.dpdk.org/api/series/4242/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=4242",
            "date": "2019-04-10T13:45:15",
            "name": "remove use of weak functions from libraries",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/4242/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/52597/comments/",
    "headers": {
        "X-Mailer": "git-send-email 2.20.1",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "Precedence": "list",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "Date": "Wed, 10 Apr 2019 14:45:15 +0100",
        "X-Mailman-Version": "2.1.15",
        "Delivered-To": "patchwork@dpdk.org",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "Cc": "dev@dpdk.org,\n\tBruce Richardson <bruce.richardson@intel.com>",
        "To": "konstantin.ananyev@intel.com,\n\taconole@redhat.com",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>",
        "From": "Bruce Richardson <bruce.richardson@intel.com>",
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-IronPort-AV": "E=Sophos;i=\"5.60,332,1549958400\"; d=\"scan'208\";a=\"141569309\"",
        "List-Post": "<mailto:dev@dpdk.org>",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 282D869D4;\n\tWed, 10 Apr 2019 15:45:27 +0200 (CEST)",
            "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n\tby dpdk.org (Postfix) with ESMTP id 55C0A5F19\n\tfor <dev@dpdk.org>; Wed, 10 Apr 2019 15:45:25 +0200 (CEST)",
            "from orsmga003.jf.intel.com ([10.7.209.27])\n\tby orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t10 Apr 2019 06:45:24 -0700",
            "from silpixa00399126.ir.intel.com (HELO\n\tsilpixa00399126.ger.corp.intel.com) ([10.237.222.236])\n\tby orsmga003.jf.intel.com with ESMTP; 10 Apr 2019 06:45:23 -0700"
        ],
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "X-Amp-File-Uploaded": "False",
        "Subject": "[dpdk-dev] [PATCH 0/2] remove use of weak functions from libraries",
        "MIME-Version": "1.0",
        "Message-Id": "<20190410134517.63896-1-bruce.richardson@intel.com>",
        "X-ExtLoop1": "1",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dev@dpdk.org",
        "X-Original-To": "patchwork@dpdk.org"
    },
    "content": "Weak functions don't work well with static library builds as the linker\nalways picks the first version of a function irrespective of whether it is\nweak or not. The solution to this is to use the \"whole-archive\" flag when\nlinking, but this has the nasty side-effect that it causes the resulting\nbinary to be larger than it needs to be.\n\n\nA further problem with this approach of using \"whole-archive\" is that one\neither needs to link all libraries with this flag or track what libraries\nneed it or not - the latter being especially a problem for apps not using\nthe DPDK build system itself (i.e. most apps not shipped with DPDK itself).\nFor meson builds this information needs to make its way all the way through\nto the pkgconfig file generated - not a trivial undertaking.\n\nThankfully, though, the use of weak functions is limited to use for\nmultiple functions within a single library, meaning that when the lib is\nbeing built, the build system itself can know whether the \"weak\" function\nis needed or not. This allows us to change the weak function to a\nconditionally compiled regular function used in fallback case. This makes\nthe need for \"whole-archive\" flag, and any special linking measures for the\nlibrary, go away.\n\n[This set does not touch the drivers, only the libraries, since there are\nother special linker flags needed for drivers in general, making the\nproblem less severe for driver .a files.]\n\nBruce Richardson (2):\n  acl: remove use of weak functions\n  bpf: remove use of weak functions\n\n lib/librte_acl/meson.build |  7 ++++++-\n lib/librte_acl/rte_acl.c   | 18 ++++++++++++++----\n lib/librte_bpf/bpf_load.c  |  4 +++-\n lib/librte_bpf/meson.build |  1 +\n mk/rte.app.mk              |  3 ---\n 5 files changed, 24 insertions(+), 9 deletions(-)"
}