This is the mail archive of the binutils@sources.redhat.com 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: IA64 gas is broken


>>> "H. J. Lu" <hjl@lucon.org> 11.02.05 21:58:33 >>>
>On Fri, Feb 11, 2005 at 11:46:46AM -0800, H. J. Lu wrote:
>> [hjl@gnu-4 tmp]$ cat crti.s
>>         .xdata8
".init_array",@fptr(__pthread_initialize_minimal_internal)
>> [hjl@gnu-4 tmp]$ gcc -c crti.s
>> gcc: Internal error: Segmentation fault (program as)
>> Please submit a full bug report.
>> See <URL:http://bugzilla.redhat.com/bugzilla/> for instructions.
>> 
>
>This obstack_free calls in patch
>
>http://sourceware.org/ml/binutils/2005-02/msg00029.html 
>
>is the cause. set_section uses the memory. I will back out the
following
>patch.

The memory isn't used, it's just that (once again) the use of an
obstack here is not ideal; two other allocations happen against the
notes obstack, due to the section symbol getting created. Note that I
didn't catch that because your source code again violates the
specification (and gas doesn't check/enforce this): .xdata is not
supposed to create new sections.

Additionally, there's more broken in the orginal code than it first
seems: parse_section_name parses the name (perhaps removing quotes), and
then obj_elf_section_name does so again; I guess we should rather pass
the original input to obj_elf_section (thus at once removing the memory
leak)...

The question thus is: Should the assembler continue to violate the spec
and allow .xdata to create sections (in which case the second change
would be at least desirable), or should it be fixed, in which case
probably calling obj_elf_change_section might not be necessary at all
anymore, thus allowing to free the allocated name string.

Jan


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