public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
From: "cvs-commit at gcc dot gnu.org" <sourceware-bugzilla@sourceware.org>
To: gdb-prs@sourceware.org
Subject: [Bug gdb/23743] GDB index file mmapping broken, ubsan => runtime error: load of misaligned address
Date: Sat, 17 Apr 2021 19:56:49 +0000	[thread overview]
Message-ID: <bug-23743-4717-HaJ8VfzDDz@http.sourceware.org/bugzilla/> (raw)
In-Reply-To: <bug-23743-4717@http.sourceware.org/bugzilla/>

https://sourceware.org/bugzilla/show_bug.cgi?id=23743

--- Comment #20 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tom Tromey <tromey@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=42c2c69462fd83db2e0532ee57c44091bc1032f9

commit 42c2c69462fd83db2e0532ee57c44091bc1032f9
Author: Tom Tromey <tom@tromey.com>
Date:   Sat Apr 17 13:56:36 2021 -0600

    Handle unaligned mapping of .gdb_index

    The .gdb_index was designed such that all data would be aligned.
    Unfortunately, we neglected to require this alignment in the objcopy
    instructions in the manual.  As a result, in many cases, a .gdb_index
    in the wild will not be properly aligned by mmap.  This yields
    undefined behavior, which is PR gdb/23743.

    This patch fixes the bug by always assuming that the mapping is
    unaligned, and using extract_unsigned_integer when needed.  A new
    helper class is introduced to make this less painful.

    gdb/ChangeLog
    2021-04-17  Tom Tromey  <tom@tromey.com>

            PR gdb/23743:
            * dwarf2/read.c (class offset_view): New.
            (struct symbol_table_slot): Remove.
            (struct mapped_index) <symbol_table, constant_pool>: Change type.
            <symbol_name_index, symbol_vec_index>: New methods.
            <symbol_name_slot_invalid, symbol_name_at, symbol_name_count>:
            Rewrite.
            (read_gdb_index_from_buffer): Update.
            (struct dw2_symtab_iterator) <vec>: Change type.
            (dw2_symtab_iter_init_common, dw2_symtab_iter_init)
            (dw2_symtab_iter_next, dw2_expand_marked_cus): Update.
            * dwarf2/index-write.c (class data_buf) <append_data>: Remove.
            <append_array, append_offset>: New methods.
            (write_hash_table, add_address_entry, write_gdbindex_1)
            (write_debug_names): Update.
            * dwarf2/index-common.h (byte_swap, MAYBE_SWAP): Remove.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

  parent reply	other threads:[~2021-04-17 19:56 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <bug-23743-4717@http.sourceware.org/bugzilla/>
2021-03-05 20:09 ` tromey at sourceware dot org
2021-04-17 19:56 ` cvs-commit at gcc dot gnu.org [this message]
2021-04-17 19:58 ` tromey at sourceware dot 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-23743-4717-HaJ8VfzDDz@http.sourceware.org/bugzilla/ \
    --to=sourceware-bugzilla@sourceware.org \
    --cc=gdb-prs@sourceware.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: link
Be 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).