Summary: | violation of `-ffreestanding' rules? | ||
---|---|---|---|
Product: | gcc | Reporter: | Pawel Sikora <pawel_sikora> |
Component: | c | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED INVALID | ||
Severity: | enhancement | CC: | ebotcazou, gcc-bugs, malitzke, qboosh |
Priority: | P2 | ||
Version: | 3.3.4 | ||
Target Milestone: | --- | ||
Host: | sparc-pld-linux | Target: | sparc-pld-linux |
Build: | sparc-pld-linux | Known to work: | |
Known to fail: | 3.3.4 3.3.5 3.4.1 3.4.2 4.0.0 | Last reconfirmed: | 2004-07-11 20:22:25 |
Description
Pawel Sikora
2004-07-10 21:32:55 UTC
While I confirm that the undefined symbol __ucmpdi2 is emitted by the compiler, I'm a bit skeptical about your interpretation of '-ffreestanding': __ucmpdi2 is provided by libgcc.a, not by the standard library. So it is possible to build a standalone executable containing the chunk of code with the compiler only. (In reply to comment #1) > While I confirm that the undefined symbol __ucmpdi2 is emitted by the compiler, > I'm a bit skeptical about your interpretation of '-ffreestanding': __ucmpdi2 is > provided by libgcc.a, not by the standard library. by libgcc_s.so (which is linked with standard library) too. > So it is possible to build a standalone executable (...) with libgcc.a - yes. with libgcc_s.so - no. A freestanding implementation won't have a shared libgcc. Mind you that GNU/Linux is _not_ a freestanding implementation. Sorry but no these are not a violation of `-ffreestanding' at all, since otherwise there is no way to support 64bit in 32bit targets at all or some other builtins which are done like __builtin_ctlz and such. So this is invalid. Note you can use -static-libgcc to get the static libgcc. *** Bug 32501 has been marked as a duplicate of this bug. *** |