Chris Lattner
f299a68ee0
factorize signal registration, part of PR3848.
...
llvm-svn: 67508
2009-03-23 05:42:29 +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
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
aa1212271a
rename methods in System/Host to be more consistent.
...
llvm-svn: 62776
2009-01-22 19:53:00 +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
Jim Grosbach
9396051e3d
Update the stub and callback code to handle lazy compilation. The stub
...
is re-written by the callback to branch directly to the compiled code
in future invocations.
Added back in range-based memory permission functions for the updating of
the stub on Darwin.
llvm-svn: 57846
2008-10-20 21:39:23 +00:00
Jim Grosbach
b22ef71d46
On Darwin ARM, memory needs special handling to do JIT. This patch expands
...
this handling to work properly for modifying stub functions, relocations
back to entry points after JIT compilation, etc..
llvm-svn: 57013
2008-10-03 16:17:20 +00:00
Daniel Dunbar
e52e6bfd29
Add llvm::sys::{osName,osVersion} for retrieving operating system name
...
& version as strings.
- Win32 code is untested.
llvm-svn: 56942
2008-10-02 01:17:28 +00:00
Evan Cheng
5cc53c34c3
Preliminary support for systems which require changing JIT memory regions privilege from read / write to read / executable.
...
llvm-svn: 56303
2008-09-18 07:54:21 +00:00
Evan Cheng
7c5dbd95e2
AllocateRWXMemory -> AllocateRWX.
...
llvm-svn: 56244
2008-09-16 17:28:18 +00:00
Chris Lattner
b56e07e736
add a helper method to sys::Path for clang, patch by
...
Kovarththanan Rajaratnam!
llvm-svn: 54655
2008-08-11 23:39:47 +00:00
Devang Patel
cbfc1a4737
Create temp. file in current path.
...
llvm-svn: 53973
2008-07-24 00:35:38 +00:00
Devang Patel
c5552c44a0
While creating temp. file on disk, if the current filename points to a existing directory then create new temp. file inside the directory.
...
llvm-svn: 53929
2008-07-22 20:02:39 +00:00
Seo Sanghyeon
8f7291387f
Fix GetMainExecutable. Patch by Sam Bishop.
...
llvm-svn: 52847
2008-06-27 22:55:30 +00:00
Wojciech Matyjewicz
c6a6618e6a
Add a missing semicolon.
...
llvm-svn: 52290
2008-06-15 18:02:47 +00:00
Argyrios Kyrtzidis
2cc0abf260
Fix the sys::Path::getSuffix() implementation.
...
llvm-svn: 52288
2008-06-15 15:15:19 +00:00
Matthijs Kooijman
1cc695efd7
Fix redirection of stderr in sys::Program::ExecuteAndWait. There was logic
...
error that caused it to redirect stderr to stdout too often.
This fix is applied identically to the win32 code as well, but that is
untested.
--Thi line, and those below, will be ignored--
M System/Unix/Program.inc
M System/Win32/Program.inc
llvm-svn: 52233
2008-06-12 12:53:35 +00:00
Matthijs Kooijman
616e484be4
Make I/O redirection handling in sys::Program a bit more consistent. No
...
functional changes. Win32 code is untested, but should work fine.
In the unix variant, rename RedirectFD to RedirectIO and let that function
handle empty and null paths instead of doing that in the caller 3 times. This
is the same as win32 already does it.
In the win32 variant, use Path::isEmpty() instead of checking the resulting
c_str() manually. This is the same as unix already does it.
llvm-svn: 52230
2008-06-12 10:47:18 +00:00
Bill Wendling
9cfdac50f1
Unbreak build.
...
llvm-svn: 51709
2008-05-29 22:02:08 +00:00
Bill Wendling
33e396d041
Remove more iostream header includes. Needed to implement a "FlushStream"
...
function to flush a specified std::ostream.
llvm-svn: 51705
2008-05-29 21:46:33 +00:00
Dan Gohman
4e974ab933
Make PreVerifyID, IntSigsEnd, and KillSigsEnd const.
...
llvm-svn: 51088
2008-05-14 00:42:30 +00:00
Dan Gohman
d78c400b5b
Clean up the use of static and anonymous namespaces. This turned up
...
several things that were neither in an anonymous namespace nor static
but not intended to be global.
llvm-svn: 51017
2008-05-13 00:00:25 +00:00
Nick Lewycky
c38c1712f7
Make constructors target-specific. This fixes problems where the path would
...
include backslashes on Windows. This should fix llvm-ld problems on win32.
llvm-svn: 50960
2008-05-11 17:37:40 +00:00
Evan Cheng
86cb31862f
Fix more -Wshorten-64-to-32 warnings.
...
llvm-svn: 50659
2008-05-05 18:30:58 +00:00
Nate Begeman
4840515dff
Restore code to disable crash catcher on older OS X systems
...
llvm-svn: 49568
2008-04-12 00:47:46 +00:00
Dan Gohman
f4bc782495
Make several symbols static.
...
llvm-svn: 49496
2008-04-10 21:11:47 +00:00
Ted Kremenek
a518bb79b1
Make getDirnameSep a static method (not part of Path's interface).
...
llvm-svn: 49354
2008-04-07 22:01:32 +00:00
Ted Kremenek
c042bf1db5
Added method Path::getDirname().
...
llvm-svn: 49352
2008-04-07 21:53:57 +00:00
Ted Kremenek
1d0436cdb0
Re-implemented Path::createDirectoryOnDisk (for Unix).
...
This method allows one to create a directory, and optionally create all parent
directories that do not exist.
The original implementation would require that *all* directories along a path
are writable by the user, including directories that already exist. For example,
suppose we wanted to create the directory "/tmp/foo/bar", and the directory
"/tmp" already exists, but not "/tmp/foo". Since "/tmp" is writable by all
users, the original implementation would work, and create "/tmp/foo", followed
by "/tmp/bar".
A problem occurred, however if one wanted to created the directory
"/Users/myuser/bar" (or equivalently "/home/myuser/bar"), and "/Users/myuser"
already existed and is writable by the current user. The directory
"/User/myuser" is writable by the user, but "/User" is not. The original
implementation of createDirectoryOnDisk would return with failure since "/User"
is not writable, even though "/User/mysuser" is writable.
The new implementation works by recursively creating parents as needed, and thus
doesn't need to check the permissions on every directory in a path.
llvm-svn: 49162
2008-04-03 16:11:31 +00:00
Chris Lattner
ba98fca5e5
add some #includes.
...
llvm-svn: 49036
2008-04-01 06:25:23 +00:00
Chris Lattner
18356d8857
MappedFile is dead, remove it.
...
llvm-svn: 49035
2008-04-01 06:20:44 +00:00
Chris Lattner
4c5e15f7da
Implement Path::MapInFilePages/UnMapFilePages on unix, which
...
provides fast MappedFile::getFile for large files.
llvm-svn: 49034
2008-04-01 06:16:24 +00:00
Chris Lattner
3089e1d82e
Stub out some sys::Path::MapInFilePages/UnMapFilePages methods.
...
llvm-svn: 49030
2008-04-01 06:00:12 +00:00
Chris Lattner
64959dcf03
Make MappedFile::map return a const correct pointer, don't leak address space on Unix platforms.
...
llvm-svn: 49026
2008-04-01 03:49:38 +00:00
Chris Lattner
62385ba3a0
Remove MappedFile support for mapping files for write and exec
...
and shared. This complicates the design, is not used, and probably
doesn't even work.
llvm-svn: 49022
2008-04-01 03:10:22 +00:00
Chris Lattner
efecfbc113
cleanup the MappedFile API and comments. This removes and updates
...
tons of out of date comments (really nothing throws here!) and fixes
some other fairly glaring issues: "size" used to return the size of
the file *and* change it, depending on how you called it.
llvm-svn: 49009
2008-04-01 00:53:25 +00:00
Nate Begeman
f8be3836e3
Actually disable crash reporting on Mac OS X, returning bugpoint to speedy
...
crash miscompilations.
llvm-svn: 49000
2008-03-31 22:19:25 +00:00
Owen Anderson
c905fe9407
Revert r48676. I had plans for using it, but now it's just dead code.
...
llvm-svn: 48743
2008-03-24 21:29:58 +00:00
Owen Anderson
5b993fd70d
Add a comment, and fix a bug where AllocateRW recurred to AllocateRWX instead of itself.
...
llvm-svn: 48677
2008-03-22 02:59:54 +00:00
Owen Anderson
c1e4e3e9a1
Add an AllocateRW to match AllocateRWX.
...
llvm-svn: 48676
2008-03-22 02:33:53 +00:00
Dan Gohman
026eed69e7
Avoid calling array_endof in a static initializer, as it incurs
...
dynamic initialization.
llvm-svn: 48666
2008-03-21 23:44:21 +00:00
Chris Lattner
02e727ff88
Fix Path::GetMainExecutable on cygwin, patch by Sam Bishop.
...
llvm-svn: 48328
2008-03-13 05:22:05 +00:00
Chris Lattner
e209be4985
Stub out a Path::GetMainExecutable call to find the path to the
...
main executable of a program. This needs to be implemented on windows.
llvm-svn: 47835
2008-03-03 02:55:43 +00:00
Chris Lattner
6fca938971
Add path separator support, patch by Sam Bishop.
...
llvm-svn: 47662
2008-02-27 06:17:10 +00:00
Lauro Ramos Venancio
eab51d3a04
It is not safe to call fork in PrintStackTrace. Sometimes it freezes the program.
...
llvm-svn: 47161
2008-02-15 18:05:54 +00:00
Devang Patel
3d4f1b3695
Set error message.
...
Patch by Shantonu Sen.
llvm-svn: 46715
2008-02-04 20:57:54 +00:00
Chris Lattner
f3ebc3f3d2
Remove attribution from file headers, per discussion on llvmdev.
...
llvm-svn: 45418
2007-12-29 20:36:04 +00:00
Ted Kremenek
14020706d8
Added "GetCurrentDirectory()" to sys::Path.
...
llvm-svn: 45182
2007-12-18 22:07:33 +00:00
Ted Kremenek
74db04261b
Added "isDirectory" method to llvm::sys::Path.
...
llvm-svn: 45168
2007-12-18 19:46:22 +00:00
Chris Lattner
5c62ba5fb8
Remove dead file and directory.
...
llvm-svn: 44720
2007-12-08 22:17:33 +00:00
Dan Gohman
58c468fb09
Remove spurious consts. This fixes warnings with compilers that
...
are strict about such things.
llvm-svn: 41956
2007-09-14 20:08:19 +00:00
Owen Anderson
e2f23a3abf
Add lengthof and endof templates that hide a lot of sizeof computations.
...
Patch by Sterling Stein!
llvm-svn: 41758
2007-09-07 04:06:50 +00:00
Gabor Greif
0e21980704
Solaris 2.x does not have RLIMIT_RSS, check for this symbol (analog NetBSD below), should subsume Cygwin
...
llvm-svn: 37939
2007-07-06 10:31:27 +00:00
Gabor Greif
e16561cd5d
Here is the bulk of the sanitizing.
...
Almost all occurrences of "bytecode" in the sources have been eliminated.
llvm-svn: 37913
2007-07-05 17:07:56 +00:00
Devang Patel
d609374ab3
Fix LLVM build on NetBSD. Patch by Neil Booth.
...
llvm-svn: 37410
2007-06-04 15:28:57 +00:00
Chris Lattner
fd96905f12
Fix a bug where the bcreader could crash on .bc files that were an exact
...
multiple of the page size, due to a bug in MappedFile
llvm-svn: 36980
2007-05-11 00:00:27 +00:00
Chris Lattner
4a4499b69e
pull some win32 code into common code, add bitcode identification support.
...
llvm-svn: 36846
2007-05-06 05:32:21 +00:00
Reid Spencer
e2e9b37698
Cygwin doesn't have the RSS_LIMIT for get/setrlimit.
...
llvm-svn: 36361
2007-04-23 07:22:51 +00:00
Reid Spencer
ceeb918dd1
For PR1291:
...
Implement the PathWithStatus class and its use throughout lib/System.
llvm-svn: 35742
2007-04-07 18:52:17 +00:00
Reid Spencer
c7f485fd71
Use the stat information in the Path object, if it is already obtained. This
...
avoids a call to ::fstat by MappedFile when the file size information was
already obtained by the Path object.
llvm-svn: 35477
2007-03-29 19:11:22 +00:00
Reid Spencer
200c6f9c3d
For PR789:
...
Make the sys::Path::getFileStatus function more efficient by having it
return a pointer to the FileStatus structure rather than copy it. Adjust
uses of the function accordingly. Also, fix some memory issues in sys::Path.
llvm-svn: 35476
2007-03-29 19:05:44 +00:00
Reid Spencer
d394617a55
Add a uniqueID field to the FileStatus structure for Paths. This will map
...
to the inode number on Unix and something far less unique on Windows. The
windows case needs to be improved.
llvm-svn: 35461
2007-03-29 17:00:31 +00:00
Reid Spencer
0f92f0e519
For PR789:
...
* Add a method: bool isAbsolute() const, which determines if the path name
is absolute or not.
* Implement caching of file status information in the Path object. Allow it
to be updated forcefully or lazily re-fetched from the cached value.
llvm-svn: 35456
2007-03-29 16:43:20 +00:00
Anton Korobeynikov
d01defedf6
Add possibility to set memory limit for binaries run via libSystem. This
...
is especially needed for bugpoint. This partly implements PR688
llvm-svn: 34349
2007-02-16 19:11:07 +00:00
Reid Spencer
1792326daf
Eliminate "control reaches end of non-void function" warnings.
...
llvm-svn: 32225
2006-12-05 17:53:26 +00:00
Chris Lattner
a4f1e8f6b8
Use new config.h macro
...
llvm-svn: 30321
2006-09-14 06:21:59 +00:00
Chris Lattner
2f107cfc0d
On Mac OS/X, make Process::PreventCoreFiles disable crash reporter for
...
the process in addition to disabling core file emission. This speeds up
bugpoint on default-configured macs by several orders of magnitude.
llvm-svn: 30317
2006-09-14 06:01:41 +00:00
Reid Spencer
50eac3b8ab
For PR797:
...
Make the Win32 code exception free (untested/uncompiled) which forced some
interface changes which had ripple effect. This should be the last of 797.
llvm-svn: 29884
2006-08-25 21:37:17 +00:00
Reid Spencer
e4ca722199
For PR797:
...
Final removal of exceptions from lib/System and adjustment of users to
accommodate.
llvm-svn: 29846
2006-08-23 20:34:57 +00:00
Reid Spencer
879ed5ab9c
For PR797:
...
Eliminate exception throwing from Path::renamePathOnDisk and adjust its
users correspondingly.
llvm-svn: 29843
2006-08-23 07:30:48 +00:00
Reid Spencer
51edba15c6
For PR797:
...
Remove exception throwing from Path::getDirectoryContents and its users.
llvm-svn: 29841
2006-08-23 06:56:27 +00:00
Reid Spencer
8db844241b
For PR797:
...
Remove exceptions from the Path::create*OnDisk methods. Update their users
to handle error messages via arguments and result codes.
llvm-svn: 29840
2006-08-23 00:39:35 +00:00
Reid Spencer
9d2f19c7e4
For PR797:
...
Change the Path::make*OnDisk methods exception free and adjust their usage.
llvm-svn: 29836
2006-08-22 23:27:23 +00:00
Reid Spencer
6ba87bbfd3
Make the sys::Path::GetTemporaryDirectory method not throw exceptions and
...
adjust users of it to compensate.
llvm-svn: 29831
2006-08-22 19:01:30 +00:00
Reid Spencer
b1f9935407
Don't throw needlessly. Failure of gettimeofday is *very* unlinkely so
...
just return MinTime if that should ever happen.
llvm-svn: 29826
2006-08-22 17:38:44 +00:00
Reid Spencer
df1297dd3a
For PR797:
...
Make MappedFile not throw any exceptions.
llvm-svn: 29816
2006-08-22 16:04:22 +00:00
Reid Spencer
8a77bb9815
For PR797:
...
Fix a bug in my last patch that botched file redirection by using explicit
scoping of if statements.
llvm-svn: 29815
2006-08-22 15:56:52 +00:00
Reid Spencer
6ad2a91fb3
Make an error message a little more intelligible.
...
llvm-svn: 29808
2006-08-22 05:28:38 +00:00
Reid Spencer
42bcf6ea76
For PR797:
...
Remove all exception code from Program.inc and implement its new interface
with an ErrMsg string argument.
llvm-svn: 29790
2006-08-21 06:02:44 +00:00
Reid Spencer
c295914b7a
For PR797:
...
Make sys::Program::ExecuteAndWait not throw exceptions and update any
affected code. It now return -9999 to signal that the program couldn't be
executed. Only one case (in bugpoint) actually examines the result code.
llvm-svn: 29785
2006-08-21 02:04:43 +00:00
Reid Spencer
d6f8b1c70a
Remove extraneous #include.
...
llvm-svn: 29541
2006-08-07 05:36:24 +00:00
Reid Spencer
448e2460e0
Make the removal of files use Path::eraseFromDisk just like it does for
...
the removal of directories. Using std::remove is indiscriminate and can
lead to the removal of things like /dev/null if run as root. The
Path::eraseFromDisk method ensures that we only ever remove regular files
or directories, but never character or block special nodes. This should
clear up the problem with usage like: llvm-as -o /dev/null which is used
in the llvm-test makefiles.
llvm-svn: 29540
2006-08-07 05:34:08 +00:00
Reid Spencer
5f9e301521
Add a note about how the "isFile" check in Path::eraseFromDisk prevents
...
the erasure of non-file paths like /dev/null.
llvm-svn: 29539
2006-08-07 05:20:05 +00:00
Chris Lattner
7dbd783e90
Remove some now-dead methods. Use getFileStatus instead.
...
llvm-svn: 29447
2006-08-01 18:16:02 +00:00
Chris Lattner
80df7c4651
Use getFileStatus instead of Path::isDirectory().
...
llvm-svn: 29443
2006-08-01 17:59:14 +00:00
Chris Lattner
be119d4386
elimiante some syscalls
...
llvm-svn: 29442
2006-08-01 17:51:09 +00:00
Chris Lattner
60c5064538
Modify setStatusInfoOnDisk to not throw an exception.
...
llvm-svn: 29402
2006-07-28 22:36:17 +00:00
Chris Lattner
3cec109967
Modify Path::eraseFromDisk to not throw an exception.
...
llvm-svn: 29400
2006-07-28 22:29:50 +00:00
Chris Lattner
4857253d98
Change Path::getStatusInfo to return a boolean and error string on an error
...
instead of throwing an exception. This reduces the amount of code that is
exposed to exceptions (e.g. FileUtilities), though it is clearly only one step
along the way.
llvm-svn: 29395
2006-07-28 22:03:44 +00:00
Chris Lattner
9c6c94a806
simple optimization: don't bother calling "exists" (which calls the syscall
...
"access"). Instead, just let the open call fail if the file doesn't exist.
This reduces the # syscalls executed.
llvm-svn: 29173
2006-07-18 07:07:51 +00:00