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