Como obter o código-fonte eglibc usado pelo Ubuntu?

2

Como obtenho o código-fonte para o eglibc em um formato que permita percorrer a origem com o gdb?

Eu tentei usar apt-get source libc6-dev e isso funciona para obter o código-fonte, mas acho que, como as diretivas pré-processador não foram aplicadas, os números de linha que gdb não correspondem à fonte que baixei. Isso torna menos útil ao tentar percorrer a origem e verificar como as funções na libc estão funcionando.

    
por Gabriel Southern 19.04.2012 / 06:10

2 respostas

2

Se você realmente quiser percorrer a fonte, recomendo criar uma libc sem otimização e sem remover os binários.

Felizmente, isso deve ser fácil - já que você já tem a fonte, você pode criar pacotes a partir dela. Você desejará garantir que a variável DEB_BUILD_OPTIONS evnironment contenha noopt para obter -O0 binários e nostrip para manter os símbolos de depuração e, em seguida, construa normalmente com debuild :

sudo apt-get build-dep libc6
DEB_BUILD_OPTIONS="noopt nostrip" debuild -us -uc

irá construir pacotes construídos com -O0 e sem os símbolos de depuração removidos; você pode então instalá-los com dpkg e o gdb pegará os símbolos de depuração. Como um bônus adicional, o gdb também saberá onde encontrar os arquivos de origem, assim você obterá listagens de código-fonte.

Como não alteramos a versão dos pacotes, na próxima vez que você executar uma atualização, o apt substituirá esses pacotes instalados localmente pelas versões de arquivamento.

    
por RAOF 27.04.2012 / 03:07
1

Você pode tentar o apt-get source -d libc6-dev e isto deve dar a você a fonte e o diff no formato deb. Então você pode descompactá-lo e deve dar as fontes em tar.gz descompacte isso também. Ele deve ser armazenado no diretório em que você executou o comando apt-get.

    
por Brett 27.04.2012 / 00:16