This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Build failure with probe patch


Hi Steve.

    > According to:
    > 
    >   <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=41874>
    > 
    > This warning has been removed from GCC.  And by looking at the code
    > referenced by it, I don't see anything wrong there.  So I'd say you can
    > ignore this (and probably update your GCC).
    > 
    
    I would like to avoid updating GCC if possible.  I build on old systems
    because some of our customers use old systems.  I don't know if gdb has
    a 'minimal GCC' that it can be compiled with like GCC and some other
    projects have.  I tried changing the definition of 'dof' to be '
    bfd_byte *' instead of 'struct dtrace_dof_hdr *' and then casting it on
    the call to dtrace_process_dof instead of the call to
    bfd_malloc_and_get_section.

I think that version would still break the strict aliasing rules, since
`struct dtrace_dof_hdr' does not alias bfd_byte, even if the latter is a
character type.

As nothing guarantees that some future GCC version will not be bitching
about it, what about using something like this instead?

if (elf_section_data (sect)->this_hdr.sh_type == SHT_SUNW_dof)
  {
    /* Read the contents of the DOF section and then process it to
       extract the information of any probe defined into it.  */

    bfd_size_type size;
    const void *buf = gdb_bfd_map_section (sect, &size);
    dtrace_process_dof (sect, objfile, probesp, (struct dtrace_dof_hdr *) buf);
  }

AFAIU anything can alias a void pointer, as void pointers can't be
dereferenced...


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]