You should check if your distribution is using the vanilla GLIBC or the EGLIBC fork (Debian and Ubuntu have switched to EGLIBC EDIT: they switched back around 2014).

Anyway, the repository browser for GLIBC is at http://sourceware.org/git/?p=glibc.git

http://code.woboq.org/userspace/glibc/, posted by @guruz below, is a good alternative.

The source is a bit complicated by the presence of multiple versions of the same files.

Answer from Jacopo on Stack Overflow
🌐
GitHub
github.com › driverCzn › Glibc-source-browser
GitHub - driverCzn/Glibc-source-browser: Multi-version glibc source browser based on code.woboq.org 's product.
Multi-version glibc source browser based on code.woboq.org 's product. - driverCzn/Glibc-source-browser
Author   driverCzn
🌐
Code Browser
codebrowser.dev › glibc › glibc
glibc/glibc/ Source Tree
Generated on 2026-Feb-08 Powered by Code Browser 2.1 Generator usage only permitted with license · Browse the source code of glibc/glibc/ online
🌐
GitHub
github.com › bminor › glibc
GitHub - bminor/glibc: Unofficial mirror of sourceware glibc repository. · GitHub
Unofficial mirror of sourceware glibc repository. Contribute to bminor/glibc development by creating an account on GitHub.
Starred by 1.9K users
Forked by 469 users
Languages   C 71.0% | Assembly 12.4% | C++ 7.2% | Pawn 6.0% | Makefile 1.1% | Python 1.0%
🌐
Code Browser
codebrowser.dev › glibc › index.html
glibc/ Source Tree
Generated on 2026-Feb-08 Powered by Code Browser 2.1 Generator usage only permitted with license · Browse the source code of glibc/ online
🌐
Internet Archive
archive.org › software
glibc-2.35 source code : GNU project : Free Download, Borrow, and Streaming : Internet Archive
glibc-2.35 · License · LGPL-2.1-or-later · Repository · https://sourceware.org/git/glibc.git · Scanner · Internet Archive HTML5 Uploader 1.6.4 · Website · https://www.gnu.org/software/libc/ 240 Views · 1 Favorite · download 1 file GZIP download · download 1 file TORRENT download ·
🌐
GNU
sourceware.org › glibc › sources.html
The GNU C Library (glibc)
Releases are available by source branch checkout (gitweb) and tarball via ftp. ... Release tarballs are available via anonymous ftp at https://ftp.gnu.org/gnu/glibc/ and its mirrors.
Find elsewhere
🌐
Code Browser
codebrowser.dev › glibc › glibc › manual
glibc/glibc/manual/ Source Tree
Generated on 2025-Jun-11 Powered by Code Browser 2.1 Generator usage only permitted with license · Browse the source code of glibc/glibc/manual/ online
🌐
GNU
gnu.org › software › libc › libc.html
The GNU C Library - GNU Project - Free Software Foundation
You can contact the developer community by emailing the developer list libc-alpha@sourceware.org. The GNU C Library can be found on the main GNU ftp server (download glibc via HTTPS, download glibc via HTTP or download glibc via FTP), and its mirrors; please use a mirror if possible.
🌐
GNU
gnu.org › software › libc › sources.html
The GNU C Library (glibc) Documentation
You can contact the developer community by emailing the developer list libc-alpha@sourceware.org. The GNU C Library can be found on the main GNU ftp server (download glibc via HTTPS, download glibc via HTTP or download glibc via FTP), and its mirrors; please use a mirror if possible.
🌐
GNU
sourceware.org › glibc
The GNU C Library (glibc)
You can contact the developer community by emailing the developer list libc-alpha@sourceware.org. The GNU C Library releases every 6 months. See the NEWS file in the glibc sources for more information.
🌐
Ask Ubuntu
askubuntu.com › questions › 696139 › how-can-i-get-glibc-source-code
system installation - How can i get glibc source code ? - Ask Ubuntu
i have download one source code (glibc,linuxthreads) form GNU site .and install it in /usr/local. I want to compiler glibc and change some code ,but i don't know where can download the source code.
🌐
YouTube
youtube.com › watch
Let's read the glibc source code - YouTube
In this episode of Fan Request Roulette, we take a look at the GNU C Library, better known as glibc. Glibc is huge, so we only scratch the surface of what's ...
Published   May 13, 2023
Top answer
1 of 1
1

How can I navigate glibc and find the actual implementation for lib functions?

