457 Commits

Author SHA1 Message Date
Chris Lattner
8f97278c49 Do not allow bytecode files with unresolved references to be read. Doing
so lets wierd ConstantPlaceholder objects sneak into the system which
confuses it greatly.

llvm-svn: 18487
2004-12-04 05:28:27 +00:00
Chris Lattner
37a14496c5 RevisionNum is read by error(), initialize it early.
llvm-svn: 18386
2004-11-30 16:58:18 +00:00
Reid Spencer
8a3312cab3 Compute the firstFileOffset correctly after reading the LLVM symbol table.
llvm-svn: 18300
2004-11-28 03:13:02 +00:00
Reid Spencer
af6fd29a08 Adjust to Compressor interface change
llvm-svn: 18249
2004-11-25 19:38:05 +00:00
Reid Spencer
a193f3cdbf Allow reading of member names that begin with an _ character.
llvm-svn: 18179
2004-11-23 22:35:39 +00:00
Reid Spencer
db372c707b Fix a comment to imply the correct semantics.
llvm-svn: 18097
2004-11-22 02:58:47 +00:00
Reid Spencer
7a32486483 Distinguish between BSD4.4 and SVR4 symbol tables
llvm-svn: 18044
2004-11-20 07:29:40 +00:00
Reid Spencer
78e12c73e5 Correct the computation of when to add the padding. It is not based on the
member's size. It is based on the oddness/evenness of the file pointer.
This fixes a bug with llvm-ar not being able to read archives produced by
llvm-ranlib when there are members with odd long file name lengths.

llvm-svn: 17997
2004-11-19 17:08:00 +00:00
Chris Lattner
ddf3b7997f Add note that this is for old bytecode files.
llvm-svn: 17991
2004-11-19 16:24:05 +00:00
Reid Spencer
fc9f779039 Don't save an iterator, just use post-increment.
llvm-svn: 17981
2004-11-19 03:44:10 +00:00
Reid Spencer
39a0347b79 Make findModulesDefiningSymbols modify its symbols argument so we can \
eliminate symbols defined by the archive efficiently

llvm-svn: 17976
2004-11-19 03:18:22 +00:00
Reid Spencer
67c46c8d70 Fix some things for Mac OSX archives:
* ensure trailing spaces are eliminated so they don't factor into the
  length of a member's name.
* make sure all the bytes of a name are written even if the name ends in
  multiple null characters (bug in OSX ar)
* make sure we provide the full member name when searching for symbols so
  the module name is not accidentally duplicated.

llvm-svn: 17918
2004-11-17 18:28:29 +00:00
Reid Spencer
b58bf5fa28 Make sure we parse bytecode with a module identifier that reflects the full
name of the module: "Archive.a(object.o)"

llvm-svn: 17917
2004-11-17 18:25:21 +00:00
Reid Spencer
1154bb6b43 Adjust long file name writing to match BSD 4.4 and Mac OSX style archives.
llvm-svn: 17910
2004-11-17 16:14:21 +00:00
Reid Spencer
0dea46fe67 Despite documentation to the contrary, Mac OSX and BSD 4.4 archive formats
*do* include the length of the long file in the length of the member and
they are *not* null terminated.

llvm-svn: 17909
2004-11-17 16:13:11 +00:00
Reid Spencer
4c66d89b33 Fix typeo in comment.
llvm-svn: 17892
2004-11-16 07:05:16 +00:00
Reid Spencer
8d784fbd3f Per code review:\
* Make the numVbrBytes function more efficient and better documented \
* Fix a bug in name truncation \
* Add comments before functions \
* Get rid of functions that are now inlined into the header \
* Do not have Archive doing symbol table printing \
* Put assert comments into the assert so they print out \
* Make sure foreign symbol tables are written

llvm-svn: 17884
2004-11-16 06:47:30 +00:00
Reid Spencer
4abd79e8ea Per code review:\
* Make sure we write out the foreign symbol table if we read one \
* Make the padding calculation more efficiently and avoid Solaris warnings

llvm-svn: 17883
2004-11-16 06:47:19 +00:00
Reid Spencer
40878f35de Per code review:\
* Make sure all members are initialized upon construction

llvm-svn: 17882
2004-11-16 06:47:07 +00:00
Reid Spencer
2df70a7e2f Per code review:\
* Get rid of memory leaks on exception \
* Provide better comments of how the memory handling works

llvm-svn: 17876
2004-11-16 06:41:05 +00:00
Chris Lattner
3b6bb48c16 Do not emit FunctionBlock blocks for external functions. This shrinks
bytecode files by about 8 bytes per external function

llvm-svn: 17859
2004-11-15 22:39:49 +00:00
Chris Lattner
642f8c5ed4 Use a per-function flag bit to indicate whether or not there is a function
body for the function.

