From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Hemminger Subject: Re: [PATCH iproute2] bpf: check map symbol type properly with newer llvm compiler Date: Wed, 31 Oct 2018 08:31:56 -0700 Message-ID: <20181031083156.03621aa0@xeon-e3> References: <20181029223203.3135200-1-yhs@fb.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: , , , To: Yonghong Song Return-path: Received: from mail-pf1-f196.google.com ([209.85.210.196]:41807 "EHLO mail-pf1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728649AbeKAAa3 (ORCPT ); Wed, 31 Oct 2018 20:30:29 -0400 Received: by mail-pf1-f196.google.com with SMTP id e22-v6so4763068pfn.8 for ; Wed, 31 Oct 2018 08:31:59 -0700 (PDT) In-Reply-To: <20181029223203.3135200-1-yhs@fb.com> Sender: netdev-owner@vger.kernel.org List-ID: On Mon, 29 Oct 2018 15:32:03 -0700 Yonghong Song wrote: > With llvm 7.0 or earlier, the map symbol type is STT_NOTYPE. > -bash-4.4$ cat t.c > __attribute__((section("maps"))) int g; > -bash-4.4$ clang -target bpf -O2 -c t.c > -bash-4.4$ readelf -s t.o > > Symbol table '.symtab' contains 2 entries: > Num: Value Size Type Bind Vis Ndx Name > 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND > 1: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 3 g > -bash-4.4$ > > The following llvm commit enables BPF target to generate > proper symbol type and size. > commit bf6ec206615b9718869d48b4e5400d0c6e3638dd > Author: Yonghong Song > Date: Wed Sep 19 16:04:13 2018 +0000 > > [bpf] Symbol sizes and types in object file > > Clang-compiled object files currently don't include the symbol sizes and > types. Some tools however need that information. For example, ctfconvert > uses that information to generate FreeBSD's CTF representation from ELF > files. > With this patch, symbol sizes and types are included in object files. > > Signed-off-by: Paul Chaignon > Reported-by: Yutaro Hayakawa > > Hence, for llvm 8.0.0 (currently trunk), symbol type will be not NOTYPE, but OBJECT. > -bash-4.4$ clang -target bpf -O2 -c t.c > -bash-4.4$ readelf -s t.o > > Symbol table '.symtab' contains 3 entries: > Num: Value Size Type Bind Vis Ndx Name > 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND > 1: 0000000000000000 0 FILE LOCAL DEFAULT ABS t.c > 2: 0000000000000000 4 OBJECT GLOBAL DEFAULT 3 g > -bash-4.4$ > > This patch makes sure bpf library accepts both NOTYPE and OBJECT types > of global map symbols. > > Signed-off-by: Yonghong Song Looks good, applied.