Commit Graph

599 Commits

Author SHA1 Message Date
Daniel Dunbar 5e2ebcba40 Use llvm_report_error, not llvm_unreachable.
llvm-svn: 75429
2009-07-12 21:01:49 +00:00
Daniel Dunbar df555fd6f8 Improve sys::Path::makeAbsolute on Win32.
- Patch by Viktor Kutuzov!

 - Minor tweak by me to add llvm_unreachable calls on FIXMEd error paths.

llvm-svn: 75424
2009-07-12 20:23:56 +00:00
Chris Lattner a3c69aeb65 "UNIX paths can contain non-ASCII characters, so Path::isValid() should not reject paths with such characters in them. The attached patch removes the check from Path::isValid()."
patch by Benjamin Kramer!

llvm-svn: 75421
2009-07-12 19:01:16 +00:00
Chris Lattner 433cf71144 eraseFromDisk no longer throws.
llvm-svn: 75139
2009-07-09 16:17:28 +00:00
David Greene cdde1bb0a6 Add an ExecuteNoWait interface to support asynchronous process spawning.
llvm-svn: 75055
2009-07-08 21:46:40 +00:00
Chris Lattner d41531a2c0 remove two methods that no longer exist.
llvm-svn: 74982
2009-07-08 01:07:39 +00:00
Chris Lattner e4807c5767 more getting windows to build.
llvm-svn: 74981
2009-07-08 00:52:12 +00:00
Chris Lattner e3241b5719 hopefully fix the build on windows.
llvm-svn: 74977
2009-07-08 00:29:32 +00:00
Chris Lattner 3612256e2e Eliminate the static constructors and locks from DynamicLibrary.cpp.
This fixes PR4512 and eliminating static ctors is always good.  Losing
thread safety is unfortunate, but the code is just incredibly poorly
designed.

If someone is interested, the "right" solution is to split
DynamicLibrary.cpp into two separate pieces: a stateless piece in
libsystem, and a simple support file in libsupport that has the
"state" (e.g.  AddSymbol) in managed static objects.

Doing this would both fix memory leaks we already have, as well as make
the code thread safe again.  it would also make sense to move all the
unix specific code in System/DynamicLibrary.cpp into 
System/Unix/DynamicLibrary.inc.

llvm-svn: 74927
2009-07-07 18:17:07 +00:00
Chris Lattner 5ceb2cb005 remove dead code, noone creates instances of "DynamicLibrary", so the ctor and dtor are dead.
llvm-svn: 74926
2009-07-07 18:01:58 +00:00
Chris Lattner 4efb280fb0 we don't use libtool anymore, update comments.
llvm-svn: 74924
2009-07-07 17:50:11 +00:00
Owen Anderson 2370b4d81f No need to double-include config.h
llvm-svn: 74854
2009-07-06 21:24:37 +00:00
Owen Anderson 1d182d08ba We need to include config.h to get the proper setting to LLVM_MULTITHREADED.
Patch by Xerxes Ranby.

llvm-svn: 74846
2009-07-06 18:50:47 +00:00
Chris Lattner 738cc28f4d improve portability to windows, patch by Xerces Ranby!
llvm-svn: 74835
2009-07-06 17:24:48 +00:00
Jeffrey Yasskin 5a2e52182a Oops, I #included errno.h from inside the llvm::sys namespace.
llvm-svn: 74834
2009-07-06 16:50:27 +00:00
Duncan Sands f9cf4ffcc7 Fix windows build, patch by Howard Su.
llvm-svn: 74697
2009-07-02 12:09:50 +00:00
Jeffrey Yasskin 1a93330ffa Add a portable strerror*() wrapper, llvm::sys::StrError(). This includes the
Windows variant, strerror_s, but I couldn't test that.

I'll update configure and config.h.in in a subsequent patch.

llvm-svn: 74621
2009-07-01 18:11:20 +00:00
Owen Anderson 02c4de3573 Try again at making this work on OpenBSD.
llvm-svn: 74612
2009-07-01 16:19:23 +00:00
Owen Anderson cb86e113a9 Fix the build on OpenBSD.
llvm-svn: 74597
2009-07-01 06:53:29 +00:00
Oscar Fuentes 136f9a6512 Fixed assert that checks return value of TlsSetValue.
See http://msdn.microsoft.com/en-us/library/ms686818(VS.85).aspx

Patch by Olaf Krzikalla!

