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
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. 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
> -----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