Re: [PATCH v4] Add support for the readnever concept

Pedro Alves
2017-12-01T20:00:55Z

On 12/01/2017 05:21 PM, Sergio Durigan Junior wrote:
> On Friday, December 01 2017, Tom Tromey wrote:
>
>>>>>>> "Pedro" == Pedro Alves <palves@redhat.com> writes:
>>
>> Pedro> On 12/01/2017 04:35 AM, Sergio Durigan Junior wrote:
>>>>> If readnever_symbol_files is set, then it'll have been propagated to
>> objfile-> flags before we get here, no?
>>>>
>>>> Hm, I think so, yes. I mean, assuming that objfile != NULL when we call
>>>> the readers, then yes;
>>
>> Pedro> Certainly you can assume that. A reader's job is to read
>> Pedro> in the passed in objfile. The very first line of elf_symfile_read
>> Pedro> would immediately crash otherwise, for example.
>>
>> Perhaps an ATTRIBUTE_NONNULL is in order somewhere.
>
> I thought about a gdb_assert, actually. But yeah, I agree. I'll push
> what Pedro has approved, and if he's OK with it, I'll prepare a patch
> with a gdb_assert.
>

gdb_assert (objfile != NULL) sprinkled around in the readers would be
pointless IMO. It's not like there's any real risk that you'd
be sometimes passing a NULL pointer down to the readers in some
corner cases. That'd be pretty gross mistake. The objfile is kind of
like a "this" pointer here:

static void
read_symbols (struct objfile *objfile, symfile_add_flags add_flags)
{
(*objfile->sf->sym_read) (objfile, add_flags);
...

(obviously the above crashes with a NULL objfile. And up the
call stack, there are many other places that'd crash first
before you even get here.)

Thanks,
Pedro Alves