[LLVMdev] __eh_frame info changes in Clang?

Robinson, Paul Paul_Robinson at playstation.sony.com
Mon Apr 27 15:08:29 PDT 2015



> -----Original Message-----
> From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On
> Behalf Of Rafael EspĂ­ndola
> Sent: Monday, April 27, 2015 2:07 PM
> To: Jack Howarth
> Cc: LLVM Developers Mailing List
> Subject: Re: [LLVMdev] __eh_frame info changes in Clang?
> 
> That looks like a bug.
> 
> From
> 
> http://www.linuxbase.org/betaspecs/lsb/LSB-Core-generic/LSB-Core-
> generic/ehframechpt.html
> 
> Version
> A 1 byte value that identifies the version number of the frame
> information structure. This value shall be 1.
> 
> This was introduced by r211272. We should probably be producing 1/3/4
> for .debug_frame, but only 1 for .eh_frame.

I expect that truly strict conformance would require that .eh_frame v1 
should be emitted as-if DWARF v2, regardless of the DWARF version used 
for the .debug_* sections.

Just for grins I'll point out that the AMD64 ABI specifies that the
version field is 1, but elsewhere suggests that the content of the
.eh_frame section is dependent on the DWARF version... which is not
specified anywhere in the .eh_frame section.

Kind of annoying, really.
--paulr

> 
> 
> On 10 April 2015 at 22:04, Jack Howarth <howarth.mailing.lists at gmail.com>
> wrote:
> > Nick,
> >       Do you happen to know why the version reported in 'dwarfdump
> > --eh-frame' for object files now differs when compiled with and
> > without -g? The test used in FSF gcc's configure produces a diff of..
> >
> > % diff -u conftest.o.g.stripped.dwarfdump
> conftest.o.g0.stripped.dwarfdump
> > --- conftest.o.g.stripped.dwarfdump 2015-04-10 21:43:15.000000000 -0400
> > +++ conftest.o.g0.stripped.dwarfdump 2015-04-10 21:43:04.000000000 -0400
> > @@ -1,5 +1,5 @@
> >  ----------------------------------------------------------------------
> > - File: conftest.o.g.stripped (x86_64)
> > + File: conftest.o.g0.stripped (x86_64)
> >  ----------------------------------------------------------------------
> >  Exception handling frame information for section __eh_frame
> >
> > when compiled with Clang 6.0 (3.5svn) but now produces...
> >
> > % diff -u conftest.o.g.stripped.dwarfdump
> conftest.o.g0.stripped.dwarfdump
> > --- conftest.o.g.stripped.dwarfdump 2015-04-10 21:42:02.000000000 -0400
> > +++ conftest.o.g0.stripped.dwarfdump 2015-04-10 21:41:52.000000000 -0400
> > @@ -1,12 +1,12 @@
> >  ----------------------------------------------------------------------
> > - File: conftest.o.g.stripped (x86_64)
> > + File: conftest.o.g0.stripped (x86_64)
> >  ----------------------------------------------------------------------
> >  Exception handling frame information for section __eh_frame
> >
> >  0x00000000: CIE
> >          length: 0x00000014
> >          CIE_id: 0xffffffff
> > -       version: 0x01
> > +       version: 0x03
> >    augmentation: "zR"
> >      code_align: 1
> >      data_align: -8
> >
> > when compiled with Clang 6.1 (3.6.0svn) or llvm.org clang 3.6.0. The
> > detailed steps to obtain those test files are listed at
> > https://llvm.org/bugs/show_bug.cgi?id=23192.
> >          Jack
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list