llvm-svn: 74526
2009-06-30 14:12:28 +00:00
Owen Anderson 331c8ab96f Fix compilation without pthreads.
Patch by Xerxes Ranby.

llvm-svn: 74283
2009-06-26 08:48:03 +00:00
Daniel Dunbar aa311ca000 Fix unused variable warnings.
llvm-svn: 74250
2009-06-26 01:34:35 +00:00
Owen Anderson 276fc52b72 Fix error in the Win32 implementation pointed out by Howard Su.
llvm-svn: 74248
2009-06-26 00:51:20 +00:00
Owen Anderson eba6e65291 Add support for const thread locals.
llvm-svn: 74226
2009-06-25 23:31:18 +00:00
Owen Anderson eb51111851 Fix typo in assertion.
llvm-svn: 74225
2009-06-25 23:28:28 +00:00
Owen Anderson 1154983b9c Add a configure test for pthread_getspecific, and use it when building ThreadLocal.
llvm-svn: 74222
2009-06-25 23:10:26 +00:00
Owen Anderson bc17dc6ed4 Update cmake build files.
llvm-svn: 74210
2009-06-25 21:58:34 +00:00
Owen Anderson f17f6f06fa Add a class for supporting platform independent thread-local storage.
Windows people, please double-check/patch this.

llvm-svn: 74209
2009-06-25 21:58:01 +00:00
Owen Anderson 021c3b0756 Guard dynamic library loading.
I did my best at implementing this for Win32, but I don't have a way to test it.
Can someone with access to a Win32 machine test/fix this?

llvm-svn: 74188
2009-06-25 18:12:44 +00:00
Owen Anderson 1fdf01026b Add atomic multiply and divide operations, built on top of CompareAndSwap.
llvm-svn: 74004
2009-06-23 21:19:04 +00:00
Owen Anderson 5cc4131063 Revert my last series of commits related to Timer and 64-bit atomics. Not all the targets
we care about are capable of supporting it.

llvm-svn: 73993
2009-06-23 20:17:22 +00:00
Owen Anderson 9262d43c5d Atomic ops that do arithmetic use signed arithmetic.
llvm-svn: 73980
2009-06-23 18:30:27 +00:00
Owen Anderson 9e3df5b67f Label the existing atomic functions as 32-bit specific, and add a 64-bit one that will be useful in
the near future.

llvm-svn: 73971
2009-06-23 18:01:04 +00:00
Owen Anderson cdf2b2dfea Add an atomic add operation.
llvm-svn: 73964
2009-06-23 17:39:31 +00:00
Owen Anderson 96c51a8de1 Workaround for an... interesting bug in Darwin's pthread_rwlock_init.
llvm-svn: 73806
2009-06-20 00:32:27 +00:00
Owen Anderson ff5f14c15e Fix bad paste-o in the MSVC atomics.
Patch by Иван Сорокин.

llvm-svn: 73779
2009-06-19 18:37:50 +00:00
Owen Anderson 1498a7a510 Give RWMutex the SmartRWMutex treatment too.
llvm-svn: 73710
2009-06-18 18:26:15 +00:00
Owen Anderson 68f6598c69 Insert a SmartMutex templated class into the class hierarchy, which takes a template parameter specifying whether this mutex
should become a no-op when not running in multithreaded mode.  Make sys::Mutex a typedef of SmartMutex<false>, to preserve source compatibility.

llvm-svn: 73709
2009-06-18 17:53:17 +00:00
Ted Kremenek 81ef65d491 Update CMake files to account for new location of Threading.cpp.
llvm-svn: 73708
2009-06-18 17:47:09 +00:00
Owen Anderson 7d42b95b6c Move Threading.[h|cpp] from Support to System.
llvm-svn: 73707
2009-06-18 16:54:52 +00:00
Owen Anderson 6eb4a73633 Fix build when disable thread support.
Patch by Howard Su.

llvm-svn: 73680
2009-06-18 04:44:46 +00:00
Douglas Gregor 2761988cfd Add RWMutex.cpp to the CMake makefiles
llvm-svn: 73615
2009-06-17 17:01:30 +00:00
Owen Anderson 74af4ee79d Improve the Win32 reader-writer lock implementation by making it just a normal
lock.  This is obviously bad, but at least it's threadsafe!  If you know how
to improve this in a pre-Vista friendly well, patches welcome!

Patch by Max Burke.

