More information, and another piece of the puzzle:
I began tearing apart the headers of the libgcc3_uno.so built on karmic, and jaunty, and noticed an interesting anomaly with the program headers between the jaunty and karmic/lucid versions of this library, the karmic version doesn't have an .eh_frame_hdr
readelf output on jaunty:
mcasadevall@dawn:/usr/lib/ure/lib$ readelf -l libgcc3_uno.so.jaunty
Elf file type is DYN (Shared object file)
Entry point 0x22a0
There are 8 program headers, starting at offset 52
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
EXIDX 0x010534 0x00010534 0x00010534 0x00a60 0x00a60 R 0x4
LOAD 0x000000 0x00000000 0x00000000 0x10fd4 0x10fd4 R E 0x8000
LOAD 0x011e98 0x00019e98 0x00019e98 0x003a8 0x003d8 RW 0x8000
DYNAMIC 0x011ed8 0x00019ed8 0x00019ed8 0x00128 0x00128 RW 0x4
NOTE 0x000134 0x00000134 0x00000134 0x00024 0x00024 R 0x4
GNU_EH_FRAME 0x010f94 0x00010f94 0x00010f94 0x00014 0x00014 R 0x4
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RWE 0x4
GNU_RELRO 0x011e98 0x00019e98 0x00019e98 0x00168 0x00168 R 0x1
eh_frame and eh_frame are parts of the ELF file that deal with exception handling, which seems to be related to our issues with the unwinder failures. I managed to force inclusion of .eh_frame_hdr in a karmic build, but it didn't produce a working libgcc3_uno.so; seems to me that we may be getting corrupted eh_frame info, and I suspect not having .eh_frame_hdr automatically added is playing a part of this.
More information, and another piece of the puzzle:
I began tearing apart the headers of the libgcc3_uno.so built on karmic, and jaunty, and noticed an interesting anomaly with the program headers between the jaunty and karmic/lucid versions of this library, the karmic version doesn't have an .eh_frame_hdr
readelf output on jaunty: dawn:/usr/ lib/ure/ lib$ readelf -l libgcc3_ uno.so. jaunty
mcasadevall@
Elf file type is DYN (Shared object file)
Entry point 0x22a0
There are 8 program headers, starting at offset 52
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
EXIDX 0x010534 0x00010534 0x00010534 0x00a60 0x00a60 R 0x4
LOAD 0x000000 0x00000000 0x00000000 0x10fd4 0x10fd4 R E 0x8000
LOAD 0x011e98 0x00019e98 0x00019e98 0x003a8 0x003d8 RW 0x8000
DYNAMIC 0x011ed8 0x00019ed8 0x00019ed8 0x00128 0x00128 RW 0x4
NOTE 0x000134 0x00000134 0x00000134 0x00024 0x00024 R 0x4
GNU_EH_FRAME 0x010f94 0x00010f94 0x00010f94 0x00014 0x00014 R 0x4
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RWE 0x4
GNU_RELRO 0x011e98 0x00019e98 0x00019e98 0x00168 0x00168 R 0x1
Section to Segment mapping:
Segment Sections...
00 .ARM.exidx
01 .note.gnu.build-id .hash .dynsym .dynstr .gnu.version .gnu.version_d .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .ARM.extab .ARM.exidx .eh_frame_hdr .eh_frame
02 .init_array .fini_array .jcr .data.rel.ro .dynamic .got .data .bss
03 .dynamic
04 .note.gnu.build-id
05 .eh_frame_hdr
06
07 .init_array .fini_array .jcr .data.rel.ro .dynamic
readelf output on karmic version: dawn:/usr/ lib/ure/ lib$ readelf -l libgcc3_ uno.so. karmic
mcasadevall@
Elf file type is DYN (Shared object file)
Entry point 0x2550
There are 7 program headers, starting at offset 52
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
EXIDX 0x00bb7c 0x0000bb7c 0x0000bb7c 0x00748 0x00748 R 0x4
LOAD 0x000000 0x00000000 0x00000000 0x0c2c8 0x0c2c8 R E 0x8000
LOAD 0x00ce88 0x00014e88 0x00014e88 0x003bc 0x003ec RW 0x8000
DYNAMIC 0x00cec8 0x00014ec8 0x00014ec8 0x00138 0x00138 RW 0x4
NOTE 0x000114 0x00000114 0x00000114 0x00024 0x00024 R 0x4
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x4
GNU_RELRO 0x00ce88 0x00014e88 0x00014e88 0x00178 0x00178 R 0x1
Section to Segment mapping:
Segment Sections...
00 .ARM.exidx
01 .note.gnu.build-id .hash .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_d .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .ARM.extab .ARM.exidx .eh_frame
02 .init_array .fini_array .jcr .data.rel.ro .dynamic .got .data .bss
03 .dynamic
04 .note.gnu.build-id
05
06 .init_array .fini_array .jcr .data.rel.ro .dynamic
eh_frame and eh_frame are parts of the ELF file that deal with exception handling, which seems to be related to our issues with the unwinder failures. I managed to force inclusion of .eh_frame_hdr in a karmic build, but it didn't produce a working libgcc3_uno.so; seems to me that we may be getting corrupted eh_frame info, and I suspect not having .eh_frame_hdr automatically added is playing a part of this.