Re: [PATCH dwarves v3 3/5] btf_encoder: Traverse sections using a for-loop
From: Giuliano Procida <hidden>
Date: 2021-02-09 15:01:05
Hi. On Mon, 8 Feb 2021 at 22:24, Andrii Nakryiko [off-list ref] wrote:
On Fri, Feb 5, 2021 at 5:42 AM Giuliano Procida [off-list ref] wrote:quoted
The pointer (iterator) scn can be made local to the loop and a more general while-loop is not needed. Signed-off-by: Giuliano Procida <redacted> --- libbtf.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)diff --git a/libbtf.c b/libbtf.c index ace8896..4ae7150 100644 --- a/libbtf.c +++ b/libbtf.c@@ -700,7 +700,6 @@ static int btf_elf__write(const char *filename, struct btf *btf) { GElf_Ehdr ehdr; Elf_Data *btf_data = NULL; - Elf_Scn *scn = NULL; Elf *elf = NULL; const void *raw_btf_data; uint32_t raw_btf_size;@@ -748,7 +747,7 @@ static int btf_elf__write(const char *filename, struct btf *btf) */ elf_getshdrstrndx(elf, &strndx); - while ((scn = elf_nextscn(elf, scn)) != NULL) {this is pretty "canonical" as far as libelf usage goes, I wouldn't touch this code, but it's up to Arnaldo
Ack. In an intermediate version of the code, I got bitten when I used scn by mistake instead of another pointer. This wouldn't have compiled if scn had been scoped to the loop. Giuliano.
quoted
+ for (Elf_Scn *scn = elf_nextscn(elf, NULL); scn; scn = elf_nextscn(elf, scn)) { GElf_Shdr shdr; if (!gelf_getshdr(scn, &shdr)) continue; -- 2.30.0.478.g8a0d178c01-goog