public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "wcohen at redhat dot com" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug debug/103241] New: Odd 0 length entries in location lists Date: Mon, 15 Nov 2021 01:17:33 +0000 [thread overview] Message-ID: <bug-103241-4@http.gcc.gnu.org/bugzilla/> (raw) https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103241 Bug ID: 103241 Summary: Odd 0 length entries in location lists Product: gcc Version: 11.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug Assignee: unassigned at gcc dot gnu.org Reporter: wcohen at redhat dot com Target Milestone: --- I wrote a dwgrep (https://pmachata.github.io/dwgrep/) script to examine the location lists of function parameters of the kernel and print out each function and parameter that had zero length entries in the location lists: dwgrep /usr/lib/debug/lib/modules/5.14.15-200.fc34.x86_64/vmlinux -e ' let A := entry (?TAG_subprogram) (?AT_ranges || ?AT_low_pc); let FSTART := (A ?AT_ranges @AT_ranges low) || ( A low); let PARM := A child ?TAG_formal_parameter; (PARM ?AT_location @AT_location address length==0) ([A name, FSTART, PARM name])' | grep \\[ | more Some of the functions in the kernel that were flagged may have been confused by the constant propagation, irsa, or partial inlining optimization. However, There were some functions parameters that included entries with 0 length entries in the location list for the parameter. Focusing on one function, static_protections: ["static_protections", 0xffffffff8107a540, "prot"] ["static_protections", 0xffffffff8107a540, "start"] ["static_protections", 0xffffffff8107a540, "pfn"] ["static_protections", 0xffffffff8107a540, "npg"] ["static_protections", 0xffffffff8107a540, "warnlvl"] Using The following to look at the section of the debuginfo associated with the function: llvm-dwarfdump -c --name="static_protection" /usr/lib/debug/lib/modules/5.14.15-200.fc34.x86_64/vmlinux | more See the following for static_protection where first entry for "prot" parameter is 0 length and overlaps the next entry: 0x00e44d5c: DW_TAG_formal_parameter DW_AT_abstract_origin (0x00e3fb6d "prot") DW_AT_location (0x002c83db: [0xffffffff8107a540, 0xffffffff8107a540): DW_OP_reg5 RDI [0xffffffff8107a540, 0xffffffff8107a569): DW_OP_reg5 RDI, DW_OP_piece 0x8 [0xffffffff8107a5a0, 0xffffffff8107a5f3): DW_OP_reg5 RDI [0xffffffff8107a617, 0xffffffff8107a65b): DW_OP_reg3 RBX [0xffffffff8107a66a, 0xffffffff8107a67e): DW_OP_reg3 RBX, DW_OP_piece 0x8 [0xffffffff8107a67e, 0xffffffff8107a68c): DW_OP_reg5 RDI [0xffffffff8107a68c, 0xffffffff8107a6a1): DW_OP_reg3 RBX, DW_OP_piece 0x8 [0xffffffff8107a6a1, 0xffffffff8107a6a1): DW_OP_reg3 RBX, DW_OP_piece 0x8 [0xffffffff8107a6a1, 0xffffffff8107a6cb): DW_OP_reg3 RBX [0xffffffff8107a6cb, 0xffffffff8107a6cb): DW_OP_reg3 RBX, DW_OP_piece 0x8 [0xffffffff81bc6967, 0xffffffff81bc6994): DW_OP_reg3 RBX, DW_OP_piece 0x8 [0xffffffff81bc69b5, 0xffffffff81bc6a24): DW_OP_reg3 RBX, DW_OP_piece 0x8) DW_AT_unknown_2137 (0x002c83c3) 0x00e44d69: DW_TAG_formal_parameter DW_AT_abstract_origin (0x00e3fb7a "start") DW_AT_location (0x002c84ed: [0xffffffff8107a540, 0xffffffff8107a5a0): DW_OP_reg4 RSI [0xffffffff8107a5a0, 0xffffffff8107a65b): DW_OP_reg12 R12 [0xffffffff8107a65b, 0xffffffff8107a66a): DW_OP_GNU_entry_value(DW_OP_reg4 RSI), DW_OP_s tack_value [0xffffffff8107a66a, 0xffffffff8107a68c): DW_OP_reg4 RSI [0xffffffff8107a68c, 0xffffffff8107a6cb): DW_OP_reg12 R12 [0xffffffff8107a6cb, 0xffffffff8107a6cb): DW_OP_reg4 RSI [0xffffffff81bc6967, 0xffffffff81bc698c): DW_OP_reg4 RSI [0xffffffff81bc698c, 0xffffffff81bc6a24): DW_OP_reg12 R12) DW_AT_unknown_2137 (0x002c84dd) 0x00e44d76: DW_TAG_formal_parameter DW_AT_abstract_origin (0x00e3fb87 "pfn") DW_AT_location (0x002c85a8: [0xffffffff8107a540, 0xffffffff8107a5a0): DW_OP_reg1 RDX [0xffffffff8107a5a0, 0xffffffff8107a65b): DW_OP_reg15 R15 [0xffffffff8107a65b, 0xffffffff8107a66a): DW_OP_GNU_entry_value(DW_OP_reg1 RDX), DW_OP_s tack_value [0xffffffff8107a66a, 0xffffffff8107a68c): DW_OP_reg1 RDX [0xffffffff8107a68c, 0xffffffff8107a6cb): DW_OP_reg15 R15 [0xffffffff8107a6cb, 0xffffffff8107a6cb): DW_OP_reg1 RDX [0xffffffff81bc6967, 0xffffffff81bc6983): DW_OP_reg1 RDX [0xffffffff81bc6983, 0xffffffff81bc6a24): DW_OP_reg15 R15) DW_AT_unknown_2137 (0x002c8598) 0x00e44d83: DW_TAG_formal_parameter DW_AT_abstract_origin (0x00e3fb94 "npg") DW_AT_location (0x002c8663: [0xffffffff8107a540, 0xffffffff8107a5a0): DW_OP_reg2 RCX [0xffffffff8107a5a0, 0xffffffff8107a65b): DW_OP_reg13 R13 [0xffffffff8107a65b, 0xffffffff8107a66a): DW_OP_GNU_entry_value(DW_OP_reg2 RCX), DW_OP_s tack_value [0xffffffff8107a66a, 0xffffffff8107a68c): DW_OP_reg2 RCX [0xffffffff8107a68c, 0xffffffff8107a6cb): DW_OP_reg13 R13 [0xffffffff8107a6cb, 0xffffffff8107a6cb): DW_OP_reg2 RCX [0xffffffff81bc6967, 0xffffffff81bc6977): DW_OP_reg2 RCX [0xffffffff81bc6977, 0xffffffff81bc6a24): DW_OP_reg13 R13) DW_AT_unknown_2137 (0x002c8653) 0x00e44d90: DW_TAG_formal_parameter DW_AT_abstract_origin (0x00e3fba1 "lpsize") DW_AT_location (0x002c8718: [0xffffffff8107a540, 0xffffffff8107a585): DW_OP_reg8 R8 [0xffffffff8107a585, 0xffffffff8107a65b): DW_OP_reg14 R14 [0xffffffff8107a65b, 0xffffffff8107a66a): DW_OP_GNU_entry_value(DW_OP_reg8 R8), DW_OP_st ack_value [0xffffffff8107a66a, 0xffffffff8107a6cb): DW_OP_reg14 R14 [0xffffffff81bc6967, 0xffffffff81bc6a24): DW_OP_reg14 R14) DW_AT_unknown_2137 (0x002c870e) 0x00e44d9d: DW_TAG_formal_parameter DW_AT_abstract_origin (0x00e3fbae "warnlvl") DW_AT_location (0x002c8798: [0xffffffff8107a540, 0xffffffff8107a5a0): DW_OP_reg9 R9 [0xffffffff8107a5a0, 0xffffffff8107a66a): DW_OP_fbreg -72 [0xffffffff8107a66a, 0xffffffff8107a68c): DW_OP_reg9 R9 [0xffffffff8107a68c, 0xffffffff8107a6cb): DW_OP_fbreg -72 [0xffffffff8107a6cb, 0xffffffff8107a6cb): DW_OP_reg9 R9 [0xffffffff81bc6967, 0xffffffff81bc6974): DW_OP_reg9 R9 [0xffffffff81bc6974, 0xffffffff81bc6a24): DW_OP_fbreg -72) DW_AT_unknown_2137 (0x002c878a) It looks like that first "prot" entry [0xffffffff8107a540, 0xffffffff8107a540): DW_OP_reg5 RDI isn't useful as it is 0 length and the next entry covers its start. The entries for [0xffffffff8107a6cb, 0xffffffff8107a6cb) for "start", "pfn", "lpsize", and "warnlvl" look questionable as that would be an area outside the function's first entry [0xffffffff8107a540, 0xffffffff8107a6cb). The source code associated with with this function https://elixir.bootlin.com/linux/v5.14.15/source/arch/x86/mm/pat/set_memory.c#L534 has a struct being passed in and the other cases seem to also have a struct as the parameter.
next reply other threads:[~2021-11-15 1:17 UTC|newest] Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-11-15 1:17 wcohen at redhat dot com [this message] 2021-11-16 14:11 ` [Bug debug/103241] " jakub at gcc dot gnu.org 2021-11-16 14:46 ` wcohen at redhat dot com 2021-11-16 14:51 ` wcohen at redhat dot com 2021-11-16 15:11 ` marxin at gcc dot gnu.org 2021-11-16 15:24 ` wcohen at redhat dot com 2021-11-16 15:39 ` marxin at gcc dot gnu.org 2021-11-16 16:18 ` wcohen at redhat dot com 2021-11-18 10:24 ` marxin at gcc dot gnu.org 2021-11-18 10:35 ` jakub at gcc dot gnu.org 2021-11-18 15:11 ` wcohen at redhat dot com 2021-11-18 15:23 ` jakub at gcc dot gnu.org 2021-11-18 16:00 ` wcohen at redhat dot com 2021-11-18 16:18 ` jakub at gcc dot gnu.org 2021-11-19 10:18 ` aoliva at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-103241-4@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).