From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-4.3 required=5.0 tests=ALL_TRUSTED,BAYES_00, RP_MATCHES_RCVD autolearn=unavailable autolearn_force=no version=3.4.1 To: devel@lists.altlinux.org References: <20200622104109.GA16954@imap.altlinux.org> <048dc43b-7585-02df-41b5-48be0ea73e78@basealt.ru> From: Alexey Sheplyakov Message-ID: <98c5fdf0-c4bb-cc19-cf81-fd9e2f011e03@basealt.ru> Date: Mon, 22 Jun 2020 19:27:00 +0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 In-Reply-To: <048dc43b-7585-02df-41b5-48be0ea73e78@basealt.ru> Content-Type: text/plain; charset=koi8-r; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [devel] armh + libjpeg + c++ exceptions X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Jun 2020 15:27:04 -0000 Archived-At: List-Archive: List-Post: On 6/22/20 6:39 PM, Alexey Sheplyakov wrote: >> Там же есть ссылка на баг >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=9265, >> но в нем я пока не разобрался. >> >> Добавление "-x c++" мне не помогло. >> Надеюсь, что специалисты по gcc что-нибудь посоветуют. > > Тут, возможно, не специалисты по gcc, а специалисты по glibc и/или > binutils потребуются. > > Я таковым не являюсь, но все равно немного потыкаю палочкой в этот > замечательный примерчик. Нельзя просто так взять и заставить C код бросать (C++) исключения. Как минимум нужно 1) использовать для линковки g++ (не всегда эквивалентно gcc -x c++ -lstdc++) 2) все задействованные библиотеки собирать так, чтоб в них был GNU_EH_FRAME А у нас в armh его нет: $ wget -N http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/armh/RPMS.classic/libjpeg-2.0.2-alt1.armh.rpm $ mkdir -p _tmp && cd _tmp && rpm2cpio ../libjpeg-2.0.2-alt1.armh.rpm | cpio --extract --make-directories $ readelf -l usr/lib/libjpeg.so.62 Elf file type is DYN (Shared object file) Entry point 0x1a50 There are 6 program headers, starting at offset 52 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x000000 0x00000000 0x00000000 0x28ca4 0x28ca4 R E 0x10000 LOAD 0x028d00 0x00038d00 0x00038d00 0x00498 0x0049c RW 0x10000 DYNAMIC 0x028f10 0x00038f10 0x00038f10 0x000f0 0x000f0 RW 0x4 NOTE 0x0000f4 0x000000f4 0x000000f4 0x00024 0x00024 R 0x4 GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x10 GNU_RELRO 0x028d00 0x00038d00 0x00038d00 0x00300 0x00300 R 0x1 Section to Segment mapping: Segment Sections... 00 .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .eh_frame 01 .init_array .fini_array .data.rel.ro .dynamic .got .bss 02 .dynamic 03 .note.gnu.build-id 04 05 .init_array .fini_array .data.rel.ro .dynamic Выясняю, куда и почему он делся.