sysctl, HW_PHYSMEM, and crippled gcc
Sergey Babkin
babkin at verizon.net
Fri Dec 9 12:04:48 PST 2005
>From: Divacky Roman <xdivac02 at stud.fit.vutbr.cz>
>On Thu, Dec 08, 2005 at 05:06:16PM -0800, Steve Kargl wrote:
>> Anyone have any insight into fixing gcc to make better
>> use of system memory on systems with more than 4 GB.
>> It appears that libiberty/physmem.c tries to use sysctl()
>> to determine the amount of physical memory in a system.
>>
>> { /* This works on *bsd and darwin. */
>> unsigned int physmem;
>> size_t len = sizeof physmem;
>> static int mib[2] = { CTL_HW, HW_PHYSMEM };
>>
>> if (sysctl (mib, ARRAY_SIZE (mib), &physmem, &len, NULL, 0) == 0
>> && len == sizeof (physmem))
>> return (double) physmem;
>> }
>>
>> This works if you have less than 4GB because of the unsigned
>> int physmem. I have 12 GB, which of course, when expanded
>> to the number of bytes doesn't fit into a unsigned int physmem.
>> In particular, ggc-min-heapsize=4096 is ridiculously small for a
>> system with 12 GB of memory.
>
>the code works here (512M of memory)... dont know about the ifdefs its
>surrounded by..
I guess you've confused M and G :-) The point is that
it breaks with over 4G of memory.
-SB
More information about the freebsd-hackers
mailing list