-mlong32 is an unknown option
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
gcc-3.3 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned |
Bug Description
Binary package hint: gcc-3.3
I'm only transferring information from this (Donald Knuth's) page http://
A Flame About 64-bit Pointers
It is absolutely idiotic to have 64-bit pointers when I compile a program that uses less than 4 gigabytes of RAM. When such pointer values appear inside a struct, they not only waste half the memory, they effectively throw away half of the cache.
The gcc manpage advertises an option "-mlong32" that presumably does what I want. Namely, it should compile code for my x86-64 architecture, taking advantage of the extra registers etc., but it should also know that my program is going to live inside a 32-bit virtual address space.
Unfortunately, the gcc I got with Ubuntu 7.10 says that -mlong32 is an unknown option. Probably that happens because programs compiled with this convention will need to be loaded with a special version of libc.
Please, somebody, make that possible.
* indigoviolet
| Unfortunately, the gcc I got with Ubuntu 7.10 says that -mlong32 is an
| unknown option. Probably that happens because programs compiled with
| this convention will need to be loaded with a special version of libc.
Not only would you need a different libc, you would have to have _all_
other libraries compiled with this same other ABI. I suspect you
would have to get support into the kernel as well for it.
If you really want to do this, it would probably be better to approach
AMD and Intel with the suggestion of defining such an ABI; this is not
something Ubuntu can reasonably do (and I'll therefore mark this bug
as «Won't Fix»).
--
Tollef Fog Heen
UNIX is user friendly, it's just picky about who its friends are