[FUG-BR] gcc gerando código errado

Alan Silva alansilva em acm.org
Domingo Abril 29 16:52:47 BRT 2012


Testa com o clang, o resultado normalmente acaba sendo mais fácil de ser
interpretado... :)


2012/4/29 Otacílio <otacilio.neto em bsd.com.br>

> On 29/04/2012 03:03, Paulo Pires wrote:
> > Já tentou rodar o programa com ktrace/truss/strace?
> >
> > 2012/4/28 Otacílio<otacilio.neto em bsd.com.br>
> >
> >> On 28/04/2012 23:44, Eduardo Antonio Bortolini wrote:
> >>> Qual é a linha de comando que você estaria usando para compilar? Não
> sei
> >> se
> >>> já não está fazendo, mas se não estiver tente colocar algumas flags de
> >>> debug na compilação, por exemplo -g, -W
> >>>
> >>> Em 28 de abril de 2012 22:37, Otacílio<otacilio.neto em bsd.com.br>
> >>   escreveu:
> >>>
> >>>> Caros
> >>>>
> >>>> Estou com um problema aqui simplesmente fora de série!
> >>>>
> >>>> Estou compilando um programa que não está no ports, o nome dele é
> >>>> covered. O programa compila depois de eu usar
> >>>>
> >>>> export LIBS=-lpthread
> >>>>
> >>>> no prompt. Só que quando ele roda ele dá core dump. Eu fui debugar o
> >>>> programa e vi que ele estava gerando o coredump quando dava um
> >>>> fflush(stderr). Até onde sei todo programa abre essa stream. O mesmo
> >>>> programa no ubuntu funciona direito, sem problemas. Rodei um
> >>>>
> >>>> [ota em squitch covered-0.7.10]$ gcc -v
> >>>> Using built-in specs.
> >>>> Target: i386-undermydesk-freebsd
> >>>> Configured with: FreeBSD/i386 system compiler
> >>>> Thread model: posix
> >>>> gcc version 4.2.1 20070719  [FreeBSD]
> >>>>
> >>>>
> >>>> Vi também que estão instalados os compiladores
> >>>>
> >>>>
> >>>> [ota em squitch covered-0.7.10]$ pkg_info | grep gcc
> >>>> avr-gcc-4.5.1_1     FSF GCC 4.x for Atmel AVR 8-bit RISC
> >> cross-development
> >>>> gcc-4.4.7,1         GNU Compiler Collection 4.4
> >>>> gcc-4.6.4.20120406  GNU Compiler Collection 4.6
> >>>> gccmakedep-1.0.2    Create dependencies in makefiles using 'gcc -M'
> >>>> mips-rtems-gcc-4.4.2_2 GNU gcc for cross-target development
> >>>>
> >>>>
> >>>> Tentei compilar com o gcc44 e o gcc46 e recebi os mesmos erros. Alguém
> >>>> tem alguma dica do que pode ser?
> >>>>
> >>>> []'s
> >>>> -Otacílio
> >>>> -------------------------
> >>
> >>
> >>
> >> Eh bem grande, mas esta compilando com -g já. foi assim que encontrei o
> >> problema analizando o core-dump
> >> -------------------------
> >> Histórico: http://www.fug.com.br/historico/html/freebsd/
> >> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> >>
> >
> >
> >
>
>
> Já rodei com gdb e descobri o seguinte.
>
> A versão que funcionou no Ubuntu era porque não compilou com suporte a
> tcl/tk, Se compilar com suporte a tcl/tk o problema aparece. Agora o
> mais escroto é que não é um problema no código do tcl/tk, apenas em
> linkar com o tcl/tk o negócio acontece. O problema tem se manifestado
> assim:
>
> Qualquer chamada a uma rotina que utilize stdout ou stderr dentro de uma
> rotina que não seja main() dispara o segmentation fault. Agora se eu
> chamar printf e tal dentro de main não dispara. É como se a pilha
> tivesse ficado corrompida quando a linkagem com o tcl/tk é feita.
> Acontece com o compilador gcc 4.2 4.4 e 4.6 tanto no freebsd como no
> ubuntu.
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>


Mais detalhes sobre a lista de discussão freebsd