Commit Graph

233 Commits

Author SHA1 Message Date
Gordon Henriksen
639468e763 Fixing the stack walker.
llvm-svn: 46302
2008-01-24 05:16:36 +00:00
Gordon Henriksen
db4f51e1b9 With this patch, the LowerGC transformation becomes the
ShadowStackCollector, which additionally has reduced overhead with
no sacrifice in portability.

Considering a function @fun with 8 loop-local roots,
ShadowStackCollector introduces the following overhead
(x86):

; shadowstack prologue
        movl    L_llvm_gc_root_chain$non_lazy_ptr, %eax
        movl    (%eax), %ecx
        movl    $___gc_fun, 20(%esp)
        movl    $0, 24(%esp)
        movl    $0, 28(%esp)
        movl    $0, 32(%esp)
        movl    $0, 36(%esp)
        movl    $0, 40(%esp)
        movl    $0, 44(%esp)
        movl    $0, 48(%esp)
        movl    $0, 52(%esp)
        movl    %ecx, 16(%esp)
        leal    16(%esp), %ecx
        movl    %ecx, (%eax)

; shadowstack loop overhead
        (none)

; shadowstack epilogue
        movl    48(%esp), %edx
        movl    %edx, (%ecx)

; shadowstack metadata
        .align  3
___gc_fun:                              # __gc_fun
        .long   8
        .space  4

In comparison to LowerGC:

; lowergc prologue
        movl    L_llvm_gc_root_chain$non_lazy_ptr, %eax
        movl    (%eax), %ecx
        movl    %ecx, 48(%esp)
        movl    $8, 52(%esp)
        movl    $0, 60(%esp)
        movl    $0, 56(%esp)
        movl    $0, 68(%esp)
        movl    $0, 64(%esp)
        movl    $0, 76(%esp)
        movl    $0, 72(%esp)
        movl    $0, 84(%esp)
        movl    $0, 80(%esp)
        movl    $0, 92(%esp)
        movl    $0, 88(%esp)
        movl    $0, 100(%esp)
        movl    $0, 96(%esp)
        movl    $0, 108(%esp)
        movl    $0, 104(%esp)
        movl    $0, 116(%esp)
        movl    $0, 112(%esp)

; lowergc loop overhead
        leal    44(%esp), %eax
        movl    %eax, 56(%esp)
        leal    40(%esp), %eax
        movl    %eax, 64(%esp)
        leal    36(%esp), %eax
        movl    %eax, 72(%esp)
        leal    32(%esp), %eax
        movl    %eax, 80(%esp)
        leal    28(%esp), %eax
        movl    %eax, 88(%esp)
        leal    24(%esp), %eax
        movl    %eax, 96(%esp)
        leal    20(%esp), %eax
        movl    %eax, 104(%esp)
        leal    16(%esp), %eax
        movl    %eax, 112(%esp)

; lowergc epilogue
        movl    48(%esp), %edx
        movl    %edx, (%ecx)

; lowergc metadata
        (none)

llvm-svn: 45670
2008-01-07 01:30:53 +00:00
Chris Lattner
7a9b0bf0eb remove attribution from a variety of miscellaneous files.
llvm-svn: 45425
2007-12-29 22:59:10 +00:00
Chris Lattner
6aece93d5c remove attributions from the rest of the llvm makefiles.
llvm-svn: 45416
2007-12-29 20:11:13 +00:00
Gordon Henriksen
351222b471 GarbageCollection.html is expanded to encompass the coming
capabilities. This is a major rewrite and is easier to read en toto
rather than patchwise.

llvm-svn: 42414
2007-09-27 19:31:36 +00:00
Chris Lattner
59f75f14db Reenable libgc and libprofile is explicitly requested.
llvm-svn: 41851
2007-09-11 17:12:32 +00:00
Chris Lattner
1c76085679 remove an obsolete library.
llvm-svn: 41850
2007-09-11 17:10:52 +00:00
Anton Korobeynikov
835bb69cd2 Dror GCCLibraries: they are obsolete since 2.0 release. This also reduces number of licenses used in LLVM.
llvm-svn: 41257
2007-08-21 22:40:44 +00:00
Chris Lattner
dfe6e0bea4 crtend is only for llvm-gcc3, remove it.
llvm-svn: 34529
2007-02-23 19:34:09 +00:00
Chris Lattner
cadd85f8eb the old trace values pass has been removed, remove its runtime library.
llvm-svn: 32999
2007-01-07 18:13:48 +00:00
Reid Spencer
788d8ef578 Undo removal of the runtime libraries. While this may have been a bit
premature, these libraries will be going away for the 2.0 release. Other
arrangements for profiling, gc, etc. should be made in the next few months.

