base bug?

Joshua Root jmr at macports.org
Wed Aug 3 08:25:50 PDT 2011


On 2011-8-4 01:09 , Rainer Müller wrote:
> Hi Marko,
> 
> On 08/02/2011 10:57 PM, Marko Käning wrote:
>> I just noticed this strange function nameing in darwintrace.c at line
>> 961which shows up with the warning
>>
>>     " '$' in identifier or number"
>>
>> ---
>> int stat$INODE64(const char * path, struct stat64 * sb)
>> {
>>      return stat64(path, sb);
>> }
>> ---
>>
>> Is that intentional or a typo?
> 
> This is intentional. If _DARWIN_FEATURE_64_BIT_INODE is defined, the
> header files will define symbol variants with the $INODE64 suffix and
> use them for linking. As trace mode has to intercept all filesystem
> related library calls, we need to provide this symbol exactly.
> 
> Apparently the compiler complains about this now (since when does this
> message appear and with which compiler?).
> 
> A solution might be to inlcude the '$' in the exported symbol name only
> by using an asm statement, avoiding it in the name of the function:
> 
> int stat_INODE64(const char * path, struct stat64 * sb)
>     asm ("_stat$INODE64")
> {
>     return stat64(path, sb);
> }
> 
> I haven't tried this, though.

The warning was only emitted because of -pedantic. I removed it from the
CFLAGS used in darwintrace just recently.

- Josh


More information about the macports-dev mailing list