|
|
|
|
|
by Joker_vD
1836 days ago
|
|
But doesn't this "smartness" require accurate information about internal symbol usage? For exmaple: static int foo(void) {
return 4;
}
int bar(void) {
return 42 + foo();
}
The compiler, I believe, may emit no symbol entry for foo() and use a relative call inside bar() to call it, so if you only include "used" symbols in your resulting object file, bar() will end up calling into who knows where. That's why there are special flags for enabling "function-level linking" and all that jazz, right? |
|
(I can't answer your question in detail because it's been a long time since I've been poking around in object files and I don't know what C/C++ compilers and linkers have been doing with them recently. I was a compiler engineer at Borland for more than 5 years, but it was years ago.)