Thread (35 messages) 35 messages, 2 authors, 2021-02-17

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help