aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Maguire <alan.maguire@oracle.com>2023-02-21 15:48:42 +0000
committerArnaldo Carvalho de Melo <acme@redhat.com>2023-02-28 12:49:50 -0300
commit111dfd2cee1188925cc070224f0f61f5fb3ed4f7 (patch)
tree9d7ffc0aa8fbcc56362b98ee28e3fe0414e0c126
parent5851040e2468ba044bb88cb8ca48bdeb4b364991 (diff)
downloaddwarves-111dfd2cee1188925cc070224f0f61f5fb3ed4f7.tar.gz
dwarf_loader: Only mark parameter as using an unexpected register when it does
It is important to distinguish between cases where a parameter uses an unexpected register versus cases where it is optimized out; the function may still be called with the right parameter values in the latter case, they just are not used. Suggested-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: Alan Maguire <alan.maguire@oracle.com> Tested-by: Jiri Olsa <jolsa@kernel.org> Cc: Andrii Nakryiko <andrii@kernel.org> Cc: Daniel Borkmann <daniel@iogearbox.net> Cc: Eduard Zingerman <eddyz87@gmail.com> Cc: Hao Luo <haoluo@google.com> Cc: John Fastabend <john.fastabend@gmail.com> Cc: KP Singh <kpsingh@chromium.org> Cc: Kui-Feng Lee <sinquersw@gmail.com> Cc: Martin KaFai Lau <martin.lau@kernel.org> Cc: Song Liu <songliubraving@fb.com> Cc: Stanislav Fomichev <sdf@google.com> Cc: Timo Beckers <timo@incline.eu> Cc: Yonghong Song <yhs@fb.com> Cc: bpf@vger.kernel.org Link: https://lore.kernel.org/r/1676994522-1557-4-git-send-email-alan.maguire@oracle.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--dwarf_loader.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/dwarf_loader.c b/dwarf_loader.c
index 17f2e6e..f18060e 100644
--- a/dwarf_loader.c
+++ b/dwarf_loader.c
@@ -1144,14 +1144,12 @@ static struct parameter *parameter__new(Dwarf_Die *die, struct cu *cu,
if (expected_reg >= 0 && expected_reg != expr->atom)
parm->unexpected_reg = 1;
break;
- case DW_OP_breg0 ... DW_OP_breg31:
- break;
default:
- parm->unexpected_reg = 1;
+ parm->optimized = 1;
break;
}
} else if (has_const_value) {
- parm->unexpected_reg = 1;
+ parm->optimized = 1;
}
}