llvm-svn: 73607
2009-06-17 09:10:42 +00:00
Owen Anderson 82b58a843b Use atomic increment/decrement for reference counting of Type's.
llvm-svn: 73588
2009-06-17 00:28:49 +00:00
Owen Anderson 8d0fe6f0d7 Add an atomic increment and decrement implementation, which will be used for
thread-safe reference counting.

llvm-svn: 73587
2009-06-17 00:13:00 +00:00
Owen Anderson 79b76b5bea Accidentally broke this file.
llvm-svn: 73552
2009-06-16 20:57:51 +00:00
Owen Anderson 896cee711f Remove the Win32 implementation, since it doesn't compile pre-Vista.
llvm-svn: 73550
2009-06-16 20:49:20 +00:00
Owen Anderson 372a9289a5 Fix/cleanup trailing newlines.
llvm-svn: 73546
2009-06-16 20:23:05 +00:00
Owen Anderson 324f94c317 Add a portable wrapper for reader-writer locks.
llvm-svn: 73545
2009-06-16 20:19:28 +00:00
Dan Gohman 970da81e8a glibc has two versions of strerror_r, a standards compliant one and a GNU
specific one. The GNU one is chosen when _GNU_SOURCE is defined. g++ always
defines _GNU_SOURCE on linux platforms because glibc's headers won't compile
in C++ mode without it. The GNU strerror_r doesn't always modify the buffer
which causes empty error messages on linux.

This patch changes MakeErrMsg to use the return value of strerror_r to get
the string instead of assuming the buffer will be modified, on GLIBC.

Patch by Benjamin Kramer!

llvm-svn: 73396
2009-06-15 18:05:46 +00:00
Chris Lattner 7038cd5247 "This patch implements the method with the GetModuleFileName function for windows."
Patch by Benjamin Kramer!

llvm-svn: 73379
2009-06-15 05:38:04 +00:00
Chris Lattner 3f556daa6e add a new static method to portably determine whether a patch is
absolute or not, based on a patch by Gregory Curfman!

llvm-svn: 73368
2009-06-15 04:17:07 +00:00
Torok Edwin 63e44bb2a9 Fix comments.
llvm-svn: 72858
2009-06-04 08:18:25 +00:00
Torok Edwin 9b5a47fc3c Add support for outputting ANSI colors to raw_fd_ostream.
llvm-svn: 72854
2009-06-04 07:09:50 +00:00
Duncan Sands 06b61a281a At a newline at the end of this file.
llvm-svn: 72767
2009-06-03 11:54:28 +00:00
Owen Anderson 5bd914d0ae Undef MemoryFence when compiling on MSVC.
llvm-svn: 72732
2009-06-02 17:35:55 +00:00
Bill Wendling 09f17a8479 Untabification.
llvm-svn: 72604
2009-05-30 01:09:53 +00:00
Jay Foad c1fca9fb3a Work around a page size issue on Cygwin.
llvm-svn: 72332
2009-05-23 17:57:59 +00:00
Owen Anderson 2ef7cae93b Add Atomic.cpp to the CMake build system.
llvm-svn: 72202
2009-05-21 00:48:56 +00:00
Owen Anderson 76ae5dde51 Tabs, be gone!
llvm-svn: 72180
2009-05-20 19:06:49 +00:00
Owen Anderson 5b9400d6bd I just fail today.
Hopefully this fixes the last build errors on systems with GCC < 4.1.

llvm-svn: 72179
2009-05-20 19:01:50 +00:00
Owen Anderson 04911b4fee Copy-and-paste-o.
llvm-svn: 72177
2009-05-20 18:47:53 +00:00
Owen Anderson e5370f409b Move atomic operations' definitions out of line. While this seems kind of silly,
all kinds of problems caused by including windows.h and/or config.h in an LLVM header.

llvm-svn: 72174
2009-05-20 18:26:15 +00:00
Douglas Gregor b81294d989 termios.h contains the winsize structure we need to determine the
width of a terminal. Don't try to get the width of a terminal if we
don't have this header.

llvm-svn: 72018
2009-05-18 17:21:34 +00:00
Douglas Gregor 15436617f4 Add terminal width detection to llvm::sys::Process. This is needed to
fix Clang PRs 4148 and 4183.

llvm-svn: 71448
2009-05-11 18:05:52 +00:00
Stefanus Du Toit d2b7be6e9b Fix choice of version of Windows callback to use to consider not only the Visual Studio version, but also the Windows SDK version.
Patch by Tareq Siraj.

