[llvm-commits] CVS: llvm/lib/System/DynamicLibrary.cpp
Reid Spencer
rspencer at reidspencer.com
Fri Jan 19 14:05:15 PST 2007
Hi Gordon,
On Fri, 2007-01-19 at 17:01 -0500, Gordon Henriksen wrote:
> This bit:
>
>
> > +#ifndef errno
> > + EXPLICIT_SYMBOL(errno);
> > +#endif
>
>
> Is broken on Darwin.
Sorry about that. I reverted that part of the patch.
Reid.
>
> — Gordon
>
>
>
>
>
> On Jan 19, 2007, at 16:41, Reid Spencer wrote:
>
> >
> >
> >
> >
> > Changes in directory llvm/lib/System:
> >
> >
> > DynamicLibrary.cpp updated: 1.21 -> 1.22
> > ---
> > Log message:
> >
> >
> > Help the lli interpreter find the stderr/stdin/stdout symbols. These
> > are
> > needed for output to be generated. On Linux these are both global
> > vars and
> > macro definitions so we have to special case Linux.
> >
> >
> >
> >
> > ---
> > Diffs of the changes: (+19 -3)
> >
> >
> > DynamicLibrary.cpp | 22 +++++++++++++++++++---
> > 1 files changed, 19 insertions(+), 3 deletions(-)
> >
> >
> >
> >
> > Index: llvm/lib/System/DynamicLibrary.cpp
> > diff -u llvm/lib/System/DynamicLibrary.cpp:1.21
> > llvm/lib/System/DynamicLibrary.cpp:1.22
> > --- llvm/lib/System/DynamicLibrary.cpp:1.21 Fri Jan 19 15:30:39 2007
> > +++ llvm/lib/System/DynamicLibrary.cpp Fri Jan 19 15:41:04 2007
> > @@ -164,11 +164,23 @@
> > }
> > #undef EXPLICIT_SYMBOL
> > #endif
> > +
> > +// This macro returns the address of a well-known, explicit symbol
> > #define EXPLICIT_SYMBOL(SYM) \
> > if (!strcmp(symbolName, #SYM)) return &SYM
> > - // Try a few well known symbols just to give lli a shot at
> > working.
> > - // Note that on some systems stdin, etc. are macros so we have to
> > - // avoid attempting to take the address of a macro :)
> > +
> > +// On linux we have a weird situation. The stderr/out/in symbols
> > are both
> > +// macros and global variables because of standards requirements.
> > So, we
> > +// boldly use the EXPLICIT_SYMBOL macro without checking for a
> > #define first.
> > +#if defined(__linux__)
> > + {
> > + EXPLICIT_SYMBOL(stderr);
> > + EXPLICIT_SYMBOL(stdout);
> > + EXPLICIT_SYMBOL(stdin);
> > + }
> > +#else
> > + // For everything else, we want to check to make sure the symbol
> > isn't defined
> > + // as a macro before using EXPLICIT_SYMBOL.
> > {
> > #ifndef stdin
> > EXPLICIT_SYMBOL(stdin);
> > @@ -179,7 +191,11 @@
> > #ifndef stderr
> > EXPLICIT_SYMBOL(stderr);
> > #endif
> > +#ifndef errno
> > + EXPLICIT_SYMBOL(errno);
> > +#endif
> > }
> > +#endif
> > #undef EXPLICIT_SYMBOL
> >
> >
> > return 0;
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list