From nobody Sun Feb 8 09:11:12 2026 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2A6292119 for ; Mon, 15 Apr 2024 14:55:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713192945; cv=none; b=Ypl3be971lkjIidIhBCDRg1X/jFh8B/JG5mVfuzdmnaPafepTwtHoy2zwJg5ve/XQtIvnQwuFey6Te+VgppDbHZcsj12gYGxnNQMSoSk4sw7UMPYJXmu8thKA71vwVn3MHqSCZWKPD20ulWjjzatjH4wbHh9JX2NyJUfVMgpCS0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713192945; c=relaxed/simple; bh=9OWRJdkAv7cHnWuVRgo+tbzxoUOMQDC00S++Chf+Sns=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GuGjJj8O4R1RByIjbDbk/ZF7G/WeLhRwZD6l5/OC6x2Mbbk2k1g7FkmHQjGmjGC4i8JDdhvDFCL7mcnLpCOHXzJ67ZbTutGGKJnyXZw2dQBNA9UiexLUPuIsZN6rxIvz6yKq13mWL3jRQR7Jgkfm3BsBXKhcWyzGG/ZBVyNuBuA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=EslYGgKj; arc=none smtp.client-ip=209.85.167.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EslYGgKj" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-518d98b9620so1516174e87.3 for ; Mon, 15 Apr 2024 07:55:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713192942; x=1713797742; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=dTVNNfo5/Y61rhM7u0Y0ocSrSY3U2WS9X7F9mo8CMy4=; b=EslYGgKjR8I3tRXIkC8cIzcbwSJvKoNI0wd3WzmRQhQ7ZBRf7/CppQ6Y+p15ixWrfp wuhVwARbslTXM/2iawl8t3m6edbzpEObpzsGhHDbYAD4GKI3hT+0IODCFKxMH/THG0UB loWKyqotyC8iKSgRUameQ1xJEFPiFnIaqjlHeO/8MpDta15Z9MunKvwmDiWgbCx0vRee yhYUCpilWc7iOvN9YuKBqgkwpXBEmvdy/+uRcLqfC1N1FeCemzSj4mYdEQ23Bl4K8LQs q9jf0qhesi3oViq1BEZjB70ohyLUqIdsbmEsMSaLZQl7oZ4fV9GvobYasiYVcwlnhbmC QlMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713192942; x=1713797742; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dTVNNfo5/Y61rhM7u0Y0ocSrSY3U2WS9X7F9mo8CMy4=; b=Gl/K8MLyumHT5DatQUImmiA7gnQmk9BSIGm0LLVmU1Cymr2ZHj48gCcoEW1f9UVy85 Ly+UrvyAzbY+IhY50n9dP7SUKo4txt5miHSn91WtiQ7SvXEOAiWDRV+xo09oSqK5cWVm 669z+NW5rM1+OE2qnt7eU2KGh+cYN/GQKgjGj1r+f2YFxqLgMNnLVIDQEvbYYwS4+EHa D5VnAFnU7eoHE2dcBYxs+94dQK42DRHHA0e5A8X3sielCGw4q2x2n2I+tBxrGl8XYWkG 1lPPsu7Vy+TyN41/lfG1cOs8r6xf30Y0wa03enjW8S7dZyFocw7nmr0uo4npRXrD/5av pGzQ== X-Forwarded-Encrypted: i=1; AJvYcCXO+26KIPPT7sZE565sW8lQL/CA2IwmFjjw4LgEwPnXVMJSfQfbiTRmdX94AQiIfx/chYXfB8w68aMTRgwbhc1Wf0UrJzUzJvxYfv13 X-Gm-Message-State: AOJu0YwmE6AA0xQV9R16fSefAXbTOtlK/b+U2hlOXbFzz4lzI/EWqS6o uU9VkyyvwGmlzI7KHK2BRMGaQvWPVBXZBSdOLONoSkiKAQDYUqvW877QQ1vj X-Google-Smtp-Source: AGHT+IEz8efraFklN0cHdU13zp8UbF4xXSaT8V02FypB+9ruwA2hWS9T97FhnXCMburIFEZFh119Gg== X-Received: by 2002:ac2:4d17:0:b0:518:d829:4bae with SMTP id r23-20020ac24d17000000b00518d8294baemr2757922lfi.32.1713192942140; Mon, 15 Apr 2024 07:55:42 -0700 (PDT) Received: from rex.hwlab.vusec.net (lab-4.lab.cs.vu.nl. [192.33.36.4]) by smtp.gmail.com with ESMTPSA id s13-20020a056402520d00b0056bf6287f32sm4893415edd.26.2024.04.15.07.55.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Apr 2024 07:55:41 -0700 (PDT) From: Brian Johannesmeyer To: Josh Poimboeuf , linux-kernel@vger.kernel.org, Brian Johannesmeyer Subject: [PATCH v2 1/7] scripts/faddr2line: Reduce number of readelf calls to three Date: Mon, 15 Apr 2024 16:55:32 +0200 Message-Id: <20240415145538.1938745-2-bjohannesmeyer@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240415145538.1938745-1-bjohannesmeyer@gmail.com> References: <20240415145538.1938745-1-bjohannesmeyer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Rather than calling readelf several times for each invocation of __faddr2line, call readelf only three times at the beginning, and save its result for future use. Signed-off-by: Brian Johannesmeyer --- scripts/faddr2line | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/scripts/faddr2line b/scripts/faddr2line index 587415a52b6f..bf394bfd526a 100755 --- a/scripts/faddr2line +++ b/scripts/faddr2line @@ -87,7 +87,7 @@ command -v ${ADDR2LINE} >/dev/null 2>&1 || die "${ADDR2LI= NE} isn't installed" find_dir_prefix() { local objfile=3D$1 =20 - local start_kernel_addr=3D$(${READELF} --symbols --wide $objfile | sed 's= /\[.*\]//' | + local start_kernel_addr=3D$(echo "${ELF_SYMS}" | sed 's/\[.*\]//' | ${AWK} '$8 =3D=3D "start_kernel" {printf "0x%s", $2}') [[ -z $start_kernel_addr ]] && return =20 @@ -103,6 +103,14 @@ find_dir_prefix() { return 0 } =20 +run_readelf() { + local objfile=3D$1 + + ELF_FILEHEADER=3D$(${READELF} --file-header $objfile) + ELF_SECHEADERS=3D$(${READELF} --section-headers --wide $objfile) + ELF_SYMS=3D$(${READELF} --symbols --wide $objfile) +} + __faddr2line() { local objfile=3D$1 local func_addr=3D$2 @@ -125,7 +133,7 @@ __faddr2line() { =20 # vmlinux uses absolute addresses in the section table rather than # section offsets. - local file_type=3D$(${READELF} --file-header $objfile | + local file_type=3D$(echo "${ELF_FILEHEADER}" | ${AWK} '$1 =3D=3D "Type:" { print $2; exit }') if [[ $file_type =3D "EXEC" ]] || [[ $file_type =3D=3D "DYN" ]]; then is_vmlinux=3D1 @@ -143,8 +151,7 @@ __faddr2line() { local sec_name =20 # Get the section size: - sec_size=3D$(${READELF} --section-headers --wide $objfile | - sed 's/\[ /\[/' | + sec_size=3D$(echo "${ELF_SECHEADERS}" | sed 's/\[ /\[/' | ${AWK} -v sec=3D$sym_sec '$1 =3D=3D "[" sec "]" { print "0x" $6; exit }= ') =20 if [[ -z $sec_size ]]; then @@ -154,8 +161,7 @@ __faddr2line() { fi =20 # Get the section name: - sec_name=3D$(${READELF} --section-headers --wide $objfile | - sed 's/\[ /\[/' | + sec_name=3D$(echo "${ELF_SECHEADERS}" | sed 's/\[ /\[/' | ${AWK} -v sec=3D$sym_sec '$1 =3D=3D "[" sec "]" { print $2; exit }') =20 if [[ -z $sec_name ]]; then @@ -197,7 +203,7 @@ __faddr2line() { found=3D2 break fi - done < <(${READELF} --symbols --wide $objfile | sed 's/\[.*\]//' | ${AWK= } -v sec=3D$sym_sec '$7 =3D=3D sec' | sort --key=3D2) + done < <(echo "${ELF_SYMS}" | sed 's/\[.*\]//' | ${AWK} -v sec=3D$sym_se= c '$7 =3D=3D sec' | sort --key=3D2) =20 if [[ $found =3D 0 ]]; then warn "can't find symbol: sym_name: $sym_name sym_sec: $sym_sec sym_addr= : $sym_addr sym_elf_size: $sym_elf_size" @@ -278,7 +284,7 @@ __faddr2line() { =20 DONE=3D1 =20 - done < <(${READELF} --symbols --wide $objfile | sed 's/\[.*\]//' | ${AWK}= -v fn=3D$sym_name '$8 =3D=3D fn') + done < <(echo "${ELF_SYMS}" | sed 's/\[.*\]//' | ${AWK} -v fn=3D$sym_name= '$8 =3D=3D fn') } =20 [[ $# -lt 2 ]] && usage @@ -291,7 +297,9 @@ LIST=3D0 [[ ! -f $objfile ]] && die "can't find objfile $objfile" shift =20 -${READELF} --section-headers --wide $objfile | ${GREP} -q '\.debug_info' |= | die "CONFIG_DEBUG_INFO not enabled" +run_readelf $objfile + +echo "${ELF_SECHEADERS}" | ${GREP} -q '\.debug_info' || die "CONFIG_DEBUG_= INFO not enabled" =20 DIR_PREFIX=3Dsupercalifragilisticexpialidocious find_dir_prefix $objfile --=20 2.34.1 From nobody Sun Feb 8 09:11:12 2026 Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DF8F775818 for ; Mon, 15 Apr 2024 14:55:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713192947; cv=none; b=qFMINiMaotHEuO/EJqbyFk88fzZ59efhKNL/iZyGTaOZAqQyrjl4eh/QJwtgUr7ubC/kgA3zPuFTSy6wRyov0NvN0jSn//jHta1WjpLoY10eBn6Yt3r3B5CmMHpBZaZpaRC06dQ4yjSmnUSenVUgMeMjxHEDxd/ibYfJhXqegOM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713192947; c=relaxed/simple; bh=0Kq0Kgx3d6qdBteVdc49v+B1oL6Tx1LvVDzpIfXgHLU=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=BtV6oQMyPhm4prz1feBNBT3QwHh570H3fNj9MCRVHfpn9Gil9zR1UAKUElv24XiHCNM/6NZKtPe0lMW0KqpmR2gvkZ3NucGCCb5u/XsobfSDOMuhTO7DVVQf/6PwAEYGDAeIEfp12DrODT7okxtr4ZfRmls/CnavIA+1SF+Ea9o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=YD5mzvMl; arc=none smtp.client-ip=209.85.167.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YD5mzvMl" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-516f2e0edb7so3988385e87.1 for ; Mon, 15 Apr 2024 07:55:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713192944; x=1713797744; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=SeoEezW9/4VkOixPnqAE9ztYSH2P2V/0rjgAzL/X/r4=; b=YD5mzvMlnTU1Ea9uKX7vItaE3eZkInnMt8JEppEf2WMzQn5DZrap6uuqtLezN8mEML ywMDcLuURFkwYkXL5Pe02DoAhr6Es3vwFsDyMT/coK7+EW0JKxtvLe+nc1dlwv7U2bSq mV+KK4Lk5sEkSMQWZMSo+nvajf/P5Uz5z6kpOJljM24rIypk2g3uzQ/tkjbwb3jpKaZ7 d6teqDWCrim1Jal9JdR6EbSMqO99YVkWM3cuShSci79C5B6ZH6ekzPJfgdqWP/0wulz4 DHyzSovsDr1+Y8wvCtg+iJoqMqXXsacWXdQ/BegodSJoGQDP4pMkcOUoaVjflITUXVl0 ozhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713192944; x=1713797744; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SeoEezW9/4VkOixPnqAE9ztYSH2P2V/0rjgAzL/X/r4=; b=MgYZEas+IVC6VxPlxsLug82rVwTqmqvrw36PAMk7acv1EhgU45wgSSD9iYEkTZHh/l lhOHBaUDxpW31hwbhNvAxkyHjWVkFpUG34uBRRLOZMEAAcpSKLq5xi0J6CavMAfjptZC 824/gfcG+Wh/NQAKnEsbjiY7VEAOgee39bf+VwJIrCSYeq0Gt2ChxzDF+WQI+FeCGeK7 Q37jsGYYyg/7IL6K5/3snAUr8Elz4xY5JUs0Yid2dOYPUtc//yKgnA+k06DcHvrYJuy5 BXicjinI625BCVVCVLoN1kuG9GKa0N9i2N3vJaDn0UQoJvo3mpC6tiuVHQ6wKQUKlDmA pWEw== X-Forwarded-Encrypted: i=1; AJvYcCWpkTtTwTPEUwfW/gj8Aea41pYnKtPNe5UoKQt7d74Ii89zrHSOgQJThMo/e1TswaDFVTB4HRBvJOHp0Z34KmpDSckA2QVttRq3Mdqv X-Gm-Message-State: AOJu0Yx6SsQMUtDq/qO/Ax2CHbTMCWOTDoVa9mmIxbjLia87pJIRKm+q JtN1TpxF+MOxpg0EF95ywTg+D1gAn2fUjNUSDGpEHH4KaQcRZmDORVKzSSPz X-Google-Smtp-Source: AGHT+IFy/Vert0WG2Aez/B7Huq4Te7OsF+3VQrFvaPy0WGwq/20Mwg9gxHMxFRpiOauDvOeL4LZqWg== X-Received: by 2002:a05:6512:2813:b0:518:e249:c0ff with SMTP id cf19-20020a056512281300b00518e249c0ffmr2702696lfb.41.1713192943986; Mon, 15 Apr 2024 07:55:43 -0700 (PDT) Received: from rex.hwlab.vusec.net (lab-4.lab.cs.vu.nl. [192.33.36.4]) by smtp.gmail.com with ESMTPSA id s13-20020a056402520d00b0056bf6287f32sm4893415edd.26.2024.04.15.07.55.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Apr 2024 07:55:43 -0700 (PDT) From: Brian Johannesmeyer To: Josh Poimboeuf , linux-kernel@vger.kernel.org, Brian Johannesmeyer Subject: [PATCH v2 2/7] scripts/faddr2line: Combine three readelf calls into one Date: Mon, 15 Apr 2024 16:55:33 +0200 Message-Id: <20240415145538.1938745-3-bjohannesmeyer@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240415145538.1938745-1-bjohannesmeyer@gmail.com> References: <20240415145538.1938745-1-bjohannesmeyer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Rather than calling readelf three separate times to collect three different types of info, call it only once, and parse out the different types of info from its output. Signed-off-by: Brian Johannesmeyer --- scripts/faddr2line | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/faddr2line b/scripts/faddr2line index bf394bfd526a..f011bda4ed25 100755 --- a/scripts/faddr2line +++ b/scripts/faddr2line @@ -105,10 +105,14 @@ find_dir_prefix() { =20 run_readelf() { local objfile=3D$1 - - ELF_FILEHEADER=3D$(${READELF} --file-header $objfile) - ELF_SECHEADERS=3D$(${READELF} --section-headers --wide $objfile) - ELF_SYMS=3D$(${READELF} --symbols --wide $objfile) + local out=3D$(${READELF} --file-header --section-headers --symbols --wide= $objfile) + + # This assumes that readelf first prints the file header, then the sectio= n headers, then the symbols. + # Note: It seems that GNU readelf does not prefix section headers with th= e "There are X section headers" + # line when multiple options are given, so let's also match with the "Sec= tion Headers:" line. + ELF_FILEHEADER=3D$(echo "${out}" | sed -n '/There are [0-9]* section head= ers, starting at offset\|Section Headers:/q;p') + ELF_SECHEADERS=3D$(echo "${out}" | sed -n '/There are [0-9]* section head= ers, starting at offset\|Section Headers:/,$p' | sed -n '/Symbol table .* c= ontains [0-9]* entries:/q;p') + ELF_SYMS=3D$(echo "${out}" | sed -n '/Symbol table .* contains [0-9]* ent= ries:/,$p') } =20 __faddr2line() { --=20 2.34.1 From nobody Sun Feb 8 09:11:12 2026 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3078E763EC for ; Mon, 15 Apr 2024 14:55:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713192948; cv=none; b=GhnQvV/4Kx88ET/KF4PI+Oy9RjsGjLiDbO8XjwzcG8Qn3JTPY6cKHfC6LVqT643hk8jpqkZMmoP7GaWW9FeE1m5MSEB0r1+g98Pah5LbcBKj9t4E7jvKCd/Mim0cZrCAgP+hpIdGE4cAN7s3DsDktpcZTok6ICpnaLbUhr4RJoM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713192948; c=relaxed/simple; bh=pXQbxd5ujUmK1VVLnK8kdd1NphI/TywkGB3WoCJTJQ8=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gDCCg7M2jPd3gQGJZ5/FU2Cq/uRUGxtkS54yCSYt5nTxEmzRaQSGI6Xm/gqIRinHGbQK4o+mAB/Fwe8LbAh/2CFDxuqgcJqB4OE1We5FAg7Tw7AsQ/dIWUiN8hCy/FcQU3JJh1h+zZGNvQPE5DV4LEBxEgDORWJjBz0kozvqIcc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=bQAfIprP; arc=none smtp.client-ip=209.85.208.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bQAfIprP" Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-563cb3ba9daso3206895a12.3 for ; Mon, 15 Apr 2024 07:55:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713192945; x=1713797745; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=H4lmLduepyzOAbsVFho4Xvkct1BwmBvnsIf9kusvzWM=; b=bQAfIprPXmZ5mtmBb9vtJQz/D16RCl8wsgbm7t8mATwAE+1+fy8UTaHARYC4cMKzGy SnSEYfmqTY2TsCCrTUN3TDzugArsQxEujri53tZmcclV2rg562HbhNTcGdFm3qHMlcR+ WEGAle5ha24LjSuJESXqTie2jZUWiJNy6p6t8i9bde4Q9Djs4Bl5+Os0/r/ulfHVjMaH FR6Zv1Ecz2wej0cqAp3CHUdTisIzhgAAeDl9u0MxFp5PykysUdoMZ2pjNLEYsogc9JFs 4z0ewNYt7Zf4LVZN/9nbQbYW3ZCLDH8wjanfh5gbaRPsDdi6s9x/qPLjea0r1Gz0CVju /BcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713192945; x=1713797745; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H4lmLduepyzOAbsVFho4Xvkct1BwmBvnsIf9kusvzWM=; b=Tf/RAp+nATMAOzkw6CHvc2DoJgZx6r9zVZEhPPAnNmT5xBzZ0UUZHHgFFULyUXqocM uaRTYxVSbUYsKdmv94xDveRQRutMKTGE0qpM80cv86ChXpCWCSgmPh00xy1niYz9Hp0x aNTj8UeLswTgTv8XksgjBBTuNNrmY7beQDSGc1lGttz921o9z8IPL468MZnkkuP925Ms mcJIhQ4rHZsyq9+mKiqhQQfu5xn1zPMamWTZ6627BCuUMe0HuJLpJLfC+JaXhhB24G4a wHsAU3J0oo+gtgOVf7EEFNuFEurFygrHQlJVqhlG+iZFVIbbU+nMBDeLzkSNMCAq+0rx aJAw== X-Forwarded-Encrypted: i=1; AJvYcCWvIN1i6o+vK3wFaY6Ntmmj/84NVZnl6kXYisnLY3K/k3dTqM3WBE5Ox0B9H89TK0JbFIxaRbINsfVH2Yxo0s5Cz5XaQ232H6TLS40R X-Gm-Message-State: AOJu0Yz5ztX4lAaIUMi1aqmGNPnopxmFpui8hbrNZIw1LpENeZn48n/h TbvxqJlvJvwDAZcRPTWB7ZQ0y6Wd2DmTyV+NpmPn68cp/d5u52C9 X-Google-Smtp-Source: AGHT+IEe38g2tO5GPGSsyEIDzccfRxNiWf0GVHpH/dwBBiJSrbJWJIQ0xMK7BHVkWszNYWXTGw55JQ== X-Received: by 2002:a50:a695:0:b0:570:35e:9a09 with SMTP id e21-20020a50a695000000b00570035e9a09mr6978695edc.7.1713192945301; Mon, 15 Apr 2024 07:55:45 -0700 (PDT) Received: from rex.hwlab.vusec.net (lab-4.lab.cs.vu.nl. [192.33.36.4]) by smtp.gmail.com with ESMTPSA id s13-20020a056402520d00b0056bf6287f32sm4893415edd.26.2024.04.15.07.55.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Apr 2024 07:55:44 -0700 (PDT) From: Brian Johannesmeyer To: Josh Poimboeuf , linux-kernel@vger.kernel.org, Brian Johannesmeyer Subject: [PATCH v2 3/7] scripts/faddr2line: Check vmlinux only once Date: Mon, 15 Apr 2024 16:55:34 +0200 Message-Id: <20240415145538.1938745-4-bjohannesmeyer@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240415145538.1938745-1-bjohannesmeyer@gmail.com> References: <20240415145538.1938745-1-bjohannesmeyer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Rather than checking whether the object file is vmlinux for each invocation of __faddr2line, check it only once beforehand. Signed-off-by: Brian Johannesmeyer --- scripts/faddr2line | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/scripts/faddr2line b/scripts/faddr2line index f011bda4ed25..bb3b5f03f4ea 100755 --- a/scripts/faddr2line +++ b/scripts/faddr2line @@ -115,6 +115,17 @@ run_readelf() { ELF_SYMS=3D$(echo "${out}" | sed -n '/Symbol table .* contains [0-9]* ent= ries:/,$p') } =20 +check_vmlinux() { + # vmlinux uses absolute addresses in the section table rather than + # section offsets. + IS_VMLINUX=3D0 + local file_type=3D$(echo "${ELF_FILEHEADER}" | + ${AWK} '$1 =3D=3D "Type:" { print $2; exit }') + if [[ $file_type =3D "EXEC" ]] || [[ $file_type =3D=3D "DYN" ]]; then + IS_VMLINUX=3D1 + fi +} + __faddr2line() { local objfile=3D$1 local func_addr=3D$2 @@ -125,8 +136,6 @@ __faddr2line() { local func_offset=3D${func_addr#*+} func_offset=3D${func_offset%/*} local user_size=3D - local file_type - local is_vmlinux=3D0 [[ $func_addr =3D~ "/" ]] && user_size=3D${func_addr#*/} =20 if [[ -z $sym_name ]] || [[ -z $func_offset ]] || [[ $sym_name =3D $func_= addr ]]; then @@ -135,14 +144,6 @@ __faddr2line() { return fi =20 - # vmlinux uses absolute addresses in the section table rather than - # section offsets. - local file_type=3D$(echo "${ELF_FILEHEADER}" | - ${AWK} '$1 =3D=3D "Type:" { print $2; exit }') - if [[ $file_type =3D "EXEC" ]] || [[ $file_type =3D=3D "DYN" ]]; then - is_vmlinux=3D1 - fi - # Go through each of the object's symbols which match the func name. # In rare cases there might be duplicates, in which case we print all # matches. @@ -260,7 +261,7 @@ __faddr2line() { # Pass section address to addr2line and strip absolute paths # from the output: local args=3D"--functions --pretty-print --inlines --exe=3D$objfile" - [[ $is_vmlinux =3D 0 ]] && args=3D"$args --section=3D$sec_name" + [[ $IS_VMLINUX =3D 0 ]] && args=3D"$args --section=3D$sec_name" local output=3D$(${ADDR2LINE} $args $addr | sed "s; $dir_prefix\(\./\)*;= ;") [[ -z $output ]] && continue =20 @@ -305,6 +306,8 @@ run_readelf $objfile =20 echo "${ELF_SECHEADERS}" | ${GREP} -q '\.debug_info' || die "CONFIG_DEBUG_= INFO not enabled" =20 +check_vmlinux + DIR_PREFIX=3Dsupercalifragilisticexpialidocious find_dir_prefix $objfile =20 --=20 2.34.1 From nobody Sun Feb 8 09:11:12 2026 Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 922DC78C6D for ; Mon, 15 Apr 2024 14:55:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713192950; cv=none; b=Hjk4txIWy5V7NyNTplwjaJGylfIdchZhdVSVyo9FHzEFQE6PnXB/lRbKx+MAi0goqhGCHdhdD2D2suLOVURN9cWZrjLNwnapr/gV1gkykrtphE0FTEI9ZdoA9cyTI+Su6DPG849qtwwk6KU9OgGqOZV4UUYP72M+eOtRKMcUXcQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713192950; c=relaxed/simple; bh=hVTH5bLCNmcxmn1AYn7nqYIKnxCb2Ab5PWYay7BarHM=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=h5bAmPQHQ4z+JojjduOmQFKnUfqbWNfSOMPEcmFA4ylVsVpA/mniYZyJwz9ceOtFy5dO0/vRF+2n4dcb4n+N91/5mHNADycTb702cN1mBBaf7LqQpRaJLE5O/GL8GiVuoKhy5vYK1Aey8jxXbYEL/fty2db+BJJsmla/vELIOjw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=G7rQApIk; arc=none smtp.client-ip=209.85.208.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="G7rQApIk" Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-56fffb1d14bso4751005a12.1 for ; Mon, 15 Apr 2024 07:55:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713192947; x=1713797747; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ftY3ceO7IaWaPhjW2mEyGYWXSld3NmgLxCpyOgogGis=; b=G7rQApIk0jXWhQKQf0l9PRbeSme0TQqtBdrAW4bdopUiXy/YXVG/LiSaLzL4SzrGoZ G8P8PWptUVEa8OZmRLkh7Uq+U10bGqUv4Ru5kUk0CMcBsXjkLfm5itCaxnauwQ2vM/pQ pXkwdE2yte2wsGsFq/Pm+iJvTVYJIw6jrwJLxnXB6ywmWUMEM2EkzuJHgevQulDqBKe2 Zrcm25phnDBA3Lt1h4zzAipz8raAPskgek7UAi5fB1Bx3pMvHXK6jjAOLEI0LEDtZ7HU TcBTxh3FASIzZH3JP+wi7cLiMVR7ydC9nnb8/oA1YPJ+B3Y4vxp6gZKk+mhDO4JlPaj5 Kx4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713192947; x=1713797747; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ftY3ceO7IaWaPhjW2mEyGYWXSld3NmgLxCpyOgogGis=; b=SbtIrso2qz1ZuNpEh9KIr9WHdsbVaI8K5MMZNNRq5uA3MMr2qLGK2SA8e5lIBBucUl U+jXkca53jaC8kgEyIbHdH92Wu30uJ/o/VWQj66hTDdpcQ/2iqzaKB67Rst2XZPQw86D oCikWi0HeBw+DIam74lo+gNmYnn6Bv4DxuuJUm+3JSpzjY4mu3qj+VBZg1RHzOJ9cCg4 IOFV4/xkXSpHtiC/BVCCquqWqUG/b2bJ5+TSSTE1N5hUftl+BiAqbiGm3SkV15F+w7EU eBFoPUOyBG+a2NoES+arKOHXibUwqD0qmkzQFz53VW5EMn+3RNWQWdJdbyfE1eiqXgqD ON/w== X-Forwarded-Encrypted: i=1; AJvYcCXCJOnoDNztr1pAiwL8m4CNuUrs1dlVpq65vpjIo8PJq4ZBTRPvKUMfNG8n+jzoab5StG0KYO2wMEeQVdbCJCibLM1NgWVU1pItFrDn X-Gm-Message-State: AOJu0Yy75iYPx8pvQzB8khfM5DqqIw/64LNcobGm5RkRn0O6gyVcGjfK r3dI/BqJzql1ZZTQ0z8Rybwoz8IiUHClSs69ASnx+rB3MRXsUm0b X-Google-Smtp-Source: AGHT+IHPfdMLWRvO52exJpQuI3qecs0Oxa8deY0XxfMEbWl1m/U/dLeCFRFdY3EaSvrvZdsQ0eqI/g== X-Received: by 2002:a50:8d5e:0:b0:567:e0e:dda5 with SMTP id t30-20020a508d5e000000b005670e0edda5mr9048713edt.17.1713192946819; Mon, 15 Apr 2024 07:55:46 -0700 (PDT) Received: from rex.hwlab.vusec.net (lab-4.lab.cs.vu.nl. [192.33.36.4]) by smtp.gmail.com with ESMTPSA id s13-20020a056402520d00b0056bf6287f32sm4893415edd.26.2024.04.15.07.55.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Apr 2024 07:55:46 -0700 (PDT) From: Brian Johannesmeyer To: Josh Poimboeuf , linux-kernel@vger.kernel.org, Brian Johannesmeyer Subject: [PATCH v2 4/7] scripts/faddr2line: Pass --addresses argument to addr2line Date: Mon, 15 Apr 2024 16:55:35 +0200 Message-Id: <20240415145538.1938745-5-bjohannesmeyer@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240415145538.1938745-1-bjohannesmeyer@gmail.com> References: <20240415145538.1938745-1-bjohannesmeyer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In preparation for identifying an addr2line sentinel. See previous work [0], which applies a similar change to perf. [0] commit 8dc26b6f718a ("perf srcline: Make sentinel reading for binutils addr2line more robust") Signed-off-by: Brian Johannesmeyer --- scripts/faddr2line | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/faddr2line b/scripts/faddr2line index bb3b5f03f4ea..820680c59a39 100755 --- a/scripts/faddr2line +++ b/scripts/faddr2line @@ -260,9 +260,12 @@ __faddr2line() { =20 # Pass section address to addr2line and strip absolute paths # from the output: - local args=3D"--functions --pretty-print --inlines --exe=3D$objfile" + local args=3D"--functions --pretty-print --inlines --addresses --exe=3D$= objfile" [[ $IS_VMLINUX =3D 0 ]] && args=3D"$args --section=3D$sec_name" - local output=3D$(${ADDR2LINE} $args $addr | sed "s; $dir_prefix\(\./\)*;= ;") + local output_with_addr=3D$(${ADDR2LINE} $args $addr | sed "s; $dir_prefi= x\(\./\)*; ;") + [[ -z $output_with_addr ]] && continue + + local output=3D$(echo "${output_with_addr}" | sed 's/^0x[0-9a-fA-F]*: //= ') [[ -z $output ]] && continue =20 # Default output (non --list): --=20 2.34.1 From nobody Sun Feb 8 09:11:12 2026 Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CDE0878C8B for ; Mon, 15 Apr 2024 14:55:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713192951; cv=none; b=qnO2rj4b9k9FRKsQ2CjbpqpoFhG5CXkYt6PRDo5TTl7fT/tK2rn5PMKybNXHwHcxp41e9syoDu6Cf0cGpqM/09yJHF7fzU3P/nvVNJUGqVVZ1lwvvbOE/4KWPTem7rsHoFYhPOKWiSHmd9bxw2vrS9wgYPRN7+/jhRKIRPgjkGg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713192951; c=relaxed/simple; bh=OahGgLwn1WruEUcGd+tWfxyPUOLyjubgiXZOePzWu+g=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fIkOD97VQfn1yIj+j8I5lIgO1XWP0lLWX9fR0PO3s0xYR5G22W4A5Djr2LjE2iKxfQgNwf1w+3LY3fZm7h/ixQGKjlb/fBbCSCvu0ZyMGZDLfhdJ+udHJ4u+Pq7eWYDDVnUm/jk+LaC/AOToGnQ5jCQLzGwVsnZQNApVh/7kVkQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=HSQVhoD7; arc=none smtp.client-ip=209.85.208.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HSQVhoD7" Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-56e477db7fbso5231211a12.3 for ; Mon, 15 Apr 2024 07:55:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713192948; x=1713797748; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=sp2H2ET381pFnni6E350xwNwIeOypPbNT863TXJ2TvQ=; b=HSQVhoD7fqkI23Z/5tZw1Nueg99vXX670qZXFESbj4zFnLcDtnLCzL7+sjWSc31Yrs EgzPqy2zjl5IGlaMOPmQzoCCkq+OyW/ygx6QuniwYNiQ5DT06IJD6p9ngFrP/zTmhKTN YFdUdWldCjISl5dSAdExkGfYJmDZulAFuncUp+Z27mQADI8LOmlBWDtR5Nj6z0cNKROO NIZHTqFSowpozlnOT8G0jW3HJa3BfiWXM/bBq/4bZhakXbxCgdB8odSVOBhXVlphhamz fLft+by27onUlQ2KiAoDCx8wdCktpPHEkTuskHkG0h1gEadhrrFHq2Y5chYgrQ7APtLR Lvvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713192948; x=1713797748; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sp2H2ET381pFnni6E350xwNwIeOypPbNT863TXJ2TvQ=; b=W4SAmyOKMrqzcOmtXo2/HC7ZjI6H/FkPYy/jvlXHf70TbIQXJ0nZwKLDdCCzazw15N RzZu3oZud5QKd8b4iihWJHbbmPwbzA5FXWb8I0ew65sd+STEa9DxpmvKBTS5BPKAEkBn Uf8IudHWMXDfIYT0Fq+g3O7mB5HJyc2WrUIbnpmg8PoG/RObHxtPhaxuYmXt7u5eafdp SPsx9OOqOL3aJZGUUuGuLsw9wW1NKHqrytVBixnKjarQHRfawZbtDlAcpBZBI90F4ljH fZ6iYDoQIk+7FoMNF88VAIovXgoDY7l87zgUnFB5RuyE/5myp/74n4yQ13io/Q1RGS3M C+Yg== X-Forwarded-Encrypted: i=1; AJvYcCVzsyUB7/bHdNu833DOQoWSi9FmBQ9lDinEcxJZThO19q8fHWTfeBHWMf722hS/HYtdTlOA1xmb/Or7kA21W8X4d1bblqntuj77BAtH X-Gm-Message-State: AOJu0YypOuNcoUi2B8qkrecnUcWSRuhuYWuP5GOLQnEG4mQikFGlpACO sePxnoyQHsTFvliOE+0Qr2FD/dLoXSXseNM75hLOXWExPNylnPkq X-Google-Smtp-Source: AGHT+IFizmWo4Lb1btI5ptwlOy2njpvjVXh+D4maTTjLEIDZQ60pCHU2Dp/6SCKytP0DP4HVC3s2HQ== X-Received: by 2002:a50:d598:0:b0:566:f5d6:4b4 with SMTP id v24-20020a50d598000000b00566f5d604b4mr6818230edi.12.1713192948220; Mon, 15 Apr 2024 07:55:48 -0700 (PDT) Received: from rex.hwlab.vusec.net (lab-4.lab.cs.vu.nl. [192.33.36.4]) by smtp.gmail.com with ESMTPSA id s13-20020a056402520d00b0056bf6287f32sm4893415edd.26.2024.04.15.07.55.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Apr 2024 07:55:47 -0700 (PDT) From: Brian Johannesmeyer To: Josh Poimboeuf , linux-kernel@vger.kernel.org, Brian Johannesmeyer Subject: [PATCH v2 5/7] scripts/faddr2line: Invoke addr2line as a single long-running process Date: Mon, 15 Apr 2024 16:55:36 +0200 Message-Id: <20240415145538.1938745-6-bjohannesmeyer@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240415145538.1938745-1-bjohannesmeyer@gmail.com> References: <20240415145538.1938745-1-bjohannesmeyer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Rather than invoking a separate addr2line process for each address, invoke a single addr2line coprocess, and pass each address to its stdin. Previous work [0] applied a similar change to perf, leading to a ~60x speed-up [1]. If using an object file that is _not_ vmlinux, faddr2line passes a section name argument to addr2line. Because we do not know until runtime which section names will be passed to addr2line, we cannot apply this change to non-vmlinux object files. Hence, it only applies to vmlinux. [0] commit be8ecc57f180 ("perf srcline: Use long-running addr2line per DSO") [1] Link: https://eighty-twenty.org/2021/09/09/perf-addr2line-speed-improvement Signed-off-by: Brian Johannesmeyer --- scripts/faddr2line | 52 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/scripts/faddr2line b/scripts/faddr2line index 820680c59a39..48fc8cfc80df 100755 --- a/scripts/faddr2line +++ b/scripts/faddr2line @@ -126,6 +126,48 @@ check_vmlinux() { fi } =20 +init_addr2line() { + local objfile=3D$1 + + check_vmlinux + + ADDR2LINE_ARGS=3D"--functions --pretty-print --inlines --addresses --exe= =3D$objfile" + if [[ $IS_VMLINUX =3D 1 ]]; then + # If the executable file is vmlinux, we don't pass section names to + # addr2line, so we can launch it now as a single long-running process. + coproc ADDR2LINE_PROC (${ADDR2LINE} ${ADDR2LINE_ARGS}) + fi +} + +run_addr2line() { + local addr=3D$1 + local sec_name=3D$2 + + if [[ $IS_VMLINUX =3D 1 ]]; then + # We send to the addr2line process: (1) the address, then (2) a sentinel + # value, i.e., something that can't be interpreted as a valid address + # (i.e., ","). This causes addr2line to write out: (1) the answer for + # our address, then (2) either "?? ??:0" or "0x0...0: ..." (if + # using binutils' addr2line), or "," (if using LLVM's addr2line). + echo ${addr} >& "${ADDR2LINE_PROC[1]}" + echo "," >& "${ADDR2LINE_PROC[1]}" + local first_line + read -r first_line <& "${ADDR2LINE_PROC[0]}" + ADDR2LINE_OUT=3D$(echo "${first_line}" | sed 's/^0x[0-9a-fA-F]*: //') + while read -r line <& "${ADDR2LINE_PROC[0]}"; do + if [[ "$line" =3D=3D "?? ??:0" ]] || [[ "$line" =3D=3D "," ]] || [[ $(e= cho "$line" | ${GREP} "^0x00*: ") ]]; then + break + fi + ADDR2LINE_OUT+=3D$'\n'$(echo "$line" | sed 's/^0x[0-9a-fA-F]*: //') + done + else + # Run addr2line as a single invocation. + local sec_arg + [[ -z $sec_name ]] && sec_arg=3D"" || sec_arg=3D"--section=3D${sec_name}" + ADDR2LINE_OUT=3D$(${ADDR2LINE} ${ADDR2LINE_ARGS} ${sec_arg} ${addr} | se= d 's/^0x[0-9a-fA-F]*: //') + fi +} + __faddr2line() { local objfile=3D$1 local func_addr=3D$2 @@ -260,12 +302,8 @@ __faddr2line() { =20 # Pass section address to addr2line and strip absolute paths # from the output: - local args=3D"--functions --pretty-print --inlines --addresses --exe=3D$= objfile" - [[ $IS_VMLINUX =3D 0 ]] && args=3D"$args --section=3D$sec_name" - local output_with_addr=3D$(${ADDR2LINE} $args $addr | sed "s; $dir_prefi= x\(\./\)*; ;") - [[ -z $output_with_addr ]] && continue - - local output=3D$(echo "${output_with_addr}" | sed 's/^0x[0-9a-fA-F]*: //= ') + run_addr2line $addr $sec_name + local output=3D$(echo "${ADDR2LINE_OUT}" | sed "s; $dir_prefix\(\./\)*; = ;") [[ -z $output ]] && continue =20 # Default output (non --list): @@ -309,7 +347,7 @@ run_readelf $objfile =20 echo "${ELF_SECHEADERS}" | ${GREP} -q '\.debug_info' || die "CONFIG_DEBUG_= INFO not enabled" =20 -check_vmlinux +init_addr2line $objfile =20 DIR_PREFIX=3Dsupercalifragilisticexpialidocious find_dir_prefix $objfile --=20 2.34.1 From nobody Sun Feb 8 09:11:12 2026 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 11B117D3FE for ; Mon, 15 Apr 2024 14:55:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713192952; cv=none; b=R5deHBl7NJySVwEbxIoGqS+AB/b4gY31aNDEZ/9+4Bk6C219Hv1/gx1YwdEgxllJixYQhDTz52YhkI99uO6aTEphQQiJ5+G+DnWE7X4NjHFQh7YuaKMCqaP1d6M+II9ss9yWQ/NkPTB0yJItcCqwuztkU/jnUr3ZbER4VUU21Qs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713192952; c=relaxed/simple; bh=z1eiWF00ulFGIhwzo8vX7fAaQ7Gt/3wwViaVAn8v6Xs=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RQ1/snPU1rHPCuvk74TPxvIBIxrvprNxRmaGZjIeDOBl1qEodBHux2FSl8lYmBj8lAkJ4yA1qfbSnW7hcDxcKi7wLJgnWR8zwZ0schuRxZH1a6A/KfFnyJvbQYd4rtJ3xcBXHZxW9oXdmfARN5kmpkt07OgjPEJ23+lEcBuTuUw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ggeHzr5f; arc=none smtp.client-ip=209.85.218.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ggeHzr5f" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-a46ea03c2a5so535959666b.1 for ; Mon, 15 Apr 2024 07:55:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713192949; x=1713797749; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=H4gf5zJ8CKFjRYmrei7za8lmpK5Lzx3+chgGCjt8WGo=; b=ggeHzr5f+XGoim1nJsX4BjM+Vm1vGSVGXJ5ZkwfrFCfpUW9RH6lB4rNrZ5WFskzfeN dboQaej13sbwht+RrGVEoBazUHhDKeyLo5cgZyujfE2g66zw5Ui7GTxb3pt+zu7EbDbH dUK9vxHF5LjtYPwUzS2xaktoj0FTu/icytQGR/pvRvNoO26qtc32bgWlSY17BhBwgjp/ LmmD4iGugmB89xbItHryrx014VWzo8K98EiTdsK+vTmcZ7PK1hAjwE2iNbw2WhlMNwWw e6Fg/Ymtkf5eUYWiWnnxN+PMaYzx6HbRIVrpX4HKg5y86ML4imS89EhnmDj0b3oX6GZc c+cQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713192949; x=1713797749; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H4gf5zJ8CKFjRYmrei7za8lmpK5Lzx3+chgGCjt8WGo=; b=BUDRa3XgHNGKWm4P9CdkZICQS2PrEN8BKv0JEezvd/MNyB6imI45oQpFo7cd4cvVg9 dPJogAoy4REIYF/GrrBX9kjA4xSjN+hW/yMTqQmtfqh8+EC2SjyeYKead99oZXpXZfPW vI2OFRZKYuGDoIIIgbB2A4DAJHH5zWqmzbLQdW8sfokI/7aLDD0jKIRsjsi47FND+F92 wEQhuRg0c1TO3yUkZCusxCEUckaabewNgU+CkxVz01R6lE6A/ZDMUG//fmRikPv68JFY BLfiCnGDCJ/ljYZP1lU6tDVsznDqH34N892gOqLJBKa175SiUOzJ3VyBEKJDRpN03BFK gUgA== X-Forwarded-Encrypted: i=1; AJvYcCUMz1tgBXeD38TB+c1BNFvHX5XdJjtuJLpUVvF7gJCseqixmlVrb/7XLvj7ORii/Hg/2ynNXPj1ujkUGHZMwMSBdLN58e0DhF1NIWyM X-Gm-Message-State: AOJu0Yx3cAJ4U+2cWNIKT7FOiKVzNleKpNz9dUrTxLsZZux3iutMUIRH 4XE7+rEFLNHiAat2LnDAUayboBuBRnwp97AR9gyM6FN2P9XmLTxd X-Google-Smtp-Source: AGHT+IF9mWA2ROf3u+UOuQ39sEr/zFwualwnQKHhVrvZrS8M9WVzNp0b4f4UkDJlMQNzv9Q8yAnATw== X-Received: by 2002:a17:907:3d9e:b0:a4e:a23d:4b73 with SMTP id he30-20020a1709073d9e00b00a4ea23d4b73mr12869836ejc.1.1713192949412; Mon, 15 Apr 2024 07:55:49 -0700 (PDT) Received: from rex.hwlab.vusec.net (lab-4.lab.cs.vu.nl. [192.33.36.4]) by smtp.gmail.com with ESMTPSA id s13-20020a056402520d00b0056bf6287f32sm4893415edd.26.2024.04.15.07.55.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Apr 2024 07:55:49 -0700 (PDT) From: Brian Johannesmeyer To: Josh Poimboeuf , linux-kernel@vger.kernel.org, Brian Johannesmeyer Subject: [PATCH v2 6/7] scripts/faddr2line: Remove call to addr2line from find_dir_prefix() Date: Mon, 15 Apr 2024 16:55:37 +0200 Message-Id: <20240415145538.1938745-7-bjohannesmeyer@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240415145538.1938745-1-bjohannesmeyer@gmail.com> References: <20240415145538.1938745-1-bjohannesmeyer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use the single long-running faddr2line process from find_dir_prefix(). Signed-off-by: Brian Johannesmeyer --- scripts/faddr2line | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/scripts/faddr2line b/scripts/faddr2line index 48fc8cfc80df..1fa6beef9f97 100755 --- a/scripts/faddr2line +++ b/scripts/faddr2line @@ -85,15 +85,17 @@ command -v ${ADDR2LINE} >/dev/null 2>&1 || die "${ADDR2= LINE} isn't installed" # init/main.c! This only works for vmlinux. Otherwise it falls back to # printing the absolute path. find_dir_prefix() { - local objfile=3D$1 - local start_kernel_addr=3D$(echo "${ELF_SYMS}" | sed 's/\[.*\]//' | ${AWK} '$8 =3D=3D "start_kernel" {printf "0x%s", $2}') [[ -z $start_kernel_addr ]] && return =20 - local file_line=3D$(${ADDR2LINE} -e $objfile $start_kernel_addr) - [[ -z $file_line ]] && return + run_addr2line ${start_kernel_addr} "" + [[ -z $ADDR2LINE_OUT ]] && return =20 + local file_line=3D${ADDR2LINE_OUT#* at } + if [[ -z $file_line ]] || [[ $file_line =3D $ADDR2LINE_OUT ]]; then + return + fi local prefix=3D${file_line%init/main.c:*} if [[ -z $prefix ]] || [[ $prefix =3D $file_line ]]; then return @@ -350,7 +352,7 @@ echo "${ELF_SECHEADERS}" | ${GREP} -q '\.debug_info' ||= die "CONFIG_DEBUG_INFO n init_addr2line $objfile =20 DIR_PREFIX=3Dsupercalifragilisticexpialidocious -find_dir_prefix $objfile +find_dir_prefix =20 FIRST=3D1 while [[ $# -gt 0 ]]; do --=20 2.34.1 From nobody Sun Feb 8 09:11:12 2026 Received: from mail-lj1-f174.google.com (mail-lj1-f174.google.com [209.85.208.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7985E7F7D3 for ; Mon, 15 Apr 2024 14:55:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713192953; cv=none; b=cz4jI5ky4G281Tgo2mtkHo0MK2ymgb57XXhRRVlfJ4yAbsHoIZTizi7rWme6jWNAviaj41S+ZALBYz1CtQ6PSL+pupN7ZBM7/dgHS7npdHlOZPyl9a2okUltZBUblxfiDn7uhCcCWi5l/xZHbMhdlWpI1lRM4DNQ6qgsqtl8GwM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713192953; c=relaxed/simple; bh=SYZQwZ1nd0gWTuMIjYQjQKxvHXOJ7zdRVmEi5YursJE=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=C1eAhg55/8fj6hGVjh4fOxw5ZHY7iirJnf9KFOtaCQAZ2hvzQssEZSB6MwR0rbj0oYldKMMqvZkqkmZ4NvBBHFR+pE1suqf6KSXmnuunCnbtC00J5sW+sXkWYrklLZW8S8gp5cFUt3r/UN3sEKBlhh156hH0H4pBSzcpuOS25+0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ch+va08l; arc=none smtp.client-ip=209.85.208.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ch+va08l" Received: by mail-lj1-f174.google.com with SMTP id 38308e7fff4ca-2da0b3f7ad2so40400981fa.2 for ; Mon, 15 Apr 2024 07:55:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713192951; x=1713797751; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=OCU+ngmCJtGcdsTc7HXhUVIxaK+w/jL7NlKhh+I/haU=; b=ch+va08loRFe7DgC4oO9xVFmQ945w4k29yGGFIx5YZOOp94S/CDd5Oseexm99nU2vQ Jxhv10+GSN0/fQSy4TryADglEkMLcBbLDq7trm8r2gujGnCx0+D6qmTGiYmh06mhswvJ cRwW1+c/Ojvqtb2NdYE/JOTBTwFw2gxJUuV1/3BmmnFNKRJkdHzR0loxE+L0XuhfTdAy NFwLONivNovgz7M1M09Fk5ocyLF0PPl6ztJE9ekTmfuWddJOruCChU4YQWL+VGTwSPP2 R1I5/Ey+w3msI+TdXiO34vlRx90dSQt2aW/SohYr7d7hxN7/DnqGonbsdtghWnrI919E GIEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713192951; x=1713797751; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OCU+ngmCJtGcdsTc7HXhUVIxaK+w/jL7NlKhh+I/haU=; b=hG+ARrSuenASHgl2cAoCakEW11sZGf8H6BnTT6wgys6RugtLMBHyI30+o6dI9sAhRn lbwdWrOSgHinATunYg9KTSYgeaqzRhiXFZ59phaNezsU30sMcZtLKR5QCqUkRbIgmrlP 51idgPDhl3RymjXV9CjGMRxRfhEbW6rie4BExBIE7Axlr2kobr7MFWSWMqpTjkDfwWT4 fwE7112s7ITRvrG7WEOs58UWknt7lwtpc/Y9KRt9NOy8kN6ui4Mbx1cYtwunZPYRyBpQ Laa5d93qJgZvE9VZ3PTPlrI7VS0CYVvlyeEcukYmjzxcSVf6PClH9hu14+TqVRBoK5Wx Z3EA== X-Forwarded-Encrypted: i=1; AJvYcCXh4248b1jLm9cVRbliDOrX/q9BLjaDBEQg2ltvawMJndUV1Q5YvFzrrMbqOqNu4fEzrI2U/MjanSNDYPvMmBfe/x8XTKT0pBSCogkl X-Gm-Message-State: AOJu0Ywtaytf9ugOrv12RMKFBlY9cb2W+3Rn4qjpLr7lgDod7lMoR9Ew jxdaunHIXfQLz5CDnW7ECr6IH80QeA3vRSwBNQ07wSALBtQ+k5gGAsZvYmWH X-Google-Smtp-Source: AGHT+IG1l9YsumIN7q2c3NzIx0GlAkl+UGmyc/KwccXzukbcjmNfMbsMc9WrWAHCVT9DpgBoEN/z5w== X-Received: by 2002:ac2:465e:0:b0:516:cd76:ee11 with SMTP id s30-20020ac2465e000000b00516cd76ee11mr6102580lfo.17.1713192950679; Mon, 15 Apr 2024 07:55:50 -0700 (PDT) Received: from rex.hwlab.vusec.net (lab-4.lab.cs.vu.nl. [192.33.36.4]) by smtp.gmail.com with ESMTPSA id s13-20020a056402520d00b0056bf6287f32sm4893415edd.26.2024.04.15.07.55.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Apr 2024 07:55:50 -0700 (PDT) From: Brian Johannesmeyer To: Josh Poimboeuf , linux-kernel@vger.kernel.org, Brian Johannesmeyer Subject: [PATCH v2 7/7] scripts/faddr2line: Check only two symbols when calculating symbol size Date: Mon, 15 Apr 2024 16:55:38 +0200 Message-Id: <20240415145538.1938745-8-bjohannesmeyer@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240415145538.1938745-1-bjohannesmeyer@gmail.com> References: <20240415145538.1938745-1-bjohannesmeyer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Rather than looping through each symbol in a particular section to calculate a symbol's size, grep for the symbol and its immediate successor, and only use those two symbols. Signed-off-by: Brian Johannesmeyer --- scripts/faddr2line | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/faddr2line b/scripts/faddr2line index 1fa6beef9f97..fe0cc45f03be 100755 --- a/scripts/faddr2line +++ b/scripts/faddr2line @@ -252,7 +252,7 @@ __faddr2line() { found=3D2 break fi - done < <(echo "${ELF_SYMS}" | sed 's/\[.*\]//' | ${AWK} -v sec=3D$sym_se= c '$7 =3D=3D sec' | sort --key=3D2) + done < <(echo "${ELF_SYMS}" | sed 's/\[.*\]//' | ${AWK} -v sec=3D$sym_se= c '$7 =3D=3D sec' | sort --key=3D2 | ${GREP} -A1 --no-group-separator " ${s= ym_name}$") =20 if [[ $found =3D 0 ]]; then warn "can't find symbol: sym_name: $sym_name sym_sec: $sym_sec sym_addr= : $sym_addr sym_elf_size: $sym_elf_size" --=20 2.34.1