| 1 | /* |
1 | /* |
| 2 | * Copyright 2003-2006 Gentoo Foundation |
2 | * Copyright 2003-2006 Gentoo Foundation |
| 3 | * Distributed under the terms of the GNU General Public License v2 |
3 | * Distributed under the terms of the GNU General Public License v2 |
| 4 | * $Header: /var/cvsroot/gentoo-projects/pax-utils/scanelf.c,v 1.172 2007/01/09 23:04:12 vapier Exp $ |
4 | * $Header: /var/cvsroot/gentoo-projects/pax-utils/scanelf.c,v 1.173 2007/01/18 00:26:34 vapier Exp $ |
| 5 | * |
5 | * |
| 6 | * Copyright 2003-2006 Ned Ludd - <solar@gentoo.org> |
6 | * Copyright 2003-2006 Ned Ludd - <solar@gentoo.org> |
| 7 | * Copyright 2004-2006 Mike Frysinger - <vapier@gentoo.org> |
7 | * Copyright 2004-2006 Mike Frysinger - <vapier@gentoo.org> |
| 8 | */ |
8 | */ |
| 9 | |
9 | |
| 10 | #include "paxinc.h" |
10 | #include "paxinc.h" |
| 11 | |
11 | |
| 12 | static const char *rcsid = "$Id: scanelf.c,v 1.172 2007/01/09 23:04:12 vapier Exp $"; |
12 | static const char *rcsid = "$Id: scanelf.c,v 1.173 2007/01/18 00:26:34 vapier Exp $"; |
| 13 | #define argv0 "scanelf" |
13 | #define argv0 "scanelf" |
| 14 | |
14 | |
| 15 | #define IS_MODIFIER(c) (c == '%' || c == '#' || c == '+') |
15 | #define IS_MODIFIER(c) (c == '%' || c == '#' || c == '+') |
| 16 | |
16 | |
| 17 | /* prototypes */ |
17 | /* prototypes */ |
| … | |
… | |
| 1625 | long_opts[i].name, opts_help[i]); |
1625 | long_opts[i].name, opts_help[i]); |
| 1626 | else |
1626 | else |
| 1627 | printf(" -%c, --%-7s <arg> * %s\n", long_opts[i].val, |
1627 | printf(" -%c, --%-7s <arg> * %s\n", long_opts[i].val, |
| 1628 | long_opts[i].name, opts_help[i]); |
1628 | long_opts[i].name, opts_help[i]); |
| 1629 | |
1629 | |
| 1630 | if (status != EXIT_SUCCESS) |
1630 | puts("\nFor more information, see the scanelf(1) manpage"); |
| 1631 | exit(status); |
|
|
| 1632 | |
|
|
| 1633 | puts("\nThe format modifiers for the -F option are:"); |
|
|
| 1634 | puts(" F Filename \tx PaX Flags \te STACK/RELRO"); |
|
|
| 1635 | puts(" t TEXTREL \tr RPATH \tn NEEDED"); |
|
|
| 1636 | puts(" i INTERP \tb BIND \ts symbol"); |
|
|
| 1637 | puts(" N library \to Type \tT TEXTRELs"); |
|
|
| 1638 | puts(" S SONAME \tk section \ta arch"); |
|
|
| 1639 | puts(" p filename (with search path removed)"); |
|
|
| 1640 | puts(" f filename (short name/basename)"); |
|
|
| 1641 | puts("Prefix each modifier with '%' (verbose) or '#' (silent)"); |
|
|
| 1642 | |
|
|
| 1643 | puts("\nELF Etypes:"); |
|
|
| 1644 | print_etypes(stdout); |
|
|
| 1645 | |
|
|
| 1646 | exit(status); |
1631 | exit(status); |
| 1647 | } |
1632 | } |
| 1648 | |
1633 | |
| 1649 | /* parse command line arguments and preform needed actions */ |
1634 | /* parse command line arguments and preform needed actions */ |
| 1650 | #define do_pax_state(option, flag) \ |
1635 | #define do_pax_state(option, flag) \ |