This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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: [PATCH] GOLD/DWP: avoid segmentation fault for binaries without debug fission


On Tue, May 17, 2016 at 11:51 AM, Yunlian Jiang <yunlian@google.com> wrote:
> Thanks,  updated the patch as follows.
>
> diff --git a/binutils-2.25/gold/dwp.cc b/binutils-2.25/gold/dwp.cc
> index 121f37b..9eef68a 100644
> --- a/binutils-2.25/gold/dwp.cc
> +++ b/binutils-2.25/gold/dwp.cc
> @@ -2427,6 +2427,10 @@ main(int argc, char** argv)
>    if (exe_filename == NULL && files.empty())
>      gold_fatal(_("no input files and no executable specified"));
>
> +  // If there are no DWO files, there is nothing to do.
> +  if (files.empty())
> +    return EXIT_SUCCESS;
> +
>    if (verify_only)
>      {
>        // Get list of DWO files in the DWP file and compare with


Sorry, I take this back.  I see this line

if (exe_filename == NULL && files.empty())
  gold_fatal(_("no input files and no executable specified"))

So, do you want to just do :

if (files.empty())
  gold_fatal(_("no input files specified"))


>
> On Tue, May 17, 2016 at 10:02 AM, Sriraman Tallam <tmsriram@google.com> wrote:
>> On Mon, May 16, 2016 at 4:56 PM, Yunlian Jiang <yunlian@google.com> wrote:
>>> If run dwp command on a binary built without debug fission, it will
>>> cause segmentation
>>> fault. This patch fixes that by exit early if no DWO files information
>>> found inside the
>>> input binary.
>>>
>>>     gold/
>>>     * dwp.cc: (main): exit early when no DWO files information found
>>> in the input binary.
>>>
>>> diff --git a/gold/dwp.cc b/gold/dwp.cc
>>> index d8c39c6..c26f969 100644
>>> --- a/gold/dwp.cc
>>> +++ b/gold/dwp.cc
>>> @@ -2436,6 +2436,11 @@ main(int argc, char** argv)
>>>        return ok ? EXIT_SUCCESS : EXIT_FAILURE;
>>>      }
>>>
>>> +  // If there is no DWO files information found in the input binary,
>>> +  // return early to avoid segmentation fault.
>>
>> Change the comment to maybe "If there are no DWO files, there is
>> nothing to do."
>>
>>> +  if (files.size() == 0)
>>> +    return EXIT_SUCCESS;
>>> +
>>
>> This looks fine to me but I do not have permissions to approve.
>>
>> Thanks
>> Sri
>>
>>>    // Process each file, adding its contents to the output file.
>>>    Dwp_output_file output_file(output_filename.c_str());
>>>    for (File_list::const_iterator f = files.begin(); f != files.end(); ++f)


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