llvm-svn: 70299
2009-04-28 16:37:58 +00:00
Torok Edwin c8afb09a3b Fix g++-4.4.0 warning, it was causing llvm-nm to fail on wrapped BC files:
Path.cpp:59: warning: case label value exceeds maximum value for type
magic[0] is a (signed) char, but some case values are unsigned (e.g. 0xde).
When magic[0] was 0xde, the switch has taken the default branch instead of case
0xde branch.
Apparently this was the behaviour with older versions of gcc too, but not with g++.
Now g++-4.4 behaves as gcc, and ignores unsigned case values out of range signed
range.

llvm-svn: 70038
2009-04-25 10:25:12 +00:00
Anton Korobeynikov f7d0c1a5e6 Silence warnings.
Patch by Jay Foad!

llvm-svn: 69679
2009-04-21 16:04:56 +00:00
Anton Korobeynikov 5a4b52dc0c Drop obsolete reference to __eprintf.
Patch by Jay Foad!

llvm-svn: 69678
2009-04-21 16:04:41 +00:00
Daniel Dunbar 3222b9be04 Make Unix.h:MakeErrMsg separate the prefix and errno string, so we get:
clang: error: unable to make temporary file: /etc/cc: can't make
  unique filename: Permission denied

instead of 

  clang: error: unable to make temporary file: /etc/cc: can't make
  unique filenamePermission denied

for example.

Also, audited the uses of MakeErrMsg to make the prefix strings
consistent (not end with newline/punctuation/space/": ").

llvm-svn: 69626
2009-04-20 20:50:13 +00:00
Mikhail Glushenkov 60cde5ba7c Call CreateProcess with bInheritHandles = TRUE.
Makes llvmc show error messages printed by child processes when run from the
Cygwin/MSYS shell. Since ExecuteAndWait does not return until the child program
has finished execution, this change should be harmless.

llvm-svn: 69082
2009-04-14 21:31:36 +00:00
Mikhail Glushenkov 3a62efb732 Delete trailing whitespace.
llvm-svn: 69081
2009-04-14 21:31:14 +00:00
Chris Lattner ce8b7d2e24 fix PR3965:SIGINT handler not restored after calling ParseAST(),
patch by Alexei Svitkine!

llvm-svn: 68929
2009-04-12 23:33:13 +00:00
Daniel Dunbar 3f48987069 Add sys::Path::makeAbsolute().
llvm-svn: 68663
2009-04-09 00:33:08 +00:00
Chris Lattner 7e06443d44 hopefully fix an apparent build error on windows.
llvm-svn: 68175
2009-04-01 02:03:38 +00:00
Daniel Dunbar fb1a6eb69b Add llvm::sys::getHostTriple and remove
llvm::sys::getOS{Name,Version}.

Right now the implementation just derives from LLVM_HOSTTRIPLE (which
is wrong, but it doesn't look like we have a define for the target
triple). Ideally this routine would actually be able to compute the
triple for targets we care about.

llvm-svn: 68118
2009-03-31 17:30:15 +00:00
Chris Lattner f2b60658ef fix a bug Alexei Svitkine pointed out.
llvm-svn: 67510
2009-03-23 06:46:20 +00:00
Chris Lattner fb95472123 When we restore signal handlers, restore them back to what they
were when we came around, not to their default handler.  This 
should fix PR3848

llvm-svn: 67509
2009-03-23 05:55:36 +00:00
Chris Lattner f299a68ee0 factorize signal registration, part of PR3848.
llvm-svn: 67508
2009-03-23 05:42:29 +00:00
Sebastian Redl 8d5baa09f8 Fix the Win32 VS2008 build:
- Make type declarations match the struct/class keyword of the definition.
 - Move AddSignalHandler into the namespace where it belongs.
 - Correctly call functions from template base.
 - Some other small changes.
With this patch, LLVM and Clang should build properly and with far less noise under VS2008.

llvm-svn: 67347
2009-03-19 23:26:52 +00:00
Chris Lattner bb1ba7b7d3 add some explicit llvm:: qualifiers to the unix side, fix problems on the windows side.
llvm-svn: 66386
2009-03-08 19:13:45 +00:00
Chris Lattner 6acb4d6f7e When a crash signal is delivered do two things: remove all of our
signal handlers to prevent reentrance on unrelated things (a sigabort
where the handle bus errors) also, clear the signal mask so that the
signal doesn't infinitely reissue.  This fixes rdar://6654827 -
Crash causes clang to loop