llvm-svn: 31807
2006-11-17 03:32:33 +00:00
Reid Spencer
77422c102b In LLVM 2.0 we won't use the runtime libraries as llvm-gcc3 support will
be dropped. This patch pertains to removing the runtime directory from LLVM.

llvm-svn: 31793
2006-11-16 23:17:27 +00:00
Reid Spencer
f036c59ca0 Remove unused variable.
llvm-svn: 31404
2006-11-03 01:58:30 +00:00
Reid Spencer
4bafa71dc1 For PR786:
Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting
fall out by removing unused variables. Remaining warnings have to do with
unused functions (I didn't want to delete code without review) and unused
variables in generated code. Maintainers should clean up the remaining
issues when they see them. All changes pass DejaGnu tests and Olden.

llvm-svn: 31380
2006-11-02 20:25:50 +00:00
John Criswell
f037045e9f Describe and date modifications we made per LGPL requirements.
llvm-svn: 29569
2006-08-08 14:47:54 +00:00
John Criswell
2d50f76605 Make information more complete.
llvm-svn: 29568
2006-08-08 14:47:33 +00:00
John Criswell
67a99e866c Reverted previous commit. Thanks, Chris.
llvm-svn: 29388
2006-07-28 18:30:52 +00:00
John Criswell
e42e6faf13 Added in the LGPL text and copyright information. This needs to be
included in the distribution.
Also added the glibc LICENSES file, which should be included as well.

llvm-svn: 29386
2006-07-28 18:16:00 +00:00
Reid Spencer
cf025eb201 For PR786:
Turn -pedantic and -Wno-long-long compile flags on by default. In a few
places, avoid the warnings by removing these options in the local makefile.
One notable exception: lib/Target/CBackend/Writer.cpp. These warnings are
left on as a reminder to developers to clean them up.

llvm-svn: 28614
2006-06-01 01:55:21 +00:00
Reid Spencer
b04b17f650 Put an innocuous statement in this file to quelch warnings about compiling
an empty file.

llvm-svn: 28612
2006-06-01 01:49:08 +00:00
Reid Spencer
94a443bb29 Use archive libraries instead of object files for VMCore, BCReader,
BCWriter, and bzip2 libraries. Adjust the various makefiles to accommodate
these changes. This was done to speed up link times.

llvm-svn: 28610
2006-06-01 01:30:27 +00:00
Reid Spencer
574d4e6992 For PR786:
Minor tweaks in public headers and a few .cpp files so that LLVM can build
successfully with -pedantic and projects using LLVM with -pedantic don't
get warnings from LLVM. There's still more -pedantic warnings to fix.

llvm-svn: 28453
2006-05-24 19:21:13 +00:00
Reid Spencer
04730dfbf7 Invert the tests on LLVMGCC_MAJVERS to check for value 4 instead of value
3. This ensures that if llvm-gcc isn't available and consequently the value
of LLVMGCC_MAJVERS is blank, that the old (include runtime) behavior will
persist.

llvm-svn: 27499
2006-04-07 21:45:23 +00:00
Chris Lattner
132373d144 add a newline at the end of the file
llvm-svn: 27492
2006-04-07 18:41:16 +00:00
Reid Spencer
8067330e59 Avoid building the runtime libraries if llvm-gcc version 4 is detected.
llvm-svn: 27464
2006-04-06 22:15:51 +00:00
Reid Spencer
8cb87336b8 For PR722:
Change the check for llvm-gcc from using LLVMGCCDIR to LLVMGCC. This checks
for the actual tool rather than the directory in which the tool resides. In
the case of this bug, it is possible that the directory exists but that the
tools in that directory do not. This fix should avoid the makefile from
erroneously proceeding without the actual tools being available.

llvm-svn: 27361
2006-04-02 14:34:26 +00:00
Evan Cheng
1fc1ed55c4 Optimizing to calloc() to malloc() + memset() can be bad on some platforms.
llvm-svn: 26732
2006-03-13 21:22:43 +00:00
Chris Lattner
d3fb9d9d08 Make the new and old front-ends more similar: now neither uses __main.
llvm-svn: 26629
2006-03-09 06:16:28 +00:00
Chris Lattner
c97d0d1f21 fix make install/uninstall of libcrtend.
llvm-svn: 25796
2006-01-30 02:03:56 +00:00
Chris Lattner
eb5e553719 Remove out of date comment
llvm-svn: 25705
2006-01-27 22:06:50 +00:00
Chris Lattner
6a3f08a312 Remove the only use of FAKE_SOURCES
llvm-svn: 25704
2006-01-27 22:06:23 +00:00
John Criswell
6992d365bf Add the remove() function from the C library.
llvm-svn: 24498
2005-11-28 15:49:15 +00:00
Chris Lattner
213cd5c12b This was never updated for the project makefile changes
llvm-svn: 23790
2005-10-18 18:50:26 +00:00
Chris Lattner
645b455920 This never got updated to reflect the project makefile changes
llvm-svn: 23789
2005-10-18 18:48:30 +00:00
Misha Brukman
53e199440e Remove trailing whitespace
llvm-svn: 21427
2005-04-21 23:48:37 +00:00
Misha Brukman
934b3ca2f5 Fix grammar
llvm-svn: 20789
2005-03-23 21:14:33 +00:00
Chris Lattner
2d1b7e14d2 Hrm, who knows what 'uint' is, but it seems to work sometimes? Wierd.
llvm-svn: 19876
2005-01-28 19:37:35 +00:00
Reid Spencer
d5bf5709c4 Turn on LOADABLE_MODULE so that profile.so can be loaded dynamically by
the JIT.

llvm-svn: 19524
2005-01-13 16:53:05 +00:00
Reid Spencer
55e707feb0 Re-enable libprofile now that llvm-ar is working better.
llvm-svn: 19523
2005-01-13 16:51:19 +00:00
Chris Lattner
dd2419276c Remove dead directories
llvm-svn: 19262
2005-01-02 22:55:16 +00:00
Chris Lattner
70d2c65415 This lib is dead
llvm-svn: 19261
2005-01-02 22:53:52 +00:00
Chris Lattner
80e1708bca Remove a bunch of useless empty libraries
llvm-svn: 19260
2005-01-02 22:52:28 +00:00
Chris Lattner
5d508e2ced This is no longer needed.
llvm-svn: 19259
2005-01-02 22:50:00 +00:00
Reid Spencer
abfa1798be For PR432:
* Variable name change: cferuntime_libdir -> CFERuntimeLibDir

llvm-svn: 19096
2004-12-22 05:57:33 +00:00
Chris Lattner
689c9cf79a Disable libprofile as llvm-ar bus errors on it, and I don't want to break
the nightly testers.

llvm-svn: 18960
2004-12-15 08:15:48 +00:00
Reid Spencer
cd492e3dfc Use the new BYTECODE_DESTINATION to override the default bytecode install
destination for this library so that it goes to $(cferuntime_libdir) rather
than just $(libdir). Normal bytecode libraries should be installed in the
$(libdir), but these ones are "special" because they're part of the the
C/C++ front end.

llvm-svn: 18882
2004-12-13 07:40:50 +00:00
Reid Spencer
8f27c45a7a Remove useless -L switch now that gccld -link-as-library bug is fixed.
llvm-svn: 18613
2004-12-08 04:22:47 +00:00
Reid Spencer
340229703b Make use of the LLVMGCCStdCXXLibDir variable to link objects
llvm-svn: 18548
2004-12-05 19:15:06 +00:00
Reid Spencer
3a48594cec Use the FAKE_SOURCES feature for proper distribution of contents
llvm-svn: 18506
2004-12-04 22:34:33 +00:00
Reid Spencer
62d6f8d10d Standardize the makefiles with space around = to match the rest of LLVM.
llvm-svn: 18429
2004-12-02 09:58:09 +00:00