llvm-svn: 17858
2004-11-15 22:38:52 +00:00
Chris Lattner
9b457e1c73 Disable this change, it was premature
llvm-svn: 17857
2004-11-15 21:56:33 +00:00
Chris Lattner
7d04cdab77 Make *SURE* to null out the pointer before throwing an exception, otherwise
the dtor for the BytecodeReader class will try to free it again!

llvm-svn: 17856
2004-11-15 21:55:33 +00:00
Chris Lattner
36c95e38b0 Cleanups. Null out pointer after freeing it for paranoia
llvm-svn: 17855
2004-11-15 21:55:06 +00:00
Chris Lattner
94bd315c3f If a function is external, do not output a FunctionBlock for the function
AT ALL.  This saves 11 bytes per external function from the bytecode file,
and is also required to make GhostLinkage work.

llvm-svn: 17854
2004-11-15 21:46:40 +00:00
Chris Lattner
55d85402f6 Make functions default to having external linkage if they have no
FunctionBlock.

llvm-svn: 17853
2004-11-15 21:43:03 +00:00
Reid Spencer
cbd9aeb587 * Make sure the string table gets read even if there isn't a foreign
symbol table.
* Make sure we update the file pointer for each member when rebuilding the
  symbol table.

llvm-svn: 17812
2004-11-15 01:40:20 +00:00
Reid Spencer
fcf5ef7a4a Changes necessary to enable linking of archives without LLVM symbol tables.
llvm-svn: 17811
2004-11-15 01:20:11 +00:00
Reid Spencer
6456d2f26d Moved to lib/Bytecode/Archive.
llvm-svn: 17800
2004-11-14 22:38:32 +00:00
Reid Spencer
71f51e603c Simplify compression code by using the high level interface to the Compressor
llvm-svn: 17771
2004-11-14 22:01:41 +00:00
Reid Spencer
0ce0d938b1 Add wrappers to get defined symbols from bytecode
llvm-svn: 17770
2004-11-14 22:00:48 +00:00
Reid Spencer
f01fc688ba Simplify handling of decompression
llvm-svn: 17769
2004-11-14 22:00:09 +00:00
Reid Spencer
0e36b8afb9 Simplify decompression code by using the high level interface to the Compressor
llvm-svn: 17768
2004-11-14 21:59:21 +00:00
Reid Spencer
f0c201b34d Completely rewritten to allow reading of archives and symbol table lookup in a more efficient manner.
llvm-svn: 17767
2004-11-14 21:58:33 +00:00
Reid Spencer
948ff3d628 Implementation declarations for Archive
llvm-svn: 17766
2004-11-14 21:57:46 +00:00
Reid Spencer
ba09b3bf28 First working version
llvm-svn: 17765
2004-11-14 21:56:59 +00:00
Reid Spencer
044adab53a Add the Archive library
llvm-svn: 17764
2004-11-14 21:55:27 +00:00
Misha Brukman
b2e062c9d5 Mark an unmaterialized function as having GhostLinkage
llvm-svn: 17748
2004-11-14 21:02:55 +00:00
Reid Spencer
b9e561e90c Moved to lib/Bytecode/Archive in preparation for re-write.
llvm-svn: 17742
2004-11-14 19:59:40 +00:00
John Criswell
623dc9c5c0 Recognize compressed LLVM bytecode files.
This should fix the problem of not being able to link compressed LLVM
bytecode files from LLVM libraries.

llvm-svn: 17648
2004-11-09 19:37:07 +00:00
Reid Spencer
796e531721 * Comments & cleanup per CL code review.
* Accept 'llvc' as signature for compressed bytecode

llvm-svn: 17579
2004-11-07 18:20:55 +00:00
Reid Spencer
899ad356f5 Add comments per CL code review.
llvm-svn: 17578
2004-11-07 18:19:00 +00:00
Reid Spencer
f3e639fc6a * Add comments and cleanup per CL code review
* Make signature for compressed bytecode llvc instead of unreadable
* Make the CompressionContext have a constructor and destructor.

llvm-svn: 17576
2004-11-07 18:17:38 +00:00
Reid Spencer
2e49204e0f Add support for compressed bytecode
llvm-svn: 17535
2004-11-06 23:17:23 +00:00
Reid Spencer
c686a2b64b Implement the GetBytecodeSymbols interface function to extract just the
externally visible defined symbols from a bytecode file.

llvm-svn: 17503
2004-11-06 08:56:40 +00:00
Reid Spencer
0f8359b061 Makefile for the LLVMArchive library.
llvm-svn: 17500
2004-11-06 08:52:36 +00:00
Reid Spencer
0cc653e59b First kinda/sorta working version of the Archive library. Reading is not
yet supported but writing works. Way too early to review this. More to come

llvm-svn: 17499
2004-11-06 08:51:45 +00:00
Reid Spencer
49cc2cf279 Fix library name.
llvm-svn: 17305
2004-10-28 05:32:01 +00:00
Reid Spencer
37d45f6934 Fix name of library
llvm-svn: 17304
2004-10-28 05:30:54 +00:00