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