Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932203AbdLTSdT (ORCPT ); Wed, 20 Dec 2017 13:33:19 -0500 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:46830 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755724AbdLTSdQ (ORCPT ); Wed, 20 Dec 2017 13:33:16 -0500 Date: Wed, 20 Dec 2017 18:32:36 +0000 From: Roman Gushchin To: Quentin Monnet CC: , , , Jakub Kicinski , Alexei Starovoitov , Daniel Borkmann Subject: Re: [RFC PATCH net-next] tools/bpf: fix build with binutils >= 2.28 Message-ID: <20171220183229.GA12577@castle> References: <20171219143821.26291-1-guro@fb.com> <79acdc04-bba9-c9d5-a651-57d0e9628653@netronome.com> <20171219161009.GA30572@castle.DHCP.thefacebook.com> <140ea0e9-964f-6f62-0721-88c9f8905cd3@netronome.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <140ea0e9-964f-6f62-0721-88c9f8905cd3@netronome.com> User-Agent: Mutt/1.9.1 (2017-09-22) X-Originating-IP: [2620:10d:c092:180::1:e6b3] X-ClientProxiedBy: AM5P190CA0009.EURP190.PROD.OUTLOOK.COM (2603:10a6:206:14::22) To CO1PR15MB1079.namprd15.prod.outlook.com (2a01:111:e400:7b66::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5bbb9724-b216-41c2-df7d-08d547d8133f X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603307)(7153060);SRVR:CO1PR15MB1079; X-Microsoft-Exchange-Diagnostics: 1;CO1PR15MB1079;3:L1tOyUEiBpDQ7DSEjkPRynJmIJLdvgZk/8mZ2ULIqM9Oc7fMe1n9PN/auqWm5u1nEjlgC6xlH7oTW46f5VGDxXypFQ9DF+7skcWnOJOIHz6IMPng6J7OCh1TuN7H5BEkWq+Fe0Yks0OnZAg1KKyWOpmTVXZkZk/9jNQM1atdm/T4ziD4lxwrOF7HWR5DIbF3fU8y6zJWGXGzc0bf95gPQ0Wz4n5kAzaryHp6F6TIx4kadtqUOCgWYK++D21wVf9m;25:jrDfdxcdEYdW1Hqpe5l8pHy/UBZ+3+psSySv4Go4vDy8W05wQEREN2RM5mFjhgaUjj+vwKzseRjMrJCHx81QxOFZXZI/UFirLUEHnu35ypqRuSlbZFt7wx1ol/Th/BV+QLRXNfXd+vrS4kcaghpObeTGvsFZL8s9T+uK5x2SZkc5RiSRp0VMHwlgM7n9jSrbri5jnbmzrWZaT+YDSwRUEEsB1/bFV4t4JBDpAmtvHbyR79BomcIVFujUx1vwdjXCiC3SUFGU4TAa9gM/DK8+iLG/OGsdzSz1waxb2x8UU13DpZCKiLN/3L9TLJ4tmOgsDt93Z86xcI1Sg7grzMXXGg==;31:+1mAU8P4FQcQQCXSj8brKc6voRbbXRc2GSR89H+RXir6NIv5KNHdkACSp1Qvey8IcyuUaxjuSzmu1yPW4V9b2c8oh49pMIyo1qKhOQPsvuyDNHIwrSP3k+zlsQdE2rnjiF9ugwxvNlvaIREJyooJTh/aXUXHgb9n9YymS7WZ+9FSyxyEtC1riBFm2xwwI5L5Zoh2Co482mI9znaEvmRtPWc7ByhzYYUGQLXmv+XQ10w= X-MS-TrafficTypeDiagnostic: CO1PR15MB1079: X-Microsoft-Exchange-Diagnostics: 1;CO1PR15MB1079;20:DV3ad/OsjJnBJuyWK0VTGQvxEidMIIkzId3aJ6L4rUjcwWLpOLtmCQbSlKytwP+LzRkReOaj3ZlPTB1230wiSQ+4D2FSndvxmrXCsaqUp5aZyOiBnsFnvAlF4jNiIpQJisk8Vk7EJYZxmMAQ0+Tr1mEC29PI0MZB0lztvPk9eR8Ao69KUbLNk6XeEcwji/03bzPl17P+yssvv6IyCPQI2q4TGJ/E4HxU3ZA8RD5dzBGvmnKiU0zXFKrcYp6zNdXJj9DEEYPmkF4HLaTiH1wFwLFaK1DPTV2sDnDBRWoT5oS/cGYjsFZhasaZrBStlRw3GWpovgNSFpCqPDF7Ki/ZcJTmAh0IKd3UD2lh+0BqRkw8WR07pIZj5wpk94Zy4DrhNJouJUf3aEORz0Fmoym8O3etWSMZuwG3RwsdkP5tfv65wgMTD5ERMKtTCIisAXU3NNxwURJVXLu1uaLtN4XhtSj8y+ZBMrGXlLufVEmbH1E0Wrc11UtJkIeseHS1/hTX;4:REx/welUvjTA6svcn4Um6VbSu0bwo1Rya/X5Jo118jzPZ37z85K37Re7aG+9P/6WME2uL/QYwGBle+5bwK6BoaQZi/RKPjryzvISQfwU2yZzp03s/srTfmujsZqcLR7iVo0yGT84BKE4OOheadSZxlUe5fGzGLim681vrPoPCtKqomNgF04FhZVe7p+D28RnWB3ZUUIhTG3kSqrPDDMWNwQanhckiOVw9PkdUN2NgUJ4wX+3SJxG2x+zHrBbCP2NtGU8PgH4+Rao7VKhIVWSAz1C4NRV9RLmojuA4zrfBvb4/RyyvekbNyHGd3e4mWq2 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(67672495146484); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040470)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231023)(11241501184)(6041268)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011);SRVR:CO1PR15MB1079;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:CO1PR15MB1079; X-Forefront-PRVS: 0527DFA348 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(39380400002)(366004)(396003)(376002)(39860400002)(346002)(377424004)(189003)(199004)(24454002)(6246003)(9686003)(6666003)(50466002)(316002)(386003)(229853002)(81166006)(2950100002)(93886005)(68736007)(6916009)(33716001)(575784001)(33656002)(8936002)(86362001)(53936002)(8676002)(105586002)(52116002)(5660300001)(81156014)(52396003)(76176011)(33896004)(106356001)(478600001)(97736004)(83506002)(7736002)(53546011)(6496006)(25786009)(47776003)(39060400002)(55016002)(23726003)(4326008)(305945005)(16586007)(1076002)(6116002)(4001150100001)(58126008)(54906003)(2906002)(18370500001)(42262002)(217873001);DIR:OUT;SFP:1102;SCL:1;SRVR:CO1PR15MB1079;H:castle;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CO1PR15MB1079;23:yHOxBjRZmvrwf6zaLzAUztKkQLbD4u6HoaF5aqvFe?= =?us-ascii?Q?F1tnlfwaH6818tframBQ5ruB2+79Fc5Z8/gtrIj3DgbhQrU/aXZ+XwKSxZOM?= =?us-ascii?Q?WfAsq9+VJ+T4pmhRDJSErtX5a6DisE3YHspiYyn2vVJ20hbwq5jXhN7VxFLF?= =?us-ascii?Q?jwWfU8Y/ehAlQQxgQJqPMIaGCYg6z52onGh1di4fTJpIqZ3lmQPorPE7dQhw?= =?us-ascii?Q?6lxzQXwH1QUuM7ROyMmqHV74IQzpWRECvy8LI6PMOq6zC4yTmhdEaq/MZj3z?= =?us-ascii?Q?X6YgRYlUpv6VYW77/486MEBgOrGyf8HUd3/F7kLe4BtOhMdq7MA+42aRCIJt?= =?us-ascii?Q?+MUB5Cb4yNH1d/hmMc9A3U+THr4HRVvQSVuXduth2RTsbDEO+PP291nFbTS7?= =?us-ascii?Q?zjUD0DK28hvBdDuk1tP3e9OPhR/u8JAQZBIEXTovbdCw5pV0jcusej4LoFeF?= =?us-ascii?Q?/rPWTXDKTtJ7/0aPaCXjDTrk9ZZ8mSdcQwv/wV3h6f7N7WfAJFJA/xtWQD8l?= =?us-ascii?Q?ysJ/KozoqjA24hpj/oNKw/nRav2NF4Fm0aFtnriQUOag/KWbwCTQP7WRKsS/?= =?us-ascii?Q?Ugu7z2wTdAmg1puy0Rqz+bhPiVPxQkxlWJHEaJN7Pib5qkuzFfsMKrQnQAxZ?= =?us-ascii?Q?9CQIloL5t6mxz+oxA/p7fqr0ZDsmJ+PjgSpb2unMnqUKcP2z0A4msfh09DB1?= =?us-ascii?Q?DYNDUsWX8UtnekXS4hA6Xl769uBRr+0tV9MM8uK7z7HPPMsDTEhy+Qw3wwtf?= =?us-ascii?Q?VeM+xRUCsdDlylHvE4NuWfe9URGEoCpp/F4Aki62Om8IaXcCJvOpj+lc7Tun?= =?us-ascii?Q?0U4Q3jwSgZWJyiGVbbeMbIo6DK5nJoRJ/IiM0eFLOdYDtNIaLjk9YzBucZJ/?= =?us-ascii?Q?JVHke42n+iHevm1LPhslXQ9icB6oHOVeFhdI16BHdl0+a88qjCLVMbe/HJAl?= =?us-ascii?Q?tleKMfFX05vFGIWCKiQKYzv+KxdI18NVNSooVKTxwnH9N5DWF0SKr8VTCQT+?= =?us-ascii?Q?AQip3GFACVWvG3jGpuo6pXQNMMKOpoKU9sRMctJjYRmLMbTqHdWCrXr5a86Q?= =?us-ascii?Q?YYgjkM42cyf3IwCMv3toush4I6GQduMBzRFW9nEsWq4fMiHV6jCbTZ2OfHwH?= =?us-ascii?Q?h2HzTxTynuJYFnrrlOmsYuvBCFXYvYA8h++fSZ1Xe4z9aoSYItgdsASMQw5K?= =?us-ascii?Q?ouNBT2kC3KWBwL0Q9DuZ04g5yVtPE3hBxM/IMdxFePcK8vtUfjvjyclr11kg?= =?us-ascii?Q?QWfNeo9So9PP9vI+2A3qXvyVX59Jym3b4FJoyToBerAov2ajKpzJOIT+YqCa?= =?us-ascii?Q?xnySljszdtf2/wjD/Dc+FPV4aaPuFhjTNyOmmtJ0UswkiUHkUfP5+wWt4VhC?= =?us-ascii?Q?qAwIwzsz0SZeToEZE1J9m+DYUtbDv4pewtDP68cPHDx0HDY?= X-Microsoft-Exchange-Diagnostics: 1;CO1PR15MB1079;6:mlnkz5CgyLWf1+7Hqed35yMUvFFEjmZDWulGaWy4kHrUE+TYwtzMIs04wdBRgVzTdRCd7LrGUgcTiDKz7GzAHIQJPHk9AZ7zFrrRKv+vjTTYpDJjMnNyNN2XZLmZAgjTksSmZ/zjiSiuGtN2wxaw/6bMF+o4qNxl0KSNziS10zOV427tS2w0pHqEmRLFIj8OUubaULE9qPqrGW5gYJPNjN8HrrtR2FJVGeKb5pGyF3Q2r/KRcAo7KzGz0FX5E5mtnNik65PV0WylFZOse6rpBiQY+YA3lwt1oIgatZFri0QnH6avtcB+2A5/BrjJYptr7robma8QEgZVfCmwurXmMvEBB3UpUwk/V/FBP60DdEM=;5:R0JXTuhO7FNYtEMqvK3XmJCh1lHntsyAqYNj84MFV/qnRl6b0C5WopZRMglcKNgeUVv5mONbzRVI8QxKDrhEY6F3Lire2Y/LJd/YrQuw+uKn2qmmjPEzaRIx+1wIF2Pkb2ls7tg3eSlH21S1Pjd86qFZyb+0XQjw8qZtdYBCBFI=;24:ud89hPutcmVtI1cGV+B4tX15IxA5JeyN2HFzKdi0vWhb6VcTeJjZMEEwhYcCpn1BObXCmhM4Kv+vNFtdOZnqZzwoKW/5Cyru/dwzYHrc00I=;7:8MPhXN4ylkL2Ef4CKJJNb1aMzlMlyRmWgN9lsIrtDhTQUDBDr7NYupOZs/+e1+rrEfbGkKzXWspuTIVSIbUwMA3gwvpv5SvVaT5ZQj6wkK7pLDNT+Jm23P2fTvKyInyHlT4yseIDJehh6RXdBRz1WgEgL5w761bAkGk3NdCpZAp2cnigZ48JrxUxywKiXXPRERYyf35CDH9fbfJKXiunADpN51JD92bBocZP4yYVzYqisEcVS/ZLBD2hj9qyDKjp SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CO1PR15MB1079;20:ftJilph6xwNhUzfPBM2mZYk/Zb/am0d2/wYLbu+FnKt1iqVt9LET5M00mtUfWC3LBahB3AcH5cJPK/mB6c7mqouY7GCA+Gki0AkQTe8UKh6+muAFLlb8aoW9ZQlm1HfRP/gNCaiCxSCKOpqKU5bwS0X6SDyd73oBXvljG1lBdUk= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Dec 2017 18:32:48.6910 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5bbb9724-b216-41c2-df7d-08d547d8133f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR15MB1079 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-12-20_07:,, signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 6240 Lines: 201 On Tue, Dec 19, 2017 at 04:22:51PM +0000, Quentin Monnet wrote: > 2017-12-19 16:10 UTC+0000 ~ Roman Gushchin > > On Tue, Dec 19, 2017 at 03:57:02PM +0000, Quentin Monnet wrote: > >> Hi Roman, thanks for working on this! > >> > >> > >> I discussed this issue with Jakub recently, and one suggestion he had > >> was to look in tools/build/feature to add a new "feature", by trying to > >> compile short programs, for making the distinction between binutils > >> versions. It probably requires more work, but could be more robust than > >> parsing the version from the command line? > > > > Hm, might be an option. Parsing readelf output is pretty ugly, here I agree. > > In general it feels more like a binutils issue, so we have to workaround it > > in either way. > > > > Is Jakub or someone else working on it? > > > > Thanks! > > > > Jakub isn't. On our side, I noticed last week that there was this change > in binutils, and started to have a look at how these "features" work. > But I have nothing that works so far, so feel free to tackle this. > > Quentin Hi Quentin! Can you, please, check that the patch below works in your environment. Thanks! -- >From b08deabf42e4c143b9e0eec8c49714e4d2c928e3 Mon Sep 17 00:00:00 2001 From: Roman Gushchin Date: Wed, 20 Dec 2017 13:27:32 +0000 Subject: [RFC PATCH net-next] tools/bpftool: fix bpftool build with bintutils >= 2.8 Bpftool build is broken with binutils version 2.28 and later. The cause is commit 003ca0fd2286 ("Refactor disassembler selection") in the binutils repo, which changed the disassembler() function signature. Fix this by adding a new "feature" to the tools/build/features infrastructure and make it responsible for decision which disassembler() function signature to use. Signed-off-by: Roman Gushchin Cc: Jakub Kicinski Cc: Alexei Starovoitov Cc: Daniel Borkmann --- tools/bpf/Makefile | 18 ++++++++++++++++++ tools/bpf/bpf_jit_disasm.c | 7 +++++++ tools/bpf/bpftool/Makefile | 13 +++++++++++++ tools/bpf/bpftool/jit_disasm.c | 7 +++++++ tools/build/feature/Makefile | 4 ++++ tools/build/feature/test-disassembler.c | 15 +++++++++++++++ 6 files changed, 64 insertions(+) create mode 100644 tools/build/feature/test-disassembler.c diff --git a/tools/bpf/Makefile b/tools/bpf/Makefile index 07a6697466ef..c62b3a311486 100644 --- a/tools/bpf/Makefile +++ b/tools/bpf/Makefile @@ -9,6 +9,24 @@ MAKE = make CFLAGS += -Wall -O2 CFLAGS += -D__EXPORTED_HEADERS__ -I../../include/uapi -I../../include +ifeq ($(srctree),) +srctree := $(patsubst %/,%,$(dir $(CURDIR))) +srctree := $(patsubst %/,%,$(dir $(srctree))) +endif + +FEATURE_TESTS = disassembler +FEATURE_DISPLAY = disassembler + +ifeq ($(FEATURES_DUMP),) +include $(srctree)/tools/build/Makefile.feature +else +include $(FEATURES_DUMP) +endif + +ifeq ($(feature-disassembler), 1) +CFLAGS += -DNEW_DISSASSEMBLER_SIGNATURE +endif + %.yacc.c: %.y $(YACC) -o $@ -d $< diff --git a/tools/bpf/bpf_jit_disasm.c b/tools/bpf/bpf_jit_disasm.c index 75bf526a0168..a5f4dbacdb11 100644 --- a/tools/bpf/bpf_jit_disasm.c +++ b/tools/bpf/bpf_jit_disasm.c @@ -72,7 +72,14 @@ static void get_asm_insns(uint8_t *image, size_t len, int opcodes) disassemble_init_for_target(&info); +#ifdef NEW_DISSASSEMBLER_SIGNATURE + disassemble = disassembler(bfd_get_arch(bfdf), + bfd_big_endian(bfdf), + bfd_get_mach(bfdf), + bfdf); +#else disassemble = disassembler(bfdf); +#endif assert(disassemble); do { diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile index 3f17ad317512..9c089cfa5f3f 100644 --- a/tools/bpf/bpftool/Makefile +++ b/tools/bpf/bpftool/Makefile @@ -43,6 +43,19 @@ LIBS = -lelf -lbfd -lopcodes $(LIBBPF) INSTALL ?= install RM ?= rm -f +FEATURE_TESTS = disassembler +FEATURE_DISPLAY = disassembler + +ifeq ($(FEATURES_DUMP),) +include $(srctree)/tools/build/Makefile.feature +else +include $(FEATURES_DUMP) +endif + +ifeq ($(feature-disassembler), 1) +CFLAGS += -DNEW_DISSASSEMBLER_SIGNATURE +endif + include $(wildcard *.d) all: $(OUTPUT)bpftool diff --git a/tools/bpf/bpftool/jit_disasm.c b/tools/bpf/bpftool/jit_disasm.c index 1551d3918d4c..8295e2f14ed7 100644 --- a/tools/bpf/bpftool/jit_disasm.c +++ b/tools/bpf/bpftool/jit_disasm.c @@ -107,7 +107,14 @@ void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes) disassemble_init_for_target(&info); +#ifdef NEW_DISSASSEMBLER_SIGNATURE + disassemble = disassembler(bfd_get_arch(bfdf), + bfd_big_endian(bfdf), + bfd_get_mach(bfdf), + bfdf); +#else disassemble = disassembler(bfdf); +#endif assert(disassemble); if (json_output) diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile index 96982640fbf8..91f937943918 100644 --- a/tools/build/feature/Makefile +++ b/tools/build/feature/Makefile @@ -13,6 +13,7 @@ FILES= \ test-hello.bin \ test-libaudit.bin \ test-libbfd.bin \ + test-disassembler.bin \ test-liberty.bin \ test-liberty-z.bin \ test-cplus-demangle.bin \ @@ -188,6 +189,9 @@ $(OUTPUT)test-libpython-version.bin: $(OUTPUT)test-libbfd.bin: $(BUILD) -DPACKAGE='"perf"' -lbfd -lz -liberty -ldl +$(OUTPUT)test-disassembler.bin: + $(BUILD) -lopcodes + $(OUTPUT)test-liberty.bin: $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty diff --git a/tools/build/feature/test-disassembler.c b/tools/build/feature/test-disassembler.c new file mode 100644 index 000000000000..45ce65cfddf0 --- /dev/null +++ b/tools/build/feature/test-disassembler.c @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: GPL-2.0 +#include +#include + +int main(void) +{ + bfd *abfd = bfd_openr(NULL, NULL); + + disassembler(bfd_get_arch(abfd), + bfd_big_endian(abfd), + bfd_get_mach(abfd), + abfd); + + return 0; +} -- 2.14.3