Reid Kleckner
47ea9ece1a
[COFF] Return symbol VAs instead of RVAs for PE files
...
This makes llvm-nm consistent with binutils nm on executables and DLLs.
For a vanilla hello world executable, the address of main should include
the default image base of 0x400000.
llvm-svn: 243755
2015-07-31 16:14:22 +00:00
Tom Stellard
e182e74c53
ELFYAML: Enable parsing of EM_AMDGPU
...
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D11263
llvm-svn: 243724
2015-07-31 01:15:15 +00:00
Rafael Espindola
b82657d3f1
Support printing relocations in files with no section table.
...
llvm-svn: 242998
2015-07-23 09:11:05 +00:00
Rafael Espindola
6565ea7299
Refactor duplicated code and check for invalid symbol table size.
...
llvm-svn: 242981
2015-07-23 03:24:22 +00:00
Rafael Espindola
41f0f108a5
Force the gnu archive format to fix the test on darwin.
...
llvm-svn: 242949
2015-07-22 22:09:44 +00:00
Rafael Espindola
be9ab2682e
Fix fetching the symbol table of a thin archive.
...
We were trying to read it as an external file.
llvm-svn: 242926
2015-07-22 19:34:26 +00:00
Rafael Espindola
69ef2afaeb
Identify thin archives as archives.
...
llvm-svn: 242921
2015-07-22 18:29:39 +00:00
Michael J. Spencer
402a4f1088
[Object][ELF] Handle files with no section header string table.
...
llvm-svn: 242839
2015-07-21 21:40:33 +00:00
Rafael Espindola
b68a16c47c
Simplify iterating over the dynamic section and report broken ones.
...
llvm-svn: 242712
2015-07-20 21:23:29 +00:00
Rafael Espindola
33f250931c
Remove Elf_Rela_Iter and Elf_Rel_Iter.
...
Use just the pointers and check for invalid relocation sections.
llvm-svn: 242700
2015-07-20 20:07:50 +00:00
Rafael Espindola
836f2e86e5
Report errors an invalid virtual addresses.
...
llvm-svn: 242676
2015-07-20 14:45:03 +00:00
Rafael Espindola
073624bb56
Simplify iterating over program headers and detect corrupt ones.
...
We now use a simple pointer and have range loops.
llvm-svn: 242669
2015-07-20 13:35:33 +00:00
Rafael Espindola
00ddb1416d
llvm-readobj: Handle invalid references to the string table.
...
llvm-svn: 242658
2015-07-20 03:38:17 +00:00
Rafael Espindola
c46ffb7a49
Move CHECKs closer to the RUN line.
...
llvm-svn: 242657
2015-07-20 03:31:25 +00:00
Rafael Espindola
fb3acd6216
llvm-readobj: call exit(1) on error.
...
llvm-readobj exists for testing llvm. We can safely stop the program
the first time we know the input in corrupted.
This is in preparation for making it handle a few more broken files.
llvm-svn: 242656
2015-07-20 03:23:55 +00:00
Rafael Espindola
e79b62d923
Trying to fix the windows bots.
...
llvm-svn: 242367
2015-07-16 00:38:34 +00:00
Rafael Espindola
06d6d1905e
Fix handling of relative paths in thin archives.
...
The member has to end up with a path relative to the archive.
llvm-svn: 242362
2015-07-16 00:14:49 +00:00
Rafael Espindola
57c0525d2c
llvm-ar: Don't write the directory in the string table.
...
We were already doing the right thing for short file names, but not long
ones.
llvm-svn: 242354
2015-07-15 23:15:33 +00:00
Rafael Espindola
449208d95b
Handle the error of trying to convert a regular archive to a thin one.
...
While at it, test that we can add to a thin archive.
llvm-svn: 242330
2015-07-15 20:45:56 +00:00
Rafael Espindola
e649258272
Initial support for writing thin archives.
...
llvm-svn: 242269
2015-07-15 05:47:46 +00:00
Rafael Espindola
142fc2d1c2
Accept lower case to handle windows error messages.
...
llvm-svn: 242236
2015-07-14 22:42:21 +00:00
Rafael Espindola
4b83cb5390
Add support for reading members out of thin archives.
...
For now the Archive owns the buffers of the thin archive members.
This makes for a simple API, but all the buffers are destructed
only when the archive is destructed. This should be fine since we
close the files after mmap so we should not hit an open file
limit.
llvm-svn: 242215
2015-07-14 22:18:43 +00:00
Rafael Espindola
e549b8c259
llvm-ar: Don't try to extract from thin archives.
...
This matches the gnu ar behavior.
llvm-svn: 242162
2015-07-14 16:55:13 +00:00
Rafael Espindola
4ae784396c
Sleep for 2.1 seconds to see if that makes the test stable on windows.
...
Might fix pr24106.
llvm-svn: 242158
2015-07-14 16:34:23 +00:00
Rafael Espindola
c3eec458ab
llvm-ar: print an error when the requested member is not found.
...
llvm-svn: 242156
2015-07-14 16:02:40 +00:00
Rafael Espindola
bcb440fb1f
Rename a test. NFC.
...
llvm-svn: 242151
2015-07-14 15:06:18 +00:00
Rafael Espindola
8c1a9102e6
Add missing file.
...
Sorry about that.
llvm-svn: 242083
2015-07-13 23:14:26 +00:00
Rafael Espindola
c60d0d2a15
Fix reading archive members with / in the name.
...
This is important for thin archives.
llvm-svn: 242082
2015-07-13 23:07:05 +00:00
Rafael Espindola
6a8e86f26e
Add support deterministic output in llvm-ar and make it the default.
...
llvm-svn: 242061
2015-07-13 20:38:09 +00:00
Michael J. Spencer
3569a84598
[Object][ELF] Handle the dynamic string table in files without a section table.
...
llvm-svn: 241937
2015-07-10 20:11:57 +00:00
Michael J. Spencer
20546ffd4a
[Object][ELF] Support dumping hash-tables from files with no section table.
...
This time without breaking the bots.
llvm-svn: 241869
2015-07-09 22:32:24 +00:00
Rafael Espindola
2535ea0b83
Create BSD archives by default on OS X.
...
They should probably be created on anything that is not windows or linux, but I will
test on freebsd before changing that.
With this it is possible to bootstrap with llvm-ar instead of ar+ranlib on OS X.
llvm-svn: 241849
2015-07-09 20:12:50 +00:00
Rafael Espindola
594e676cbe
llvm-ar: Pad the symbol table to 4 bytes.
...
It looks like ld64 requires it. With this we seem to be able to bootstrap using
llvm-ar+/usr/bin/true instead of ar+ranlib (currently on stage2).
llvm-svn: 241842
2015-07-09 19:48:06 +00:00
Simon Atanasyan
3a120920f6
[yaml2obj] Initialize sh_addralign field for the .symtab section
...
llvm-svn: 241835
2015-07-09 18:23:02 +00:00
Simon Atanasyan
2c5b22ab81
[ELF] Explicitly configure sections alignment in the tests. NFC
...
llvm-svn: 241834
2015-07-09 18:22:55 +00:00
Rafael Espindola
5f657eb5fe
Add missing file from previous commit.
...
llvm-svn: 241815
2015-07-09 15:58:22 +00:00
Rafael Espindola
c79bff6bb1
Basic support for BSD symbol tables in archives.
...
This could be optimized and for now we only produce __.SYMDEF
and not "__.SYMDEF SORTED".
llvm-svn: 241814
2015-07-09 15:56:23 +00:00
Adrian Prantl
bfdf7dd176
Temporarily reverting 241765, 241768, and 241772 to unbreak the build bots.
...
llvm-svn: 241781
2015-07-09 02:14:49 +00:00
Michael J. Spencer
c4a25be568
[Object][ELF] Support dumping hash-tables from files with no section table.
...
llvm-svn: 241765
2015-07-09 00:21:06 +00:00
Rafael Espindola
4104fe8ae9
Don't reject an archive with just a symbol table.
...
It is pretty unambiguous how to interpret it and gnu ar accepts it too.
llvm-svn: 241750
2015-07-08 22:27:54 +00:00
Rafael Espindola
a2ed0b0bab
Start adding support for writing archives in BSD format.
...
No support for the symbol table yet (but will hopefully add it today).
We always use the long filename format so that we can align the member,
which is an advantage of the BSD format.
llvm-svn: 241721
2015-07-08 20:47:32 +00:00
Simon Atanasyan
22c4c9ee8f
[yaml2obj] Align section content using AddressAlign field's value
...
Use AddressAlign field's value to properly align sections content in the
yaml2obj tool. Before this change the yaml2obj ignored AddressAlign and
always aligned section on 16 bytes boundary.
llvm-svn: 241674
2015-07-08 10:12:40 +00:00
Simon Atanasyan
f1eef8025f
[yaml2obj] Use regex to match sections offsets. NFC
...
llvm-svn: 241669
2015-07-08 06:57:24 +00:00
Rafael Espindola
be8b0ea854
Delete UnknownAddress. It is a perfectly valid symbol value.
...
getSymbolValue now returns a value that in convenient for most callers:
* 0 for undefined
* symbol size for common symbols
* offset/address for symbols the rest
Code that needs something more specific can check getSymbolFlags.
llvm-svn: 241605
2015-07-07 17:12:59 +00:00
Rafael Espindola
d82477278b
Common symbols are not undefined, at least for ObjectFile.
...
They are implemented like that in some object formats, but for the interface
provided by lib/Object, SF_Undefined and SF_Common are different things.
This matches the ELF and COFF implementation and fixes llvm-nm for MachO.
llvm-svn: 241587
2015-07-07 14:26:39 +00:00
Rafael Espindola
2d5d23d41d
llvm-nm: treat weak undefined as undefined.
...
This matches the behavior of gnu ld.
llvm-svn: 241512
2015-07-06 21:36:23 +00:00
Rafael Espindola
e511051f4b
When sorting by address, undefined symbols go first.
...
This matches gnu nm.
llvm-svn: 241488
2015-07-06 19:21:04 +00:00
Rafael Espindola
80c3354634
Fix printing of common symbols.
...
Printing the symbol size matches the behavior or both gnu nm and freebsd nm.
llvm-svn: 241480
2015-07-06 18:18:44 +00:00
Rafael Espindola
76d650e8d7
Check that COFF .obj files have sections with zero virtual address spaces.
...
When talking about the virtual address of sections the coff spec says:
... for simplicity, compilers should set this to zero. Otherwise, it is an
arbitrary value that is subtracted from offsets during relocation.
We don't currently subtract it, so check that it is zero.
If some producer does create such files, we can change getRelocationOffset
instead.
llvm-svn: 241447
2015-07-06 14:26:07 +00:00
Rafael Espindola
5504eb79b4
Fix handling of ELF::R_MIPS_32 on Mips64.
...
Thanks to Aboud, Amjad for reporting the regression and providing the testcase.
llvm-svn: 241440
2015-07-06 12:18:44 +00:00