Type the function in the search bar at https://code.woboq.org/userspace/glibc or at https://github.com/bminor/glibc . Navigate the results manually until you find the definition.

If you want to index the project locally, use cscope, ctags, GLOBAL tags or clangd to index the project and then use that tools specific interface to search for the definition.

As an example, try looking up the definition of hidden_def in glibc

Type hidden_def glibc into google. My first hit is woboq.org https://code.woboq.org/userspace/glibc/include/libc-symbols.h.html#550 .

I use firefox. I type ctrl+f and type hidden_def. Type Enter until I find # define hidden_def at https://code.woboq.org/userspace/glibc/include/libc-symbols.h.html#550 .

Then select __hidden_ver1 and type ctrl+c ctrl+f and ctrl+v and search for it. In the web browser. I type enter until I find https://code.woboq.org/userspace/glibc/include/libc-symbols.h.html#540 . __hidden_ver2 is just below on line 542.

For most cases all you need is a browser, google, coboq.org and github.org.

It's a macro taking you to hidden_def1

There are no such macros as you mentioned, at least at the version hosted at woboq.org.

How does anyone follow it?

While IDE is a powerful help, each project is unique and requires different settings, that take time to figure out. Mostly browsing the source code is grep (or faster alternatives, like ag, very useful for big projects like glibc) and going through the result list.

Not only system dependent things, like setjmp

Developers are (shoudl be :) sane people - in most cases a function named setjmp will be in a file named setjmp.c. or setjmp.S. Or in the same directory as setjmp.h. Or inside directory named stdlib or setjmp.

Type setjmp in github search bar. https://github.com/bminor/glibc/search?q=setjmp You see there are multiple definitions for each architecture powerpc s390 etc. But files are all named setjmp. Go back. Type "Go to file" on https://github.com/bminor/glibc . Search for a file named x86/setjmp. There are 3 implementations, the most standard one seems to be https://github.com/bminor/glibc/blob/master/sysdeps/x86_64/setjmp.S .

even portable functions like fprintf

As above, saerch for file named fprintf . You quickly find https://github.com/bminor/glibc/blob/master/stdio-common/fprintf.c .

Top answer
1 of 2
11

The simplest way is to extract the package source code somewhere: go to an appropriate directory, then run

apt source glibc

In gdb, add the corresponding directory to the source path by using the directory command.

You may also want the detached debug symbols; I don’t know whether Devuan provides debug symbol packages in general (dbgsym packages), but I see it ships libc6-dbg which has the same purpose:

sudo apt install libc6-dbg

Here’s an example gdb session:

$ gdb ls
...
(gdb) directory ~/Debian/glibc
Source directories searched: /home/steve/Debian/glibc:$cdir:$cwd
(gdb) break malloc
Breakpoint 1 at 0x46c8
(gdb) run
Starting program: /bin/ls 

Breakpoint 1, malloc (n=1441) at dl-minimal.c:50
50    if (alloc_end == 0)
2 of 2
1

Some further indications for Ubuntu 22.04 beyond what Stephen said.

To get debug symbols and source, some setup is needed as in:

# Get debug symbols.
printf "deb http://ddebs.ubuntu.com %s main restricted universe multiverse\n" $(lsb_release -cs){,-updates,-security,-proposed} | \
 sudo tee -a /etc/apt/sources.list.d/ddebs.list
sudo apt install ubuntu-dbgsym-keyring
sudo apt update
sudo apt install coreutils-dbgsym

# Get source as per: https://askubuntu.com/questions/496549/error-you-must-put-some-source-uris-in-your-sources-list
# Produces directory "coreutils-8.32"
sudo cp /etc/apt/sources.list /etc/apt/sources.list~
sudo sed -Ei 's/^# deb-src /deb-src /'
/etc/apt/sources.list sudo apt-get update
apt source coreutils

Then, to get GDB to actually find the sources, you might need to either cd into the downloaded source, or play with stuff like:

set substitute-path . glibc-2.35

as mentioned at: https://askubuntu.com/questions/487222/how-to-install-debug-symbols-for-installed-packages/1434174#1434174

🌐
Code Browser
codebrowser.dev › glibc › glibc › nptl
glibc/glibc/nptl/ Source Tree
Generated on 2026-Feb-08 Powered by Code Browser 2.1 Generator usage only permitted with license · Browse the source code of glibc/glibc/nptl/ online