[cfe-dev] Implementation of stdbool.h

Chris Lattner clattner at apple.com
Sun Mar 2 19:21:13 PST 2008


On Feb 29, 2008, at 6:39 AM, Török Edwin wrote:

> Keith Bauer wrote:
>> On Fri, Feb 29, 2008 at 7:18 PM, Chris Lattner <clattner at apple.com>  
>> wrote:
>>
>>> Actually, dladdr seems useful on unix'y systems.  Does this work on
>>> linux?
>>>
>>
>> A quick trip to Google suggests that dladdr is nonstandard,
>> implemented on Solaris, Linux (glibc), Mac OS X, maybe FreeBSD,
>> definitely not OpenBSD.
>
> It depends on OpenBSD version, on 4.2 it works[*], but only if you  
> pass
> an address of a symbol from a dynamic libray, not the main executable.
> So this works:
> $ gcc -shared p.c -o p.so
> $ gcc p.so
> $ LD_LIBRARY_PATH=. ./a.out
> 1
> ./p.so

Okay, I just checked in the makefile support and a very simple, but  
working, solution using dladdr.  It should build on all platforms, but  
won't work in some cases (such as this above).  I'd appreciate it if  
people could help improve the sys::Path::GetMainExecutable to work on  
their hosts.  Also, I now get this warning from G++:

clang.cpp:883: warning: ISO C++ forbids casting between pointer-to- 
function and pointer-to-object

This is true, but not very helpful.  I'm not sure how to work around  
this other than not building with -pedantic.

A simple test:

$ echo "#include <stdbool.h>" | clang -E -C | grep Eli
  * Copyright (c) 2008 Eli Friedman

-Chris



More information about the cfe-dev mailing list