Цитата(alx2 @ Jun 23 2009, 13:29)

Целью приведенного мной примера было показать, что в сгенеренном ассемблером объектном файле вообще нет глобального символа foo,
Нет, нету глобального символа foo, потому что функция foo статическая и ее область видимости ограничивается одним модулем.
Цитата(alx2 @ Jun 23 2009, 13:29)

таким образом, линкер вообще не узнает о существовании такой функции.
Если компилятор не проинлайнит функцию foo, а то линкер увидет метку foo. И в даном случае при компиляции примера без оптимизации видим:
Код
$ nm test2.o
00000000 b .bss
00000000 d .data
00000000 t .text
0000000b T _bar
00000000 t _foo
Анатолий.