Initial Contribution
This commit is contained in:
67
tools/lsd/main.c
Normal file
67
tools/lsd/main.c
Normal file
@@ -0,0 +1,67 @@
|
||||
/* TODO:
|
||||
1. check the ARM EABI version--this works for versions 1 and 2.
|
||||
2. use a more-intelligent approach to finding the symbol table, symbol-string
|
||||
table, and the .dynamic section.
|
||||
3. fix the determination of the host and ELF-file endianness
|
||||
4. write the help screen
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <common.h>
|
||||
#include <debug.h>
|
||||
#include <libelf.h>
|
||||
#include <elf.h>
|
||||
#include <gelf.h>
|
||||
#include <cmdline.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <lsd.h>
|
||||
|
||||
/* Flag set by --verbose. This variable is global as it is accessed by the
|
||||
macro INFO() in multiple compilation unites. */
|
||||
int verbose_flag = 0;
|
||||
/* Flag set by --quiet. This variable is global as it is accessed by the
|
||||
macro PRINT() in multiple compilation unites. */
|
||||
int quiet_flag = 0;
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
char **lookup_dirs = NULL;
|
||||
int num_lookup_dirs;
|
||||
int print_info;
|
||||
int list_needed_libs;
|
||||
|
||||
/* Do not issue INFO() statements before you call get_options() to set
|
||||
the verbose flag as necessary.
|
||||
*/
|
||||
|
||||
int first = get_options(argc, argv,
|
||||
&list_needed_libs,
|
||||
&print_info,
|
||||
&lookup_dirs,
|
||||
&num_lookup_dirs,
|
||||
&verbose_flag);
|
||||
|
||||
if (first == argc) {
|
||||
print_help();
|
||||
FAILIF(1, "You must specify at least one input ELF file!\n");
|
||||
}
|
||||
|
||||
/* Check to see whether the ELF library is current. */
|
||||
FAILIF (elf_version(EV_CURRENT) == EV_NONE, "libelf is out of date!\n");
|
||||
|
||||
/* List symbol dependencies... */
|
||||
lsd(&argv[first], argc - first,
|
||||
list_needed_libs, print_info,
|
||||
lookup_dirs, num_lookup_dirs);
|
||||
|
||||
FREE(lookup_dirs);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user