llvm-svn: 66330
2009-03-07 08:15:47 +00:00
Chris Lattner bbbbbf30bd move some code to gracefully handle the case when a handler crashes.
llvm-svn: 66171
2009-03-05 18:22:14 +00:00
Chris Lattner 4fdd042d9e Add a new 'AddSignalHandler' function to Signals.h that allows
arbitrary functions to be run when a crash happens.  Delete 
RemoveDirectoryOnSignal as it is dead and has never had clients.

Change PrintStackTraceOnErrorSignal to be implemented in terms of
AddSignalHandler.

I updated the Win32 versions of these APIs, but can't test them.
If there are any problems, I'd be happy to fix them as well.

llvm-svn: 66072
2009-03-04 21:21:36 +00:00
Chris Lattner bab4417e05 Fix main executable path name resolution on FreeBSD, patch by
Ed Schouten!

llvm-svn: 65882
2009-03-02 22:17:15 +00:00
Chris Lattner 3c50fdf4ca If an executable is run through a symlink, dladdr will return the
symlink.  We really want the ultimate executable being run, not
the symlink.  This lets clang find its headers when invoked through
a symlink. rdar://6602012

llvm-svn: 65017
2009-02-19 05:34:35 +00:00
Mikhail Glushenkov 58a1a8e546 Fix warning on gcc 4.3.
"system() declared with attribute warn_unused_result."

llvm-svn: 64574
2009-02-15 03:20:32 +00:00
Mikhail Glushenkov a539836b95 Whitespace fixes.
llvm-svn: 64573
2009-02-15 03:20:03 +00:00
Cedric Venet d1e179d992 Unbreak the build on win32.
Cleanup some warning.

Remark: when struct/class are declared differently than they are defined, this make problem for VC++ since it seems to mangle class differently that struct. These error are very hard to understand and find. So please, try to keep your definition/declaration in sync.

Only tested with VS2008. hope it does not break anything. feel free to revert.

llvm-svn: 64554
2009-02-14 16:06:42 +00:00
Julien Lerouge 7682ffdeb9 Fix MingW build, patch by Kenneth Boyd!
llvm-svn: 64366
2009-02-12 07:39:10 +00:00
Dan Gohman 1f517dd1c4 Use const, to support platforms where strrchr returns a const char *.
This fixes PR3535.

llvm-svn: 64224
2009-02-10 17:56:28 +00:00
Mikhail Glushenkov 8b5bfbfc7a Add a Sleep() function.
llvm-svn: 64101
2009-02-08 22:47:39 +00:00
Mikhail Glushenkov a6435d48bc Add Emacs hints to Alarm.inc.
Also removes some trailing whitespace and fixes one 80-column violation.

llvm-svn: 64094
2009-02-08 21:10:57 +00:00
Chris Lattner dfb6735385 Fix windows build, patch by Marius Wachtler!
llvm-svn: 63325
2009-01-29 18:53:28 +00:00
Chris Lattner c0474013cb Fix PR3424, a static constructor ordering issue. Patch by Robert Schuster!
llvm-svn: 63269
2009-01-29 04:43:42 +00:00
Chris Lattner aa1212271a rename methods in System/Host to be more consistent.
llvm-svn: 62776
2009-01-22 19:53:00 +00:00
Misha Brukman 5cbf223916 Removed trailing whitespace from Makefiles.
llvm-svn: 61991
2009-01-09 16:44:42 +00:00
Dan Gohman 35e2cfccaf Don't use plain %x to print pointer values. I had changed it from %p
since %p isn't formatted consistently, but obviously plain %x is wrong.
PRIxPTR with a cast to uintptr_t would work here, but that requires
inconvenient build-system changes. %lu works on all current and
foreseable future hosts.

llvm-svn: 60616
2008-12-05 23:39:24 +00:00
Dan Gohman 7f079aabed Demangle and pretty-print symbols in internal backtraces. Patch by
Wesley Peck, with a few fixes by me.

llvm-svn: 60605
2008-12-05 20:12:48 +00:00
Evan Cheng 889b79bb86 ARM / Mac OS X also wants to invalidate icache after jitting.
llvm-svn: 59291
2008-11-14 02:33:17 +00:00